1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-26844: DELETE returns ROW_NUMBER=1 for every row upon

ER_TRUNCATED_WRONG_VALUE

Part 1: Fix for DELETE without ORDER BY

Analysis: m_current_row_for_warning doesn't increment and assumes default
value which is then used by ROW_NUMBER.
Fix: Increment m_current_row_for_warning for each processed row.
This commit is contained in:
Rucha Deodhar
2021-10-18 20:30:04 +05:30
committed by Sergei Golubchik
parent e13dc7d0d0
commit 92f7d008ab
3 changed files with 51 additions and 0 deletions

View File

@ -795,9 +795,11 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
THD_STAGE_INFO(thd, stage_updating);
fix_rownum_pointers(thd, thd->lex->current_select, &deleted);
thd->get_stmt_da()->reset_current_row_for_warning(0);
while (likely(!(error=info.read_record())) && likely(!thd->killed) &&
likely(!thd->is_error()))
{
thd->get_stmt_da()->inc_current_row_for_warning();
if (delete_while_scanning)
delete_record= record_should_be_deleted(thd, table, select, explain,
delete_history);
@ -873,6 +875,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
else
break;
}
thd->get_stmt_da()->reset_current_row_for_warning(1);
terminate_delete:
killed_status= thd->killed;