Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-26295

'HELP ;', 'QUIT ;' and other sql-client commands fail with CalciteException: Non-query expression encountered in illegal context

    XMLWordPrintableJSON

Details

    Description

      It seems the reason is https://github.com/apache/flink/pull/18363/files
      where added condition like

      super(Pattern.compile("HELP;?", DEFAULT_PATTERN_FLAGS))
      

      that means HELP; will work however if there is any space between HELP and ; then not
      and it fails like below (before that it worked without failing)

      Having a space between command and a semicolon is pretty common since autocompletion inserts it after tab

      [ERROR] Could not execute SQL statement. Reason:
      org.apache.calcite.runtime.CalciteException: Non-query expression encountered in illegal context
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
      	at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:467)
      	at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:560)
      	at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:883)
      	at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:868)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.checkNonQueryExpression(FlinkSqlParserImpl.java:395)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression3(FlinkSqlParserImpl.java:21147)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression2b(FlinkSqlParserImpl.java:20816)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression2(FlinkSqlParserImpl.java:20857)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.Expression(FlinkSqlParserImpl.java:20788)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.LeafQueryOrExpr(FlinkSqlParserImpl.java:20765)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.QueryOrExpr(FlinkSqlParserImpl.java:20213)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.OrderedQueryOrExpr(FlinkSqlParserImpl.java:588)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.SqlStmt(FlinkSqlParserImpl.java:3986)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.SqlStmtList(FlinkSqlParserImpl.java:2915)
      	at org.apache.flink.sql.parser.impl.FlinkSqlParserImpl.parseSqlStmtList(FlinkSqlParserImpl.java:287)
      	at org.apache.calcite.sql.parser.SqlParser.parseStmtList(SqlParser.java:193)
      	at org.apache.flink.table.planner.parse.CalciteParser.parseSqlList(CalciteParser.java:77)
      	at org.apache.flink.table.planner.delegation.ParserImpl.parse(ParserImpl.java:101)
      	at org.apache.flink.table.client.gateway.local.LocalExecutor.lambda$parseStatement$1(LocalExecutor.java:172)
      	at org.apache.flink.table.client.gateway.context.ExecutionContext.wrapClassLoader(ExecutionContext.java:88)
      	at org.apache.flink.table.client.gateway.local.LocalExecutor.parseStatement(LocalExecutor.java:172)
      	at org.apache.flink.table.client.cli.SqlCommandParserImpl.parseCommand(SqlCommandParserImpl.java:45)
      	at org.apache.flink.table.client.cli.SqlMultiLineParser.parse(SqlMultiLineParser.java:71)
      	at org.jline.reader.impl.LineReaderImpl.acceptLine(LineReaderImpl.java:2731)
      	at org.jline.reader.impl.LineReaderImpl.readLine(LineReaderImpl.java:585)
      	at org.apache.flink.table.client.cli.CliClient.getAndExecuteStatements(CliClient.java:296)
      	at org.apache.flink.table.client.cli.CliClient.executeInteractive(CliClient.java:281)
      	at org.apache.flink.table.client.cli.CliClient.executeInInteractiveMode(CliClient.java:229)
      	at org.apache.flink.table.client.SqlClient.openCli(SqlClient.java:151)
      	at org.apache.flink.table.client.SqlClient.start(SqlClient.java:95)
      	at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:187)
      	at org.apache.flink.table.client.SqlClient.main(SqlClient.java:161)
      
      

      Attachments

        Issue Links

          Activity

            People

              Sergey Nuyanzin Sergey Nuyanzin
              Sergey Nuyanzin Sergey Nuyanzin
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: