summaryrefslogtreecommitdiff
path: root/sql/table.h
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2022-08-02 16:23:08 +0400
committerAlexander Barkov <bar@mariadb.com>2022-08-25 11:34:09 +0400
commitcc94b619758a04659fa9218ede838fadf461d3de (patch)
treed1899b63ff9c7f176868504debf2e9e0898f0d52 /sql/table.h
parent2426547f857ac01516eb5b14072e68a47e9f892f (diff)
downloadmariadb-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.h13
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,