Skip to content

Commit fd5ea08

Browse files
committed
split by size test has been added (#28437)
1 parent 6d1d37e commit fd5ea08

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
}

ydb/core/formats/arrow/ut/ya.make

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ CFLAGS(
2929

3030
SRCS(
3131
ut_arrow.cpp
32-
ut_program_step.cpp
33-
ut_dictionary.cpp
3432
ut_column_filter.cpp
33+
ut_dictionary.cpp
3534
ut_hash.cpp
35+
ut_program_step.cpp
3636
ut_reader.cpp
37+
ut_slicer.cpp
3738
)
3839

3940
END()

0 commit comments

Comments
 (0)