| 633 | } |
| 634 | |
| 635 | void readTimestampWithTimeZone( |
| 636 | ByteInputStream* source, |
| 637 | bolt::memory::MemoryPool* pool, |
| 638 | RowVector* result, |
| 639 | vector_size_t resultOffset) { |
| 640 | auto& timestamps = result->childAt(0); |
| 641 | read<int64_t>(source, BIGINT(), pool, timestamps, resultOffset, false); |
| 642 | |
| 643 | auto rawTimestamps = timestamps->asFlatVector<int64_t>()->mutableRawValues(); |
| 644 | |
| 645 | const auto size = timestamps->size(); |
| 646 | result->resize(size); |
| 647 | |
| 648 | auto& timezones = result->childAt(1); |
| 649 | timezones->resize(size); |
| 650 | auto rawTimezones = timezones->asFlatVector<int16_t>()->mutableRawValues(); |
| 651 | |
| 652 | auto rawNulls = timestamps->rawNulls(); |
| 653 | for (auto i = resultOffset; i < size; ++i) { |
| 654 | if (!rawNulls || !bits::isBitNull(rawNulls, i)) { |
| 655 | unpackTimestampWithTimeZone( |
| 656 | rawTimestamps[i], rawTimestamps[i], rawTimezones[i]); |
| 657 | result->setNull(i, false); |
| 658 | } else { |
| 659 | result->setNull(i, true); |
| 660 | } |
| 661 | } |
| 662 | } |
| 663 | |
| 664 | template <typename T> |
| 665 | void scatterValues( |
no test coverage detected