Saurabh created ARROW-8909: ------------------------------ Summary: Out of order writes using setSafe Key: ARROW-8909 URL: https://issues.apache.org/jira/browse/ARROW-8909 Project: Apache Arrow Issue Type: Bug Components: Java Reporter: Saurabh
I noticed that calling setSafe on a VarCharVector with indices not in increasing order causes the lastIndex to be set to the index in the last call to setSafe. Is this a documented and expected behavior ? Sample code: {code:java} import java.util.Collections; import lombok.extern.slf4j.Slf4j; import org.apache.arrow.memory.RootAllocator; import org.apache.arrow.vector.VarCharVector; import org.apache.arrow.vector.VectorSchemaRoot; import org.apache.arrow.vector.types.pojo.ArrowType; import org.apache.arrow.vector.types.pojo.Field; import org.apache.arrow.vector.types.pojo.Schema; import org.apache.arrow.vector.util.Text; @Slf4j public class ATest { public static void main() { Schema schema = new Schema(Collections.singletonList(Field.nullable("Data", new ArrowType.Utf8()))); try (VectorSchemaRoot vroot = VectorSchemaRoot.create(schema, new RootAllocator())) { VarCharVector vec = (VarCharVector) vroot.getVector("Data"); for (int i = 0; i < 10; i++) { vec.setSafe(i, new Text(Integer.toString(i) + "_mtest")); } // vec.setSafe(0, new Text(Integer.toString(0) + "_new")); vec.setSafe(7, new Text(Integer.toString(7) + "_new")); vroot.setRowCount(10); log.info(vroot.contentToTSVString()); } } } {code} If I don't set the 0 or 7 after the loop, I get all the 0_mtest, 1_mtest, ..., 9_mtest entries. If I set index 0 after the loop, I only see 0_new entry; other entries are "" If I set index 7 after the loop, I see 0_mtest, ..., 5_mtest, 7_new; other entries are "" -- This message was sent by Atlassian Jira (v8.3.4#803005)