>From Janhavi Tripurwar <[email protected]>:

Janhavi Tripurwar has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18324 )


Change subject: MB-XXXX: Fix internal error
......................................................................

MB-XXXX: Fix internal error

Change-Id: I5d65518acd532ae1dfad402a32194dd6671c5faf
---
M 
asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
1 file changed, 44 insertions(+), 32 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/24/18324/1

diff --git 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
index d08865b..0867d6b 100644
--- 
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
+++ 
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/builders/RecordBuilder.java
@@ -186,41 +186,44 @@
         if (data[offset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG) {
             return;
         }
-        byte[] nameBytes = name.getByteArray();
-        int nameOffset = name.getStartOffset();
-        // ignore adding fields with NULL/MISSING names
-        if (nameBytes[nameOffset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG
-                || nameBytes[nameOffset] == ATypeTag.SERIALIZED_NULL_TYPE_TAG) 
{
-            // TODO(ali): issue a warning
-            return;
-        }
-        // ignore adding duplicate fields
-        int nameStart = nameOffset + 1;
-        int nameLength = name.getLength() - 1;
-        if (recType != null && recTypeInfo.getFieldIndex(nameBytes, nameStart, 
nameLength) >= 0) {
-            // TODO(ali): issue a warning
-            return;
-        }
-        int fieldNameHashCode = utf8HashFunction.hash(nameBytes, nameStart, 
nameLength);
-        if (!fieldNamesHashes.add(fieldNameHashCode)) {
-            for (int i = 0; i < numberOfOpenFields; i++) {
-                if (isDuplicate(nameBytes, nameStart, nameLength, 
fieldNameHashCode, i)) {
-                    // TODO(ali): issue a warning
-                    return;
+
+        if (name != null) {
+            byte[] nameBytes = name.getByteArray();
+            int nameOffset = name.getStartOffset();
+            // ignore adding fields with NULL/MISSING names
+            if (nameBytes[nameOffset] == ATypeTag.SERIALIZED_MISSING_TYPE_TAG
+                    || nameBytes[nameOffset] == 
ATypeTag.SERIALIZED_NULL_TYPE_TAG) {
+                // TODO(ali): issue a warning
+                return;
+            }
+            // ignore adding duplicate fields
+            int nameStart = nameOffset + 1;
+            int nameLength = name.getLength() - 1;
+            if (recType != null && recTypeInfo.getFieldIndex(nameBytes, 
nameStart, nameLength) >= 0) {
+                // TODO(ali): issue a warning
+                return;
+            }
+            int fieldNameHashCode = utf8HashFunction.hash(nameBytes, 
nameStart, nameLength);
+            if (!fieldNamesHashes.add(fieldNameHashCode)) {
+                for (int i = 0; i < numberOfOpenFields; i++) {
+                    if (isDuplicate(nameBytes, nameStart, nameLength, 
fieldNameHashCode, i)) {
+                        // TODO(ali): issue a warning
+                        return;
+                    }
                 }
             }
+            if (numberOfOpenFields == openPartOffsets.length) {
+                openPartOffsets = Arrays.copyOf(openPartOffsets, 
openPartOffsets.length + DEFAULT_NUM_OPEN_FIELDS);
+                openFieldNameLengths =
+                        Arrays.copyOf(openFieldNameLengths, 
openFieldNameLengths.length + DEFAULT_NUM_OPEN_FIELDS);
+            }
+            openPartOffsets[this.numberOfOpenFields] = fieldNameHashCode;
+            openPartOffsets[this.numberOfOpenFields] = 
openPartOffsets[numberOfOpenFields] << 32;
+            openPartOffsets[numberOfOpenFields] += openPartOutputStream.size();
+            openFieldNameLengths[numberOfOpenFields++] = nameLength;
+            openPartOutputStream.write(nameBytes, nameStart, nameLength);
+            openPartOutputStream.write(data, offset, value.getLength());
         }
-        if (numberOfOpenFields == openPartOffsets.length) {
-            openPartOffsets = Arrays.copyOf(openPartOffsets, 
openPartOffsets.length + DEFAULT_NUM_OPEN_FIELDS);
-            openFieldNameLengths =
-                    Arrays.copyOf(openFieldNameLengths, 
openFieldNameLengths.length + DEFAULT_NUM_OPEN_FIELDS);
-        }
-        openPartOffsets[this.numberOfOpenFields] = fieldNameHashCode;
-        openPartOffsets[this.numberOfOpenFields] = 
openPartOffsets[numberOfOpenFields] << 32;
-        openPartOffsets[numberOfOpenFields] += openPartOutputStream.size();
-        openFieldNameLengths[numberOfOpenFields++] = nameLength;
-        openPartOutputStream.write(nameBytes, nameStart, nameLength);
-        openPartOutputStream.write(data, offset, value.getLength());
     }

     @Override

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18324
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I5d65518acd532ae1dfad402a32194dd6671c5faf
Gerrit-Change-Number: 18324
Gerrit-PatchSet: 1
Gerrit-Owner: Janhavi Tripurwar <[email protected]>
Gerrit-MessageType: newchange

Reply via email to