>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