mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-17 20:02:05 +00:00
dbms: disabled moving to PREWHERE expressions with GLOBAL IN [#METR-17231].
This commit is contained in:
parent
6847fdb979
commit
583dd33ed0
@ -37,6 +37,8 @@ class MergeTreeWhereOptimizer
|
||||
static constexpr auto and_function_name = "and";
|
||||
static constexpr auto equals_function_name = "equals";
|
||||
static constexpr auto array_join_function_name = "arrayJoin";
|
||||
static constexpr auto global_in_function_name = "globalIn";
|
||||
static constexpr auto global_not_in_function_name = "globalNotIn";
|
||||
|
||||
public:
|
||||
MergeTreeWhereOptimizer(const MergeTreeWhereOptimizer&) = delete;
|
||||
@ -312,8 +314,11 @@ private:
|
||||
}
|
||||
|
||||
/** ARRAY JOIN'ed columns as well as arrayJoin() result cannot be used in PREWHERE, therefore expressions
|
||||
* containing said columns should not be moved to PREWHERE at all.
|
||||
* We assume all AS aliases have been expanded prior to using this class */
|
||||
* containing said columns should not be moved to PREWHERE at all.
|
||||
* We assume all AS aliases have been expanded prior to using this class
|
||||
*
|
||||
* Also, disallow moving expressions with GLOBAL [NOT] IN.
|
||||
*/
|
||||
bool cannotBeMoved(const IAST * ptr) const
|
||||
{
|
||||
if (const auto function_ptr = typeid_cast<const ASTFunction *>(ptr))
|
||||
@ -321,6 +326,11 @@ private:
|
||||
/// disallow arrayJoin expressions to be moved to PREWHERE for now
|
||||
if (array_join_function_name == function_ptr->name)
|
||||
return true;
|
||||
|
||||
/// disallow GLOBAL IN, GLOBAL NOT IN
|
||||
if (global_in_function_name == function_ptr->name
|
||||
|| global_not_in_function_name == function_ptr->name)
|
||||
return true;
|
||||
}
|
||||
else if (const auto identifier_ptr = typeid_cast<const ASTIdentifier *>(ptr))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user