apache / apache/datafusion

Eliminate more outer joins by supporting more expressions

Đang mở
#13,232 5 bình luận 3 reaction 0 người được giao Xem trên GitHub
enhancement optimizer performance
Ngôn ngữ chính
Rust
Star
9.3k
Fork
2.4k
Merge trung bình
3 ngày 11 giờ
Pull request đã merge (30 ngày)
362

Mô tả

### Is your feature request related to a problem or challenge?

This PR by @JasonLi-cn tried to support more pushdown of filters https://github.com/apache/datafusion/pull/13184 , however the implementation wasn't 100% right as it pushed down more predicates, but didn't change the join type (left to inner).

### Describe the solution you'd like

Add support for a wider range of expressions in `EliminateOuterJoin`, notably in `extract_non_nullable_columns`.
We lack support of more complex nested expressions, quite some binary operators, UDFs etc. such as:

* `abs(x) > 1`
* `a + a` > `c + b`

We should aim to support any operator that returns null when the input value is null (most binary / unary operators).

### Describe alternatives you've considered

_No response_

### Additional context

_No response_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với quy tắc tối ưu hóa EliminateOuterJoin, đặc biệt là extract_non_nullable_columns, và xem xét PR #13184 để kiểm tra hành vi pushdown hiện có. Được coi là hoàn thành khi hỗ trợ các biểu thức lồng nhau, các toán tử nhị phân và các UDFs trả về null khi đầu vào là null như mô tả, đồng thời thay đổi đúng kiểu join khi các vị từ cho phép.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Lĩnh vực
databases
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
50/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.