diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2022-08-09 09:57:13 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2022-08-09 09:57:13 +0200 |
commit | 22d455612b0abbb4b9f527e61348d4c6336b59d5 (patch) | |
tree | d39436232e232c5a5beb996e86e2b34b05ab5115 /sql/field.cc | |
parent | bfdc4ff22ecf626eb46479e1a0dc1049d61a8d78 (diff) | |
parent | 75d631f333544de4487a6dd251d6f361e1d55d6b (diff) | |
download | mariadb-git-22d455612b0abbb4b9f527e61348d4c6336b59d5.tar.gz |
Merge branch '10.8' into 10.9
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/sql/field.cc b/sql/field.cc index c5b855363ed..98aeb6d892c 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -964,7 +964,8 @@ Type_handler::aggregate_for_result_traditional(const Type_handler *a, } -bool Field::check_assignability_from(const Type_handler *from) const +bool Field::check_assignability_from(const Type_handler *from, + bool ignore) const { /* Using type_handler_for_item_field() here to get the data type handler @@ -982,9 +983,26 @@ bool Field::check_assignability_from(const Type_handler *from) const type_handler_for_item_field()); if (th.aggregate_for_result(from->type_handler_for_item_field())) { - my_error(ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION, MYF(0), - type_handler()->name().ptr(), from->name().ptr(), "SET"); - return true; + bool error= !ignore && get_thd()->is_strict_mode(); + /* + Display fully qualified column name for table columns. + Display non-qualified names for other things, + e.g. SP variables, SP return values, SP and CURSOR parameters. + */ + if (table->s->db.str && table->s->table_name.str) + my_printf_error(ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION, + "Cannot cast '%s' as '%s' in assignment of %`s.%`s.%`s", + MYF(error ? 0 : ME_WARNING), + from->name().ptr(), type_handler()->name().ptr(), + table->s->db.str, table->s->table_name.str, + field_name.str); + else + my_printf_error(ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION, + "Cannot cast '%s' as '%s' in assignment of %`s", + MYF(error ? 0 : ME_WARNING), + from->name().ptr(), type_handler()->name().ptr(), + field_name.str); + return error; } return false; } @@ -10719,7 +10737,7 @@ bool Column_definition::check(THD *thd) TIMESTAMP columns get implicit DEFAULT value when explicit_defaults_for_timestamp is not set. */ - if ((opt_explicit_defaults_for_timestamp || + if (((thd->variables.option_bits & OPTION_EXPLICIT_DEF_TIMESTAMP) || !is_timestamp_type()) && !vers_sys_field()) { flags|= NO_DEFAULT_VALUE_FLAG; @@ -10854,6 +10872,7 @@ Column_definition::Column_definition(THD *thd, Field *old_field, comment= old_field->comment; vcol_info= old_field->vcol_info; option_list= old_field->option_list; + explicitly_nullable= !(old_field->flags & NOT_NULL_FLAG); compression_method_ptr= 0; versioning= VERSIONING_NOT_SET; invisible= old_field->invisible; |