mirror of
https://github.com/MariaDB/server.git
synced 2025-09-07 18:12:03 +02:00
![]() Wrong "fastpath" boundary conditions. The right boundary is open, the left boundary is closed. The condition range_value[loc_hist_id - 1] as left boundary must be checked with <= operator. The same with the right boundary range_value[loc_hist_id] as the correct way is to check it with > operator, the right boundary check was rewritten for clear understanding: ts < range_value[loc_hist_id] The below code confirms closed endpoint type for left boundary: if (range_value[loc_hist_id] <= ts) min_hist_id= loc_hist_id + 1; Also the endpoint type (closed for left, open for right) is confirmed by vers_set_hist_part() for DML: else if (vers_info->interval.is_set() && vers_info->hist_part->range_value <= thd->query_start()) and here (right boundary, rewritten for clarity): if (thd->query_start() < next->range_value) { error= false; break; } |
||
---|---|---|
.. | ||
alter.result | ||
autoinc.result | ||
binlog.result | ||
commit_id.result | ||
create.result | ||
cte.result | ||
data.result | ||
debug.result | ||
delete.result | ||
delete_history.result | ||
derived.result | ||
foreign.result | ||
insert.result | ||
insert2.result | ||
misc.result | ||
not_embedded.result | ||
online.result | ||
optimized.result | ||
partition,heap.rdiff | ||
partition.result | ||
replace.result | ||
rpl.result | ||
rpl_mix.result | ||
rpl_row.result | ||
rpl_stmt.result | ||
select,trx_id.rdiff | ||
select.result | ||
select2,trx_id.rdiff | ||
select2.result | ||
simple.result | ||
sysvars.result | ||
trx_id.result | ||
update,trx_id.rdiff | ||
update-big.result | ||
update.result | ||
view.result |