summaryrefslogtreecommitdiff
path: root/sql/item_func.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item_func.h')
-rw-r--r--sql/item_func.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/sql/item_func.h b/sql/item_func.h
index 1081f2919c8..3bf58275f52 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -327,6 +327,11 @@ public:
return this;
}
+ bool has_rand_bit()
+ {
+ return used_tables() & RAND_TABLE_BIT;
+ }
+
bool excl_dep_on_table(table_map tab_map)
{
if (used_tables() & OUTER_REF_TABLE_BIT)
@@ -345,6 +350,13 @@ public:
return Item_args::excl_dep_on_in_subq_left_part(subq_pred);
}
+ bool excl_dep_on_group_fields_for_having_pushdown(st_select_lex *sel)
+ {
+ if (has_rand_bit())
+ return false;
+ return Item_args::excl_dep_on_group_fields_for_having_pushdown(sel);
+ }
+
/*
We assume the result of any function that has a TIMESTAMP argument to be
timezone-dependent, since a TIMESTAMP value in both numeric and string
@@ -2313,6 +2325,8 @@ public:
{
return type_handler()->Item_get_date_with_warn(thd, this, ltime, fuzzydate);
}
+ bool excl_dep_on_grouping_fields(st_select_lex *sel)
+ { return false; }
};
@@ -3210,6 +3224,8 @@ public:
not_null_tables_cache= 0;
return 0;
}
+ bool excl_dep_on_group_fields_for_having_pushdown(st_select_lex *sel)
+ { return false; }
};