asterixdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amo...@apache.org
Subject [1/5] asterixdb git commit: Fix Indexing on Open fields and Meta fields
Date Wed, 22 Jun 2016 21:05:32 GMT
Repository: asterixdb
Updated Branches:
  refs/heads/master 64c021e46 -> dfa3c1174


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
index 2450c6c..99123b3 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/OperatorDeepCopyVisitor.java
@@ -74,8 +74,8 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitAggregateOperator(AggregateOperator op, Void arg) throws
AlgebricksException {
-        ArrayList<LogicalVariable> newList = new ArrayList<LogicalVariable>();
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<LogicalVariable> newList = new ArrayList<>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         newList.addAll(op.getVariables());
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new AggregateOperator(newList, newExpressions);
@@ -84,8 +84,8 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     @Override
     public ILogicalOperator visitRunningAggregateOperator(RunningAggregateOperator op, Void
arg)
             throws AlgebricksException {
-        ArrayList<LogicalVariable> newList = new ArrayList<LogicalVariable>();
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<LogicalVariable> newList = new ArrayList<>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         newList.addAll(op.getVariables());
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new RunningAggregateOperator(newList, newExpressions);
@@ -99,16 +99,14 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitGroupByOperator(GroupByOperator op, Void arg) throws AlgebricksException
{
-        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> groupByList
= new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
-        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> decoList
= new ArrayList<Pair<LogicalVariable, Mutable<ILogicalExpression>>>();
-        ArrayList<ILogicalPlan> newSubplans = new ArrayList<ILogicalPlan>();
+        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> groupByList
= new ArrayList<>();
+        List<Pair<LogicalVariable, Mutable<ILogicalExpression>>> decoList
= new ArrayList<>();
+        ArrayList<ILogicalPlan> newSubplans = new ArrayList<>();
         for (Pair<LogicalVariable, Mutable<ILogicalExpression>> pair : op.getGroupByList())
{
-            groupByList.add(new Pair<LogicalVariable, Mutable<ILogicalExpression>>(pair.first,
-                    deepCopyExpressionRef(pair.second)));
+            groupByList.add(new Pair<>(pair.first, deepCopyExpressionRef(pair.second)));
         }
         for (Pair<LogicalVariable, Mutable<ILogicalExpression>> pair : op.getDecorList())
{
-            decoList.add(new Pair<LogicalVariable, Mutable<ILogicalExpression>>(pair.first,
-                    deepCopyExpressionRef(pair.second)));
+            decoList.add(new Pair<>(pair.first, deepCopyExpressionRef(pair.second)));
         }
         GroupByOperator gbyOp = new GroupByOperator(groupByList, decoList, newSubplans);
         for (ILogicalPlan plan : op.getNestedPlans()) {
@@ -148,8 +146,8 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitAssignOperator(AssignOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<LogicalVariable> newList = new ArrayList<LogicalVariable>();
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<LogicalVariable> newList = new ArrayList<>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         newList.addAll(op.getVariables());
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new AssignOperator(newList, newExpressions);
@@ -163,7 +161,7 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitProjectOperator(ProjectOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<LogicalVariable> newList = new ArrayList<LogicalVariable>();
+        ArrayList<LogicalVariable> newList = new ArrayList<>();
         newList.addAll(op.getVariables());
         return new ProjectOperator(newList);
     }
@@ -171,7 +169,7 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     @Override
     public ILogicalOperator visitPartitioningSplitOperator(PartitioningSplitOperator op,
Void arg)
             throws AlgebricksException {
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new PartitioningSplitOperator(newExpressions, op.getDefaultBranchIndex());
     }
@@ -183,8 +181,8 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitScriptOperator(ScriptOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
-        ArrayList<LogicalVariable> newOutputList = new ArrayList<LogicalVariable>();
+        ArrayList<LogicalVariable> newInputList = new ArrayList<>();
+        ArrayList<LogicalVariable> newOutputList = new ArrayList<>();
         newInputList.addAll(op.getInputVariables());
         newOutputList.addAll(op.getOutputVariables());
         return new ScriptOperator(op.getScriptDescription(), newInputList, newOutputList);
@@ -192,7 +190,7 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitSubplanOperator(SubplanOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<ILogicalPlan> newSubplans = new ArrayList<ILogicalPlan>();
+        ArrayList<ILogicalPlan> newSubplans = new ArrayList<>();
         SubplanOperator subplanOp = new SubplanOperator(newSubplans);
         for (ILogicalPlan plan : op.getNestedPlans()) {
             newSubplans.add(OperatorManipulationUtil.deepCopy(plan, subplanOp));
@@ -202,11 +200,10 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitUnionOperator(UnionAllOperator op, Void arg) throws AlgebricksException
{
-        List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> newVarMap
= new ArrayList<Triple<LogicalVariable, LogicalVariable, LogicalVariable>>();
+        List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> newVarMap
= new ArrayList<>();
         List<Triple<LogicalVariable, LogicalVariable, LogicalVariable>> varMap
= op.getVariableMappings();
         for (Triple<LogicalVariable, LogicalVariable, LogicalVariable> triple : varMap)
{
-            newVarMap.add(new Triple<LogicalVariable, LogicalVariable, LogicalVariable>(triple.first,
triple.second,
-                    triple.third));
+            newVarMap.add(new Triple<>(triple.first, triple.second, triple.third));
         }
         return new UnionAllOperator(newVarMap);
     }
@@ -229,31 +226,31 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitUnnestMapOperator(UnnestMapOperator op, Void arg) throws
AlgebricksException {
-        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
+        ArrayList<LogicalVariable> newInputList = new ArrayList<>();
         newInputList.addAll(op.getVariables());
         return new UnnestMapOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()),
-                new ArrayList<Object>(op.getVariableTypes()), op.propagatesInput());
+                new ArrayList<>(op.getVariableTypes()), op.propagatesInput());
     }
 
     @Override
     public ILogicalOperator visitLeftOuterUnnestMapOperator(LeftOuterUnnestMapOperator op,
Void arg)
             throws AlgebricksException {
-        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
+        ArrayList<LogicalVariable> newInputList = new ArrayList<>();
         newInputList.addAll(op.getVariables());
         return new LeftOuterUnnestMapOperator(newInputList, deepCopyExpressionRef(op.getExpressionRef()),
-                new ArrayList<Object>(op.getVariableTypes()), op.propagatesInput());
+                new ArrayList<>(op.getVariableTypes()), op.propagatesInput());
     }
 
     @Override
     public ILogicalOperator visitDataScanOperator(DataSourceScanOperator op, Void arg) throws
AlgebricksException {
-        ArrayList<LogicalVariable> newInputList = new ArrayList<LogicalVariable>();
+        ArrayList<LogicalVariable> newInputList = new ArrayList<>();
         newInputList.addAll(op.getVariables());
         return new DataSourceScanOperator(newInputList, op.getDataSource());
     }
 
     @Override
     public ILogicalOperator visitDistinctOperator(DistinctOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new DistinctOperator(newExpressions);
     }
@@ -265,7 +262,7 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
 
     @Override
     public ILogicalOperator visitWriteOperator(WriteOperator op, Void arg) throws AlgebricksException
{
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new WriteOperator(newExpressions, op.getDataSink());
     }
@@ -273,16 +270,16 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     @Override
     public ILogicalOperator visitDistributeResultOperator(DistributeResultOperator op, Void
arg)
             throws AlgebricksException {
-        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<Mutable<ILogicalExpression>> newExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newExpressions, op.getExpressions());
         return new DistributeResultOperator(newExpressions, op.getDataSink());
     }
 
     @Override
     public ILogicalOperator visitWriteResultOperator(WriteResultOperator op, Void arg) throws
AlgebricksException {
-        ArrayList<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        ArrayList<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newKeyExpressions, op.getKeyExpressions());
-        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<>();
         deepCopyExpressionRefs(newKeyExpressions, op.getAdditionalFilteringExpressions());
         WriteResultOperator writeResultOp = new WriteResultOperator(op.getDataSource(),
                 deepCopyExpressionRef(op.getPayloadExpression()), newKeyExpressions);
@@ -293,13 +290,13 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     @Override
     public ILogicalOperator visitInsertDeleteUpsertOperator(InsertDeleteUpsertOperator op,
Void arg)
             throws AlgebricksException {
-        List<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newKeyExpressions, op.getPrimaryKeyExpressions());
-        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<>();
         deepCopyExpressionRefs(newKeyExpressions, op.getAdditionalFilteringExpressions());
-        InsertDeleteUpsertOperator insertDeleteOp = new InsertDeleteUpsertOperator(op.getDataSource(),
-                deepCopyExpressionRef(op.getPayloadExpression()), newKeyExpressions, op.getOperation(),
-                op.isBulkload());
+        InsertDeleteUpsertOperator insertDeleteOp =
+                new InsertDeleteUpsertOperator(op.getDataSource(), deepCopyExpressionRef(op.getPayloadExpression()),
+                        newKeyExpressions, op.getOperation(), op.isBulkload());
         insertDeleteOp.setAdditionalFilteringExpressions(newLSMComponentFilterExpressions);
         return insertDeleteOp;
     }
@@ -307,32 +304,32 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     @Override
     public ILogicalOperator visitIndexInsertDeleteUpsertOperator(IndexInsertDeleteUpsertOperator
op, Void arg)
             throws AlgebricksException {
-        List<Mutable<ILogicalExpression>> newPrimaryKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newPrimaryKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newPrimaryKeyExpressions, op.getPrimaryKeyExpressions());
-        List<Mutable<ILogicalExpression>> newSecondaryKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newSecondaryKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newSecondaryKeyExpressions, op.getSecondaryKeyExpressions());
-        Mutable<ILogicalExpression> newFilterExpression = new MutableObject<ILogicalExpression>(
-                ((AbstractLogicalExpression) op.getFilterExpression()).cloneExpression());
-        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<Mutable<ILogicalExpression>>();
+        Mutable<ILogicalExpression> newFilterExpression =
+                new MutableObject<>(((AbstractLogicalExpression) op.getFilterExpression()).cloneExpression());
+        List<Mutable<ILogicalExpression>> newLSMComponentFilterExpressions =
new ArrayList<>();
         deepCopyExpressionRefs(newLSMComponentFilterExpressions, op.getAdditionalFilteringExpressions());
         IndexInsertDeleteUpsertOperator indexInsertDeleteOp = new IndexInsertDeleteUpsertOperator(
                 op.getDataSourceIndex(), newPrimaryKeyExpressions, newSecondaryKeyExpressions,
newFilterExpression,
-                op.getOperation(), op.isBulkload());
+                op.getOperation(), op.isBulkload(), op.getNumberOfAdditionalNonFilteringFields());
         indexInsertDeleteOp.setAdditionalFilteringExpressions(newLSMComponentFilterExpressions);
         return indexInsertDeleteOp;
     }
 
     @Override
     public ILogicalOperator visitTokenizeOperator(TokenizeOperator op, Void arg) throws AlgebricksException
{
-        List<Mutable<ILogicalExpression>> newPrimaryKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newPrimaryKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newPrimaryKeyExpressions, op.getPrimaryKeyExpressions());
-        List<Mutable<ILogicalExpression>> newSecondaryKeyExpressions = new ArrayList<Mutable<ILogicalExpression>>();
+        List<Mutable<ILogicalExpression>> newSecondaryKeyExpressions = new ArrayList<>();
         deepCopyExpressionRefs(newSecondaryKeyExpressions, op.getSecondaryKeyExpressions());
-        List<LogicalVariable> newTokenizeVars = new ArrayList<LogicalVariable>();
+        List<LogicalVariable> newTokenizeVars = new ArrayList<>();
         deepCopyVars(newTokenizeVars, op.getTokenizeVars());
-        Mutable<ILogicalExpression> newFilterExpression = new MutableObject<ILogicalExpression>(
-                ((AbstractLogicalExpression) op.getFilterExpression()).cloneExpression());
-        List<Object> newTokenizeVarTypes = new ArrayList<Object>();
+        Mutable<ILogicalExpression> newFilterExpression =
+                new MutableObject<>(((AbstractLogicalExpression) op.getFilterExpression()).cloneExpression());
+        List<Object> newTokenizeVarTypes = new ArrayList<>();
         deepCopyObjects(newTokenizeVarTypes, op.getTokenizeVarTypes());
 
         TokenizeOperator tokenizeOp = new TokenizeOperator(op.getDataSourceIndex(), newPrimaryKeyExpressions,
@@ -349,17 +346,16 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
     private void deepCopyExpressionRefs(List<Mutable<ILogicalExpression>> newExprs,
             List<Mutable<ILogicalExpression>> oldExprs) {
         for (Mutable<ILogicalExpression> oldExpr : oldExprs) {
-            newExprs.add(new MutableObject<ILogicalExpression>(
-                    ((AbstractLogicalExpression) oldExpr.getValue()).cloneExpression()));
+            newExprs.add(new MutableObject<>(((AbstractLogicalExpression) oldExpr.getValue()).cloneExpression()));
         }
     }
 
     private Mutable<ILogicalExpression> deepCopyExpressionRef(Mutable<ILogicalExpression>
oldExprRef) {
         ILogicalExpression oldExpr = oldExprRef.getValue();
         if (oldExpr == null) {
-            return new MutableObject<ILogicalExpression>(null);
+            return new MutableObject<>(null);
         }
-        return new MutableObject<ILogicalExpression>(oldExpr.cloneExpression());
+        return new MutableObject<>(oldExpr.cloneExpression());
     }
 
     private List<LogicalVariable> deepCopyVars(List<LogicalVariable> newVars,
List<LogicalVariable> oldVars) {
@@ -376,12 +372,11 @@ public class OperatorDeepCopyVisitor implements ILogicalOperatorVisitor<ILogical
         return newObjs;
     }
 
-    private List<Pair<IOrder, Mutable<ILogicalExpression>>> deepCopyOrderAndExpression(
-            List<Pair<IOrder, Mutable<ILogicalExpression>>> ordersAndExprs)
{
-        List<Pair<IOrder, Mutable<ILogicalExpression>>> newOrdersAndExprs
= new ArrayList<Pair<IOrder, Mutable<ILogicalExpression>>>();
+    private List<Pair<IOrder, Mutable<ILogicalExpression>>>
+            deepCopyOrderAndExpression(List<Pair<IOrder, Mutable<ILogicalExpression>>>
ordersAndExprs) {
+        List<Pair<IOrder, Mutable<ILogicalExpression>>> newOrdersAndExprs
= new ArrayList<>();
         for (Pair<IOrder, Mutable<ILogicalExpression>> pair : ordersAndExprs)
{
-            newOrdersAndExprs
-                    .add(new Pair<IOrder, Mutable<ILogicalExpression>>(pair.first,
deepCopyExpressionRef(pair.second)));
+            newOrdersAndExprs.add(new Pair<>(pair.first, deepCopyExpressionRef(pair.second)));
         }
         return newOrdersAndExprs;
     }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
index f29fd6f..ce86e58 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/IndexInsertDeleteUpsertPOperator.java
@@ -56,11 +56,12 @@ public class IndexInsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
     private final List<LogicalVariable> additionalFilteringKeys;
     private final List<LogicalVariable> prevSecondaryKeys;
     private final LogicalVariable prevAdditionalFilteringKey;
+    private final int numOfAdditionalNonFilteringFields;
 
     public IndexInsertDeleteUpsertPOperator(List<LogicalVariable> primaryKeys, List<LogicalVariable>
secondaryKeys,
             List<LogicalVariable> additionalFilteringKeys, Mutable<ILogicalExpression>
filterExpr,
             IDataSourceIndex<?, ?> dataSourceIndex, List<LogicalVariable> prevSecondaryKeys,
-            LogicalVariable prevAdditionalFilteringKey) {
+            LogicalVariable prevAdditionalFilteringKey, int numOfAdditionalNonFilteringFields)
{
         this.primaryKeys = primaryKeys;
         this.secondaryKeys = secondaryKeys;
         if (filterExpr != null) {
@@ -72,6 +73,7 @@ public class IndexInsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
         this.additionalFilteringKeys = additionalFilteringKeys;
         this.prevSecondaryKeys = prevSecondaryKeys;
         this.prevAdditionalFilteringKey = prevAdditionalFilteringKey;
+        this.numOfAdditionalNonFilteringFields = numOfAdditionalNonFilteringFields;
     }
 
     @Override
@@ -91,6 +93,9 @@ public class IndexInsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
         List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>();
         scanVariables.addAll(primaryKeys);
         scanVariables.add(new LogicalVariable(-1));
+        for (int i = 0; i < numOfAdditionalNonFilteringFields; i++) {
+            scanVariables.add(new LogicalVariable(-1));
+        }
         IPhysicalPropertiesVector r = dataSourceIndex.getDataSource().getPropertiesProvider()
                 .computePropertiesVector(scanVariables);
         r.getLocalProperties().clear();
@@ -103,7 +108,7 @@ public class IndexInsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context,
ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema
outerPlanSchema)
-                    throws AlgebricksException {
+            throws AlgebricksException {
         IndexInsertDeleteUpsertOperator insertDeleteUpsertOp = (IndexInsertDeleteUpsertOperator)
op;
         IMetadataProvider mp = context.getMetadataProvider();
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
index 0bc683c..3c9cddf 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InsertDeleteUpsertPOperator.java
@@ -83,8 +83,7 @@ public class InsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
             IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) {
         List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>();
         scanVariables.addAll(keys);
-        // Why do we add $$-1 and not the payLoad variable?
-        scanVariables.add(new LogicalVariable(-1));
+        scanVariables.add(payload);
         if (additionalNonFilteringFields != null) {
             scanVariables.addAll(additionalNonFilteringFields);
         }
@@ -99,7 +98,7 @@ public class InsertDeleteUpsertPOperator extends AbstractPhysicalOperator
{
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, JobGenContext context,
ILogicalOperator op,
             IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema
outerPlanSchema)
-                    throws AlgebricksException {
+            throws AlgebricksException {
         InsertDeleteUpsertOperator insertDeleteOp = (InsertDeleteUpsertOperator) op;
         IMetadataProvider mp = context.getMetadataProvider();
         IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op);

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
index f1f6217..e85c35c 100644
--- a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
+++ b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
@@ -45,11 +45,11 @@ import org.apache.hyracks.algebricks.core.algebra.operators.logical.InsertDelete
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.IntersectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterJoinOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestMapOperator;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.LimitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.MaterializeOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.NestedTupleSourceOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator;
-import org.apache.hyracks.algebricks.core.algebra.operators.logical.LeftOuterUnnestOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.PartitioningSplitOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ProjectOperator;
 import org.apache.hyracks.algebricks.core.algebra.operators.logical.ReplicateOperator;
@@ -378,15 +378,19 @@ public class LogicalOperatorPrettyPrintVisitor implements ILogicalOperatorVisito
             throws AlgebricksException {
         StringBuilder buffer = new StringBuilder();
         String header = getIndexOpString(op.getOperation());
-        addIndent(buffer, indent).append(header).append(op.getDataSource()).append(" from
")
+        addIndent(buffer, indent).append(header).append(op.getDataSource()).append(" from
record: ")
                 .append(op.getPayloadExpression().getValue().accept(exprVisitor, indent));
         if (op.getAdditionalNonFilteringExpressions() != null) {
+            buffer.append(", meta: ");
             pprintExprList(op.getAdditionalNonFilteringExpressions(), buffer, indent);
         }
         buffer.append(" partitioned by ");
         pprintExprList(op.getPrimaryKeyExpressions(), buffer, indent);
         if (op.getOperation() == Kind.UPSERT) {
-            buffer.append(" out: ([record-before-upsert:" + op.getPrevRecordVar() + "]) ");
+            buffer.append(" out: ([record-before-upsert:" + op.getPrevRecordVar()
+                    + ((op.getPrevAdditionalNonFilteringVars() != null)
+                            ? (", additional-before-upsert: " + op.getPrevAdditionalNonFilteringVars())
: "")
+                    + "]) ");
         }
         if (op.isBulkload()) {
             buffer.append(" [bulkload]");

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
index 6d3692f..8701851 100644
--- a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
+++ b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetAlgebricksPhysicalOperatorsRule.java
@@ -352,7 +352,8 @@ public class SetAlgebricksPhysicalOperatorsRule implements IAlgebraicRewriteRule
                         }
                         op.setPhysicalOperator(new IndexInsertDeleteUpsertPOperator(primaryKeys,
secondaryKeys,
                                 additionalFilteringKeys, opInsDel.getFilterExpression(),
opInsDel.getDataSourceIndex(),
-                                prevSecondaryKeys, prevAdditionalFilteringKey));
+                                prevSecondaryKeys, prevAdditionalFilteringKey,
+                                opInsDel.getNumberOfAdditionalNonFilteringFields()));
                     }
                     break;
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
index c6a0035..27a767f 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/TypeAwareTupleReference.java
@@ -19,14 +19,13 @@
 
 package org.apache.hyracks.storage.am.common.tuples;
 
-import static org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.VarLenIntDecoder;
-
 import java.nio.ByteBuffer;
 
 import org.apache.hyracks.api.dataflow.value.ITypeTraits;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder;
+import org.apache.hyracks.util.encoding.VarLenIntEncoderDecoder.VarLenIntDecoder;
 
 public class TypeAwareTupleReference implements ITreeIndexTupleReference {
     protected ByteBuffer buf;
@@ -36,7 +35,7 @@ public class TypeAwareTupleReference implements ITreeIndexTupleReference
{
     protected int nullFlagsBytes;
     protected int dataStartOff;
 
-    protected ITypeTraits[] typeTraits;
+    protected final ITypeTraits[] typeTraits;
     protected VarLenIntDecoder encDec = VarLenIntEncoderDecoder.createDecoder();
     protected int[] decodedFieldSlots;
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
index 653c451..f62f70c 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeFileManager.java
@@ -184,7 +184,7 @@ public class LSMBTreeFileManager extends AbstractLSMIndexFileManager {
         }
         ComparableFileName cmpBTreeFileName = null;
         ComparableFileName cmpBloomFilterFileName = null;
-        while (btreeFileIter.hasNext() && bloomFilterFileIter.hasNext()) {
+        while (btreeFileIter.hasNext() && (hasBloomFilter ? bloomFilterFileIter.hasNext()
: true)) {
             cmpBTreeFileName = btreeFileIter.next();
             if (hasBloomFilter) {
                 cmpBloomFilterFileName = bloomFilterFileIter.next();

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/dfa3c117/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 131ef02..786ce46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,4 +44,35 @@
     <module>hyracks-fullstack</module>
     <module>asterixdb</module>
   </modules>
+  <build>
+      <pluginManagement>
+          <plugins>
+              <!--This plugin's configuration is used to store Eclipse m2e settings only.
It has no influence on the Maven build itself.-->
+              <plugin>
+                  <groupId>org.eclipse.m2e</groupId>
+                  <artifactId>lifecycle-mapping</artifactId>
+                  <version>1.0.0</version>
+                  <configuration>
+                      <lifecycleMappingMetadata>
+                          <pluginExecutions>
+                              <pluginExecution>
+                                  <pluginExecutionFilter>
+                                      <groupId>org.apache.maven.plugins</groupId>
+                                      <artifactId>maven-checkstyle-plugin</artifactId>
+                                      <versionRange>[2.17,)</versionRange>
+                                      <goals>
+                                          <goal>check</goal>
+                                      </goals>
+                                  </pluginExecutionFilter>
+                                  <action>
+                                      <ignore></ignore>
+                                  </action>
+                              </pluginExecution>
+                          </pluginExecutions>
+                      </lifecycleMappingMetadata>
+                  </configuration>
+              </plugin>
+          </plugins>
+      </pluginManagement>
+  </build>
 </project>


Mime
View raw message