1919#include < vector>
2020
2121#include " arrow/api.h"
22- #include " arrow/array/array_base.h"
23- #include " arrow/array/array_nested.h"
2422#include " arrow/c/abi.h"
2523#include " arrow/c/bridge.h"
26- #include " arrow/c/helpers.h"
2724#include " arrow/ipc/json_simple.h"
2825#include " gtest/gtest.h"
2926#include " paimon/common/data/binary_row.h"
3229#include " paimon/core/stats/simple_stats_converter.h"
3330#include " paimon/format/avro/avro_file_format.h"
3431#include " paimon/format/avro/avro_format_writer.h"
32+ #include " paimon/format/file_format_factory.h"
3533#include " paimon/fs/file_system.h"
3634#include " paimon/fs/local/local_file_system.h"
3735#include " paimon/memory/memory_pool.h"
3836#include " paimon/status.h"
3937#include " paimon/testing/utils/testharness.h"
38+
4039namespace paimon ::avro::test {
4140
4241class AvroStatsExtractorTest : public ::testing::Test {
@@ -50,9 +49,10 @@ class AvroStatsExtractorTest : public ::testing::Test {
5049 ::ArrowSchema c_schema;
5150 ASSERT_TRUE (arrow::ExportSchema (*schema, &c_schema).ok ());
5251
53- AvroFileFormat format ({{" file.format" , " avro" }, {" manifest.format" , " avro" }});
52+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<FileFormat> file_format,
53+ FileFormatFactory::Get (" avro" , {}));
5454 ASSERT_OK_AND_ASSIGN (auto writer_builder,
55- format. CreateWriterBuilder (&c_schema, /* batch_size=*/ 1024 ));
55+ file_format-> CreateWriterBuilder (&c_schema, /* batch_size=*/ 1024 ));
5656
5757 auto fs = std::make_shared<LocalFileSystem>();
5858 ASSERT_OK_AND_ASSIGN (std::unique_ptr<OutputStream> output_stream,
@@ -72,13 +72,6 @@ class AvroStatsExtractorTest : public ::testing::Test {
7272 }
7373};
7474
75- static AvroStatsExtractor MakeExtractor () {
76- std::map<std::string, std::string> opts;
77- opts[" file.format" ] = " avro" ;
78- opts[" manifest.format" ] = " avro" ;
79- return AvroStatsExtractor (opts);
80- }
81-
8275TEST_F (AvroStatsExtractorTest, TestPrimitiveStatsExtractor) {
8376 auto timezone = DateTimeUtils::GetLocalTimezoneName ();
8477 arrow::FieldVector fields = {
@@ -106,10 +99,10 @@ TEST_F(AvroStatsExtractorTest, TestPrimitiveStatsExtractor) {
10699 auto schema = std::make_shared<arrow::Schema>(fields);
107100 auto array = std::dynamic_pointer_cast<arrow::StructArray>(
108101 arrow::ipc::internal::json::ArrayFromJSON (arrow::struct_ ({fields}), R"( [
109- [1, 11, 111, 1111, 1.1, 1.11, "Hello", "你好", 1234, "2033-05-18 03:33:20.0", "1.22", true, "2033-05-18 03:33:20", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0"],
110- [2, 22, 222, 2222, 2.2, 2.22, "World", "世界", -1234, "1899-01-01 00:59:20.001001001", "2.22", false, "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20.001001001","1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20.001001001"],
111- [null, null, 0, null, null, 0, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
112- ])" )
102+ [1, 11, 111, 1111, 1.1, 1.11, "Hello", "你好", 1234, "2033-05-18 03:33:20.0", "1.22", true, "2033-05-18 03:33:20", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0", "2033-05-18 03:33:20.0"],
103+ [2, 22, 222, 2222, 2.2, 2.22, "World", "世界", -1234, "1899-01-01 00:59:20.001001001", "2.22", false, "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20.001001001","1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20", "1899-01-01 00:59:20.001001001"],
104+ [null, null, 0, null, null, 0, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
105+ ])" )
113106 .ValueOrDie ());
114107 auto src_chunk_array = std::make_shared<arrow::ChunkedArray>(arrow::ArrayVector ({array}));
115108
@@ -139,10 +132,10 @@ TEST_F(AvroStatsExtractorTest, TestNestedType) {
139132 auto schema = arrow::schema (fields);
140133 auto array = std::dynamic_pointer_cast<arrow::StructArray>(
141134 arrow::ipc::internal::json::ArrayFromJSON (arrow::struct_ ({fields}), R"( [
142- [null, [true, 2]],
143- [[0.1, 0.3], [true, 1]],
144- [[1.1, 1.2], null]
145- ])" )
135+ [null, [true, 2]],
136+ [[0.1, 0.3], [true, 1]],
137+ [[1.1, 1.2], null]
138+ ])" )
146139 .ValueOrDie ());
147140 auto src_chunk_array = std::make_shared<arrow::ChunkedArray>(arrow::ArrayVector ({array}));
148141
@@ -151,7 +144,7 @@ TEST_F(AvroStatsExtractorTest, TestNestedType) {
151144 std::string file_path = dir->Str () + " /test.avro" ;
152145 WriteAvroFile (file_path, src_chunk_array, schema);
153146
154- AvroStatsExtractor extractor = MakeExtractor ( );
147+ AvroStatsExtractor extractor ({} );
155148 auto fs = std::make_shared<LocalFileSystem>();
156149 ASSERT_OK_AND_ASSIGN (auto results, extractor.Extract (fs, file_path, GetDefaultPool ()));
157150
@@ -194,8 +187,8 @@ TEST_F(AvroStatsExtractorTest, TestNullForAllType) {
194187 auto schema = std::make_shared<arrow::Schema>(fields);
195188 auto src_array = std::dynamic_pointer_cast<arrow::StructArray>(
196189 arrow::ipc::internal::json::ArrayFromJSON (arrow::struct_ ({fields}), R"( [
197- [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
198- ])" )
190+ [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]
191+ ])" )
199192 .ValueOrDie ());
200193 auto src_chunk_array = std::make_shared<arrow::ChunkedArray>(arrow::ArrayVector ({src_array}));
201194
@@ -204,7 +197,7 @@ TEST_F(AvroStatsExtractorTest, TestNullForAllType) {
204197 std::string file_path = dir->Str () + " /test.avro" ;
205198 WriteAvroFile (file_path, src_chunk_array, schema);
206199
207- AvroStatsExtractor extractor = MakeExtractor ( );
200+ AvroStatsExtractor extractor ({} );
208201 auto fs = std::make_shared<LocalFileSystem>();
209202 ASSERT_OK_AND_ASSIGN (auto column_stats, extractor.Extract (fs, file_path, GetDefaultPool ()));
210203
0 commit comments