>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]>