diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-12-08 14:40:27 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-12-08 14:40:27 +0400 |
commit | 20089f5a39fa8f6f08113f12ed87c34e844c4fc6 (patch) | |
tree | dddecc6d443acd90e265b57c132cb5eb011b5767 /sql | |
parent | ac61a575dfff6b9510576be920a522c710732c0d (diff) | |
download | mariadb-git-20089f5a39fa8f6f08113f12ed87c34e844c4fc6.tar.gz |
MDEV-14596 Crash in INTERVAL(ROW(..),ROW(..))
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_cmpfunc.cc | 13 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 1 |
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"; } |