| 118 | } |
| 119 | |
| 120 | static void scanArrowArrayDayTimeInterval(const ArrowArray* array, ValueVector& outputVector, |
| 121 | ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, uint64_t count) { |
| 122 | auto arrayBuffer = ((const int64_t*)array->buffers[1]) + srcOffset; |
| 123 | |
| 124 | mask->copyToValueVector(&outputVector, dstOffset, count); |
| 125 | |
| 126 | rowIter(outputVector, count, [&](auto i) { |
| 127 | if (!mask->isNull(i)) { |
| 128 | int64_t curValue = arrayBuffer[i]; |
| 129 | int32_t day = curValue; |
| 130 | int64_t micros = (curValue >> (4 * sizeof(int64_t))) * 1000; |
| 131 | // arrow stores ms, while we store us |
| 132 | outputVector.setValue<interval_t>(i + dstOffset, interval_t(0, day, micros)); |
| 133 | } |
| 134 | }); |
| 135 | } |
| 136 | |
| 137 | static void scanArrowArrayMonthDayNanoInterval(const ArrowArray* array, ValueVector& outputVector, |
| 138 | ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, uint64_t count) { |
no test coverage detected