-
Notifications
You must be signed in to change notification settings - Fork 4.3k
GH-50993: [CI][Integration] Add extension-wrapped union to integration data #51027
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
3c71b93
5028fb5
de746b3
f215787
b2b42d4
b6634be
3abb59a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1938,6 +1938,29 @@ def generate_extension_case(): | |
| dictionaries=[dict0]) | ||
|
|
||
|
|
||
| def generate_extension_wrapped_union_case(): | ||
| # Unions wrapped in an extension type, exercising the extension/union | ||
| # interaction across implementations (see the C++ fix in GH-50623). | ||
| sparse_union_type = ExtensionType( | ||
| 'sparse-union-extension', 'sparse-union-extension', | ||
| SparseUnionField('', [get_field('floats', 'float64'), | ||
| get_field('strings', 'largeutf8')], | ||
| type_ids=[0, 1])) | ||
| dense_union_type = ExtensionType( | ||
| 'dense-union-extension', 'dense-union-extension', | ||
| DenseUnionField('', [get_field('floats', 'float64'), | ||
| get_field('strings', 'largeutf8')], | ||
| type_ids=[0, 1])) | ||
|
|
||
| fields = [ | ||
| ExtensionField('sparse_union_ext', sparse_union_type), | ||
| ExtensionField('dense_union_ext', dense_union_type), | ||
| ] | ||
|
|
||
| batch_sizes = [0, 7] | ||
| return _generate_file("extension_union", fields, batch_sizes) | ||
|
|
||
|
|
||
| def get_generated_json_files(tempdir=None): | ||
| tempdir = tempdir or tempfile.mkdtemp(prefix='arrow-integration-') | ||
|
|
||
|
|
@@ -2047,6 +2070,8 @@ def get_generated_json_files(tempdir=None): | |
| # TODO(https://github.com/apache/arrow/issues/38045) | ||
| .skip_format(SKIP_FLIGHT, '.NET') | ||
| .skip_tester('Ruby'), | ||
|
|
||
| generate_extension_wrapped_union_case(), | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. so does this mean that all the other implementations correctly handle this extension wrapped union? If so, maybe that implies that whatever the problem was in #50927 is C++ specific and maybe not worth additional cross implementation coverage
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @alamb It depends how other implementations handle extension types. If they need to be registered as in Arrow C++ for wrapping to occur, then a bug could be hidden by lack of registration.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Confirmed. After removing the bypass, there were still two C++ integration consumers missing extension-type registration: With just those registrations reverted locally, I pushed f215787 to register the dense/sparse union extension types in both places, and rerunning the same focused |
||
| ] | ||
|
|
||
| generated_paths = [] | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@paleolimbot @zeroshade I think similar guards will have to be added to arrow-go and nanoarrow so that the extension type wrapping happens in integration testing.