Jianfeng Jia has posted comments on this change. Change subject: Index-only plan step 2: Added SplitOperator ......................................................................
Patch Set 10: (6 comments) Looks good in general. I have two main comments: 1. I saw this "numberOfNonMaterializedOutputs" which is used as writer[0..numberOfNonMaterializedOutputs], it seems we view the first a few output as the NonMaterialized output. It doesn't sound right to me, though it is not your change. 2. We need a hyracks level test for the Split operator. https://asterix-gerrit.ics.uci.edu/#/c/1196/10/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SplitOperator.java File hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/SplitOperator.java: Line 32: private Mutable<ILogicalExpression> branchingExpression; Can this one be Immutable? we should not change the expression. https://asterix-gerrit.ics.uci.edu/#/c/1196/10/hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java File hyracks-fullstack/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/SplitOperatorDescriptor.java: Line 73: builder.addTargetEdge(i, sma, pipelineOutputIndex++); isn't this `pipelineOutputIndex` == `i`? Line 91: private final boolean[] isOpen = new boolean[numberOfNonMaterializedOutputs]; where does this `numberOfNonMaterializedOutputs` come from? Line 111: builders = new ArrayTupleBuilder[numberOfNonMaterializedOutputs]; this builder seems not be used Line 112: builderDatas = new GrowableArray[numberOfNonMaterializedOutputs]; ditto https://asterix-gerrit.ics.uci.edu/#/c/1196/10/hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java File hyracks-fullstack/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractReplicateOperatorDescriptor.java: Line 70: for (boolean flag : outputMaterializationFlags) { I'm confused by the original code. Based on the outputMaterializationFlags it seems that it set each specific output. But we only use the numberOfNonMaterializedOutputs, which assumes that the first a few output is the NonMaterialzed one. If we set the flag as [true, false, false, true] , it will be wrong to materialised the second one. -- To view, visit https://asterix-gerrit.ics.uci.edu/1196 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ice190827513cd8632764b52c9d0338d65c830740 Gerrit-PatchSet: 10 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Taewoo Kim <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Jianfeng Jia <[email protected]> Gerrit-Reviewer: Taewoo Kim <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]> Gerrit-Reviewer: Yingyi Bu <[email protected]> Gerrit-HasComments: Yes
