diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2022-06-28 10:59:01 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2022-06-28 10:59:01 +0300 |
commit | 404d4820af3fa9ea1aede5b02e0dac651598ee55 (patch) | |
tree | f9c82e85a1aee5758f859438e4253cdf95bdda8c /sql/item.h | |
parent | b81460f07e7f6df0fa9c25408c71d7f67ce4d3dd (diff) | |
parent | 952398629915bb7138a76b21c5a0b426ed1d83f4 (diff) | |
download | mariadb-git-404d4820af3fa9ea1aede5b02e0dac651598ee55.tar.gz |
Merge 10.8 into 10.9
Diffstat (limited to 'sql/item.h')
-rw-r--r-- | sql/item.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sql/item.h b/sql/item.h index d1d19157b83..75b2ed7f882 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1838,6 +1838,16 @@ public: */ virtual bool is_evaluable_expression() const { return true; } + virtual bool check_assignability_to(const Field *to) const + { + /* + "this" must be neither DEFAULT/IGNORE, + nor Item_param bound to DEFAULT/IGNORE. + */ + DBUG_ASSERT(is_evaluable_expression()); + return to->check_assignability_from(type_handler()); + } + /** * Check whether the item is a parameter ('?') of stored routine. * Default implementation returns false. Method is overridden in the class @@ -4078,6 +4088,7 @@ class Item_param :public Item_basic_value, const String *value_query_val_str(THD *thd, String* str) const; Item *value_clone_item(THD *thd); bool is_evaluable_expression() const override; + bool check_assignability_to(const Field *field) const override; bool can_return_value() const; public: @@ -6758,6 +6769,10 @@ public: { str->append(STRING_WITH_LEN("default")); } + bool check_assignability_to(const Field *to) const override + { + return false; + } int save_in_field(Field *field_arg, bool) override { return field_arg->save_in_field_default_value(false); @@ -6791,6 +6806,10 @@ public: { str->append(STRING_WITH_LEN("ignore")); } + bool check_assignability_to(const Field *to) const override + { + return false; + } int save_in_field(Field *field_arg, bool) override { return field_arg->save_in_field_ignore_value(false); |