This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new ac1cf9208a [ASTERIXDB-3511][COMP] Avoid creating DataOutputStream 
twice for closed fields
ac1cf9208a is described below

commit ac1cf9208a82ff367edc17144279d2836624c941
Author: AnkitPrabhu <[email protected]>
AuthorDate: Mon Sep 30 16:03:33 2024 +0530

    [ASTERIXDB-3511][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
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18923
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../om/pointables/ARecordVisitablePointable.java   | 33 ++++++++++------------
 1 file changed, 15 insertions(+), 18 deletions(-)

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 e418542a75..440fd6f220 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 @@ public class ARecordVisitablePointable extends 
AbstractVisitablePointable {
             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 @@ public class ARecordVisitablePointable extends 
AbstractVisitablePointable {
                     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

Reply via email to