Eliminate more outer joins by supporting more expressions
- 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
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