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

SqlParseException when using component identifier for setting in merge statements

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.19.0
    • Fix Version/s: 1.20.0
    • Component/s: core
    • Environment:

      OS: win10 (17763)

      JDK: 1.7

      Description

      The update section of "merge SQL" reports an error when using an alias

      // if i replace red code with "b = '123456'", I don't get an error
      String sql = "merge into xxx as t1 using yyy as t2 on t1.a = t2.a when matched then update set t1.b = '123456'" ; 
      SqlParser.ConfigBuilder configBuilder = SqlParser.configBuilder();
      configBuilder.setCaseSensitive(false);
      SqlParser.Config config = configBuilder.build();
      SqlParser parser = SqlParser.create(sql, config);
      SqlNode node = parser.parseQuery();
      

      the error

      //代码占位符
      Exception in thread "main" org.apache.calcite.sql.parser.SqlParseException: Encountered "." at line 1, column 84.
      Was expecting:
      "=" ...
      
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.convertException(SqlParserImpl.java:355)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.normalizeException(SqlParserImpl.java:143)
      at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:156)
      at com.yatop.Calcite.main(Calcite.java:39)
      Caused by: org.apache.calcite.sql.parser.impl.ParseException: Encountered "." at line 1, column 84.
      Was expecting:
      "=" ...
      
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.generateParseException(SqlParserImpl.java:25299)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.jj_consume_token(SqlParserImpl.java:25116)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.WhenMatchedClause(SqlParserImpl.java:1414)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.SqlMerge(SqlParserImpl.java:1383)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.SqlStmt(SqlParserImpl.java:861)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.SqlStmtEof(SqlParserImpl.java:877)
      at org.apache.calcite.sql.parser.impl.SqlParserImpl.parseSqlStmtEof(SqlParserImpl.java:199)
      at org.apache.calcite.sql.parser.SqlParser.parseQuery(SqlParser.java:148)
      ... 1 more
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                danny0405 Danny Chen
                Reporter:
                wzqiang1332 wuzq
              • 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 - 20m
                  20m