Repository navigation
fix(import): preserve root names for opaque extension carriers - #5
Merged
aunjgr merged 2 commits intoOct 8, 2026
Conversation
aunjgr
marked this pull request as ready for review
October 8, 2026 17:26
aunjgr
marked this pull request as draft
October 8, 2026 17:38
aunjgr
marked this pull request as ready for review
October 8, 2026 18:06
aunjgr
merged commit Oct 8, 2026
99c7ca3
into
matrixorigin:feature/26155-substrait-anti-joins
5 of 6 checks passed
zuyu
pushed a commit
that referenced
this pull request
Oct 14, 2026
* fix(import): preserve root names for opaque extension carriers * fix(import): retain final STRUCT root heading compatibility
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MO Q1 preparation crashes when Decimal256 is followed by another result column: its private four-field DuckDB carrier is counted as nested SQL fields, advancing past
RelRoot.names. This importer change preserves the extension handler's opaque scalar boundary and rejects insufficient root names before indexing.IsOpaqueType(LogicalType const&), defaulting to false. An opting-in carrier consumes one SQL name; ordinary STRUCT flattening remains unchanged, including opaque children inside a real STRUCT.Validation: frozen Pixi
mo, Linux, Sirius's pinned DuckDB069cc9f9b5be802405797faecc284961b07c70ef. The canonical importer test source passed 157 assertions / 3 cases in the existing native binding executable; the complete binding group with the prepared Sirius callback passed 1009 / 84. Changed ranges were formatted with clang-format 20.1.4 and the DuckDB style;git diff --checkpassed. The repository's separate macOS C-test CI is not claimed as a local pass.This targets the compatible importer branch already pinned by Sirius. The additive C++ hook requires rebuilding consumers; the C ABI and numeric arithmetic are unchanged. Sirius must opt its canonical exact carriers into the hook when it pins this merged change. MO C will then pin that merged Sirius revision and rerun complete native/public validation; no unmerged dependency pin or rollout acceptance is claimed.
Refs matrixorigin/matrixone#28968 and matrixorigin/matrixone#28966.
CI follow-up: retained the legacy final-STRUCT format with only its root heading and added an independent value/name regression. Bounds are checked before actual array reads, rather than requiring an unused trailing cursor to remain within the heading list. The five later distribution failures reproduce at clean importer
95d9ce8d78490db3991ab6145653716aa3ec42c9with its bundled DuckDBd8cdaa33fda8df955cc76ef58a280f68f4cd43fa: issue_01:26 (DISTINCT_FROM), TPCH:62 and TPCDS:113 (CTE), literals:197 (existing expected-error mismatch), and types:85 (empty-plan root). All five were selected explicitly and reproduced (80 assertions, 5 failures) with no source changes. The clean-base Linux job also fails STRUCT field selection at line 46 and then crashes in nested types at line 66 before reaching those later cases. This PR retains safe rejection of those unsupported/mismatched plans; no test is skipped or relaxed and full distribution CI is not claimed green.