|
40 | 40 | import org.apache.arrow.vector.holders.DurationHolder; |
41 | 41 | import org.apache.arrow.vector.holders.FixedSizeBinaryHolder; |
42 | 42 | import org.apache.arrow.vector.holders.TimeStampMilliTZHolder; |
| 43 | +import org.apache.arrow.vector.holders.TimeStampNanoTZHolder; |
43 | 44 | import org.apache.arrow.vector.types.TimeUnit; |
44 | 45 | import org.apache.arrow.vector.types.Types.MinorType; |
45 | 46 | import org.apache.arrow.vector.types.pojo.ArrowType; |
@@ -667,6 +668,49 @@ public void testWriterTimeStampNanoTZField() { |
667 | 668 | } |
668 | 669 | } |
669 | 670 |
|
| 671 | + @Test |
| 672 | + public void testWriterUsingHolderTimeStampNanoTZField() { |
| 673 | + try (final FixedSizeListVector vector = |
| 674 | + FixedSizeListVector.empty("vector", /* size= */ 3, allocator)) { |
| 675 | + UnionFixedSizeListWriter writer = vector.getWriter(); |
| 676 | + writer.allocate(); |
| 677 | + |
| 678 | + TimeStampNanoTZHolder holder = new TimeStampNanoTZHolder(); |
| 679 | + holder.timezone = "SomeFakeTimeZone"; |
| 680 | + writer.startList(); |
| 681 | + holder.value = 12341234L; |
| 682 | + writer.timeStampNanoTZ().write(holder); |
| 683 | + holder.value = 55555L; |
| 684 | + writer.timeStampNanoTZ().write(holder); |
| 685 | + |
| 686 | + // Writing with a different timezone should throw |
| 687 | + holder.timezone = "AsdfTimeZone"; |
| 688 | + holder.value = 77777; |
| 689 | + IllegalArgumentException ex = |
| 690 | + assertThrows( |
| 691 | + IllegalArgumentException.class, () -> writer.timeStampNanoTZ().write(holder)); |
| 692 | + assertEquals( |
| 693 | + "holder.timezone: AsdfTimeZone not equal to vector timezone: SomeFakeTimeZone", |
| 694 | + ex.getMessage()); |
| 695 | + |
| 696 | + writer.endList(); |
| 697 | + vector.setValueCount(1); |
| 698 | + |
| 699 | + Field expectedDataField = |
| 700 | + new Field( |
| 701 | + BaseRepeatedValueVector.DATA_VECTOR_NAME, |
| 702 | + FieldType.nullable(new ArrowType.Timestamp(TimeUnit.NANOSECOND, "SomeFakeTimeZone")), |
| 703 | + null); |
| 704 | + Field expectedField = |
| 705 | + new Field( |
| 706 | + vector.getName(), |
| 707 | + FieldType.nullable(new ArrowType.FixedSizeList(3)), |
| 708 | + List.of(expectedDataField)); |
| 709 | + |
| 710 | + assertEquals(expectedField, writer.getField()); |
| 711 | + } |
| 712 | + } |
| 713 | + |
670 | 714 | @Test |
671 | 715 | public void testWriterUsingHolderTimestampMilliTZField() { |
672 | 716 | try (final FixedSizeListVector vector = |
|
0 commit comments