@@ -3424,6 +3424,41 @@ TEST_P(ScanAndReadInteTest, TestCastTimestampType) {
34243424 ASSERT_TRUE (expected->Equals (read_result)) << read_result->ToString ();
34253425}
34263426
3427+ TEST_F (ScanAndReadInteTest, TestParquetDictionaryBinaryStoredArrowSchema) {
3428+ const std::string table_path = GetDataDir () +
3429+ " /parquet/append_dictionary_binary.db/"
3430+ " append_dictionary_binary" ;
3431+
3432+ ScanContextBuilder scan_context_builder (table_path);
3433+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<ScanContext> scan_context, scan_context_builder.Finish ());
3434+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<TableScan> table_scan,
3435+ TableScan::Create (std::move (scan_context)));
3436+ ASSERT_OK_AND_ASSIGN (std::shared_ptr<Plan> plan, table_scan->CreatePlan ());
3437+ ASSERT_EQ (1 , plan->SnapshotId ().value ());
3438+ ASSERT_EQ (1 , plan->Splits ().size ());
3439+
3440+ ReadContextBuilder read_context_builder (table_path);
3441+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<ReadContext> read_context, read_context_builder.Finish ());
3442+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<TableRead> table_read,
3443+ TableRead::Create (std::move (read_context)));
3444+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<BatchReader> reader,
3445+ table_read->CreateReader (plan->Splits ()));
3446+ ASSERT_OK_AND_ASSIGN (std::shared_ptr<arrow::ChunkedArray> actual,
3447+ ReadResultCollector::CollectResult (std::move (reader)));
3448+
3449+ std::shared_ptr<arrow::DataType> expected_type = arrow::struct_ ({
3450+ arrow::field (" _VALUE_KIND" , arrow::int8 ()),
3451+ arrow::field (" payload" , arrow::binary ()),
3452+ });
3453+ std::shared_ptr<arrow::Array> expected_array =
3454+ arrow::ipc::internal::json::ArrayFromJSON (
3455+ expected_type, R"( [[0, "alpha"], [0, null], [0, "beta"], [0, "alpha"]])" )
3456+ .ValueOrDie ();
3457+ std::shared_ptr<arrow::ChunkedArray> expected =
3458+ std::make_shared<arrow::ChunkedArray>(expected_array);
3459+ ASSERT_TRUE (expected->Equals (actual)) << actual->ToString ();
3460+ }
3461+
34273462#ifdef PAIMON_ENABLE_LANCE
34283463TEST_F (ScanAndReadInteTest, TestLanceJavaCompatibility) {
34293464 TimezoneGuard timezone_guard (" UTC" );
0 commit comments