>From Shahrzad Shirazi <[email protected]>:

Shahrzad Shirazi has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20004 )


Change subject: [NO ISSUE][COMP] Change plan to show RETAIN-UNTRUE for null 
placeholders
......................................................................

[NO ISSUE][COMP] Change plan to show RETAIN-UNTRUE for null placeholders

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
Change query plan to show RETAIN-UNTRUE when retaining
missing even if the placeholder parameter is null.

Change-Id: I4a3af98be2cf74e837222755abfd45a075b3b257
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
M 
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/prettyprint/LogicalOperatorPrettyPrintVisitor.java
2 files changed, 28 insertions(+), 2 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/04/20004/1

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 caf4774..6ec82dc 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
@@ -305,9 +305,9 @@

     @Override
     public Void visitSelectOperator(SelectOperator op, Integer indent) throws 
AlgebricksException {
-        String retainMissing = op.getMissingPlaceholderVariable() != null
+        String retainMissing = (op.getMissingPlaceholderVariable() != null)
                 ? " retain-untrue (" + op.getMissingPlaceholderVariable() + " 
<- " + op.getRetainMissingAsValue() + ")"
-                : "";
+                : (op.getRetainMissingAsValue()!= null ? " retain-untrue" : 
"");
         addIndent(indent).append("select 
(").append(op.getCondition().getValue().accept(exprVisitor, indent))
                 .append(")").append(retainMissing)
                 .append(op.isProjectPushed() ? " project: " + 
str(op.getProjectVariables()) : "");
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
index de4c4a9..147b9a3 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
@@ -99,6 +99,7 @@
         long matchingTupleCount = 0;
         LSMBTreeBatchPointSearchCursor batchCursor = 
(LSMBTreeBatchPointSearchCursor) cursor;
         int tupleIndex = 0;
+
         while (cursor.hasNext()) {
             cursor.next();
             matchingTupleCount++;
@@ -118,6 +119,7 @@
                     tb.addFieldEndOffset();
                 }
             }
+
             ITupleReference projectedTuple = writeTupleToOutput(tuple);
             if (tupleFilter != null) {
                 referenceFilterTuple.reset(projectedTuple);
@@ -125,15 +127,22 @@
                     continue;
                 }
             }
+
             FrameUtils.appendToWriter(writer, appender, 
tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
+
             if (outputLimit >= 0 && ++outputCount >= outputLimit) {
                 finished = true;
                 break;
             }
         }
+        if (matchingTupleCount == 0 && retainInput && retainMissing) {
+            int end = accessor.getTupleCount();
+            appendMissingTuple(0, end);
+        }
         stats.getInputTupleCounter().update(matchingTupleCount);
     }
 
+
     private void appendMissingTuple(int start, int end) throws 
HyracksDataException {
         for (int i = start; i < end; i++) {
             FrameUtils.appendConcatToWriter(writer, appender, accessor, i, 
nonMatchTupleBuild.getFieldEndOffsets(),

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20004
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I4a3af98be2cf74e837222755abfd45a075b3b257
Gerrit-Change-Number: 20004
Gerrit-PatchSet: 1
Gerrit-Owner: Shahrzad Shirazi <[email protected]>
Gerrit-MessageType: newchange

Reply via email to