MCPcopy Create free account
hub / github.com/bytedance/bolt / exportValues

Function exportValues

bolt/vector/arrow/Bridge.cpp:840–914  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

838}
839
840void exportValues(
841 const BaseVector& vec,
842 const Selection& rows,
843 const ArrowOptions& options,
844 ArrowArray& out,
845 memory::MemoryPool* pool,
846 BoltToArrowBridgeHolder& holder) {
847 const auto& type = vec.type();
848 out.n_buffers = 2;
849
850 if (!vec.values()) {
851 // all values are null.
852 BOLT_CHECK_EQ(out.null_count, out.length);
853
854 switch (vec.typeKind()) {
855 case TypeKind::BOOLEAN:
856 case TypeKind::TINYINT:
857 holder.setBuffer(1, AlignedBuffer::allocate<uint8_t>(vec.size(), pool));
858 break;
859 case TypeKind::SMALLINT:
860 holder.setBuffer(
861 1, AlignedBuffer::allocate<uint16_t>(vec.size(), pool));
862 break;
863 case TypeKind::INTEGER:
864 holder.setBuffer(
865 1, AlignedBuffer::allocate<uint32_t>(vec.size(), pool));
866 break;
867 case TypeKind::BIGINT:
868 holder.setBuffer(
869 1, AlignedBuffer::allocate<uint64_t>(vec.size(), pool));
870 break;
871 case TypeKind::HUGEINT:
872 holder.setBuffer(
873 1, AlignedBuffer::allocate<uint128_t>(vec.size(), pool));
874 break;
875 case TypeKind::REAL:
876 holder.setBuffer(1, AlignedBuffer::allocate<float>(vec.size(), pool));
877 break;
878 case TypeKind::DOUBLE:
879 holder.setBuffer(1, AlignedBuffer::allocate<double>(vec.size(), pool));
880 break;
881 case TypeKind::TIMESTAMP:
882 holder.setBuffer(
883 1, AlignedBuffer::allocate<uint128_t>(vec.size(), pool));
884 break;
885 default:
886 BOLT_UNREACHABLE();
887 }
888 return;
889 }
890 if (!rows.changed() && isFlatScalarZeroCopy(type)) {
891 // Arrow does not allow a nullptr for the values buffer.
892 // The all-null (no values buffer) case is handled above.
893 BOLT_DCHECK(vec.values());
894 holder.setBuffer(1, vec.values());
895 return;
896 }
897

Callers 1

exportFlatFunction · 0.85

Calls 12

isFlatScalarZeroCopyFunction · 0.85
getArrowElementSizeFunction · 0.85
gatherFromBufferFunction · 0.85
setBufferMethod · 0.80
changedMethod · 0.80
typeMethod · 0.45
valuesMethod · 0.45
typeKindMethod · 0.45
sizeMethod · 0.45
kindMethod · 0.45

Tested by

no test coverage detected