Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-2843

Babel parser should parse PostgreSQL-style '::' cast operator

    XMLWordPrintableJSON

    Details

      Description

      Code to reproduce the problem

      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);
      }

       

      Thrown exception

      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
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                mgelbana Mohamed Mohsen
                Reporter:
                mgelbana Mohamed Mohsen
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 4h 20m
                  4h 20m