Liya Fan created ARROW-6896: ------------------------------- Summary: [Java] Vector schema root should not share vectors Key: ARROW-6896 URL: https://issues.apache.org/jira/browse/ARROW-6896 Project: Apache Arrow Issue Type: Bug Components: Java Reporter: Liya Fan Assignee: Liya Fan
Vector schema root should not share vectors. Otherwise, unexpectd behavior would happen. Please note that VectorSchemaRoot is not just a container for vectors, it is also a resource (it implements the AutoClosable interface), and it manages the life cycle of its inner vectors. When two VectorSchemaRoots share vectors, something unexpected may happen. Consider the following scenario, which is frequently encountered in a SQL engine. 1. We create a batch: VectorSchemaRoot oldBatch = ... 2. We add a vector to it, which results in a new batch VectorSchemaRoot newBatch = oldBatch.addVector(vector); 3. We are done with the old batch, and release the resource oldBatch.close(); 4. We continue to use the new batch, but gets an exception, because some inner vectors have been released by the old batch. -- This message was sent by Atlassian Jira (v8.3.4#803005)