vvysotskyi opened a new pull request #2194: URL: https://github.com/apache/drill/pull/2194
# [DRILL-7888](https://issues.apache.org/jira/browse/DRILL-7888): query.json returns an incorrect error message when the query fails ## Description Updated StreamingHttpConnection.java to return query id and failed state instead of the incorrect message as stated in the Jira ticket. Examples of the requests and responses: Request: ``` { "query": "SELECT * FROM cp.`employee123321123321.json` LIMIT 20", "queryType": "SQL" } ``` Response: ``` { "queryId": "1fa0acc2-e507-6688-69fe-02fc627c8c47", "queryState": "FAILED" } ``` Please note, to preserve backward compatibility, default response has such a form, so now it is possible to obtain additional error info from the query profile. To provide error details right in the response, the `exec.errors.verbose` option should be set in the following way: ``` { "query": "SELECT * FROM cp.`employee123321123321.json` LIMIT 20", "queryType": "SQL", "options": { "exec.errors.verbose": "true" } } ``` The result will be the following and includes a detailed error message and exception stack trace: ``` { "queryId": "1fa0ac2e-19e7-a453-d2b4-6e775e57b4ca", "exception": "org.apache.calcite.runtime.CalciteContextException", "errorMessage": "From line 1, column 15 to line 1, column 16: Object 'employee123321123321.json' not found within 'cp': Object 'employee123321123321.json' not found within 'cp'", "stackTrace": "org.apache.calcite.runtime.CalciteContextException: From line 1, column 15 to line 1, column 16: Object 'employee123321123321.json' not found within 'cp': Object 'employee123321123321.json' not found within 'cp'\n\tat .......(:0)\n\tat org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)\n\tat org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:835)\n\tat org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:820)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4881)\n\tat org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:127)\n\tat org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:177)\n\tat org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1009)\n\tat org.apache.c alcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:969)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3129)\n\tat org.apache.drill.exec.planner.sql.conversion.DrillValidator.validateFrom(DrillValidator.java:63)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3111)\n\tat org.apache.drill.exec.planner.sql.conversion.DrillValidator.validateFrom(DrillValidator.java:63)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3383)\n\tat org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)\n\tat org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1009)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:969)\n\tat org.apache.calcite.sql.SqlSelect.val idate(SqlSelect.java:216)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:944)\n\tat org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:651)\n\tat org.apache.drill.exec.planner.sql.conversion.SqlConverter.validate(SqlConverter.java:189)\n\tat org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateNode(DefaultSqlHandler.java:641)\n\tat org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert(DefaultSqlHandler.java:195)\n\tat org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:169)\n\tat org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:283)\n\tat org.apache.drill.exec.planner.sql.DrillSqlWorker.getPhysicalPlan(DrillSqlWorker.java:163)\n\tat org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan(DrillSqlWorker.java:128)\n\tat org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSql Worker.java:93)\n\tat org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:592)\n\tat org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:273)\n\tat .......(:0)\nCaused by: org.apache.calcite.sql.validate.SqlValidatorException: Object 'employee123321123321.json' not found within 'cp'\n\tat .......(:0)\n\tat org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)\n\tat org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)\n\t... 31 more\n", "queryState": "FAILED" } ``` ## Documentation NA ## Testing Added unit tests and checked manually. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
