Skip to content

Improve predicate pushdown observability#184

Open
perNyfelt wants to merge 5 commits intomainfrom
v1.3.0-cleanup-and-bugfixes-5
Open

Improve predicate pushdown observability#184
perNyfelt wants to merge 5 commits intomainfrom
v1.3.0-cleanup-and-bugfixes-5

Conversation

@perNyfelt
Copy link
Member

This pull request introduces comprehensive support for reporting and debugging Parquet predicate pushdown in JParqPreparedStatement. It adds a new mechanism to summarize how queries leverage Parquet's filtering capabilities, exposes this information via a public API, and ensures the relevant configuration is consistently applied. The changes also include new tests to verify the reporting of pushdown details for various query scenarios.

Parquet Predicate Pushdown Reporting and Configuration:

  • Added a PushdownInfo record to JParqPreparedStatement that summarizes how a prepared statement uses Parquet filtering features, including whether a predicate is attached, which pruning features are enabled, and a human-readable summary. This is exposed via the new getPushdownInfo() method. [1] [2] [3]
  • Introduced the configureParquetFiltering method to consistently enable Parquet statistics, column-index, dictionary, and bloom-filter pruning in all relevant code paths, replacing repeated configuration code. [1] [2] [3]
  • Added logic to determine and log the pushdown plan during statement preparation, improving debuggability for users and developers. [1] [2] [3]

Documentation:

  • Updated README.md to document the new Parquet predicate pushdown capabilities, including supported and unsupported predicate shapes and the new API for inspecting pushdown plans.

Testing:

  • Added new tests to verify that getPushdownInfo() correctly reports pushdown details for supported, unsupported, and parameterized queries, ensuring accurate introspection of pushdown behavior. [1] [2]

Copilot AI review requested due to automatic review settings March 12, 2026 20:46
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds a pushdown “plan”/summary to JParqPreparedStatement so callers can introspect whether a query is using Parquet predicate pushdown vs. residual Java filtering, and it centralizes Parquet filtering configuration while updating docs and tests accordingly.

Changes:

  • Introduces JParqPreparedStatement.PushdownInfo plus a new public getPushdownInfo() API and debug logging of the derived pushdown plan.
  • Centralizes Parquet pruning configuration via configureParquetFiltering(...) and applies it consistently across code paths.
  • Adds tests covering pushdown info for supported/unsupported predicates and parameterized (deferred → applied) pushdown behavior; updates README documentation.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
src/main/java/se/alipsa/jparq/JParqPreparedStatement.java Adds PushdownInfo reporting/logging and centralizes Parquet filtering configuration.
src/test/java/jparq/JParqPreparedStatementParameterTest.java Adds coverage for deferred vs. applied pushdown reporting for parameterized queries.
src/test/java/jparq/JParqPreparedStatementCoverageTest.java Adds coverage for pushdown reporting on supported and unsupported predicate shapes.
README.md Documents predicate pushdown behavior and the new getPushdownInfo() API.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants