MDEV-11167: InnoDB: Warning: using a partial-field key prefix in search, results in assertion failure or "Can't find record" error
Fix ha_rnd_init() argument (we do not doing scan but use rnd_pos)
This commit is contained in:
parent
5f29fdecc0
commit
6cecb10a2f
@ -890,3 +890,29 @@ ERROR HY000: Table definition has changed, please retry transaction
|
|||||||
SELECT b FROM t1 WHERE b = 0;
|
SELECT b FROM t1 WHERE b = 0;
|
||||||
ERROR HY000: Table definition has changed, please retry transaction
|
ERROR HY000: Table definition has changed, please retry transaction
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-11167: InnoDB: Warning: using a partial-field key prefix
|
||||||
|
# in search, results in assertion failure or "Can't find record" error
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
|
||||||
|
CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
|
||||||
|
Warnings:
|
||||||
|
Warning 1366 Incorrect integer value: 'three' for column 'b' at row 2
|
||||||
|
UPDATE v SET a = NULL ORDER BY a, b;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'foo'
|
||||||
|
DROP view v;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET @save_isp=@@innodb_stats_persistent;
|
||||||
|
SET GLOBAL innodb_stats_persistent= ON;
|
||||||
|
CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
|
||||||
|
INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
|
||||||
|
CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
|
||||||
|
UPDATE v SET f2 = NULL;
|
||||||
|
ERROR HY000: CHECK OPTION failed 'test.v'
|
||||||
|
SET GLOBAL innodb_stats_persistent= @save_isp;
|
||||||
|
DROP view v;
|
||||||
|
DROP TABLE t;
|
||||||
|
@ -996,3 +996,33 @@ SELECT b FROM t1 WHERE b = 0;
|
|||||||
SELECT b FROM t1 WHERE b = 0;
|
SELECT b FROM t1 WHERE b = 0;
|
||||||
--disconnect con1
|
--disconnect con1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-11167: InnoDB: Warning: using a partial-field key prefix
|
||||||
|
--echo # in search, results in assertion failure or "Can't find record" error
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE t2 (b INT, c INT, KEY(b)) ENGINE=InnoDB PARTITION BY HASH(c) PARTITIONS 2;
|
||||||
|
CREATE ALGORITHM = MERGE VIEW v AS SELECT a, b FROM t1 STRAIGHT_JOIN t2 WHERE b = 'foo' WITH CHECK OPTION;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
INSERT IGNORE INTO t2 VALUES (2,2),('three',3),(4,4);
|
||||||
|
UPDATE v SET a = NULL ORDER BY a, b;
|
||||||
|
|
||||||
|
DROP view v;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
SET @save_isp=@@innodb_stats_persistent;
|
||||||
|
SET GLOBAL innodb_stats_persistent= ON;
|
||||||
|
|
||||||
|
CREATE TABLE t (f1 INT, f2 INT, KEY(f2)) ENGINE=InnoDB PARTITION BY HASH (f1) PARTITIONS 2;
|
||||||
|
INSERT IGNORE INTO t VALUES (NULL,0),(NULL,0),(0,21),(4,0),(1,8),(5,66);
|
||||||
|
CREATE ALGORITHM=MERGE VIEW v AS SELECT t1.* FROM t t1 JOIN t t2 WHERE t1.f1 < t2.f2 WITH LOCAL CHECK OPTION;
|
||||||
|
--error ER_VIEW_CHECK_FAILED
|
||||||
|
UPDATE v SET f2 = NULL;
|
||||||
|
|
||||||
|
SET GLOBAL innodb_stats_persistent= @save_isp;
|
||||||
|
DROP view v;
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
@ -2309,7 +2309,7 @@ int multi_update::do_updates()
|
|||||||
check_opt_it.rewind();
|
check_opt_it.rewind();
|
||||||
while(TABLE *tbl= check_opt_it++)
|
while(TABLE *tbl= check_opt_it++)
|
||||||
{
|
{
|
||||||
if ((local_error= tbl->file->ha_rnd_init(1)))
|
if ((local_error= tbl->file->ha_rnd_init(0)))
|
||||||
{
|
{
|
||||||
err_table= tbl;
|
err_table= tbl;
|
||||||
goto err;
|
goto err;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user