Commit 8d26537f authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-30895 Assertion btr_cur->rtr_info->thr... in rtr_ins_enlarge_mbr()

rtr_ins_enlarge_mbr(): Relax the assertion that was added in
commit f27e9c89
to cover also table-rebuilding DDL. We only need
btr_cur->rtr_info->thr for acquiring R-tree locks,
and the thread that is executing a DDL operation has exclusive
access to the being-built index or the copy of the being-rebuilt table.
parent 6abafdbb
CREATE TABLE t (
id INT AUTO_INCREMENT,
c BINARY(226) DEFAULT '',
s POINT NOT NULL,
PRIMARY KEY(id,c)
) ENGINE=InnoDB;
INSERT INTO t (s) VALUES
(POINTFromText('POINT(0.78 0.72)')),(POINTFromText('POINT(0.44 0.21)')),
(POINTFromText('POINT(0.93 0.56)')),(POINTFromText('POINT(0.57 0.21)')),
(POINTFromText('POINT(0.12 0.65)')),(POINTFromText('POINT(0.20 0.96)')),
(POINTFromText('POINT(0.99 0.71)')),(POINTFromText('POINT(0.27 0.23)')),
(POINTFromText('POINT(0.68 0.14)')),(POINTFromText('POINT(0.20 0.05)')),
(POINTFromText('POINT(0.47 0.57)')),(POINTFromText('POINT(0.89 0.79)')),
(POINTFromText('POINT(0.09 0.57)')),(POINTFromText('POINT(0.58 0.52)')),
(POINTFromText('POINT(0.73 0.32)')),(POINTFromText('POINT(0.87 0.35)')),
(POINTFromText('POINT(0.60 0.12)')),(POINTFromText('POINT(0.14 0.17)')),
(POINTFromText('POINT(0.76 0.29)')),(POINTFromText('POINT(0.60 0.35)')),
(POINTFromText('POINT(0.48 0.69)')),(POINTFromText('POINT(0.79 0.45)')),
(POINTFromText('POINT(0.85 0.11)')),(POINTFromText('POINT(0.59 0.99)')),
(POINTFromText('POINT(0.95 0.18)')),(POINTFromText('POINT(0.78 0.49)')),
(POINTFromText('POINT(0.11 0.22)')),(POINTFromText('POINT(0.26 0.85)')),
(POINTFromText('POINT(0.28 0.10)')),(POINTFromText('POINT(0.45 0.25)')),
(POINTFromText('POINT(0.70 0.40)')),(POINTFromText('POINT(0.65 0.86)')),
(POINTFromText('POINT(0.69 0.98)')),(POINTFromText('POINT(0.56 0.11)')),
(POINTFromText('POINT(0.94 0.59)')),(POINTFromText('POINT(0.19 0.94)')),
(POINTFromText('POINT(0.82 0.85)')),(POINTFromText('POINT(0.74 0.07)')),
(POINTFromText('POINT(0.33 0.48)')),(POINTFromText('POINT(0.37 0.37)')),
(POINTFromText('POINT(0.40 0.08)')),(POINTFromText('POINT(0.45 0.74)')),
(POINTFromText('POINT(0.57 0.07)')),(POINTFromText('POINT(0.36 0.11)')),
(POINTFromText('POINT(0.94 0.60)')),(POINTFromText('POINT(0.75 0.76)')),
(POINTFromText('POINT(0.92 0.56)')),(POINTFromText('POINT(0.88 0.52)')),
(POINTFromText('POINT(0.49 0.24)')),(POINTFromText('POINT(0.96 0.08)')),
(POINTFromText('POINT(0.93 0.99)')),(POINTFromText('POINT(0.88 0.31)')),
(POINTFromText('POINT(0.93 0.78)')),(POINTFromText('POINT(0.62 0.50)')),
(POINTFromText('POINT(0.54 0.53)')),(POINTFromText('POINT(0.66 0.83)')),
(POINTFromText('POINT(0.21 0.87)')),(POINTFromText('POINT(0.42 0.28)')),
(POINTFromText('POINT(0.80 0.84)')),(POINTFromText('POINT(0.39 0.68)')),
(POINTFromText('POINT(0.05 0.24)')),(POINTFromText('POINT(0.05 0.58)'));
ALTER TABLE t ADD SPATIAL INDEX(s);
OPTIMIZE TABLE t;
Table Op Msg_type Msg_text
test.t optimize note Table does not support optimize, doing recreate + analyze instead
test.t optimize status OK
DROP TABLE t;
--source include/have_innodb.inc
CREATE TABLE t (
id INT AUTO_INCREMENT,
c BINARY(226) DEFAULT '',
s POINT NOT NULL,
PRIMARY KEY(id,c)
) ENGINE=InnoDB;
INSERT INTO t (s) VALUES
(POINTFromText('POINT(0.78 0.72)')),(POINTFromText('POINT(0.44 0.21)')),
(POINTFromText('POINT(0.93 0.56)')),(POINTFromText('POINT(0.57 0.21)')),
(POINTFromText('POINT(0.12 0.65)')),(POINTFromText('POINT(0.20 0.96)')),
(POINTFromText('POINT(0.99 0.71)')),(POINTFromText('POINT(0.27 0.23)')),
(POINTFromText('POINT(0.68 0.14)')),(POINTFromText('POINT(0.20 0.05)')),
(POINTFromText('POINT(0.47 0.57)')),(POINTFromText('POINT(0.89 0.79)')),
(POINTFromText('POINT(0.09 0.57)')),(POINTFromText('POINT(0.58 0.52)')),
(POINTFromText('POINT(0.73 0.32)')),(POINTFromText('POINT(0.87 0.35)')),
(POINTFromText('POINT(0.60 0.12)')),(POINTFromText('POINT(0.14 0.17)')),
(POINTFromText('POINT(0.76 0.29)')),(POINTFromText('POINT(0.60 0.35)')),
(POINTFromText('POINT(0.48 0.69)')),(POINTFromText('POINT(0.79 0.45)')),
(POINTFromText('POINT(0.85 0.11)')),(POINTFromText('POINT(0.59 0.99)')),
(POINTFromText('POINT(0.95 0.18)')),(POINTFromText('POINT(0.78 0.49)')),
(POINTFromText('POINT(0.11 0.22)')),(POINTFromText('POINT(0.26 0.85)')),
(POINTFromText('POINT(0.28 0.10)')),(POINTFromText('POINT(0.45 0.25)')),
(POINTFromText('POINT(0.70 0.40)')),(POINTFromText('POINT(0.65 0.86)')),
(POINTFromText('POINT(0.69 0.98)')),(POINTFromText('POINT(0.56 0.11)')),
(POINTFromText('POINT(0.94 0.59)')),(POINTFromText('POINT(0.19 0.94)')),
(POINTFromText('POINT(0.82 0.85)')),(POINTFromText('POINT(0.74 0.07)')),
(POINTFromText('POINT(0.33 0.48)')),(POINTFromText('POINT(0.37 0.37)')),
(POINTFromText('POINT(0.40 0.08)')),(POINTFromText('POINT(0.45 0.74)')),
(POINTFromText('POINT(0.57 0.07)')),(POINTFromText('POINT(0.36 0.11)')),
(POINTFromText('POINT(0.94 0.60)')),(POINTFromText('POINT(0.75 0.76)')),
(POINTFromText('POINT(0.92 0.56)')),(POINTFromText('POINT(0.88 0.52)')),
(POINTFromText('POINT(0.49 0.24)')),(POINTFromText('POINT(0.96 0.08)')),
(POINTFromText('POINT(0.93 0.99)')),(POINTFromText('POINT(0.88 0.31)')),
(POINTFromText('POINT(0.93 0.78)')),(POINTFromText('POINT(0.62 0.50)')),
(POINTFromText('POINT(0.54 0.53)')),(POINTFromText('POINT(0.66 0.83)')),
(POINTFromText('POINT(0.21 0.87)')),(POINTFromText('POINT(0.42 0.28)')),
(POINTFromText('POINT(0.80 0.84)')),(POINTFromText('POINT(0.39 0.68)')),
(POINTFromText('POINT(0.05 0.24)')),(POINTFromText('POINT(0.05 0.58)'));
ALTER TABLE t ADD SPATIAL INDEX(s);
OPTIMIZE TABLE t;
# Cleanup
DROP TABLE t;
......@@ -1468,7 +1468,8 @@ rtr_ins_enlarge_mbr(
/* Check path info is not empty. */
ut_ad(!btr_cur->rtr_info->parent_path->empty());
ut_ad(btr_cur->rtr_info->thr || !btr_cur->index()->is_committed());
ut_ad(btr_cur->rtr_info->thr || !btr_cur->index()->is_committed()
|| btr_cur->index()->table->name.is_temporary());
/* Create a memory heap. */
heap = mem_heap_create(1024);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment