drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-6020) NullPointerException with Union setting on when querying JSON untyped path
Date Wed, 13 Dec 2017 10:49:00 GMT

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

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

Github user vvysotskyi commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1068#discussion_r156621897
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/FieldIdUtil.java
---
    @@ -131,7 +131,7 @@ public static TypedFieldId getFieldIdIfMatches(ValueVector vector,
TypedFieldId.
         } else if(v instanceof ListVector) {
           ListVector list = (ListVector) v;
           return getFieldIdIfMatches(list, builder, addToBreadCrumb, seg.getChild());
    -    } else if (v instanceof  UnionVector) {
    +    } else if (v instanceof  UnionVector && !seg.isLastPath()) {
    --- End diff --
    
    Good catch! 
    I think we should add check for nulls into method `getFieldIdIfMatchesUnion()` as it was
done for `getFieldIdIfMatches()`. Also please add a unit test for this change. You may use
[testFieldWithDots()](https://github.com/apache/drill/blob/acc5ed927e1fa4011ac1c3724d15197484b9f45b/exec/java-exec/src/test/java/org/apache/drill/exec/vector/complex/writer/TestJsonReader.java#L705)
as an example.
    
    But one more point: with this change error is not thrown, but only nulls are returned.
I think we should also fix this issue on the borders of this pull request.


> NullPointerException with Union setting on when querying JSON untyped path
> --------------------------------------------------------------------------
>
>                 Key: DRILL-6020
>                 URL: https://issues.apache.org/jira/browse/DRILL-6020
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.11.0
>            Reporter: Mitchel Labonte
>             Fix For: 1.13.0
>
>
> h1. Steps to reproduce
> alter session set `exec.enable_union_type`=true;
> select tb.level1.dta from dfs.`file.json` tb;
> *Content of file.json:*
> {noformat}
> {"level1":{"dta":{"test":"test"}}}
> {"level1":{"dta":"test"}}
> {noformat}
> h1. Stack trace
> Error: SYSTEM ERROR: NullPointerException
> Fragment 0:0
> [Error Id: fe267584-32f3-413c-a77c-fc5b5c1ba513 on localhost:31010]
>   (java.lang.NullPointerException) null
>     org.apache.drill.exec.vector.complex.FieldIdUtil.getFieldIdIfMatchesUnion():34
>     org.apache.drill.exec.vector.complex.FieldIdUtil.getFieldIdIfMatches():135
>     org.apache.drill.exec.vector.complex.FieldIdUtil.getFieldIdIfMatches():130
>     org.apache.drill.exec.vector.complex.FieldIdUtil.getFieldId():201
>     org.apache.drill.exec.record.SimpleVectorWrapper.getFieldIdIfMatches():102
>     org.apache.drill.exec.record.VectorContainer.getValueVectorId():298
>     org.apache.drill.exec.physical.impl.ScanBatch.getValueVectorId():313
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer$MaterializeVisitor.visitSchemaPath():289
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer$MaterializeVisitor.visitSchemaPath():272
>     org.apache.drill.common.expression.SchemaPath.accept():150
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer$AbstractMaterializeVisitor.visitFunctionCall():399
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer$AbstractMaterializeVisitor.visitFunctionCall():331
>     org.apache.drill.common.expression.FunctionCall.accept():60
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer.materialize():169
>     org.apache.drill.exec.expr.ExpressionTreeMaterializer.materialize():147
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.setupNewSchema():421
>     org.apache.drill.exec.record.AbstractSingleRecordBatch.innerNext():78
>     org.apache.drill.exec.physical.impl.project.ProjectRecordBatch.innerNext():133
>     org.apache.drill.exec.record.AbstractRecordBatch.next():162
>     org.apache.drill.exec.physical.impl.BaseRootExec.next():105
>     org.apache.drill.exec.physical.impl.ScreenCreator$ScreenRoot.innerNext():81
>     org.apache.drill.exec.physical.impl.BaseRootExec.next():95
>     org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():234
>     org.apache.drill.exec.work.fragment.FragmentExecutor$1.run():227
>     java.security.AccessController.doPrivileged():-2
>     javax.security.auth.Subject.doAs():422
>     org.apache.hadoop.security.UserGroupInformation.doAs():1657
>     org.apache.drill.exec.work.fragment.FragmentExecutor.run():227
>     org.apache.drill.common.SelfCleaningRunnable.run():38
>     java.util.concurrent.ThreadPoolExecutor.runWorker():1142
>     java.util.concurrent.ThreadPoolExecutor$Worker.run():617
>     java.lang.Thread.run():745 (state=,code=0)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message