>From Shahrzad Shirazi <[email protected]>:

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


Change subject: [NO ISSUE][COMP] Correcting the result of LEFT OUTER JOIN using 
index-nested-loop join
......................................................................

[NO ISSUE][COMP] Correcting the result of LEFT OUTER JOIN using 
index-nested-loop join

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

Details:
When an index-nested-loop join finds no matching entries, it may
discard all tuples from the left table, resulting in incorrect results.
This fix ensures that tuples from the left table are preserved even
 when no matching entries exist for the join.

Ext-ref: MB-67347

Change-Id: Ica97998d7fb006230977034152a35e1d6386ef21
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeBatchPointSearchOperatorNodePushable.java
1 file changed, 30 insertions(+), 0 deletions(-)



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

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/+/20003
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: Ica97998d7fb006230977034152a35e1d6386ef21
Gerrit-Change-Number: 20003
Gerrit-PatchSet: 1
Gerrit-Owner: Shahrzad Shirazi <[email protected]>
Gerrit-MessageType: newchange

Reply via email to