mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-27417 InnoDB spatial index updates change buffer bitmap page
- InnoDB change buffer doesn't support spatial index. Spatial index should avoid change the buffer bitmap page when the page split happens.
This commit is contained in:
committed by
Marko Mäkelä
parent
7dcef65046
commit
474c6df804
@ -61,3 +61,10 @@ select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|||||||
count(*)
|
count(*)
|
||||||
57344
|
57344
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-27417 Spatial index tries to update
|
||||||
|
# change buffer bookkeeping page
|
||||||
|
#
|
||||||
|
CREATE TEMPORARY TABLE t1 (c POINT NOT NULL, SPATIAL(c)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 SELECT PointFromText('POINT(0 0)') FROM seq_1_to_366;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -72,3 +72,11 @@ select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|||||||
|
|
||||||
# Clean up.
|
# Clean up.
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-27417 Spatial index tries to update
|
||||||
|
--echo # change buffer bookkeeping page
|
||||||
|
--echo #
|
||||||
|
CREATE TEMPORARY TABLE t1 (c POINT NOT NULL, SPATIAL(c)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 SELECT PointFromText('POINT(0 0)') FROM seq_1_to_366;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1262,15 +1262,6 @@ after_insert:
|
|||||||
page_zip = buf_block_get_page_zip(root_block);
|
page_zip = buf_block_get_page_zip(root_block);
|
||||||
page_set_ssn_id(root_block, page_zip, next_ssn, mtr);
|
page_set_ssn_id(root_block, page_zip, next_ssn, mtr);
|
||||||
|
|
||||||
/* Insert fit on the page: update the free bits for the
|
|
||||||
left and right pages in the same mtr */
|
|
||||||
|
|
||||||
if (page_is_leaf(page)) {
|
|
||||||
ibuf_update_free_bits_for_two_pages_low(
|
|
||||||
block, new_block, mtr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* If the new res insert fail, we need to do another split
|
/* If the new res insert fail, we need to do another split
|
||||||
again. */
|
again. */
|
||||||
if (!rec) {
|
if (!rec) {
|
||||||
|
Reference in New Issue
Block a user