>From Ritik Raj <[email protected]>:

Ritik Raj has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20584?usp=email )


Change subject: WIP: read after merge
......................................................................

WIP: read after merge

Change-Id: I34d490a2089598b55e7cd8981a20f98b841fd998
---
M asterixdb/asterix-app/src/test/resources/cc-main.conf
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AbstractPrimitiveValueAssembler.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/EndOfRepeatedGroupAssembler.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/ColumnAssembler.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/IColumnValuesReader.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
M 
asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
8 files changed, 55 insertions(+), 10 deletions(-)



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

diff --git a/asterixdb/asterix-app/src/test/resources/cc-main.conf 
b/asterixdb/asterix-app/src/test/resources/cc-main.conf
index cdc3e6b..623c82a 100644
--- a/asterixdb/asterix-app/src/test/resources/cc-main.conf
+++ b/asterixdb/asterix-app/src/test/resources/cc-main.conf
@@ -19,16 +19,16 @@
 txn.log.dir=target/tmp/asterix_nc1/txnlog
 core.dump.dir=target/tmp/asterix_nc1/coredump
 iodevices=target/tmp/asterix_nc1/iodevice1,
-iodevices=../asterix-server/target/tmp/asterix_nc1/iodevice2
+; iodevices=../asterix-server/target/tmp/asterix_nc1/iodevice2
 nc.api.port=19004
 #jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006

-[nc/asterix_nc2]
-ncservice.port=9091
-txn.log.dir=target/tmp/asterix_nc2/txnlog
-core.dump.dir=target/tmp/asterix_nc2/coredump
-iodevices=target/tmp/asterix_nc2/iodevice1,../asterix-server/target/tmp/asterix_nc2/iodevice2
-nc.api.port=19005
+; [nc/asterix_nc2]
+; ncservice.port=9091
+; txn.log.dir=target/tmp/asterix_nc2/txnlog
+; core.dump.dir=target/tmp/asterix_nc2/coredump
+; 
iodevices=target/tmp/asterix_nc2/iodevice1,../asterix-server/target/tmp/asterix_nc2/iodevice2
+; nc.api.port=19005
 #jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5007

 [nc]
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AbstractPrimitiveValueAssembler.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AbstractPrimitiveValueAssembler.java
index c565ea85..a8f548e 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AbstractPrimitiveValueAssembler.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/AbstractPrimitiveValueAssembler.java
@@ -99,4 +99,8 @@
      * @return the index of the next value
      */
     public abstract int next(AssemblerState state) throws HyracksDataException;
+
+    public void notifyCurrentTuple(int tupleIndex) {
+        reader.notifyCurrentTuple(tupleIndex);
+    }
 }
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/EndOfRepeatedGroupAssembler.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/EndOfRepeatedGroupAssembler.java
index 63204d7..0b4819b 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/EndOfRepeatedGroupAssembler.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/EndOfRepeatedGroupAssembler.java
@@ -50,7 +50,7 @@
     private IColumnValuesReader getNonMissingReader() {
         IColumnValuesReader nonMissingReader = null;
         for (IColumnValuesReader r : readers) {
-            if (!r.areAllMissing()) {
+            if (!(r.areAllMissing() && r.missingColumnForCurrentTuple())) {
                 nonMissingReader = r;
             }
         }
@@ -62,7 +62,7 @@

     @Override
     public int next(AssemblerState state) throws HyracksDataException {
-        if (reader.areAllMissing()) {
+        if (reader.areAllMissing() || reader.missingColumnForCurrentTuple()) {
             reader = getNonMissingReader();
             this.delimiterIndex = reader.getNumberOfDelimiters() - 
numDelimiters;
         }
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
index 67379c0..9340365 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/assembler/RepeatedPrimitiveValueAssembler.java
@@ -75,7 +75,8 @@
              * (i.e., arrayDelegate is true)
              */
             addNullToAncestor(reader.getLevel());
-        } else if (reader.isMissing() && reader.getLevel() < level) {
+        } else if ((reader.isMissing() && reader.getLevel() < level)) {
+            //  || reader.missingColumnForCurrentTuple() not needed as the 
condition
             /*
              * Add a missing item in either
              * - the array item is MISSING
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/ColumnAssembler.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/ColumnAssembler.java
index e6ff021..0fa1dec 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/ColumnAssembler.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/operation/query/ColumnAssembler.java
@@ -81,6 +81,7 @@
         int index = 0;
         while (index < assemblers.length) {
             AbstractPrimitiveValueAssembler assembler = assemblers[index];
+            assembler.notifyCurrentTuple(tupleIndex);
             int groupIndex;

             try {
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/IColumnValuesReader.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/IColumnValuesReader.java
index 22cbb9f..846a350 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/IColumnValuesReader.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/IColumnValuesReader.java
@@ -156,4 +156,8 @@
      * @param node container for the reader's information
      */
     void appendReaderInformation(ObjectNode node);
+
+    boolean missingColumnForCurrentTuple();
+
+    void notifyCurrentTuple(int tupleIndex);
 }
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
index 3dead4a..407b44c 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/reader/AbstractColumnValuesReader.java
@@ -60,6 +60,10 @@
     private boolean nullLevel;
     private boolean allMissing;

+    private int previousTupleIndex;
+    private int currentTupleIndex;
+    private boolean firstValueForCurrentTuple;
+
     // For logging purposes only
     private int numberOfEncounteredMissing;
     private int numberOfEncounteredNull;
@@ -74,6 +78,7 @@
         currentDefinitionLevels = definitionLevels.get(maxLevel);
         valuesStream = primaryKey ? new ByteBufferInputStream() : new 
MultiByteBufferInputStream();
         this.primaryKey = primaryKey;
+        this.previousTupleIndex = -1;
     }

     final void nextLevel() throws HyracksDataException {
@@ -89,6 +94,13 @@
             nullLevel = ColumnValuesUtil.isNull(nullBitMask, actualLevel);
             //Clear the null bit to allow repeated value readers determine the 
correct delimiter for null values
             level = ColumnValuesUtil.clearNullBit(nullBitMask, actualLevel);
+            if (currentTupleIndex != previousTupleIndex) {
+                // We are at the first value for the current tuple
+                firstValueForCurrentTuple = true;
+                previousTupleIndex = currentTupleIndex;
+            } else {
+                firstValueForCurrentTuple = false;
+            }

             // For logging purposes only
             numberOfEncounteredMissing += isMissing() ? 1 : 0;
@@ -108,6 +120,16 @@
         return allMissing;
     }

+    @Override
+    public boolean missingColumnForCurrentTuple() {
+        return (level == 0 && firstValueForCurrentTuple);
+    }
+
+    @Override
+    public void notifyCurrentTuple(int tupleIndex) {
+        currentTupleIndex = tupleIndex;
+    }
+
     abstract void resetValues();

     @Override
@@ -123,6 +145,9 @@
         }
         allMissing = false;
         try {
+            previousTupleIndex = -1;
+            firstValueForCurrentTuple = false;
+
             maxLevel = BytesUtils.readZigZagVarInt(in);
             nullBitMask = ColumnValuesUtil.getNullMask(maxLevel);

diff --git 
a/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
 
b/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
index ed76cbd..01f29d3 100644
--- 
a/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
+++ 
b/asterixdb/asterix-column/src/test/java/org/apache/asterix/column/values/reader/AbstractDummyColumnValuesReader.java
@@ -174,4 +174,14 @@
         node.put("level", level);
         node.put("maxLevel", maxLevel);
     }
+
+    @Override
+    public void notifyCurrentTuple(int tupleIndex) {
+
+    }
+
+    @Override
+    public boolean missingColumnForCurrentTuple() {
+        return false;
+    }
 }

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

Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I34d490a2089598b55e7cd8981a20f98b841fd998
Gerrit-Change-Number: 20584
Gerrit-PatchSet: 1
Gerrit-Owner: Ritik Raj <[email protected]>

Reply via email to