Adding v1 operator ARRAY_JOIN - #17182
Conversation
5aa988e to
874617a
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #17182 +/- ##
============================================
- Coverage 65.47% 65.33% -0.15%
Complexity 1421 1421
============================================
Files 3426 3429 +3
Lines 217315 218241 +926
Branches 34509 34765 +256
============================================
+ Hits 142283 142581 +298
- Misses 63513 64083 +570
- Partials 11519 11577 +58
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
c7968ab to
71b4965
Compare
506c5e4 to
c09e772
Compare
There was a problem hiding this comment.
Pull request overview
This PR introduces support for ARRAY JOIN syntax in Apache Pinot, enabling the flattening of array columns into individual rows.
Changes:
- Extends the SQL parser to recognize
ARRAY JOINandLEFT ARRAY JOINsyntax - Adds Thrift schema definitions for
ArrayJoinSpec,ArrayJoinOperand, andArrayJoinType - Integrates ARRAY JOIN into the query execution pipeline through new operator and context classes
- Includes comprehensive test coverage across parser, operator, and integration tests
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pinot-common/src/thrift/query.thrift | Defines Thrift schema for ARRAY JOIN structures (spec, operand, type enum) |
| pinot-common/src/main/codegen/templates/Parser.jj | Adds parser grammar rules for ARRAY JOIN syntax and bracket array constructors |
| pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java | Implements extraction and compilation of ARRAY JOIN clauses from SQL |
| pinot-common/src/main/java/org/apache/pinot/sql/parsers/parser/SqlArrayJoinTableFunction.java | Custom Calcite SQL node representing ARRAY JOIN table function |
| pinot-core/src/main/java/org/apache/pinot/core/query/request/context/ArrayJoinContext.java | Request context for ARRAY JOIN operations |
| pinot-core/src/main/java/org/apache/pinot/core/query/request/context/QueryContext.java | Extended to include ARRAY JOIN contexts |
| pinot-core/src/main/java/org/apache/pinot/core/operator/transform/ArrayJoinOperator.java | Core operator implementing array expansion logic |
| pinot-core/src/main/java/org/apache/pinot/core/plan/ProjectPlanNode.java | Modified to incorporate ARRAY JOIN operators in projection planning |
| pinot-core/src/main/java/org/apache/pinot/core/plan/FilterPlanNode.java | Updated to skip filter evaluation for ARRAY JOIN columns |
| pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/BaseSingleStageBrokerRequestHandler.java | Enhanced column name resolution to respect ARRAY JOIN aliases |
| pinot-integration-tests/.../ArrayTest.java | Integration tests for ARRAY JOIN queries with various combinations |
ab6d165 to
c3a72cc
Compare
c95ad9d to
c2090be
Compare
|
Closing this. Two gaps remain worth tracking separately:
|
ArrayJoin*objects and parsing logic for the newARRAY JOINsyntax.ARRAY JOINexpressions in projection planning and introduce an ArrayJoinOperator placeholder that currently delegates to its child.