Antalya 26.6: Support Nullable(Tuple) for Arrow, ArrowStream, ORC, legacy Parquet formats - #2128
Antalya 26.6: Support Nullable(Tuple) for Arrow, ArrowStream, ORC, legacy Parquet formats#2128zvonand wants to merge 2 commits into
Conversation
…next commit) --- Original cherry-pick message follows: Merge pull request #1802 from Altinity/feature/antalya-26.3/ClickHouse-ClickHouse-pr-101272 Antalya 26.3: Support Nullable(Tuple) for Arrow, ArrowStream, ORC, legacy Parquet formats # Conflicts: # src/Processors/Formats/Impl/ArrowColumnToCHColumn.cpp # src/Processors/Formats/Impl/CHColumnToArrowColumn.cpp # src/Processors/Formats/Impl/MsgPackRowInputFormat.cpp # tests/queries/0_stateless/04065_tuple_inside_nullable_parquet_roundtrip.reference # tests/queries/0_stateless/04065_tuple_inside_nullable_parquet_roundtrip.sql
All conflicts resolved in favour of "ours" (antalya-26.6): the whole content of PR #1802 (Nullable(Tuple) support for Arrow/ArrowStream/ORC/ legacy Parquet) is already present on antalya-26.6: * Nested::unwrapNullableTuple (src/DataTypes/NestedUtils.{h,cpp}), the insertNullAsDefaultIfNeeded recursion and the ORC/CSV changes applied as no-ops (identical content already on the branch). * ArrowColumnToCHColumn.cpp: readColumnWithNumericData already zeroes values at null positions, readNonNullableColumnFromArrowColumn already routes Nested list elements through Nested::unwrapNullableTuple and the arrow::Type::STRUCT exclusion is already removed. Kept the branch's extra ColumnArray last-offset validation; dropped the cherry-pick's stray copy of the null-zeroing loop that git mis-applied to readColumnWithDurationData (that hunk belongs to readColumnWithNumericData in the source PR and is already there). * CHColumnToArrowColumn.cpp: the branch's fillArrowArray returns an arrow::Array and builds the struct via arrow::StructArray::Make with a null bitmap; it already implements the source PR's semantics (children get nullptr instead of the struct-level bytemap, struct-level nulls come from the bytemap). The cherry-pick's builder.Append()/AppendNull() form targets the old, pre-refactor signature. * MsgPackRowInputFormat.cpp: the Nullable unwrapping in start_array is already present, only placed after the tuple-size check. * 04065_tuple_inside_nullable_parquet_roundtrip.{sql,reference}: the branch version was deliberately rewritten for the V3-only Parquet reader (commit 0f9384b), the obsolete setting input_format_parquet_use_native_reader_v3 no longer exists on antalya-26.6, so the cherry-pick's Arrow-reader variants are dropped.
CI triage for #2128Verdict: 9 failing regression jobs — 0 PR-caused. All are pre-existing on the base branch or infrastructure/flake. There is nothing here that this PR broke. The bigger thing to flag is that the build + functional + integration suites were all skipped, so this PR's actual code was never compiled or tested by CI (details at the bottom). Baseline used for comparison: latest Per-failure
Why the ParquetS3 one is not the PR (even though the PR touches Parquet)This is the only job that was green on base and red here, so it deserved a close look — but:
Fix: none needed — just re-run
|
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Support Nullable(Tuple) for Arrow, ArrowStream, ORC, legacy Parquet formats (ClickHouse#101272 by @nihalzp) (#1802 by @zvonand).
CI/CD Options
Exclude tests:
Regression jobs to run:
Cherry-picked from #1802.