A framework for writing performant user-defined functions (UDFs) that are portable across a variety of engines including Apache Spark, Apache Hive, and Presto.
BSD 2-Clause "Simplified" License
297
stars
73
forks
source link
Trino: Quote reserved keywords in type signatures #114
This PR is to quote the reserved keywords which might appear as field names in the type signatures,
i.e. row(key varchar, values varchar) -> row(key varchar, "values" varchar),
if they are not quoted, io.trino.sql.analyzer.TypeSignatureTranslator.parseTypeSignature will throw exception like:
io.trino.sql.parser.ParsingException: line 1:24: mismatched input 'values'. Expecting: <identifier>, <type>
at io.trino.sql.parser.ErrorHandler.syntaxError(ErrorHandler.java:108)
at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41)
at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544)
at org.antlr.v4.runtime.DefaultErrorStrategy.reportUnwantedToken(DefaultErrorStrategy.java:377)
at org.antlr.v4.runtime.DefaultErrorStrategy.singleTokenDeletion(DefaultErrorStrategy.java:548)
at org.antlr.v4.runtime.DefaultErrorStrategy.sync(DefaultErrorStrategy.java:266)
at io.trino.sql.parser.SqlBaseParser.rowField(SqlBaseParser.java:11435)
at io.trino.sql.parser.SqlBaseParser.type(SqlBaseParser.java:11103)
at io.trino.sql.parser.SqlBaseParser.typeParameter(SqlBaseParser.java:11645)
at io.trino.sql.parser.SqlBaseParser.type(SqlBaseParser.java:11329)
at io.trino.sql.parser.SqlBaseParser.standaloneType(SqlBaseParser.java:404)
at io.trino.sql.parser.SqlParser.invokeParser(SqlParser.java:139)
at io.trino.sql.parser.SqlParser.createType(SqlParser.java:94)
at io.trino.sql.analyzer.TypeSignatureTranslator.parseTypeSignature(TypeSignatureTranslator.java:98)
This PR is to quote the reserved keywords which might appear as field names in the type signatures, i.e.
row(key varchar, values varchar) -> row(key varchar, "values" varchar)
, if they are not quoted,io.trino.sql.analyzer.TypeSignatureTranslator.parseTypeSignature
will throw exception like:Tests:
./gradlew clean build