diff options
author | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2022-01-22 16:51:21 +0530 |
---|---|---|
committer | Rucha Deodhar <rucha.deodhar@mariadb.com> | 2022-01-22 22:23:13 +0530 |
commit | 5e04903f592bb425d52f9fa18388e1e64b67497f (patch) | |
tree | 8f4a08658455c4759eacb21c9de3c53238ab6c8a /sql/sql_insert.cc | |
parent | 5e6fd4e80435ae6d5994abbff6032c7957713410 (diff) | |
download | mariadb-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.cc | 15 |
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) { /* |