[MDEV-18535] Order of setting query timestamp breaks partition rotation Created: 2019-02-11  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Partitioning, Versioned Tables
Affects Version/s: 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Minor
Reporter: Aleksey Midenkov Assignee: Aleksey Midenkov
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-17553 Enable setting start datetime for int... Closed

 Description   

These two cases lead to different results:

1. Good: record 5 is rotated

create or replace table t1 (i int) with system versioning
partition by system_time interval 1 day
(partition p0 history, partition pn current);
 
set timestamp= unix_timestamp('2021-01-06 00:00:00');
insert t1 values (6); delete from t1;
set timestamp= unix_timestamp('2021-01-10 00:00:00');
insert t1 values (5); delete from t1;
 
alter table t1 add partition (partition p1 history);
select *, row_end from t1 partition (p1);

2. Bad: record 5 is not rotated

create or replace table t1 (i int) with system versioning
partition by system_time interval 1 day
(partition p0 history, partition pn current);
 
set timestamp= unix_timestamp('2021-01-10 00:00:00');
insert t1 values (5); delete from t1;
set timestamp= unix_timestamp('2021-01-06 00:00:00');
insert t1 values (6); delete from t1;
 
alter table t1 add partition (partition p1 history);
select *, row_end from t1 partition (p1);

While case 1. works correctly, case 2. leads to record 5 still be in p0. Note that case 2. produces no warning when record 6 is inserted.



 Comments   
Comment by Aleksey Midenkov [ 2019-02-11 ]

Cause

part_state depends on thd->query_start().

(Bug analysis)

Generated at Thu Feb 08 08:44:51 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.