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

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

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

    https://github.com/apache/drill/pull/926#discussion_r137658224
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/RecordReader.java ---
    @@ -26,6 +26,9 @@
     import org.apache.drill.exec.record.MaterializedField;
     import org.apache.drill.exec.vector.ValueVector;
     
    +import com.fasterxml.jackson.annotation.JsonTypeInfo;
    +
    +@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, 
include=JsonTypeInfo.As.WRAPPER_OBJECT, property="type")
    --- End diff --
    
    AFAIK, it will not impact implementations of the `RecordReader` interface. 
The annotation affects Jackson type inference when a physical operator has a 
reference to a `RecordReader` and Jackson needs to construct a concrete 
implementation of the `RecordReader`. Such information needs to be passed in 
any case and the annotation specifies JSON syntax used to pass the type 
information. To avoid the concern I'll move the annotation to the field 
declaration in `DirectSubScan`. The effect of such move is that it will be 
necessary to annotate `RecordReader` in every operator that may be passed as 
part of a fragment to a remote node for execution.  


> SYSTEM ERROR: JsonMappingException: No suitable constructor found for type 
> [simple type, class org.apache.drill.exec.store.direct.DirectSubScan]
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-5269
>                 URL: https://issues.apache.org/jira/browse/DRILL-5269
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.9.0
>            Reporter: Anas
>            Assignee: Vlad Rozov
>            Priority: Critical
>         Attachments: tc_sm_parquet.tar.gz
>
>
> I am a query that has nested joins. The query fails with the following 
> exception.
> {code}
> SYSTEM ERROR: JsonMappingException: No suitable constructor found for type 
> [simple type, class org.apache.drill.exec.store.direct.DirectSubScan]: can 
> not instantiate from JSON object (missing default constructor or creator, or 
> perhaps need to add/enable type information?)
>  at [Source: {
>   "pop" : "broadcast-sender",
>   "@id" : 0,
>   "receiver-major-fragment" : 1,
>   "child" : {
>     "pop" : "selection-vector-remover",
>     "@id" : 1,
>     "child" : {
>       "pop" : "filter",
>       "@id" : 2,
>       "child" : {
>         "pop" : "project",
>         "@id" : 3,
>         "exprs" : [ {
>           "ref" : "`__measure__10`",
>           "expr" : "`count`"
>         } ],
>         "child" : {
>           "pop" : "DirectSubScan",
>           "@id" : 4,
>           "initialAllocation" : 1000000,
>           "maxAllocation" : 10000000000,
>           "reader" : [ {
>             "count" : 633
>           } ],
>           "cost" : 0.0
>         },
>         "initialAllocation" : 1000000,
>         "maxAllocation" : 10000000000,
>         "cost" : 20.0
>       },
>       "expr" : "greater_than(`__measure__10`, 0) ",
>       "initialAllocation" : 1000000,
>       "maxAllocation" : 10000000000,
>       "cost" : 10.0
>     },
>     "initialAllocation" : 1000000,
>     "maxAllocation" : 10000000000,
>     "cost" : 10.0
>   },
>   "destinations" : [ {
>     "minorFragmentId" : 0,
>     "endpoint" : "Cg0xOTIuMTY4LjAuMTAwEKLyARij8gEgpPIB"
>   }, {
>     "minorFragmentId" : 1,
>     "endpoint" : "Cg0xOTIuMTY4LjAuMTAwEKLyARij8gEgpPIB"
>   } ],
>   "initialAllocation" : 1000000,
>   "maxAllocation" : 10000000000,
>   "cost" : 10.0
> }; line: 20, column: 11] (through reference chain: 
> org.apache.drill.exec.physical.config.BroadcastSender["child"]->org.apache.drill.exec.physical.config.SelectionVectorRemover["child"]->org.apache.drill.exec.physical.config.Filter["child"]->org.apache.drill.exec.physical.config.Project["child"])
> Fragment 3:0
> [Error Id: 9fb4ef4a-f118-4625-94f5-56c96dc7bdb4 on 192.168.0.100:31010]
>   (com.fasterxml.jackson.databind.JsonMappingException) No suitable 
> constructor found for type [simple type, class 
> org.apache.drill.exec.store.direct.DirectSubScan]: can not instantiate from 
> JSON object (missing default constructor or creator, or perhaps need to 
> add/enable type information?)
>  at [Source: {
>   "pop" : "broadcast-sender",
>   "@id" : 0,
>   "receiver-major-fragment" : 1,
>   "child" : {
>     "pop" : "selection-vector-remover",
>     "@id" : 1,
>     "child" : {
>       "pop" : "filter",
>       "@id" : 2,
>       "child" : {
>         "pop" : "project",
>         "@id" : 3,
>         "exprs" : [ {
>           "ref" : "`__measure__10`",
>           "expr" : "`count`"
>         } ],
>         "child" : {
>           "pop" : "DirectSubScan",
>           "@id" : 4,
>           "initialAllocation" : 1000000,
>           "maxAllocation" : 10000000000,
>           "reader" : [ {
>             "count" : 633
>           } ],
>           "cost" : 0.0
>         },
>         "initialAllocation" : 1000000,
>         "maxAllocation" : 10000000000,
>         "cost" : 20.0
>       },
>       "expr" : "greater_than(`__measure__10`, 0) ",
>       "initialAllocation" : 1000000,
>       "maxAllocation" : 10000000000,
>       "cost" : 10.0
>     },
>     "initialAllocation" : 1000000,
>     "maxAllocation" : 10000000000,
>     "cost" : 10.0
>   },
>   "destinations" : [ {
>     "minorFragmentId" : 0,
>     "endpoint" : "Cg0xOTIuMTY4LjAuMTAwEKLyARij8gEgpPIB"
>   }, {
>     "minorFragmentId" : 1,
>     "endpoint" : "Cg0xOTIuMTY4LjAuMTAwEKLyARij8gEgpPIB"
>   } ],
>   "initialAllocation" : 1000000,
>   "maxAllocation" : 10000000000,
>   "cost" : 10.0
> }; line: 20, column: 11] (through reference chain: 
> org.apache.drill.exec.physical.config.BroadcastSender["child"]->org.apache.drill.exec.physical.config.SelectionVectorRemover["child"]->org.apache.drill.exec.physical.config.Filter["child"]->org.apache.drill.exec.physical.config.Project["child"])
>     com.fasterxml.jackson.databind.JsonMappingException.from():216
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault():1130
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject():298
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId():1094
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther():166
>     com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize():135
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId():120
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject():91
>     
> com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType():142
>     
> com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize():488
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping():465
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased():380
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault():1123
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject():298
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId():1094
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther():166
>     com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize():135
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId():120
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject():91
>     
> com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType():142
>     
> com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize():488
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping():465
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased():380
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault():1123
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject():298
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId():1094
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther():166
>     com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize():135
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId():120
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject():91
>     
> com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType():142
>     
> com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize():488
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping():465
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased():380
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault():1123
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject():298
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId():1094
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther():166
>     com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize():135
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId():120
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject():91
>     
> com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType():142
>     
> com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize():488
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping():465
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased():380
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault():1123
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject():298
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithObjectId():1094
>     
> com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther():166
>     com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize():135
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId():120
>     
> com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject():91
>     
> com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType():142
>     
> com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer.deserialize():42
>     com.fasterxml.jackson.databind.ObjectReader._bindAndClose():1575
>     com.fasterxml.jackson.databind.ObjectReader.readValue():1200
>     org.apache.drill.exec.planner.PhysicalPlanReader.readFragmentOperator():94
>     org.apache.drill.exec.work.fragment.FragmentExecutor.run():203
>     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
> {code}



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

Reply via email to