>From <[email protected]>:
[email protected] has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18923 )
Change subject: [NO ISSUE][COMP] Avoid creating DataOutputStream twice for
closed fields
......................................................................
[NO ISSUE][COMP] Avoid creating DataOutputStream twice for closed fields
- user model changes: no
- storage format changes: no
- interface changes: no
Ext-ref: MB-61971
Change-Id: I5f1c6936c6601000de5faad496ee6a765cbb14d9
---
M
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/ARecordVisitablePointable.java
1 file changed, 29 insertions(+), 18 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/23/18923/1
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/ARecordVisitablePointable.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/ARecordVisitablePointable.java
index e418542..440fd6f 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/ARecordVisitablePointable.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/pointables/ARecordVisitablePointable.java
@@ -100,6 +100,8 @@
LinkedHashSet<String> allOrderedFields =
inputType.getAllOrderedFields();
if (allOrderedFields != null) {
numFields = allOrderedFields.size();
+ int index = 0;
+ int nameInClosedField = 0;
for (String field : allOrderedFields) {
int nameStart = typeBos.size();
typeDos.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
@@ -109,29 +111,24 @@
typeNameReference.set(typeBos.getByteArray(), nameStart,
nameEnd - nameStart);
fieldNames.add(typeNameReference);
fieldValues.add(missingReference);
- }
- }
-
- int index = 0;
- for (int i = 0; i < numberOfSchemaFields; i++) {
- // add type name Reference (including a string type tag)
- int nameStart = typeBos.size();
- typeDos.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
- utf8Writer.writeUTF8(fieldNameStrs[i], typeDos);
- int nameEnd = typeBos.size();
- IVisitablePointable typeNameReference =
AFlatValuePointable.FACTORY.create(null);
- typeNameReference.set(typeBos.getByteArray(), nameStart,
nameEnd - nameStart);
- for (; index < numFields; index++) {
- if (fieldNames.get(index).equals(typeNameReference)) {
- break;
+ if (nameInClosedField < numberOfSchemaFields &&
field.equals(fieldNameStrs[nameInClosedField])) {
+ reverseLookupClosedFields.add(index);
+ nameInClosedField++;
}
+ index++;
}
- if (index == numFields) {
+ } else {
+ for (int i = 0; i < numberOfSchemaFields; i++) {
+ // add type name Reference (including a string type tag)
+ int nameStart = typeBos.size();
+ typeDos.writeByte(ATypeTag.SERIALIZED_STRING_TYPE_TAG);
+ utf8Writer.writeUTF8(fieldNameStrs[i], typeDos);
+ int nameEnd = typeBos.size();
+ IVisitablePointable typeNameReference =
AFlatValuePointable.FACTORY.create(null);
+ typeNameReference.set(typeBos.getByteArray(), nameStart,
nameEnd - nameStart);
fieldNames.add(typeNameReference);
reverseLookupClosedFields.add(fieldNames.size() - 1);
- continue;
}
- reverseLookupClosedFields.add(index);
}
// initialize a constant: null value bytes reference
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18923
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: I5f1c6936c6601000de5faad496ee6a765cbb14d9
Gerrit-Change-Number: 18923
Gerrit-PatchSet: 1
Gerrit-Owner: [email protected]
Gerrit-MessageType: newchange