|
| 1 | +#include <ydb/core/formats/arrow/accessor/plain/accessor.h> |
| 2 | +#include <ydb/core/formats/arrow/accessor/plain/constructor.h> |
| 3 | +#include <ydb/core/formats/arrow/serializer/native.h> |
| 4 | + |
| 5 | +#include <ydb/library/actors/core/log.h> |
| 6 | + |
| 7 | +#include <library/cpp/testing/unittest/registar.h> |
| 8 | +#include <util/string/join.h> |
| 9 | + |
| 10 | + |
| 11 | +static std::shared_ptr<NKikimr::NArrow::NAccessor::IChunkedArray> BuildArray() { |
| 12 | + NKikimr::NArrow::NAccessor::TTrivialArray::TPlainBuilder<arrow::BinaryType> arrBuilder; |
| 13 | + arrBuilder.AddRecord(1, "b1"); |
| 14 | + arrBuilder.AddRecord(3, "b2"); |
| 15 | + arrBuilder.AddRecord(4, "b3"); |
| 16 | + return arrBuilder.Finish(5); |
| 17 | +} |
| 18 | + |
| 19 | +Y_UNIT_TEST_SUITE(Slicer) { |
| 20 | + using namespace NKikimr::NArrow; |
| 21 | + |
| 22 | + Y_UNIT_TEST(SplitBySizes) { |
| 23 | + auto arr = BuildArray(); |
| 24 | + NKikimr::NArrow::NAccessor::TChunkConstructionData info( |
| 25 | + arr->GetRecordsCount(), nullptr, arr->GetDataType(), NKikimr::NArrow::NSerialization::TSerializerContainer::GetDefaultSerializer()); |
| 26 | + auto serialized = NKikimr::NArrow::NAccessor::NPlain::TConstructor().SerializeToString(arr, info); |
| 27 | + const auto predSaver = [&](const std::shared_ptr<NKikimr::NArrow::NAccessor::IChunkedArray>& arr) { |
| 28 | + return NKikimr::NArrow::NAccessor::NPlain::TConstructor().SerializeToString(arr, info); |
| 29 | + }; |
| 30 | + |
| 31 | + NKikimr::NArrow::NSerialization::TNativeSerializer serializer; |
| 32 | + for (const auto& chunk: arr->SplitBySizes(predSaver, serialized, {1, 1, 1})) { |
| 33 | + auto schema = std::make_shared<arrow::Schema>(arrow::FieldVector({ std::make_shared<arrow::Field>("val", arrow::utf8()) })); |
| 34 | + TString serializedData = chunk.GetSerializedData(); |
| 35 | + arrow::Result<std::shared_ptr<arrow::RecordBatch>> result = serializer.Deserialize(serializedData, schema); |
| 36 | + UNIT_ASSERT_C(result.status().ok(), result.status().ToString()); |
| 37 | + } |
| 38 | + } |
| 39 | +} |
0 commit comments