File tree Expand file tree Collapse file tree 2 files changed +30
-5
lines changed
main/java/org/apache/arrow/vector
test/java/org/apache/arrow/vector Expand file tree Collapse file tree 2 files changed +30
-5
lines changed Original file line number Diff line number Diff line change @@ -199,13 +199,18 @@ public FieldVector getVector(int index) {
199199 */
200200 public VectorSchemaRoot addVector (int index , FieldVector vector ) {
201201 Preconditions .checkNotNull (vector );
202- Preconditions .checkArgument (index >= 0 && index < fieldVectors .size ());
202+ Preconditions .checkArgument (index >= 0 && index <= fieldVectors .size ());
203203 List <FieldVector > newVectors = new ArrayList <>();
204- for (int i = 0 ; i < fieldVectors .size (); i ++) {
205- if (i == index ) {
206- newVectors .add (vector );
204+ if (index == fieldVectors .size ()) {
205+ newVectors .addAll (fieldVectors );
206+ newVectors .add (vector );
207+ } else {
208+ for (int i = 0 ; i < fieldVectors .size (); i ++) {
209+ if (i == index ) {
210+ newVectors .add (vector );
211+ }
212+ newVectors .add (fieldVectors .get (i ));
207213 }
208- newVectors .add (fieldVectors .get (i ));
209214 }
210215 return new VectorSchemaRoot (newVectors );
211216 }
Original file line number Diff line number Diff line change @@ -171,6 +171,26 @@ public void testAddVector() {
171171 }
172172 }
173173
174+ @ Test
175+ public void testAddVectorAtEnd () {
176+ try (final IntVector intVector1 = new IntVector ("intVector1" , allocator );
177+ final IntVector intVector2 = new IntVector ("intVector2" , allocator );
178+ final IntVector intVector3 = new IntVector ("intVector3" , allocator ); ) {
179+
180+ VectorSchemaRoot original = new VectorSchemaRoot (Arrays .asList (intVector1 , intVector2 ));
181+ assertEquals (2 , original .getFieldVectors ().size ());
182+
183+ VectorSchemaRoot newRecordBatch = original .addVector (2 , intVector3 );
184+ assertEquals (3 , newRecordBatch .getFieldVectors ().size ());
185+ assertEquals (intVector1 , newRecordBatch .getFieldVectors ().get (0 ));
186+ assertEquals (intVector2 , newRecordBatch .getFieldVectors ().get (1 ));
187+ assertEquals (intVector3 , newRecordBatch .getFieldVectors ().get (2 ));
188+
189+ original .close ();
190+ newRecordBatch .close ();
191+ }
192+ }
193+
174194 @ Test
175195 public void testRemoveVector () {
176196 try (final IntVector intVector1 = new IntVector ("intVector1" , allocator );
You can’t perform that action at this time.
0 commit comments