Skip to content

Remove multi-file secondary-filter API and add bloom-filter pruning to hybrid scan - #22861

Merged
rapids-bot[bot] merged 31 commits into
NVIDIA:mainfrom
qbacpey:hybrid/api-split-t1
Aug 18, 2026
Merged

Remove multi-file secondary-filter API and add bloom-filter pruning to hybrid scan#22861
rapids-bot[bot] merged 31 commits into
NVIDIA:mainfrom
qbacpey:hybrid/api-split-t1

Conversation

@qbacpey

@qbacpey qbacpey commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Description

Closes #23393

Contributes to #22583

This PR:

  • Removes hybrid_scan_multifile::secondary_filters_byte_ranges.
  • Adds multi-file bloom-filter pruning support to hybrid scan.
  • Complete Python tests for bloom filter edge cases.

Note: The single-file hybrid_scan_reader::secondary_filters_byte_ranges is intentionally retained and will be removed later in a coordinated PR alongside the Python/Java binding updates.

Checklist

- Renamed `secondary_filters_byte_ranges` to `bloom_filters_byte_ranges` for clarity and updated its return type to a single vector of byte ranges.
- Introduced a new method `filter_row_groups_with_bloom_filters` to filter row groups using bloom filters.
- Updated implementation in `hybrid_scan_impl` and `hybrid_scan_multifile` to support the new API.
- Added tests for the new bloom filter functionality to ensure correctness.

This change improves the usability and clarity of the hybrid scan multifile API regarding bloom filter operations.
@copy-pr-bot

copy-pr-bot Bot commented Jun 11, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions github-actions Bot added the libcudf Affects libcudf (C++/CUDA) code. label Jun 11, 2026
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp
@qbacpey qbacpey changed the title Remove secondary_filters_byte_ranges + add bloom pruning for multifile hybrid scan Remove multifile secondary_filters_byte_ranges + add bloom pruning for hybrid scan Jun 11, 2026
@qbacpey qbacpey added 3 - Ready for Review Ready for review by team improvement Improvement / enhancement to an existing function labels Jun 11, 2026
@qbacpey
qbacpey requested a review from mhaseeb123 June 11, 2026 21:18
@qbacpey qbacpey added the non-breaking Non-breaking change label Jun 11, 2026
@qbacpey
qbacpey marked this pull request as ready for review June 11, 2026 21:19
@qbacpey
qbacpey requested a review from a team as a code owner June 11, 2026 21:19
@qbacpey
qbacpey requested a review from ttnghia June 11, 2026 21:19
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added bloom-filter-based row-group pruning for multifile Parquet scans.
    • Added support for retrieving bloom-filter byte ranges along with their source-file mapping.
    • Added device-side filtering using fetched bloom-filter data.
  • Bug Fixes

    • Improved handling of missing, partial, and unavailable Parquet bloom filters.
  • Tests

    • Expanded coverage for equality predicates, mixed bloom-filter availability, absent metadata, and multifile datasets.

Walkthrough

The PR replaces the combined secondary-filter range API with dedicated bloom-filter range and row-group filtering APIs. Metadata now includes source-index mappings. C++ and Python tests cover multifile filtering, absent lengths, and mixed bloom-filter availability.

Changes

Bloom-filter API refactoring

Layer / File(s) Summary
Bloom-filter metadata and validation
cpp/src/io/parquet/experimental/hybrid_scan_helpers.hpp, cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp
Bloom-filter range retrieval now returns ranges with source indices. Filtering validates the number of supplied device spans.
Internal reader bloom-filter methods
cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp, cpp/src/io/parquet/experimental/hybrid_scan_impl.cpp
The internal reader exposes source-mapped bloom-filter ranges and updates secondary-filter retrieval to use the new helper result.
Public multifile bloom-filter APIs
cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp, cpp/src/io/parquet/experimental/hybrid_scan_multifile.cpp
The public API replaces secondary_filters_byte_ranges with bloom_filters_byte_ranges and filter_row_groups_with_bloom_filters.
Bloom-filter behavior tests
cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp, python/cudf/cudf/tests/input_output/test_parquet.py
Tests cover multifile source mapping, device filtering, absent bloom-filter lengths, and predicates across columns with mixed bloom-filter availability.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • rapidsai/cudf#22866: Extends related multifile hybrid-scan APIs with device-fetched filter ranges and source mappings.
  • rapidsai/cudf#22901: Updates Parquet bloom-filter fetching and processing for hybrid scans.
  • rapidsai/cudf#23317: Extends the HybridScanReader bloom-filter API with source mapping and device-side filtering.

Suggested labels: feature request, cuIO

Suggested reviewers: mhaseeb123, bdice, wence-

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR adds pytest cases for absent lengths and mixed filters, but it does not add the required Python bindings or requested single-source scenarios. Add the single-source Python bindings and pytest cases for matching, missing, independent row groups, and multi-source scans, or link this work to the correct issue.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Out of Scope Changes check ✅ Passed The changes align with the stated objectives for multi-file bloom-filter pruning, API updates, and related test coverage.
Title check ✅ Passed The title clearly summarizes the removal of the multi-file secondary-filter API and the addition of bloom-filter pruning.
Description check ✅ Passed The description directly explains the API removal, bloom-filter pruning support, related tests, and retained single-file API.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp`:
- Around line 155-183: Add a deprecated compatibility overload for
secondary_filters_byte_ranges in the hybrid_scan_multifile public header that
forwards to the new implementations; annotate the overload with the
[[deprecated]] attribute and include a `@deprecated` doxygen tag explaining the
replacement and migration path, ensure the deprecated function signature matches
the previous public API and internally calls the appropriate new methods
(bloom_filters_byte_ranges and/or filter_row_groups_with_bloom_filters) so
existing users continue to link until they migrate, and update the PR labels per
deprecation/breaking policy.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 9d712f50-a460-45ad-a0c1-986440a86afe

📥 Commits

Reviewing files that changed from the base of the PR and between a643d62 and 1cb92fc.

📒 Files selected for processing (5)
  • cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_impl.cpp
  • cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_multifile.cpp
  • cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp

Comment thread cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp Outdated
Comment thread cpp/src/io/parquet/experimental/hybrid_scan_impl.cpp Outdated
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
- Updated `bloom_filters_byte_ranges` to return a pair of byte ranges and a source-index map for better tracking of data origins.
- Modified `filter_row_groups_with_bloom_filters` to accept a vector of device spans for bloom filter data, allowing for more flexible input.
- Adjusted related methods and implementations in `hybrid_scan_helpers` and `hybrid_scan_impl` to accommodate the new return types and parameters.
- Added tests to validate the new functionality and ensure correctness in handling bloom filters across multiple sources.

These changes improve the API's usability and performance when working with bloom filters in hybrid scan operations.
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
auto const bloom_filtered = reader->filter_row_groups_with_bloom_filters(
bloom_data_per_source, input_row_group_indices, options, stream);

// Shouldn't filter out any RG, since the queried value is present in every source.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bloom filter should not filter out any data, since "Did not like the color" already in the RG

- Revised comment in `FilterRowGroupsWithBloomFiltersRealData` test to enhance clarity regarding the use of the embedded bloom-filter fixture.
- This change improves the readability of the test code, making it easier to understand the context of the test setup.
Comment on lines +544 to +562
auto const [bloom_byte_ranges, bloom_source_map] =
reader->bloom_filters_byte_ranges(input_row_group_indices, options);
ASSERT_EQ(bloom_byte_ranges.size(), static_cast<size_t>(num_sources));
ASSERT_EQ(bloom_byte_ranges.size(), bloom_source_map.size());
std::vector<cudf::size_type> expected_source_map(num_sources);
std::iota(expected_source_map.begin(), expected_source_map.end(), 0);
EXPECT_EQ(bloom_source_map, expected_source_map);
EXPECT_TRUE(std::none_of(bloom_byte_ranges.begin(), bloom_byte_ranges.end(), [](auto const& r) {
return r.is_empty();
}));

std::vector<std::vector<byte_range_info>> ranges_per_source(num_sources);
for (size_t i = 0; i < bloom_byte_ranges.size(); ++i) {
ASSERT_LT(bloom_source_map[i], num_sources);
ranges_per_source[bloom_source_map[i]].push_back(bloom_byte_ranges[i]);
}
auto [bloom_buffers, bloom_data_per_source, bloom_tasks] =
cudf::io::parquet::fetch_byte_ranges_to_device_async(
datasource_refs, ranges_per_source, stream, aligned_mr);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternative would be return a nested vector<vector<byte_range_info>> so that we can drop straight into the fetch & filter APIs with no regroup. In this case a fully-pruned source is just an empty inner vector, but that materializes an empty vector per pruned source and diverges from the flat single-file shape.

Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
@qbacpey
qbacpey requested a review from mhaseeb123 June 15, 2026 15:09

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp (1)

109-113: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Broken @copydoc target for secondary_filters_byte_ranges.

At Line 109, @copydoc points to cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges, but that multifile symbol is no longer present after this API split. This leaves an unresolved doc reference and can fail Doxygen lint; switch to a valid symbol or replace with explicit Doxygen text.

As per coding guidelines, C++/CUDA code must include proper Doxygen documentation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp` around lines 109 - 113,
The `@copydoc` directive on the secondary_filters_byte_ranges method declaration
references a non-existent symbol
(cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges)
that was removed during the API split. Replace the broken `@copydoc` reference
with explicit Doxygen documentation that describes what the
secondary_filters_byte_ranges method does, including details about its
parameters (row_group_indices and options) and its return value (the pair of
byte range vectors), rather than attempting to copy documentation from a symbol
that no longer exists.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp`:
- Around line 612-619: The test_all_true_row_mask lambda function in the test
only validates metadata of the row mask (type, size, null_count) but does not
actually verify that the mask values are all true. Add a value assertion after
the existing checks to confirm that all elements in the row_mask are actually
true. This can be done by checking that the true_count equals the size of the
mask, or by using an algorithm like all_of to verify every element is true.

---

Outside diff comments:
In `@cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp`:
- Around line 109-113: The `@copydoc` directive on the
secondary_filters_byte_ranges method declaration references a non-existent
symbol
(cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges)
that was removed during the API split. Replace the broken `@copydoc` reference
with explicit Doxygen documentation that describes what the
secondary_filters_byte_ranges method does, including details about its
parameters (row_group_indices and options) and its return value (the pair of
byte range vectors), rather than attempting to copy documentation from a symbol
that no longer exists.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2ea1b856-0072-4901-8fa1-2abc2d6fc49b

📥 Commits

Reviewing files that changed from the base of the PR and between 51e4c0e and 18e492d.

📒 Files selected for processing (4)
  • cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_multifile.cpp
  • cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp (1)

109-113: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Broken @copydoc target for secondary_filters_byte_ranges.

At Line 109, @copydoc points to cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges, but that multifile symbol is no longer present after this API split. This leaves an unresolved doc reference and can fail Doxygen lint; switch to a valid symbol or replace with explicit Doxygen text.

As per coding guidelines, C++/CUDA code must include proper Doxygen documentation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp` around lines 109 - 113,
The `@copydoc` directive on the secondary_filters_byte_ranges method declaration
references a non-existent symbol
(cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges)
that was removed during the API split. Replace the broken `@copydoc` reference
with explicit Doxygen documentation that describes what the
secondary_filters_byte_ranges method does, including details about its
parameters (row_group_indices and options) and its return value (the pair of
byte range vectors), rather than attempting to copy documentation from a symbol
that no longer exists.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp`:
- Around line 612-619: The test_all_true_row_mask lambda function in the test
only validates metadata of the row mask (type, size, null_count) but does not
actually verify that the mask values are all true. Add a value assertion after
the existing checks to confirm that all elements in the row_mask are actually
true. This can be done by checking that the true_count equals the size of the
mask, or by using an algorithm like all_of to verify every element is true.

---

Outside diff comments:
In `@cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp`:
- Around line 109-113: The `@copydoc` directive on the
secondary_filters_byte_ranges method declaration references a non-existent
symbol
(cudf::io::experimental::hybrid_scan_multifile::secondary_filters_byte_ranges)
that was removed during the API split. Replace the broken `@copydoc` reference
with explicit Doxygen documentation that describes what the
secondary_filters_byte_ranges method does, including details about its
parameters (row_group_indices and options) and its return value (the pair of
byte range vectors), rather than attempting to copy documentation from a symbol
that no longer exists.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2ea1b856-0072-4901-8fa1-2abc2d6fc49b

📥 Commits

Reviewing files that changed from the base of the PR and between 51e4c0e and 18e492d.

📒 Files selected for processing (4)
  • cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_impl.hpp
  • cpp/src/io/parquet/experimental/hybrid_scan_multifile.cpp
  • cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp
🛑 Comments failed to post (1)
cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp (1)

612-619: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

BuildAllTrueRowMask test does not verify the mask is actually all true.

At Lines 616-619, the test only checks metadata (type, size, null_count). A mask filled with false values would still pass. Add a value assertion (all_of == true or true-count == size).

Suggested test assertion patch
   auto const row_mask = reader->build_all_true_row_mask(row_group_indices, stream, mr);

   EXPECT_EQ(row_mask->type().id(), cudf::type_id::BOOL8);
   EXPECT_EQ(row_mask->size(), reader->total_rows_in_row_groups(row_group_indices));
   EXPECT_EQ(row_mask->null_count(), 0);
+  auto const host_mask = host_row_mask_data<bool>(row_mask->view(), stream);
+  EXPECT_TRUE(std::all_of(host_mask.begin(), host_mask.end(), [](bool v) { return v; }));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp` around
lines 612 - 619, The test_all_true_row_mask lambda function in the test only
validates metadata of the row mask (type, size, null_count) but does not
actually verify that the mask values are all true. Add a value assertion after
the existing checks to confirm that all elements in the row_mask are actually
true. This can be done by checking that the true_count equals the size of the
mask, or by using an algorithm like all_of to verify every element is true.

@mhaseeb123 mhaseeb123 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flush comments so far

Comment thread cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp Outdated
Comment thread cpp/src/io/parquet/experimental/hybrid_scan_helpers.cpp Outdated
Comment thread cpp/src/io/parquet/experimental/hybrid_scan_impl.cpp Outdated
Comment thread cpp/src/io/parquet/experimental/hybrid_scan_multifile.cpp Outdated
Comment thread cpp/src/io/parquet/experimental/hybrid_scan_helpers.hpp Outdated
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
Comment thread cpp/tests/io/experimental/hybrid_scan_multifile_filters_test.cpp Outdated
Comment thread cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp Outdated
Comment thread cpp/include/cudf/io/experimental/hybrid_scan_multifile.hpp Outdated
@qbacpey
qbacpey requested a review from mhaseeb123 August 7, 2026 14:24
@qbacpey
qbacpey requested a review from mroeschke August 11, 2026 09:34

@mroeschke mroeschke left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python changes LGTM

@qbacpey
qbacpey requested review from a team as code owners August 17, 2026 21:36
@qbacpey qbacpey added 4 - Needs Review Waiting for reviewer to review or respond and removed 3 - Ready for Review Ready for review by team labels Aug 17, 2026

@wence- wence- left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@qbacpey qbacpey added 5 - Ready to Merge Testing and reviews complete, ready to merge and removed 4 - Needs Review Waiting for reviewer to review or respond labels Aug 18, 2026
@qbacpey

qbacpey commented Aug 18, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit b3dbc6c into NVIDIA:main Aug 18, 2026
148 of 149 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Aug 18, 2026
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Aug 18, 2026
@qbacpey
qbacpey deleted the hybrid/api-split-t1 branch August 18, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

5 - Ready to Merge Testing and reviews complete, ready to merge improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change Python Affects Python cuDF API.

Projects

Status: Done
Status: Slip

Development

Successfully merging this pull request may close these issues.

[FEA] Add Python bindings and tests for single source PQ bloom-filter hybrid scan reader

7 participants