summaryrefslogtreecommitdiff
path: root/sql/ha_partition.cc
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-02-15 17:13:48 +0100
committerSergei Golubchik <serg@mariadb.org>2018-02-23 15:33:21 +0100
commit9f6a7ed2d78af260838658369e7b3308f21d55ec (patch)
tree10f4e8e8a55696b578c959892d1c471acd1c51f1 /sql/ha_partition.cc
parent187a163c782fc54225f6a096d4ec2240bde0f145 (diff)
downloadmariadb-git-9f6a7ed2d78af260838658369e7b3308f21d55ec.tar.gz
SQL: Truncate history of partitioned table [fixes #399, closes #403]
also, don't rotate versioning partitions for DELETE HISTORY originally by: Aleksey Midenkov
Diffstat (limited to 'sql/ha_partition.cc')
-rw-r--r--sql/ha_partition.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index cc0ec90bff9..a0b4abf77fb 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -4474,11 +4474,18 @@ int ha_partition::delete_row(const uchar *buf)
Notice that HA_READ_BEFORE_WRITE_REMOVAL does not require this protocol,
so this is not supported for this engine.
+
+ For partitions by system_time, get_part_for_buf() is always either current
+ or last historical partition, but DELETE HISTORY can delete from any
+ historical partition. So, skip the check in this case.
*/
- uint32 part_id;
- error= get_part_for_buf(buf, m_rec0, m_part_info, &part_id);
- DBUG_ASSERT(!error);
- DBUG_ASSERT(part_id == m_last_part);
+ if (!thd->lex->vers_conditions) // if not DELETE HISTORY
+ {
+ uint32 part_id;
+ error= get_part_for_buf(buf, m_rec0, m_part_info, &part_id);
+ DBUG_ASSERT(!error);
+ DBUG_ASSERT(part_id == m_last_part);
+ }
DBUG_ASSERT(bitmap_is_set(&(m_part_info->read_partitions), m_last_part));
DBUG_ASSERT(bitmap_is_set(&(m_part_info->lock_partitions), m_last_part));
#endif