Commit Graph

9 Commits

Author SHA1 Message Date
Alexey Milovidov
b9fa29c4c8
Update OptimizeDateOrDateTimeConverterWithPreimageVisitor.cpp 2023-08-15 09:46:40 +03:00
Zhiguo Zhou
3579039733 Fix an unexpected behavior in #53152
The problematic case happens when an array column of date/datetime
is simultaneously specified in an Array Join clause without aliases
and in a time converter, such as toYYYYMM.

After applying Array Join without aliases, the column's name refers
to the flattened array items, however, its data type is recognized
as a ColumnArray still, which leads to the unexpected exception
throws when building the preimage for the time converters.

As a quick fix, we more strictly check the data types of the time
converters and quit the preimage optimization pass early.
2023-08-15 14:34:08 +08:00
Han Fei
2e5643cc41 use UTC LUT 2023-07-05 11:57:18 +02:00
Han Fei
9544c035b9 Revert "refine"
This reverts commit 7f1ee68c87.
2023-07-05 11:15:31 +02:00
Han Fei
7f1ee68c87 refine 2023-07-04 23:08:54 +02:00
Han Fei
ca6930eb11
Revert "Revert "Merge pull request #50951 from ZhiguoZh/20230607-toyear-fix"" 2023-07-04 17:38:53 +02:00
Alexey Milovidov
477b707ff1 Revert "Merge pull request #50951 from ZhiguoZh/20230607-toyear-fix"
This reverts commit 6bbd0d144d, reversing
changes made to 74cb79769b.
2023-06-26 02:02:24 +02:00
Zhiguo Zhou
ff6629d1d1 Enhance safety of function generateOptimizedDateFilterAST
This commit checks the corner case where the comparator is none
of equals, notEquals, less, lessOrEquals, greater, greaterOrEquals,
and throws LOGICAL_ERROR exception if so.
2023-06-15 22:04:13 +08:00
Zhiguo Zhou
d14299eb09 The general optimization of predicates with date/datetime converters
As is suggested in issue #15257, the function preimage is a general
solution to the optimization problem with predicates containing the
date and datetime converters. This commit implements the idea by
adding the new methods, hasInformationAboutPreimage and getPreimage,
to IFunction/IFunctionBase, and having the specific convert functions
define their own preimage. Moreover, we added a new pass in the
TreeOptimizer and a new AST visitor for in-place rewriting the AST
with the converters' preimage.

Specifically, the optimization is applied to toYear and toYYYYMM.
2023-06-15 21:48:02 +08:00