Skip to content

estimate_join_cardinality for semi-joins is buggy for non-join-key disjoint columns #22673

@neilconway

Description

@neilconway

Describe the bug

estimate_join_cardinality for semi-joins checks if ANY of the columns in the two join inputs are disjoint (comparing columns positionally); if so, it claims the join will not return any rows. This is wrong, for two reasons:

  1. If two columns don't participate in the join key, they have no impact on the cardinality of the join result
  2. Comparing arbitrary columns positionally is not a sensible thing to do in the first place

A similar issue exists for anti-joins, except we assume the anti-join will return the entire join input in this case.

To Reproduce

No response

Expected behavior

No response

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No fields configured for Bug.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions