[ 
https://issues.apache.org/jira/browse/DRILL-6612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16547792#comment-16547792
 ] 

ASF GitHub Bot commented on DRILL-6612:
---------------------------------------

vvysotskyi commented on a change in pull request #1385: DRILL-6612: Query fails 
with AssertionError when joining persistent a…
URL: https://github.com/apache/drill/pull/1385#discussion_r203368482
 
 

 ##########
 File path: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/SchemaUtilites.java
 ##########
 @@ -144,6 +144,11 @@ public static String getSchemaPath(List<String> 
schemaPath) {
     return SCHEMA_PATH_JOINER.join(schemaPath);
   }
 
+  /** Utility method to get the list with schema path components for given 
schema path string. */
+  public static List<String> getSchemaPathList(String schemaPath) {
 
 Review comment:
   Thanks, done.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Query fails with AssertionError when joining persistent and temporary tables
> ----------------------------------------------------------------------------
>
>                 Key: DRILL-6612
>                 URL: https://issues.apache.org/jira/browse/DRILL-6612
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.12.0
>            Reporter: Volodymyr Vysotskyi
>            Assignee: Volodymyr Vysotskyi
>            Priority: Major
>             Fix For: 1.14.0
>
>
> *Problem description*
> When joining persistent and temporary tables:
> {code:sql}
> create TEMPORARY table temp_tab as select '12312' as c2;
> create table pers_tab as select '12312' as c1;
> select * from `%s` a join `%s` b on a.c1 = b.c2
> {code}
> Query fails with AssertionError:
> {noformat}
> [Error Id: 85663e83-d7f0-4f84-92ea-fb329e31aec5 on user515050-pc:31013]
> org.apache.drill.common.exceptions.UserException: SYSTEM ERROR: 
> AssertionError: Field ordinal 1 is invalid for  type '(DrillRecordRow[**])'
> [Error Id: 85663e83-d7f0-4f84-92ea-fb329e31aec5 on user515050-pc:31013]
>       at 
> org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:633)
>  ~[classes/:na]
>       at 
> org.apache.drill.exec.work.foreman.Foreman$ForemanResult.close(Foreman.java:761)
>  [classes/:na]
>       at 
> org.apache.drill.exec.work.foreman.QueryStateProcessor.checkCommonStates(QueryStateProcessor.java:325)
>  [classes/:na]
>       at 
> org.apache.drill.exec.work.foreman.QueryStateProcessor.planning(QueryStateProcessor.java:221)
>  [classes/:na]
>       at 
> org.apache.drill.exec.work.foreman.QueryStateProcessor.moveToState(QueryStateProcessor.java:83)
>  [classes/:na]
>       at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:293) 
> [classes/:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  [na:1.8.0_171]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  [na:1.8.0_171]
>       at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171]
> Caused by: org.apache.drill.exec.work.foreman.ForemanException: Unexpected 
> exception during fragment initialization: while converting CAST(`a`.`colA2` 
> AS VARCHAR) = CAST(`b`.`colB2` AS VARCHAR)
>       at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:294) 
> [classes/:na]
>       ... 3 common frames omitted
> Caused by: java.lang.RuntimeException: while converting CAST(`a`.`colA2` AS 
> VARCHAR) = CAST(`b`.`colB2` AS VARCHAR)
>       at 
> org.apache.calcite.sql2rel.ReflectiveConvertletTable$1.convertCall(ReflectiveConvertletTable.java:90)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:63)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4656)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3994)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138) 
> ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4558)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertJoinCondition(SqlToRelConverter.java:2601)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertFrom(SqlToRelConverter.java:2048)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:643)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:624)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQueryRecursive(SqlToRelConverter.java:3058)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:560)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.drill.exec.planner.sql.SqlConverter.toRel(SqlConverter.java:384) 
> ~[classes/:na]
>       at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToRel(DefaultSqlHandler.java:664)
>  ~[classes/:na]
>       at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.validateAndConvert(DefaultSqlHandler.java:207)
>  ~[classes/:na]
>       at 
> org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:176)
>  ~[classes/:na]
>       at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:145)
>  ~[classes/:na]
>       at 
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:83)
>  ~[classes/:na]
>       at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:567) 
> [classes/:na]
>       at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:266) 
> [classes/:na]
>       ... 3 common frames omitted
> Caused by: java.lang.reflect.InvocationTargetException: null
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[na:1.8.0_171]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[na:1.8.0_171]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[na:1.8.0_171]
>       at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_171]
>       at 
> org.apache.calcite.sql2rel.ReflectiveConvertletTable$1.convertCall(ReflectiveConvertletTable.java:87)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       ... 22 common frames omitted
> Caused by: java.lang.AssertionError: Field ordinal 1 is invalid for  type 
> '(DrillRecordRow[**])'
>       at 
> org.apache.calcite.rex.RexBuilder.makeFieldAccess(RexBuilder.java:195) 
> ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.convertIdentifier(SqlToRelConverter.java:3623)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.access$2200(SqlToRelConverter.java:214)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4665)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3994)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at org.apache.calcite.sql.SqlIdentifier.accept(SqlIdentifier.java:344) 
> ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4558)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.StandardConvertletTable.convertCast(StandardConvertletTable.java:573)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.StandardConvertletTable$1.convertCall(StandardConvertletTable.java:116)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:63)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4656)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:3994)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138) 
> ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:4558)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.StandardConvertletTable.convertExpressionList(StandardConvertletTable.java:857)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.StandardConvertletTable.convertCall(StandardConvertletTable.java:833)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       at 
> org.apache.calcite.sql2rel.StandardConvertletTable.convertCall(StandardConvertletTable.java:817)
>  ~[calcite-core-1.16.0-drill-r6.jar:1.16.0-drill-r6]
>       ... 27 common frames omitted
> 16:42:17.217 [main] ERROR org.apache.drill.TestReporter - Test Failed (d: 0 
> B(1 B), h: -106.7 MiB(97.8 MiB), nh: 19.5 MiB(78.7 MiB)): 
> testTempTab(org.apache.drill.exec.vector.complex.writer.TestJsonReader)
> org.apache.drill.common.exceptions.UserRemoteException: SYSTEM ERROR: 
> AssertionError: Field ordinal 1 is invalid for  type '(DrillRecordRow[**])'
> {noformat}
> *Root cause*
> This bug appeared after rebasing Calcite from 1.4.0 to 1.13.0.
> With new changes, a temporary schema was passed into {{SqlIdentifier}} as an 
> array with a string that corresponds to the schema path but was expected that 
> every element of the schema path will be represented as a separate string.
> It caused the loss of previously preserved row type, so the error is thrown.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to