Xikui Wang has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1695
Change subject: Fix NULL field value handing in Java UDF
......................................................................
Fix NULL field value handing in Java UDF
Add NULL value support in Java UDF. This can avoid NPE when there
is a NULL field in a record.
Change-Id: Icf110b2f5b3658847967f5ee7163fb2e47713813
---
M
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JTypeObjectFactory.java
M
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
2 files changed, 18 insertions(+), 0 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/95/1695/1
diff --git
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JTypeObjectFactory.java
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JTypeObjectFactory.java
index e2ed092..6e35d79 100644
---
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JTypeObjectFactory.java
+++
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/JTypeObjectFactory.java
@@ -19,6 +19,7 @@
package org.apache.asterix.external.library;
import org.apache.asterix.external.api.IJObject;
+import org.apache.asterix.external.library.java.JObjects;
import org.apache.asterix.external.library.java.JObjects.JBoolean;
import org.apache.asterix.external.library.java.JObjects.JCircle;
import org.apache.asterix.external.library.java.JObjects.JDate;
@@ -45,6 +46,7 @@
import org.apache.asterix.om.types.AUnorderedListType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.util.container.IObjectFactory;
+
public class JTypeObjectFactory implements IObjectFactory<IJObject, IAType> {
@@ -108,6 +110,9 @@
case INT64:
retValue = new JLong(0);
break;
+ case NULL:
+ retValue = JObjects.JNull.INSTANCE;
+ break;
case ORDEREDLIST:
AOrderedListType ot = (AOrderedListType) type;
IAType orderedItemType = ot.getItemType();
diff --git
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
index f8755b4..5122efb 100644
---
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
+++
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
@@ -140,6 +140,9 @@
case DURATION:
accessor = new JDurationAccessor();
break;
+ case NULL:
+ accessor = new JNullAccessor();
+ break;
default:
break;
}
@@ -188,6 +191,16 @@
return jObject;
}
}
+
+ public static class JNullAccessor implements IJObjectAccessor {
+
+ @Override
+ public IJObject access(IVisitablePointable pointable,
IObjectPool<IJObject, IAType> objPool)
+ throws HyracksDataException {
+ IJObject jObject = objPool.allocate(BuiltinType.ANULL);
+ return jObject;
+ }
+ }
public static class JInt64Accessor implements IJObjectAccessor {
--
To view, visit https://asterix-gerrit.ics.uci.edu/1695
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icf110b2f5b3658847967f5ee7163fb2e47713813
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Xikui Wang <[email protected]>