summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-12-08 14:40:27 +0400
committerAlexander Barkov <bar@mariadb.org>2017-12-08 14:40:27 +0400
commit20089f5a39fa8f6f08113f12ed87c34e844c4fc6 (patch)
treedddecc6d443acd90e265b57c132cb5eb011b5767 /sql
parentac61a575dfff6b9510576be920a522c710732c0d (diff)
downloadmariadb-git-20089f5a39fa8f6f08113f12ed87c34e844c4fc6.tar.gz
MDEV-14596 Crash in INTERVAL(ROW(..),ROW(..))
Diffstat (limited to 'sql')
-rw-r--r--sql/item_cmpfunc.cc13
-rw-r--r--sql/item_cmpfunc.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index ebe088e5092..62e76922c0e 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -2001,6 +2001,19 @@ bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
}
+bool Item_func_interval::fix_fields(THD *thd, Item **ref)
+{
+ if (Item_int_func::fix_fields(thd, ref))
+ return true;
+ for (uint i= 0 ; i < row->cols(); i++)
+ {
+ if (row->element_index(i)->check_cols(1))
+ return true;
+ }
+ return false;
+}
+
+
void Item_func_interval::fix_length_and_dec()
{
uint rows= row->cols();
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index a8befa47b95..7b7ca9223fd 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -728,6 +728,7 @@ public:
{
allowed_arg_cols= 0; // Fetch this value from first argument
}
+ bool fix_fields(THD *, Item **);
longlong val_int();
void fix_length_and_dec();
const char *func_name() const { return "interval"; }