[ 
https://issues.apache.org/jira/browse/CALCITE-2843?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16770691#comment-16770691
 ] 

Stamatis Zampetakis edited comment on CALCITE-2843 at 2/17/19 11:42 PM:
------------------------------------------------------------------------

Hi [~mgelbana],

If I remember correctly 'array_in'::regproc is equivalent with CAST('array_in' 
AS regproc). I would suggest to go in SqlParserTest and find what is happening 
for  the CAST operator (what is the structure of the SqlNode tree). In 
principle you should end up with the same parse tree. I would also suggest to 
simplify even more the query to something like the following:

{code:sql}
SELECT x::integer FROM (VALUES (1, 2)) as tbl(x,y)
{code}

and try to focus on the cast '::' operator before trying address other 
potential problems.



was (Author: zabetak):
Hi [~mgelbana],

If I remember correctly 'array_in'::regproc is equivalent with CAST('array_in' 
AS regproc). I would suggest to go in SqlParserTest and find what is happening 
for  the CAST operator (what is the structure of the SqlNode tree). In 
principle you should end up with the same parse tree. I would also suggest to 
simplify even more the query to something like the following:

{code:java}
SELECT x::integer FROM (VALUES (1, 2)) as tbl(x,y)
{code}

and try to focus on the cast '::' operator before trying address other 
potential problems.


> Babel parser should parse PostgreSQL-style '::' cast operator
> -------------------------------------------------------------
>
>                 Key: CALCITE-2843
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2843
>             Project: Calcite
>          Issue Type: Bug
>          Components: babel
>    Affects Versions: 1.18.0
>            Reporter: Muhammad Gelbana
>            Assignee: Julian Hyde
>            Priority: Major
>
> *Code to reproduce the problem*
> {code:java}
> public static void main(String[] args) throws Exception {
>     Config parserConfig = 
> configBuilder().setConformance(SqlConformanceEnum.BABEL).setParserFactory(SqlBabelParserImpl.FACTORY).build();
>     FrameworkConfig frameworkConfig = 
> Frameworks.newConfigBuilder().parserConfig(parserConfig).build();
>     Planner planner = Frameworks.getPlanner(frameworkConfig);
>     String pg = "SELECT 'array_in'::regproc, typtype FROM pg_catalog.pg_type";
>     planner.parse(pg);
> }{code}
>  
> *Thrown exception*
> {noformat}
> Exception in thread "main" org.apache.calcite.sql.parser.SqlParseException: 
> Encountered ":" at line 1, column 18.
> Was expecting one of:
>     <EOF> 
>     "ORDER" ...
>     "LIMIT" ...
>     "OFFSET" ...
>     "FETCH" ...
>     "FROM" ...
>     "," ...
>     <IDENTIFIER> ...
>     <QUOTED_IDENTIFIER> ...
>     <BACK_QUOTED_IDENTIFIER> ...
>     <BRACKET_QUOTED_IDENTIFIER> ...
>     <UNICODE_QUOTED_IDENTIFIER> ...
>     <QUOTED_STRING> ...
>     "." ...
>     "IN" ...
>     "<" ...
>     "<=" ...
>     ">" ...
>     ">=" ...
>     "=" ...
>     "<>" ...
>     "!=" ...
>     "+" ...
>     "-" ...
>     "*" ...
>     "/" ...
>     "%" ...
>     "||" ...
>     "[" ...
>     "UNION" ...
>     "INTERSECT" ...
>     "EXCEPT" ...
>     "MINUS" ...
>     
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.convertException(SqlBabelParserImpl.java:354)
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.normalizeException(SqlBabelParserImpl.java:142)
>       at 
> org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:156)
>       at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:181)
>       at org.apache.calcite.prepare.PlannerImpl.parse(PlannerImpl.java:174)
>       at org.apache.calcite.tools.Planner.parse(Planner.java:50)
>       at com.lab.calcite.App2.main(App2.java:23)
> Caused by: org.apache.calcite.sql.parser.babel.ParseException: Encountered 
> ":" at line 1, column 18.
> Was expecting one of:
>     <EOF> 
>     "ORDER" ...
>     "LIMIT" ...
>     "OFFSET" ...
>     "FETCH" ...
>     "FROM" ...
>     "," ...
>     <IDENTIFIER> ...
>     <QUOTED_IDENTIFIER> ...
>     <BACK_QUOTED_IDENTIFIER> ...
>     <BRACKET_QUOTED_IDENTIFIER> ...
>     <UNICODE_QUOTED_IDENTIFIER> ...
>     <QUOTED_STRING> ...
>     "." ...
>     "IN" ...
>     "<" ...
>     "<=" ...
>     ">" ...
>     ">=" ...
>     "=" ...
>     "<>" ...
>     "!=" ...
>     "+" ...
>     "-" ...
>     "*" ...
>     "/" ...
>     "%" ...
>     "||" ...
>     "[" ...
>     "UNION" ...
>     "INTERSECT" ...
>     "EXCEPT" ...
>     "MINUS" ...
>     
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.generateParseException(SqlBabelParserImpl.java:31191)
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.jj_consume_token(SqlBabelParserImpl.java:31008)
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.SqlStmtEof(SqlBabelParserImpl.java:877)
>       at 
> org.apache.calcite.sql.parser.babel.SqlBabelParserImpl.parseSqlStmtEof(SqlBabelParserImpl.java:198)
>       at 
> org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:148)
>       ... 4 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to