Uh oh!
There was an error while loading. Please reload this page.
- 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
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
3c71b935028fb5de746b3f215787b2b42d4b6634be3abb59a3282c05File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
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. ContributorAuthor 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 = [] | ||
Uh oh!
There was an error while loading. Please reload this page.
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.
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.
Thank you for the heads up!
nanoarrow doesn't have a registration mechanism (more like arrow-rs...it's all just metadata). Do I still need to do anything for this?
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 Sorry for the misunderstanding. Then no, you don't have to do anything, I think :)