summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorNikita Malyavin <nikitamalyavin@gmail.com>2019-03-13 22:31:43 +1000
committerSergei Golubchik <serg@mariadb.org>2019-04-02 11:03:32 +0200
commit7e3e2d060b35c6c4f1cec05da79f571108af58d6 (patch)
treea597c7b87350ed6cd3d32576e5e0d2c47c432e92 /sql/sql_delete.cc
parent04055060b6fa29e72a7e851486085bd59e708614 (diff)
downloadmariadb-git-7e3e2d060b35c6c4f1cec05da79f571108af58d6.tar.gz
MDEV-18859 Server crashes in bitmap_bits_set / pack_row / THD::binlog_write_row upon DELETE .. FOR PORTION with binary logging
rpl_write_set is initialized in TABLE::mark_columns_per_binlog_row_image. Since we just call use_all_columns for PORTION OF case, no need in column marking logic here. Instead, initialize table->rpl_write_set in place.
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index 42f96d876a9..d2e511b1d86 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -718,9 +718,14 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
goto got_error;
if (table_list->has_period())
+ {
table->use_all_columns();
+ table->rpl_write_set= table->write_set;
+ }
else
+ {
table->mark_columns_needed_for_delete();
+ }
if ((table->file->ha_table_flags() & HA_CAN_FORCE_BULK_DELETE) &&
!table->prepare_triggers_for_delete_stmt_or_event())