|
32 | 32 | import org.apache.arrow.vector.complex.BaseRepeatedValueViewVector; |
33 | 33 | import org.apache.arrow.vector.complex.ListVector; |
34 | 34 | import org.apache.arrow.vector.complex.ListViewVector; |
| 35 | +import org.apache.arrow.vector.complex.impl.UnionListViewReader; |
35 | 36 | import org.apache.arrow.vector.complex.impl.UnionListViewWriter; |
36 | 37 | import org.apache.arrow.vector.holders.DurationHolder; |
37 | 38 | import org.apache.arrow.vector.holders.TimeStampMilliTZHolder; |
| 39 | +import org.apache.arrow.vector.holders.UnionHolder; |
38 | 40 | import org.apache.arrow.vector.types.TimeUnit; |
39 | 41 | import org.apache.arrow.vector.types.Types.MinorType; |
40 | 42 | import org.apache.arrow.vector.types.pojo.ArrowType; |
@@ -142,6 +144,69 @@ public void testBasicListViewVector() { |
142 | 144 | } |
143 | 145 | } |
144 | 146 |
|
| 147 | + @Test |
| 148 | + public void testCopyFromNonEmptyListView() { |
| 149 | + try (ListViewVector inVector = ListViewVector.empty("input", allocator); |
| 150 | + ListViewVector outVector = ListViewVector.empty("output", allocator)) { |
| 151 | + UnionListViewWriter writer = inVector.getWriter(); |
| 152 | + writer.allocate(); |
| 153 | + writer.setPosition(0); |
| 154 | + writeIntValues(writer, new int[] {10, 20}); |
| 155 | + writer.setValueCount(1); |
| 156 | + |
| 157 | + outVector.allocateNew(); |
| 158 | + outVector.copyFrom(0, 0, inVector); |
| 159 | + outVector.setValueCount(1); |
| 160 | + |
| 161 | + assertEquals(Arrays.asList(10, 20), outVector.getObject(0)); |
| 162 | + } |
| 163 | + } |
| 164 | + |
| 165 | + @Test |
| 166 | + public void testReaderIteratesListViewRangeAndResets() { |
| 167 | + try (ListViewVector listViewVector = ListViewVector.empty("listview", allocator)) { |
| 168 | + initializeListViewVector( |
| 169 | + listViewVector, |
| 170 | + List.of(10, 11, 20, 21, 22), |
| 171 | + List.of(1, 1, 1), |
| 172 | + List.of(0, 2, 5), |
| 173 | + List.of(2, 3, 0)); |
| 174 | + UnionListViewReader reader = listViewVector.getReader(); |
| 175 | + |
| 176 | + reader.setPosition(0); |
| 177 | + assertTrue(reader.next()); |
| 178 | + assertEquals(10, ((Number) reader.reader().readObject()).intValue()); |
| 179 | + assertTrue(reader.next()); |
| 180 | + assertEquals(11, ((Number) reader.reader().readObject()).intValue()); |
| 181 | + assertFalse(reader.next()); |
| 182 | + assertFalse(reader.next()); |
| 183 | + |
| 184 | + reader.setPosition(1); |
| 185 | + assertTrue(reader.next()); |
| 186 | + assertEquals(20, ((Number) reader.reader().readObject()).intValue()); |
| 187 | + assertTrue(reader.next()); |
| 188 | + assertEquals(21, ((Number) reader.reader().readObject()).intValue()); |
| 189 | + assertTrue(reader.next()); |
| 190 | + assertEquals(22, ((Number) reader.reader().readObject()).intValue()); |
| 191 | + assertFalse(reader.next()); |
| 192 | + assertFalse(reader.next()); |
| 193 | + |
| 194 | + reader.setPosition(1); |
| 195 | + assertTrue(reader.next()); |
| 196 | + assertEquals(20, ((Number) reader.reader().readObject()).intValue()); |
| 197 | + |
| 198 | + reader.setPosition(2); |
| 199 | + assertFalse(reader.next()); |
| 200 | + assertFalse(reader.next()); |
| 201 | + |
| 202 | + reader.setPosition(1); |
| 203 | + UnionHolder holder = new UnionHolder(); |
| 204 | + reader.read(2, holder); |
| 205 | + assertEquals(22, ((Number) holder.reader.readObject()).intValue()); |
| 206 | + assertFalse(reader.next()); |
| 207 | + } |
| 208 | + } |
| 209 | + |
145 | 210 | @Test |
146 | 211 | public void testImplicitNullVectors() { |
147 | 212 | try (ListViewVector listViewVector = ListViewVector.empty("sourceVector", allocator)) { |
|
0 commit comments