diff options
author | Alexander Barkov <bar@mariadb.com> | 2022-08-02 16:23:08 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2022-08-25 11:34:09 +0400 |
commit | cc94b619758a04659fa9218ede838fadf461d3de (patch) | |
tree | d1899b63ff9c7f176868504debf2e9e0898f0d52 /sql/table.h | |
parent | 2426547f857ac01516eb5b14072e68a47e9f892f (diff) | |
download | mariadb-git-bb-10.6-bar-assign.tar.gz |
Backporting MDEV-29159 from 10.7 to 10.6bb-10.6-bar-assign
MDEV-29159 Patch for MDEV-28918 introduces more inconsistency than it solves, breaks usability
1. Store assignment failures on incompatible data types now raise errors if:
- STRICT_ALL_TABLES or STRICT_TRANS_TABLES sql_mode is used, and
- IGNORE is not used
Otherwise, only a warning is raised and the statement continues.
2. Changing the error/warning test as follows:
-ERROR HY000: Illegal parameter data types inet6 and int for operation 'SET'
+ERROR HY000: Cannot cast 'int' as 'inet6' in assignment of `db`.`t`.`col`
so in case of a big table it's easier to see which column has the problem.
The new error text is also applied to SP variables.
Diffstat (limited to 'sql/table.h')
-rw-r--r-- | sql/table.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sql/table.h b/sql/table.h index ddb0b183cf2..bf0d4f530a0 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1688,9 +1688,11 @@ public: // Check if the value list is assignable to the explicit field list static bool check_assignability_explicit_fields(List<Item> fields, - List<Item> values); + List<Item> values, + bool ignore); // Check if the value list is assignable to all visible fields - bool check_assignability_all_visible_fields(List<Item> &values) const; + bool check_assignability_all_visible_fields(List<Item> &values, + bool ignore) const; /* Check if the value list is assignable to: - The explicit field list if fields.elements > 0, e.g. @@ -1699,12 +1701,13 @@ public: INSERT INTO t1 VALUES (1,2); */ bool check_assignability_opt_fields(List<Item> fields, - List<Item> values) const + List<Item> values, + bool ignore) const { DBUG_ASSERT(values.elements); return fields.elements ? - check_assignability_explicit_fields(fields, values) : - check_assignability_all_visible_fields(values); + check_assignability_explicit_fields(fields, values, ignore) : + check_assignability_all_visible_fields(values, ignore); } bool insert_all_rows_into_tmp_table(THD *thd, |