Skip to content

Add opt-in Int64 equality JOIN pushdown for YDB - #268

Closed
KirillKurdyukov wants to merge 1 commit into
mainfrom
codex/ydb-join-int64-opt-in
Closed

KirillKurdyukov wants to merge 1 commit into
mainfrom
codex/ydb-join-int64-opt-in

Conversation

@KirillKurdyukov

Copy link
Copy Markdown
Collaborator

Scope

Introduce an opt-in first slice of YDB JOIN pushdown for equality between native YDB Int64 columns mapped as Trino bigint. 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=true enables 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_PUSHDOWN behavior. It is a smaller successor to closed, unmerged #250; the Bytes/String mapping from #254 is already in main and 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

  • JDK 25 compile and test-compile: passed.
  • TestYdbConnectorTest#testOptInInt64JoinPushdown on 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.
  • Full local 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.
  • Independent review of exact commit 905272e0200dc584f1a160dff8b0284805374946: passed with no findings.

Diff: 90 additions, 0 deletions.

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.

1 participant