Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
In some cases, the user needs to select whether or not to add casts that match nullability.
One of the motivations behind this is to avoid unnecessary casts like the following example.
original filter
OR(AND(>=($0, CAST(_UTF-16LE'2010-01-01 00:00:00 UTC'):TIMESTAMP_WITH_LOCAL_TIME_ZONE(15)), <=($0, CAST(_UTF-16LE'2012-03-01 00:00:00 UTC'):TIMESTAMP_WITH_LOCAL_TIME_ZONE(15))))
the optimized expression with matching nullability
OR(AND(CAST(>=($0, 2010-01-01 00:00:00)):BOOLEAN, CAST(<=($0, 2012-03-01 00:00:00)):BOOLEAN))
As you can see this extra cast gets into the way of following plan optimization steps.
The desired expression can be obtained by turning off the nullability matching.
OR(AND(>=($0, 2010-01-01 00:00:00), <=($0, 2012-03-01 00:00:00)))
Attachments
Issue Links
- is depended upon by
-
CALCITE-2049 Release Calcite 1.15.0
- Closed
- is related to
-
CALCITE-4399 Check if HepPlanner should allow to register non-nullable column as an equivalent to nullable
- Open
-
HIVE-17871 Add non nullability flag to druid time column
- Closed
-
HIVE-26638 Replace in-house CBO reduce expressions rules with Calcite's built-in classes
- Closed