Add opt-in Int64 equality JOIN pushdown for YDB - #268
Closed
KirillKurdyukov wants to merge 1 commit into
Closed
KirillKurdyukov wants to merge 1 commit into
KirillKurdyukov wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Introduce an opt-in first slice of YDB JOIN pushdown for equality between native YDB
Int64columns mapped as Trinobigint. INNER, LEFT, RIGHT, and FULL joins, multiple equality keys, and filtered left/right sources use Trino 483's legacy JDBC join builder. JOIN pushdown remains disabled by default;join_pushdown_enabled=trueenables this slice. The modern expression JOIN path returns unsupported because its rendered ON expression lacks reliable source ownership for YQL qualification.Other operators, data types, forced varchar mappings, and synthetic computed keys remain local to Trino. This PR does not advertise the broad
SUPPORTS_JOIN_PUSHDOWNbehavior. It is a smaller successor to closed, unmerged #250; the Bytes/String mapping from #254 is already inmainand is not duplicated here.The YQL JOIN contract permits equality keys, conjunctions, and all four JOIN types: https://ydb.tech/docs/en/yql/reference/syntax/select/join
Validation
TestYdbConnectorTest#testOptInInt64JoinPushdownon local YDB container: 1 passed, 0 failed, 0 skipped. Covers results and pushed plans for four JOIN types, NULLs, duplicates, multikey, filtered sources, and fallback cases.mvn clean test: 312 tests, 225 passed, 2 failed, 85 skipped. The two failures are unrelated to JOIN and reproduced alone: timestamp data mapping under the host's Europe/Moscow timezone, and CTAS temporary-table cleanup. The timestamp test passes in isolation with JVM timezone UTC. CI on the preceding C03 branch with the same production base passed 313 tests, 85 skipped; this PR's own CI is required for its support claim.905272e0200dc584f1a160dff8b0284805374946: passed with no findings.Diff: 90 additions, 0 deletions.