summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
authorRucha Deodhar <rucha.deodhar@mariadb.com>2022-01-22 16:51:21 +0530
committerRucha Deodhar <rucha.deodhar@mariadb.com>2022-01-22 22:23:13 +0530
commit5e04903f592bb425d52f9fa18388e1e64b67497f (patch)
tree8f4a08658455c4759eacb21c9de3c53238ab6c8a /sql/sql_insert.cc
parent5e6fd4e80435ae6d5994abbff6032c7957713410 (diff)
downloadmariadb-git-bb-10.7-MDEV-26843.tar.gz
MDEV-26843: Inconsistent behavior of ROW_NUMBER upon resignalling frombb-10.7-MDEV-26843
function Analysis: m_current_row_for_warning is reset to 0 earlier so new value '0' of the counter gets recorded for error condition. Fix: reset m_current_row_for_warning after other error conditions.
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r--sql/sql_insert.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 707b8a0d3bf..17d69cd0e71 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -276,7 +276,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
unfix_fields(fields);
res= setup_fields(thd, Ref_ptr_array(),
- fields, MARK_COLUMNS_WRITE, 0, NULL, 0);
+ fields, MARK_COLUMNS_WRITE, 0, NULL, 0, 0);
/* Restore the current context. */
ctx_state.restore_state(context, table_list);
@@ -388,7 +388,7 @@ static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list,
/* Check the fields we are going to modify */
if (setup_fields(thd, Ref_ptr_array(),
- update_fields, MARK_COLUMNS_WRITE, 0, NULL, 0))
+ update_fields, MARK_COLUMNS_WRITE, 0, NULL, 0, 0))
return -1;
if (insert_table_list->is_view() &&
@@ -839,7 +839,7 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list,
goto abort;
}
if (setup_fields(thd, Ref_ptr_array(),
- *values, MARK_COLUMNS_READ, 0, NULL, 0))
+ *values, MARK_COLUMNS_READ, 0, NULL, 0, 0))
goto abort;
switch_to_nullable_trigger_fields(*values, table);
}
@@ -1671,13 +1671,14 @@ int mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
res= setup_returning_fields(thd, table_list) ||
setup_fields(thd, Ref_ptr_array(),
- *values, MARK_COLUMNS_READ, 0, NULL, 0) ||
+ *values, MARK_COLUMNS_READ, 0, NULL, 0, 1) ||
check_insert_fields(thd, context->table_list, fields, *values,
!insert_into_view, 0, &map);
+
if (!res)
res= setup_fields(thd, Ref_ptr_array(),
- update_values, MARK_COLUMNS_READ, 0, NULL, 0);
+ update_values, MARK_COLUMNS_READ, 0, NULL, 0, 0);
if (!res && duplic == DUP_UPDATE)
{
@@ -3866,7 +3867,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
res= (setup_returning_fields(thd, table_list) ||
setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_READ, 0, 0,
- 0) ||
+ 0, 0) ||
check_insert_fields(thd, table_list, *fields, values,
!insert_into_view, 1, &map));
@@ -3923,7 +3924,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
}
res= res || setup_fields(thd, Ref_ptr_array(), *info.update_values,
- MARK_COLUMNS_READ, 0, NULL, 0);
+ MARK_COLUMNS_READ, 0, NULL, 0, 0);
if (!res)
{
/*