|
36 | 36 | import org.apache.arrow.vector.complex.writer.FieldWriter; |
37 | 37 | import org.apache.arrow.vector.extension.UuidType; |
38 | 38 | import org.apache.arrow.vector.holders.DecimalHolder; |
| 39 | +import org.apache.arrow.vector.types.TimeUnit; |
39 | 40 | import org.apache.arrow.vector.types.Types; |
40 | 41 | import org.apache.arrow.vector.types.pojo.ArrowType; |
41 | 42 | import org.apache.arrow.vector.types.pojo.FieldType; |
@@ -954,4 +955,66 @@ public void testCopyStructVectorWithExtensionType() { |
954 | 955 | assertTrue(VectorEqualsVisitor.vectorEquals(from, to)); |
955 | 956 | } |
956 | 957 | } |
| 958 | + |
| 959 | + @Test |
| 960 | + public void testCopyListOfTimeStampNanoTZ() { |
| 961 | + try (ListVector from = ListVector.empty("v", allocator); |
| 962 | + ListVector to = ListVector.empty("v", allocator)) { |
| 963 | + from.addOrGetVector( |
| 964 | + FieldType.nullable(new ArrowType.Timestamp(TimeUnit.NANOSECOND, "UTC"))); |
| 965 | + to.addOrGetVector( |
| 966 | + FieldType.nullable(new ArrowType.Timestamp(TimeUnit.NANOSECOND, "UTC"))); |
| 967 | + |
| 968 | + UnionListWriter listWriter = from.getWriter(); |
| 969 | + listWriter.allocate(); |
| 970 | + |
| 971 | + for (int i = 0; i < COUNT; i++) { |
| 972 | + listWriter.setPosition(i); |
| 973 | + listWriter.startList(); |
| 974 | + listWriter.timeStampNanoTZ().writeTimeStampNanoTZ(i * 1_000_000L); |
| 975 | + listWriter.timeStampNanoTZ().writeTimeStampNanoTZ(i * 2_000_000L); |
| 976 | + listWriter.endList(); |
| 977 | + } |
| 978 | + from.setValueCount(COUNT); |
| 979 | + |
| 980 | + FieldReader in = from.getReader(); |
| 981 | + FieldWriter out = to.getWriter(); |
| 982 | + for (int i = 0; i < COUNT; i++) { |
| 983 | + in.setPosition(i); |
| 984 | + out.setPosition(i); |
| 985 | + ComplexCopier.copy(in, out); |
| 986 | + } |
| 987 | + to.setValueCount(COUNT); |
| 988 | + |
| 989 | + assertTrue(VectorEqualsVisitor.vectorEquals(from, to)); |
| 990 | + } |
| 991 | + } |
| 992 | + |
| 993 | + @Test |
| 994 | + public void testCopyStructOfTimeStampNanoTZ() { |
| 995 | + try (final StructVector from = StructVector.empty("v", allocator); |
| 996 | + final StructVector to = StructVector.empty("v", allocator)) { |
| 997 | + from.allocateNewSafe(); |
| 998 | + NullableStructWriter structWriter = from.getWriter(); |
| 999 | + |
| 1000 | + for (int i = 0; i < COUNT; i++) { |
| 1001 | + structWriter.setPosition(i); |
| 1002 | + structWriter.start(); |
| 1003 | + structWriter.timeStampNanoTZ("ts", "UTC").writeTimeStampNanoTZ(i * 1_000_000L); |
| 1004 | + structWriter.end(); |
| 1005 | + } |
| 1006 | + from.setValueCount(COUNT); |
| 1007 | + |
| 1008 | + FieldReader in = from.getReader(); |
| 1009 | + FieldWriter out = to.getWriter(); |
| 1010 | + for (int i = 0; i < COUNT; i++) { |
| 1011 | + in.setPosition(i); |
| 1012 | + out.setPosition(i); |
| 1013 | + ComplexCopier.copy(in, out); |
| 1014 | + } |
| 1015 | + to.setValueCount(COUNT); |
| 1016 | + |
| 1017 | + assertTrue(VectorEqualsVisitor.vectorEquals(from, to)); |
| 1018 | + } |
| 1019 | + } |
957 | 1020 | } |
0 commit comments