Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-4351

SQL keyword CURRENT is used as column name in sys.drillbits

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 1.5.0
    • None
    • SQL Parser
    • None

    Description

      current is a SQL keyword, we will have to rename it to a different word, say foreman, in sys.drillbits table. We hit this issue when user tries to project the column named current in sys.drillbits

      Drill git commit ID : 6a36a704 (1.5.0-SNAPSHOT)
      JDK8

      current is a keyword in these DBMSs
      MS SQL Server
      Oracle
      DB2

      0: jdbc:drill:schema=dfs.tmp> select * from sys.drillbits;
      +-------------------+------------+---------------+------------+----------+
      |     hostname      | user_port  | control_port  | data_port  | current  |
      +-------------------+------------+---------------+------------+----------+
      | centos-03.qa.lab  | 31010      | 31011         | 31012      | true     |
      | centos-01.qa.lab  | 31010      | 31011         | 31012      | false    |
      | centos-02.qa.lab  | 31010      | 31011         | 31012      | false    |
      | centos-04.qa.lab  | 31010      | 31011         | 31012      | false    |
      +-------------------+------------+---------------+------------+----------+
      4 rows selected (0.238 seconds)
      0: jdbc:drill:schema=dfs.tmp> select hostname from sys.drillbits;
      +-------------------+
      |     hostname      |
      +-------------------+
      | centos-03.qa.lab  |
      | centos-01.qa.lab  |
      | centos-02.qa.lab  |
      | centos-04.qa.lab  |
      +-------------------+
      4 rows selected (0.178 seconds)
      
      0: jdbc:drill:schema=dfs.tmp> select current from sys.drillbits;
      Error: PARSE ERROR: Encountered "current from" at line 1, column 8.
      Was expecting one of:
          "UNION" ...
          "INTERSECT" ...
          "EXCEPT" ...
          ...
          "EXISTS" ...
          "(" ...
      
      
      while parsing SQL query:
      select current from sys.drillbits
             ^
      
      
      [Error Id: 07e0161c-9c36-44bb-b584-40fef11fa9e8 on centos-03.qa.lab:31010] (state=,code=0)
       
      

      From drillbit.log

       [Error Id: 07e0161c-9c36-44bb-b584-40fef11fa9e8 ]
              at org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:543) ~[drill-common-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:164) [drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:924) [drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:250) [drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65]
              at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65]
      Caused by: org.apache.calcite.sql.parser.SqlParseException: Encountered "current from" at line 1, column 8.
      Was expecting one of:
          "UNION" ...
          "INTERSECT" ...
          "EXCEPT" ...
          "ORDER" ...
          "LIMIT" ...
          "OFFSET" ...
          "FETCH" ...
          "STREAM" ...
          "DISTINCT" ...
          "ALL" ...
          "*" ...
          "+" ...
          "-" ...
          <UNSIGNED_INTEGER_LITERAL> ...
          <DECIMAL_NUMERIC_LITERAL> ...
          <APPROX_NUMERIC_LITERAL> ...
          <BINARY_STRING_LITERAL> ...
          <PREFIXED_STRING_LITERAL> ...
          <QUOTED_STRING> ...
          <UNICODE_STRING_LITERAL> ...
          "TRUE" ...
          "FALSE" ...
          "UNKNOWN" ...
          "NULL" ...
          <LBRACE_D> ...
          <LBRACE_T> ...
          <LBRACE_TS> ...
          "DATE" ...
          "TIME" ...
          "TIMESTAMP" ...
          "INTERVAL" ...
          "?" ...
          "CAST" ...
          "EXTRACT" ...
          "POSITION" ...
          "CONVERT" ...
          "TRANSLATE" ...
          "OVERLAY" ...
          "FLOOR" ...
          "CEIL" ...
          "CEILING" ...
          "SUBSTRING" ...
          "TRIM" ...
          <LBRACE_FN> ...
          "MULTISET" ...
          "ARRAY" ...
          "SPECIFIC" ...
          <IDENTIFIER> ...
          <QUOTED_IDENTIFIER> ...
          <BACK_QUOTED_IDENTIFIER> ...
          <BRACKET_QUOTED_IDENTIFIER> ...
          <UNICODE_QUOTED_IDENTIFIER> ...
          "ABS" ...
          "AVG" ...
          "CARDINALITY" ...
          "CHAR_LENGTH" ...
          "CHARACTER_LENGTH" ...
          "COALESCE" ...
          "COLLECT" ...
          "COVAR_POP" ...
          "COVAR_SAMP" ...
          "CUME_DIST" ...
          "COUNT" ...
          "CURRENT_DATE" ...
          "CURRENT_TIME" ...
          "CURRENT_TIMESTAMP" ...
          "DENSE_RANK" ...
          "ELEMENT" ...
          "EXP" ...
          "FIRST_VALUE" ...
          "FUSION" ...
          "GROUPING" ...
          "LAST_VALUE" ...
          "LN" ...
          "LOCALTIME" ...
          "LOCALTIMESTAMP" ...
          "LOWER" ...
          "MAX" ...
          "MIN" ...
          "MOD" ...
          "NULLIF" ...
          "OCTET_LENGTH" ...
          "PERCENT_RANK" ...
          "POWER" ...
          "RANK" ...
          "REGR_SXX" ...
          "REGR_SYY" ...
          "ROW_NUMBER" ...
          "SQRT" ...
          "STDDEV_POP" ...
          "STDDEV_SAMP" ...
          "SUM" ...
          "UPPER" ...
          "VAR_POP" ...
          "VAR_SAMP" ...
          "CURRENT_CATALOG" ...
          "CURRENT_DEFAULT_TRANSFORM_GROUP" ...
          "CURRENT_PATH" ...
          "CURRENT_ROLE" ...
          "CURRENT_SCHEMA" ...
          "CURRENT_USER" ...
          "SESSION_USER" ...
          "SYSTEM_USER" ...
          "USER" ...
          "NEW" ...
          "CASE" ...
          "NEXT" ...
          "CURRENT" "VALUE" ...
          "CURSOR" ...
          "ROW" ...
          "NOT" ...
          "EXISTS" ...
          "(" ...
      
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.convertException(DrillParserImpl.java:391) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.normalizeException(DrillParserImpl.java:121) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:149) ~[calcite-core-1.4.0-drill-r10.jar:1.4.0-drill-r10]
              at org.apache.calcite.prepare.PlannerImpl.parse(PlannerImpl.java:168) ~[calcite-core-1.4.0-drill-r10.jar:1.4.0-drill-r10]
              at org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:162) [drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              ... 5 common frames omitted
      Caused by: org.apache.drill.exec.planner.sql.parser.impl.ParseException: Encountered "current from" at line 1, column 8.
      ...
         at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.generateParseException(DrillParserImpl.java:17712) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.jj_consume_token(DrillParserImpl.java:17541) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SelectExpression(DrillParserImpl.java:1687) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SelectItem(DrillParserImpl.java:1656) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SelectList(DrillParserImpl.java:1632) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SqlSelect(DrillParserImpl.java:1170) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.LeafQuery(DrillParserImpl.java:581) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.LeafQueryOrExpr(DrillParserImpl.java:2709) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.QueryOrExpr(DrillParserImpl.java:2628) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.OrderedQueryOrExpr(DrillParserImpl.java:499) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SqlStmt(DrillParserImpl.java:808) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.SqlStmtEof(DrillParserImpl.java:854) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserImpl.parseSqlStmtEof(DrillParserImpl.java:180) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.drill.exec.planner.sql.parser.impl.DrillParserWithCompoundIdConverter.parseSqlStmtEof(DrillParserWithCompoundIdConverter.java:59) ~[drill-java-exec-1.5.0-SNAPSHOT.jar:1.5.0-SNAPSHOT]
              at org.apache.calcite.sql.parser.SqlParser.parseStmt(SqlParser.java:142) ~[calcite-core-1.4.0-drill-r10.jar:1.4.0-drill-r10]
              ... 7 common frames omitted
       

      Attachments

        Activity

          People

            Unassigned Unassigned
            khfaraaz Khurram Faraaz
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: