abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/620

Change subject: Support Change Feeds
......................................................................

Support Change Feeds

This change allows feeds to perform upserts and deletes
in order to perform replication of an external data source.
The change does so by performing the following:
1. The adapter produces [PK][Record]. (Record == null --> delete)
2. The insert is replaced by an upsert operator.

Change-Id: I3749349e2b9f1b03c8b310eb99d3f44d08be77df
---
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DataSourceScanPOperator.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
M 
algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
M 
algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
M 
algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
M 
hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
M 
hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
M 
hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
M 
hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
M 
hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/IndexOperation.java
M 
hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
M 
hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
M 
hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
M 
hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
M 
hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
M 
hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
M 
hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
29 files changed, 218 insertions(+), 88 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/hyracks refs/changes/20/620/1

diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
index 823ebae..a2e07f1 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
@@ -43,12 +43,13 @@
      * Obs: A scanner may choose to contribute a null
      * AlgebricksPartitionConstraint and implement
      * contributeSchedulingConstraints instead.
+     * @param list 
      */
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getScannerRuntime(IDataSource<S> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> 
projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> 
maxFilterVars, IOperatorSchema opSchema,
-            IVariableTypeEnvironment typeEnv, JobGenContext context, 
JobSpecification jobSpec, Object implConfig)
-                    throws AlgebricksException;
+            IVariableTypeEnvironment typeEnv, JobGenContext context, 
JobSpecification jobSpec, Object implConfig,
+            List<LogicalVariable> list) throws AlgebricksException;
 
     public boolean scannerOperatorIsLeaf(IDataSource<S> dataSource);
 
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
index 7d3306e..8c6f4b7 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/DataSourceScanOperator.java
@@ -43,6 +43,9 @@
     private List<LogicalVariable> minFilterVars;
     private List<LogicalVariable> maxFilterVars;
 
+    private List<LogicalVariable> keys;
+    private List<? extends Object> keyTypes;
+
     public DataSourceScanOperator(List<LogicalVariable> variables, 
IDataSource<?> dataSource) {
         super(variables, dataSource);
         projectVars = new ArrayList<LogicalVariable>();
@@ -94,6 +97,11 @@
                 for (LogicalVariable v : outputVariables) {
                     target.addVariable(v);
                 }
+                if (keys != null) {
+                    for (LogicalVariable v : keys) {
+                        target.addVariable(v);
+                    }
+                }
             }
         };
     }
@@ -106,6 +114,13 @@
         for (LogicalVariable v : variables) {
             env.setVarType(v, types[i]);
             ++i;
+        }
+        if (keys != null) {
+            i = 0;
+            for (LogicalVariable v : keys) {
+                env.setVarType(v, keyTypes.get(i));
+                ++i;
+            }
         }
         return env;
     }
@@ -133,4 +148,17 @@
     public List<Mutable<ILogicalExpression>> 
getAdditionalFilteringExpressions() {
         return additionalFilteringExpressions;
     }
+
+    public List<LogicalVariable> getKeyVars() {
+        return keys;
+    }
+
+    public void setKeyVars(List<LogicalVariable> keys, List<? extends Object> 
keyTypes) {
+        this.keys = keys;
+        this.keyTypes = keyTypes;
+    }
+
+    public List<? extends Object> getKeyVarTypes() {
+        return keyTypes;
+    }
 }
\ No newline at end of file
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
index 607db69..bfe315a 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/InsertDeleteUpsertOperator.java
@@ -49,8 +49,10 @@
     private final Kind operation;
     private final boolean bulkload;
     private List<Mutable<ILogicalExpression>> additionalFilteringExpressions;
+    // previous record (for UPSERT)
     private LogicalVariable prevRecordVar;
     private Object prevRecordType;
+    // previous filter (for UPSERT)
     private LogicalVariable prevFilterVar;
     private Object prevFilterType;
 
@@ -108,6 +110,7 @@
 
     @Override
     public boolean isMap() {
+        // why is this false when this operator is a non-blocking operator?!!
         return false;
     }
 
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
index 815c36c..afff572 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestMapOperator.java
@@ -131,11 +131,4 @@
     public List<Mutable<ILogicalExpression>> 
getAdditionalFilteringExpressions() {
         return additionalFilteringExpressions;
     }
-
-    /*
-    @Override
-    public boolean isMap() {
-        return !propagateInput;
-    }
-    */
 }
\ No newline at end of file
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
index 1ee0942..86d29fd 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/UnnestOperator.java
@@ -18,25 +18,31 @@
  */
 package org.apache.hyracks.algebricks.core.algebra.operators.logical;
 
-import org.apache.commons.lang3.mutable.Mutable;
+import java.util.List;
 
+import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalOperatorTag;
 import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
 import 
org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import 
org.apache.hyracks.algebricks.core.algebra.properties.VariablePropagationPolicy;
 import org.apache.hyracks.algebricks.core.algebra.typing.ITypingContext;
 import 
org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalOperatorVisitor;
 import org.apache.hyracks.algebricks.runtime.base.IUnnestingPositionWriter;
 
 public class UnnestOperator extends AbstractUnnestNonMapOperator {
 
+    private List<LogicalVariable> additionalVariables;
+    private List<? extends Object> additionalVarTypes;
+
     public UnnestOperator(LogicalVariable variable, 
Mutable<ILogicalExpression> expression) {
         super(variable, expression);
     }
 
     public UnnestOperator(LogicalVariable variable, 
Mutable<ILogicalExpression> expression,
-            LogicalVariable positionalVariable, Object positionalVariableType, 
IUnnestingPositionWriter positionWriter) {
+            LogicalVariable positionalVariable, Object positionalVariableType,
+            IUnnestingPositionWriter positionWriter) {
         super(variable, expression, positionalVariable, 
positionalVariableType, positionWriter);
     }
 
@@ -53,6 +59,11 @@
         if (positionalVariable != null) {
             env.setVarType(positionalVariable, positionalVariableType);
         }
+        if (additionalVariables != null) {
+            for (int i = 0; i < additionalVariables.size(); i++) {
+                env.setVarType(additionalVariables.get(i), 
additionalVarTypes.get(i));
+            }
+        }
         return env;
     }
 
@@ -60,4 +71,45 @@
     public LogicalOperatorTag getOperatorTag() {
         return LogicalOperatorTag.UNNEST;
     }
+
+    @Override
+    public VariablePropagationPolicy getVariablePropagationPolicy() {
+        return new VariablePropagationPolicy() {
+
+            @Override
+            public void propagateVariables(IOperatorSchema target, 
IOperatorSchema... sources)
+                    throws AlgebricksException {
+                if (sources.length > 0) {
+                    target.addAllVariables(sources[0]);
+                }
+                for (LogicalVariable v : variables) {
+                    target.addVariable(v);
+                }
+                if (positionalVariable != null) {
+                    target.addVariable(positionalVariable);
+                }
+                if (additionalVariables != null) {
+                    for (LogicalVariable v : additionalVariables) {
+                        target.addVariable(v);
+                    }
+                }
+            }
+        };
+    }
+
+    public void setAdditionalVariables(List<LogicalVariable> variables) {
+        this.additionalVariables = variables;
+    }
+
+    public void setAdditionalVariableTypes(List<? extends Object> types) {
+        this.additionalVarTypes = types;
+    }
+
+    public List<LogicalVariable> getAdditionalVariables() {
+        return additionalVariables;
+    }
+
+    public List<? extends Object> getAdditionalVariableTypes() {
+        return additionalVarTypes;
+    }
 }
\ No newline at end of file
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
index 8df772b..9ac8c51 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/visitors/ProducedVariableVisitor.java
@@ -89,6 +89,9 @@
     @Override
     public Void visitDataScanOperator(DataSourceScanOperator op, Void arg) 
throws AlgebricksException {
         producedVariables.addAll(op.getVariables());
+        if (op.getKeyVars() != null) {
+            producedVariables.addAll(op.getKeyVars());
+        }
         return null;
     }
 
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DataSourceScanPOperator.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DataSourceScanPOperator.java
index a087305..2e3dcfa 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DataSourceScanPOperator.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/DataSourceScanPOperator.java
@@ -77,16 +77,16 @@
     @Override
     public void contributeRuntimeOperator(IHyracksJobBuilder builder, 
JobGenContext context, ILogicalOperator op,
             IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, 
IOperatorSchema outerPlanSchema)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         DataSourceScanOperator scan = (DataSourceScanOperator) op;
         IMetadataProvider mp = context.getMetadataProvider();
         IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op);
         List<LogicalVariable> vars = scan.getVariables();
         List<LogicalVariable> projectVars = scan.getProjectVariables();
 
-        Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> p = 
mp.getScannerRuntime(dataSource, vars,
-                projectVars, scan.isProjectPushed(), scan.getMinFilterVars(), 
scan.getMaxFilterVars(), opSchema,
-                typeEnv, context, builder.getJobSpec(), implConfig);
+        Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> p = 
mp.getScannerRuntime(dataSource, vars, projectVars,
+                scan.isProjectPushed(), scan.getMinFilterVars(), 
scan.getMaxFilterVars(), opSchema, typeEnv, context,
+                builder.getJobSpec(), implConfig, scan.getKeyVars());
         builder.contributeHyracksOperator(scan, p.first);
         if (p.second != null) {
             builder.contributeAlgebricksPartitionConstraint(p.first, p.second);
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
index 75f6290..3461e38 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/plan/ALogicalPlanImpl.java
@@ -16,41 +16,62 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.hyracks.algebricks.core.algebra.plan;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.lang3.mutable.Mutable;
-
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
-import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
-
-/*
- * Author: Guangqiang Li
- * Created on Jul 9, 2009 
- */
-public class ALogicalPlanImpl implements ILogicalPlan {
-    private List<Mutable<ILogicalOperator>> roots;
-
-    public ALogicalPlanImpl() {
-        this.roots = new ArrayList<Mutable<ILogicalOperator>>();
-    }
-
-    public ALogicalPlanImpl(List<Mutable<ILogicalOperator>> roots) {
-        this.roots = roots;
-    }
-
-    public ALogicalPlanImpl(Mutable<ILogicalOperator> root) {
-        roots = new ArrayList<Mutable<ILogicalOperator>>(1);
-        roots.add(root);
-    }
-
-    public List<Mutable<ILogicalOperator>> getRoots() {
-        return roots;
-    }
-
-    public void setRoots(List<Mutable<ILogicalOperator>> roots) {
-        this.roots = roots;
-    }
-}
+package org.apache.hyracks.algebricks.core.algebra.plan;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
+import org.apache.hyracks.algebricks.core.algebra.base.ILogicalPlan;
+import 
org.apache.hyracks.algebricks.core.algebra.prettyprint.LogicalOperatorPrettyPrintVisitor;
+import 
org.apache.hyracks.algebricks.core.algebra.prettyprint.PlanPrettyPrinter;
+
+/*
+ * Author: Guangqiang Li
+ * Created on Jul 9, 2009 
+ */
+public class ALogicalPlanImpl implements ILogicalPlan {
+    private List<Mutable<ILogicalOperator>> roots;
+
+    public ALogicalPlanImpl() {
+        this.roots = new ArrayList<Mutable<ILogicalOperator>>();
+    }
+
+    public ALogicalPlanImpl(List<Mutable<ILogicalOperator>> roots) {
+        this.roots = roots;
+    }
+
+    public ALogicalPlanImpl(Mutable<ILogicalOperator> root) {
+        roots = new ArrayList<Mutable<ILogicalOperator>>(1);
+        roots.add(root);
+    }
+
+    @Override
+    public List<Mutable<ILogicalOperator>> getRoots() {
+        return roots;
+    }
+
+    public void setRoots(List<Mutable<ILogicalOperator>> roots) {
+        this.roots = roots;
+    }
+
+    @Override
+    public String toString() {
+        String prettyPlan;
+        try {
+            prettyPlan = ALogicalPlanImpl.prittyPrintPlan(this);
+        } catch (AlgebricksException e) {
+            prettyPlan = e.getMessage();
+        }
+        return prettyPlan;
+    }
+
+    public static String prittyPrintPlan(ILogicalPlan plan) throws 
AlgebricksException {
+        LogicalOperatorPrettyPrintVisitor pvisitor = new 
LogicalOperatorPrettyPrintVisitor();
+        StringBuilder buffer = new StringBuilder();
+        PlanPrettyPrinter.printPlan(plan, buffer, pvisitor, 0);
+        return buffer.toString();
+    }
+}
diff --git 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
index cf0f1c2..49193e0 100644
--- 
a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
+++ 
b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
@@ -253,6 +253,9 @@
         if (op.getPositionalVariable() != null) {
             buffer.append(" at " + op.getPositionalVariable());
         }
+        if (op.getAdditionalVariables() != null) {
+            buffer.append(", " + op.getAdditionalVariables());
+        }
         buffer.append(" <- " + 
op.getExpressionRef().getValue().accept(exprVisitor, indent));
         return buffer.toString();
     }
@@ -281,6 +284,9 @@
         StringBuilder buffer = new StringBuilder();
         addIndent(buffer, indent).append(
                 "data-scan " + op.getProjectVariables() + "<-" + 
op.getVariables() + " <- " + op.getDataSource());
+        if (op.getKeyVars() != null) {
+            buffer.append("[" + op.getKeyVars() + "<- PK]");
+        }
         return buffer.toString();
     }
 
@@ -333,7 +339,7 @@
                 
.append(op.getPayloadExpression().getValue().accept(exprVisitor, 
indent)).append(" partitioned by ");
         pprintExprList(op.getPrimaryKeyExpressions(), buffer, indent);
         if (op.getOperation() == Kind.UPSERT) {
-            buffer.append(" out: ([" + op.getPrevRecordVar() + "] 
<-{record-before-upsert}) ");
+            buffer.append(" out: ([record-before-upsert:" + 
op.getPrevRecordVar() + "]) ");
         }
         if (op.isBulkload()) {
             buffer.append(" [bulkload]");
diff --git 
a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
 
b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
index 8bf3dbb..1b40d4d 100644
--- 
a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
+++ 
b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/metadata/PigletMetadataProvider.java
@@ -83,8 +83,8 @@
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getScannerRuntime(IDataSource<String> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> 
projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> 
maxFilterVars, IOperatorSchema opSchema,
-            IVariableTypeEnvironment typeEnv, JobGenContext context, 
JobSpecification jobSpec, Object implConfig)
-                    throws AlgebricksException {
+            IVariableTypeEnvironment typeEnv, JobGenContext context, 
JobSpecification jobSpec, Object implConfig,
+            List<LogicalVariable> opVar) throws AlgebricksException {
         PigletFileDataSource ds = (PigletFileDataSource) dataSource;
 
         FileSplit[] fileSplits = ds.getFileSplits();
@@ -232,15 +232,6 @@
     }
 
     @Override
-    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getUpsertRuntime(IDataSource<String> dataSource,
-            IOperatorSchema propagatedSchema, IVariableTypeEnvironment 
typeEnv, List<LogicalVariable> keys,
-            LogicalVariable payLoadVar, List<LogicalVariable> 
additionalNonKeyFields, LogicalVariable prevPayload,
-            RecordDescriptor recordDesc, JobGenContext context, 
JobSpecification jobSpec) throws AlgebricksException {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getIndexUpsertRuntime(
             IDataSourceIndex<String, String> dataSourceIndex, IOperatorSchema 
propagatedSchema,
             IOperatorSchema[] inputSchemas, IVariableTypeEnvironment typeEnv, 
List<LogicalVariable> primaryKeys,
@@ -251,4 +242,13 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    @Override
+    public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> 
getUpsertRuntime(IDataSource<String> dataSource,
+            IOperatorSchema propagatedSchema, IVariableTypeEnvironment 
typeEnv, List<LogicalVariable> keys,
+            LogicalVariable payLoadVar, List<LogicalVariable> 
additionalNonKeyFields, LogicalVariable prevPayload,
+            RecordDescriptor recordDesc, JobGenContext context, 
JobSpecification jobSpec) throws AlgebricksException {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }
diff --git 
a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
 
b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
index f8b36dd..8c19230 100644
--- 
a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
+++ 
b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
@@ -26,7 +26,6 @@
 
 import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.commons.lang3.mutable.MutableObject;
-
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Triple;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalOperator;
@@ -60,7 +59,8 @@
     }
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, 
IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, 
IOptimizationContext context)
+            throws AlgebricksException {
         if (hasRun) {
             return false;
         }
@@ -70,7 +70,7 @@
 
     protected boolean introduceProjects(AbstractLogicalOperator parentOp, int 
parentInputIndex,
             Mutable<ILogicalOperator> opRef, Set<LogicalVariable> 
parentUsedVars, IOptimizationContext context)
-            throws AlgebricksException {
+                    throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) 
opRef.getValue();
         boolean modified = false;
 
@@ -79,7 +79,7 @@
 
         // In the top-down pass, maintain a set of variables that are used in 
op and all its parents.
         HashSet<LogicalVariable> parentsUsedVars = new 
HashSet<LogicalVariable>();
-        parentsUsedVars.addAll(parentUsedVars);
+        parentsUsedVars.addAll(parentUsedVars);//this line makes no sense
         parentsUsedVars.addAll(usedVars);
 
         // Descend into children.        
@@ -152,7 +152,7 @@
         }
         return modified;
     }
-    
+
     private boolean canEliminateProjectBelowUnion(UnionAllOperator unionOp, 
ProjectOperator projectOp,
             int unionInputIndex) throws AlgebricksException {
         List<LogicalVariable> orderedLiveVars = new 
ArrayList<LogicalVariable>();
diff --git 
a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
 
b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
index ba71b0c..9e9a960 100644
--- 
a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
+++ 
b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/dataset/ResultStateSweeper.java
@@ -76,7 +76,7 @@
             }
         }
         if (LOGGER.isLoggable(Level.INFO)) {
-            LOGGER.info("Result state cleanup instance successfully 
completed.");
+            //LOGGER.info("Result state cleanup instance successfully 
completed.");
         }
     }
 }
diff --git 
a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
 
b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
index 08f98a3..c493802 100644
--- 
a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
+++ 
b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
@@ -924,7 +924,7 @@
 
         @Override
         public void diskOrderScan(ITreeIndexCursor cursor) throws 
HyracksDataException {
-            ctx.setOperation(IndexOperation.DISKORDERSCAN);
+            ctx.setOperation(IndexOperation.DISK_ORDER_SCAN);
             btree.diskOrderScan(cursor, ctx);
         }
 
diff --git 
a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
 
b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
index 8513368..6e9f4b9 100644
--- 
a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
+++ 
b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeOpContext.java
@@ -123,7 +123,7 @@
 
     @Override
     public void setOperation(IndexOperation newOp) {
-        if (newOp == IndexOperation.SEARCH || newOp == 
IndexOperation.DISKORDERSCAN) {
+        if (newOp == IndexOperation.SEARCH || newOp == 
IndexOperation.DISK_ORDER_SCAN) {
             if (cursorInitialState == null) {
                 cursorInitialState = new BTreeCursorInitialState(null, 
searchCallback, accessor);
             }
diff --git 
a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
 
b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
index 6736420..1ea09d4 100644
--- 
a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
+++ 
b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java
@@ -64,6 +64,7 @@
         this.indexHelper = 
opDesc.getIndexDataflowHelperFactory().createIndexDataflowHelper(opDesc, ctx, 
partition);
         this.recordDescProvider = recordDescProvider;
         this.op = op;
+        // fieldPermutation = {pk fields - record field - filter fields}
         tuple.setFieldPermutation(fieldPermutation);
     }
 
diff --git 
a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/IndexOperation.java
 
b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/IndexOperation.java
index f579064..3a5ded7 100644
--- 
a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/IndexOperation.java
+++ 
b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/IndexOperation.java
@@ -25,8 +25,8 @@
     UPDATE,
     UPSERT,
     SEARCH,
-    DISKORDERSCAN,
-    PHYSICALDELETE,
+    DISK_ORDER_SCAN,
+    PHYSICAL_DELETE,
     NOOP,
     MERGE,
     FULL_MERGE,
diff --git 
a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
 
b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
index 13c6949..1e23fae 100644
--- 
a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
+++ 
b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
@@ -271,7 +271,7 @@
         operationalComponents.clear();
         switch (ctx.getOperation()) {
             case UPDATE:
-            case PHYSICALDELETE:
+            case PHYSICAL_DELETE:
             case FLUSH:
             case DELETE:
                 operationalComponents.add(memoryComponents.get(cmc));
@@ -326,7 +326,7 @@
         }
 
         switch (ctx.getOperation()) {
-            case PHYSICALDELETE:
+            case PHYSICAL_DELETE:
                 ctx.currentMutableBTreeAccessor.delete(indexTuple);
                 break;
             case INSERT:
diff --git 
a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
 
b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
index fa25524..9b617f4 100644
--- 
a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
+++ 
b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java
@@ -177,7 +177,7 @@
         switch (op) {
             case SEARCH:
                 break;
-            case DISKORDERSCAN:
+            case DISK_ORDER_SCAN:
             case UPDATE:
                 // Attention: It is important to leave the leafFrame and
                 // leafFrameFactory of the mutableBTree as is when doing an 
update.
@@ -189,7 +189,7 @@
             case INSERT:
                 setInsertMode();
                 break;
-            case PHYSICALDELETE:
+            case PHYSICAL_DELETE:
             case DELETE:
                 setDeleteMode();
                 break;
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
index 4c4ed28..b9d8181 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMHarness.java
@@ -62,4 +62,6 @@
             LSMOperationType opType) throws HyracksDataException;
 
     public void endReplication(ILSMIndexOperationContext ctx) throws 
HyracksDataException;
+
+    public void searchForUpsert(ILSMIndexOperationContext ctx, IIndexCursor 
cursor, ISearchPredicate searchPred);
 }
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
index b083770..59c5859 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/LSMOperationType.java
@@ -20,6 +20,7 @@
 
 public enum LSMOperationType {
     SEARCH,
+    SEARCH_FOR_UPSERT,
     MODIFICATION,
     FORCE_MODIFICATION,
     FLUSH,
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
index 54ec029..6d48e2e 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
@@ -44,6 +44,7 @@
             case MODIFICATION:
             case REPLICATE:
             case SEARCH:
+            case SEARCH_FOR_UPSERT:
                 readerCount++;
                 break;
             case MERGE:
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
index b2c55dc..443c079 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
@@ -45,4 +45,8 @@
     public ILSMComponentFilter getLSMComponentFilter() {
         return filter;
     }
+
+    public int getReaderCount() {
+        return readerCount;
+    }
 }
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
index 7ee5802..8c9f4b0 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
@@ -72,6 +72,7 @@
                 }
                 break;
             case MODIFICATION:
+            case SEARCH_FOR_UPSERT:
                 if (isMutableComponent) {
                     if (state == ComponentState.READABLE_WRITABLE) {
                         writerCount++;
@@ -90,7 +91,7 @@
             case REPLICATE:
             case SEARCH:
                 if (state == ComponentState.READABLE_WRITABLE || state == 
ComponentState.READABLE_UNWRITABLE
-                || state == ComponentState.READABLE_UNWRITABLE_FLUSHING) {
+                        || state == 
ComponentState.READABLE_UNWRITABLE_FLUSHING) {
                     readerCount++;
                 } else {
                     return false;
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index 21b0d8a..1a695cf 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -367,6 +367,12 @@
     }
 
     @Override
+    public void searchForUpsert(ILSMIndexOperationContext ctx, IIndexCursor 
cursor, ISearchPredicate searchPred) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
     public void endSearch(ILSMIndexOperationContext ctx) throws 
HyracksDataException {
         if (ctx.getOperation() == IndexOperation.SEARCH) {
             try {
diff --git 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
index f439d7e..3371d52 100644
--- 
a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
+++ 
b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
@@ -100,6 +100,12 @@
         lsmHarness.search(ctx, cursor, searchPred);
     }
 
+    public void searchForUpsert(IIndexCursor cursor, ISearchPredicate 
searchPred)
+            throws HyracksDataException, IndexException {
+        ctx.setOperation(IndexOperation.SEARCH);
+        lsmHarness.searchForUpsert(ctx, cursor, searchPred);
+    }
+
     @Override
     public void flush(ILSMIOOperation operation) throws HyracksDataException, 
IndexException {
         lsmHarness.flush(ctx, operation);
@@ -113,7 +119,7 @@
 
     @Override
     public void physicalDelete(ITupleReference tuple) throws 
HyracksDataException, IndexException {
-        ctx.setOperation(IndexOperation.PHYSICALDELETE);
+        ctx.setOperation(IndexOperation.PHYSICAL_DELETE);
         lsmHarness.modify(ctx, false, tuple);
     }
 
@@ -131,9 +137,10 @@
         ctx.getComponentsToBeMerged().addAll(components);
         lsmHarness.scheduleMerge(ctx, callback);
     }
-    
+
     @Override
-    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean 
bulkload, LSMOperationType opType) throws HyracksDataException {
+    public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean 
bulkload, LSMOperationType opType)
+            throws HyracksDataException {
         ctx.setOperation(IndexOperation.REPLICATE);
         ctx.getComponentsToBeReplicated().clear();
         ctx.getComponentsToBeReplicated().addAll(lsmComponents);
@@ -148,7 +155,7 @@
 
     @Override
     public void forcePhysicalDelete(ITupleReference tuple) throws 
HyracksDataException, IndexException {
-        ctx.setOperation(IndexOperation.PHYSICALDELETE);
+        ctx.setOperation(IndexOperation.PHYSICAL_DELETE);
         lsmHarness.forceModify(ctx, tuple);
     }
 
diff --git 
a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
 
b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
index bb0c8d6..96b7f68 100644
--- 
a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
+++ 
b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
@@ -334,7 +334,7 @@
     @Override
     public void modify(IIndexOperationContext ictx, ITupleReference tuple) 
throws HyracksDataException, IndexException {
         LSMRTreeOpContext ctx = (LSMRTreeOpContext) ictx;
-        if (ctx.getOperation() == IndexOperation.PHYSICALDELETE) {
+        if (ctx.getOperation() == IndexOperation.PHYSICAL_DELETE) {
             throw new UnsupportedOperationException("Physical delete not 
supported in the LSM-RTree");
         }
 
diff --git 
a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
 
b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
index 3c91d62..a927e40 100644
--- 
a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
+++ 
b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java
@@ -480,7 +480,7 @@
     @Override
     public void modify(IIndexOperationContext ictx, ITupleReference tuple) 
throws HyracksDataException, IndexException {
         LSMRTreeOpContext ctx = (LSMRTreeOpContext) ictx;
-        if (ctx.getOperation() == IndexOperation.PHYSICALDELETE) {
+        if (ctx.getOperation() == IndexOperation.PHYSICAL_DELETE) {
             throw new UnsupportedOperationException("Physical delete not 
supported in the LSM-RTree");
         }
 
diff --git 
a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
 
b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index d01bad2..3a7b756 100644
--- 
a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ 
b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -845,7 +845,7 @@
 
         @Override
         public void diskOrderScan(ITreeIndexCursor cursor) throws 
HyracksDataException {
-            ctx.setOperation(IndexOperation.DISKORDERSCAN);
+            ctx.setOperation(IndexOperation.DISK_ORDER_SCAN);
             rtree.diskOrderScan(cursor, ctx);
         }
 
diff --git 
a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
 
b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
index 107dc30..7250b0c 100644
--- 
a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
+++ 
b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeOpContext.java
@@ -98,7 +98,7 @@
         if (op != null && newOp == op) {
             return;
         }
-        if (op != IndexOperation.SEARCH && op != IndexOperation.DISKORDERSCAN) 
{
+        if (op != IndexOperation.SEARCH && op != 
IndexOperation.DISK_ORDER_SCAN) {
             if (splitKey == null) {
                 splitKey = new 
RTreeSplitKey(interiorFrame.getTupleWriter().createTupleReference(), 
interiorFrame
                         .getTupleWriter().createTupleReference());

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/620
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3749349e2b9f1b03c8b310eb99d3f44d08be77df
Gerrit-PatchSet: 1
Gerrit-Project: hyracks
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to