>From Shahrzad Shirazi <[email protected]>:
Shahrzad Shirazi has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21046?usp=email )
Change subject: WIP: handing null/missing in Hash based OR
......................................................................
WIP: handing null/missing in Hash based OR
Change-Id: Ied5d131dfabe13da65fdc4c252864968d7e73763
---
M
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashBasedOrEval.java
1 file changed, 12 insertions(+), 4 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/46/21046/1
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashBasedOrEval.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashBasedOrEval.java
index 2988c99..a1b3f54 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashBasedOrEval.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/HashBasedOrEval.java
@@ -70,6 +70,8 @@
private final IScalarEvaluator[] constEvals;
private final int numConst;
private boolean setBuilt = false;
+ private boolean constantsContainNull = false;
+ private boolean constantsContainMissing = false;
@SuppressWarnings("unchecked")
private final ISerializerDeserializer<ABoolean> booleanSerde =
@@ -114,13 +116,13 @@
byte[] data = valuePtr.getByteArray();
int offset = valuePtr.getStartOffset();
- if (data[offset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG) {
- missingSerde.serialize(AMissing.MISSING, output);
+ if (data[offset] == ATypeTag.SERIALIZED_NULL_TYPE_TAG ||
constantsContainNull) {
+ nullSerde.serialize(ANull.NULL, output);
result.set(resultStorage);
return;
}
- if (data[offset] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
- nullSerde.serialize(ANull.NULL, output);
+ if (data[offset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG ||
constantsContainMissing) {
+ missingSerde.serialize(AMissing.MISSING, output);
result.set(resultStorage);
return;
}
@@ -150,6 +152,11 @@
constEvals[i].evaluate(tuple, constPtr);
byte[] data = constPtr.getByteArray();
int offset = constPtr.getStartOffset();
+ if (data[offset] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
+ constantsContainNull = true;
+ } else if (data[offset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG) {
+ constantsContainMissing = true;
+ }
if (offset < data.length) {
keyEntry.set(data, offset, constPtr.getLength());
valueSet.put(keyEntry, valEntry);
@@ -158,3 +165,4 @@
setBuilt = true;
}
}
+
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21046?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: Ied5d131dfabe13da65fdc4c252864968d7e73763
Gerrit-Change-Number: 21046
Gerrit-PatchSet: 1
Gerrit-Owner: Shahrzad Shirazi <[email protected]>