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

Reply via email to