Skip to content

Support convert OUTER to INNER join optimization with join_use_nulls#95968

Merged
vdimir merged 12 commits intomasterfrom
vdimir/join_use_nulls_outer_to_inner
Feb 25, 2026
Merged

Support convert OUTER to INNER join optimization with join_use_nulls#95968
vdimir merged 12 commits intomasterfrom
vdimir/join_use_nulls_outer_to_inner

Conversation

@vdimir
Copy link
Copy Markdown
Member

@vdimir vdimir commented Feb 4, 2026

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):

@clickhouse-gh
Copy link
Copy Markdown
Contributor

clickhouse-gh bot commented Feb 4, 2026

Workflow [PR], commit [7e85b38]

Summary:

job_name test_name status info comment
Stateless tests (amd_asan, distributed plan, parallel, 1/2) failure
03917_mergeTreeTextIndex_table_function FAIL cidb, issue ISSUE EXISTS
Stateless tests (amd_binary, ParallelReplicas, s3 storage, parallel) failure
03917_mergeTreeTextIndex_table_function FAIL cidb, issue ISSUE EXISTS
Stateless tests (amd_debug, AsyncInsert, s3 storage, parallel) failure
03917_mergeTreeTextIndex_table_function FAIL cidb, issue ISSUE EXISTS
Stateless tests (amd_debug, parallel) failure
03917_mergeTreeTextIndex_table_function FAIL cidb, issue ISSUE EXISTS
Stateless tests (amd_tsan, s3 storage, parallel, 1/2) failure
03917_mergeTreeTextIndex_table_function FAIL cidb, issue ISSUE EXISTS
Stress test (amd_msan) failure
Logical error: 'txn->getState() != MergeTreeTransaction::COMMITTED' (STID: 2508-2b69) FAIL cidb, issue ISSUE CREATED

@clickhouse-gh clickhouse-gh bot added the pr-improvement Pull request with some product improvements label Feb 4, 2026
@novikd novikd self-assigned this Feb 5, 2026
@vdimir vdimir force-pushed the vdimir/join_use_nulls_outer_to_inner branch 2 times, most recently from 4732a02 to 6f87c03 Compare February 10, 2026 16:36
@vdimir vdimir marked this pull request as ready for review February 10, 2026 17:41
@vdimir vdimir requested a review from novikd February 10, 2026 17:42
continue;

/// Skip if type is changed. Push down expression expect equal types.
if (!input_header->getByName(name).type->equals(*join_header->getByName(name).type))
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Will it work for FilledJoin?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Should work fine, for storage join we cannot apply outer to inner conversion. Added test case with join_use_nulls to 03573_join_storage_not_change_kind.sql.

@vdimir vdimir marked this pull request as draft February 12, 2026 18:27
@vdimir vdimir force-pushed the vdimir/join_use_nulls_outer_to_inner branch from a5510de to 5d4854f Compare February 17, 2026 15:31
@vdimir vdimir marked this pull request as ready for review February 18, 2026 11:53
@vdimir vdimir requested a review from novikd February 18, 2026 11:53
@vdimir vdimir added this pull request to the merge queue Feb 25, 2026
Merged via the queue into master with commit bca2c38 Feb 25, 2026
141 of 148 checks passed
@vdimir vdimir deleted the vdimir/join_use_nulls_outer_to_inner branch February 25, 2026 09:27
@robot-ch-test-poll4 robot-ch-test-poll4 added the pr-synced-to-cloud The PR is synced to the cloud repo label Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-improvement Pull request with some product improvements pr-synced-to-cloud The PR is synced to the cloud repo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Filter pushdown for left outer joins with join_use_nulls = 1

4 participants