Xikui Wang has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2799
Change subject: [NO ISSUE][FUN] Bug fixes in JObjectAccessors
......................................................................
[NO ISSUE][FUN] Bug fixes in JObjectAccessors
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
1. Align the deserialization start of several datatypes.
2. Assign the open fields in JRecord properly in JRecordAccessor.
Change-Id: I131f1bf70f01cd763cfd008abcba704e757c864e
---
M
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
1 file changed, 21 insertions(+), 21 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/99/2799/1
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 0a706d1..9273b50 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
@@ -306,7 +306,7 @@
throws HyracksDataException {
byte[] b = pointable.getByteArray();
int s = pointable.getStartOffset();
- Boolean v = ABooleanSerializerDeserializer.getBoolean(b, s);
+ Boolean v = ABooleanSerializerDeserializer.getBoolean(b, s + 1);
IJObject jObject = objectPool.allocate(BuiltinType.ABOOLEAN);
((JBoolean) jObject).setValue(v);
return jObject;
@@ -320,7 +320,7 @@
throws HyracksDataException {
byte[] b = pointable.getByteArray();
int s = pointable.getStartOffset();
- int v = ADateSerializerDeserializer.getChronon(b, s);
+ int v = ADateSerializerDeserializer.getChronon(b, s + 1);
IJObject jObject = objectPool.allocate(BuiltinType.ADATE);
((JDate) jObject).setValue(v);
return jObject;
@@ -334,7 +334,7 @@
throws HyracksDataException {
byte[] b = pointable.getByteArray();
int s = pointable.getStartOffset();
- long v = ADateTimeSerializerDeserializer.getChronon(b, s);
+ long v = ADateTimeSerializerDeserializer.getChronon(b, s + 1);
IJObject jObject = objectPool.allocate(BuiltinType.ADATETIME);
((JDateTime) jObject).setValue(v);
return jObject;
@@ -350,7 +350,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
ADuration duration = ADurationSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
IJObject jObject = objectPool.allocate(BuiltinType.ADURATION);
((JDuration) jObject).setValue(duration.getMonths(),
duration.getMilliseconds());
return jObject;
@@ -364,7 +364,7 @@
throws HyracksDataException {
byte[] b = pointable.getByteArray();
int s = pointable.getStartOffset();
- int v = ATimeSerializerDeserializer.getChronon(b, s);
+ int v = ATimeSerializerDeserializer.getChronon(b, s + 1);
IJObject jObject = objectPool.allocate(BuiltinType.ATIME);
((JTime) jObject).setValue(v);
return jObject;
@@ -378,9 +378,9 @@
throws HyracksDataException {
byte[] b = pointable.getByteArray();
int s = pointable.getStartOffset();
- long intervalStart =
AIntervalSerializerDeserializer.getIntervalStart(b, s);
- long intervalEnd =
AIntervalSerializerDeserializer.getIntervalEnd(b, s);
- byte intervalType =
AIntervalSerializerDeserializer.getIntervalTimeType(b, s);
+ long intervalStart =
AIntervalSerializerDeserializer.getIntervalStart(b, s + 1);
+ long intervalEnd =
AIntervalSerializerDeserializer.getIntervalEnd(b, s + 1);
+ byte intervalType =
AIntervalSerializerDeserializer.getIntervalTimeType(b, s + 1);
IJObject jObject = objectPool.allocate(BuiltinType.AINTERVAL);
((JInterval) jObject).setValue(intervalStart, intervalEnd,
intervalType);
return jObject;
@@ -398,7 +398,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
ACircle v = ACircleSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JPoint jpoint = (JPoint) objectPool.allocate(BuiltinType.APOINT);
jpoint.setValue(v.getP().getX(), v.getP().getY());
IJObject jObject = objectPool.allocate(BuiltinType.ACIRCLE);
@@ -416,7 +416,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
APoint v = APointSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JPoint jObject = (JPoint) objectPool.allocate(BuiltinType.APOINT);
jObject.setValue(v.getX(), v.getY());
return jObject;
@@ -432,7 +432,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
APoint3D v = APoint3DSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JPoint3D jObject = (JPoint3D)
objectPool.allocate(BuiltinType.APOINT3D);
jObject.setValue(v.getX(), v.getY(), v.getZ());
return jObject;
@@ -448,7 +448,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
ALine v = ALineSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JLine jObject = (JLine) objectPool.allocate(BuiltinType.ALINE);
jObject.setValue(v.getP1(), v.getP2());
return jObject;
@@ -464,7 +464,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
APolygon v = APolygonSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JPolygon jObject = (JPolygon)
objectPool.allocate(BuiltinType.APOLYGON);
jObject.setValue(v.getPoints());
return jObject;
@@ -480,7 +480,7 @@
int s = pointable.getStartOffset();
int l = pointable.getLength();
ARectangle v = ARectangleSerializerDeserializer.INSTANCE
- .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s, l)));
+ .deserialize(new DataInputStream(new
ByteArrayInputStream(b, s + 1, l - 1)));
JRectangle jObject = (JRectangle)
objectPool.allocate(BuiltinType.ARECTANGLE);
jObject.setValue(v.getP1(), v.getP2());
return jObject;
@@ -498,8 +498,8 @@
public JRecordAccessor(ARecordType recordType, IObjectPool<IJObject,
IAType> objectPool) {
this.typeInfo = new TypeInfo(objectPool, null, null);
this.jObjects = new IJObject[recordType.getFieldNames().length];
- this.jRecord = new JRecord(recordType, jObjects);
this.openFields = new LinkedHashMap<>();
+ this.jRecord = new JRecord(recordType, jObjects, openFields);
}
@Override
@@ -517,11 +517,11 @@
for (IVisitablePointable fieldPointable : fieldPointables) {
closedPart = index < recordType.getFieldTypes().length;
IVisitablePointable tt = fieldTypeTags.get(index);
- ATypeTag typeTag =
-
EnumDeserializer.ATYPETAGDESERIALIZER.deserialize(tt.getByteArray()[tt.getStartOffset()]);
+ ATypeTag typeTag = EnumDeserializer.ATYPETAGDESERIALIZER
+
.deserialize(tt.getByteArray()[tt.getStartOffset()]);
IAType fieldType;
- fieldType =
- closedPart ? recordType.getFieldTypes()[index] :
TypeTagUtil.getBuiltinTypeByTag(typeTag);
+ fieldType = closedPart ? recordType.getFieldTypes()[index]
+ : TypeTagUtil.getBuiltinTypeByTag(typeTag);
IVisitablePointable fieldName = fieldNames.get(index);
typeInfo.reset(fieldType, typeTag);
switch (typeTag) {
@@ -534,8 +534,8 @@
// value is null
fieldObject = null;
} else {
- fieldObject =
-
pointableVisitor.visit((AListVisitablePointable) fieldPointable, typeInfo);
+ fieldObject =
pointableVisitor.visit((AListVisitablePointable) fieldPointable,
+ typeInfo);
}
break;
case ANY:
--
To view, visit https://asterix-gerrit.ics.uci.edu/2799
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I131f1bf70f01cd763cfd008abcba704e757c864e
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Xikui Wang <[email protected]>