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

Reply via email to