diff options
Diffstat (limited to 'mysql-test/t/partition_innodb.test')
-rw-r--r-- | mysql-test/t/partition_innodb.test | 139 |
1 files changed, 132 insertions, 7 deletions
diff --git a/mysql-test/t/partition_innodb.test b/mysql-test/t/partition_innodb.test index b661e4bd3fa..5674a889023 100644 --- a/mysql-test/t/partition_innodb.test +++ b/mysql-test/t/partition_innodb.test @@ -1,6 +1,6 @@ -if (`select plugin_auth_version <= "5.5.43-MariaDB-37.2" from information_schema.plugins where plugin_name='innodb'`) +if (`select plugin_auth_version < "5.6.25" from information_schema.plugins where plugin_name='innodb'`) { - --skip Not fixed in XtraDB as of 5.5.43-MariaDB-37.2 or earlier + --skip Not fixed in InnoDB as of 5.6.24 or earlier } --source include/not_embedded.inc --source include/have_partition.inc @@ -45,6 +45,17 @@ EXPLAIN SELECT b FROM t1 WHERE b between 'L' and 'N' AND a > -100; DROP TABLE t1; --echo # +--echo # Bug#13007154: Crash in keys_to_use_for_scanning with ORDER BY +--echo # and PARTITIONING +--echo # +CREATE TABLE t1 (a INT, KEY(a)) +ENGINE = InnoDB +PARTITION BY KEY (a) PARTITIONS 1; +SELECT 1 FROM t1 WHERE a > (SELECT LAST_INSERT_ID() FROM t1 LIMIT 0) +ORDER BY a; +DROP TABLE t1; + +--echo # --echo # Bug#56287: crash when using Partition datetime in sub in query --echo # @@ -64,8 +75,8 @@ insert into t1(c2,c3) values ("Test row",'2010-01-01 00:00:00'); SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; SELECT count(*) FROM t1 p where c3 in -(select c3 from t1 t where t.c3 < date '2011-04-26 19:19:44' - and t.c3 > date '2011-04-26 19:18:44') ; +(select c3 from t1 t where t.c3 < timestamp '2011-04-26 19:19:44' + and t.c3 > timestamp '2011-04-26 19:18:44') ; DROP TABLE t1; @@ -75,7 +86,8 @@ DROP TABLE t1; --echo # SELECT is not detected --echo # -SET @old_innodb_thread_concurrency:= @@innodb_thread_concurrency; +SET @old_innodb_thread_concurrency := @@innodb_thread_concurrency; +SET @old_innodb_thread_sleep_delay := @@innodb_thread_sleep_delay; SET GLOBAL innodb_thread_concurrency = 1; CREATE TABLE t1 @@ -124,6 +136,7 @@ COMMIT; --connection default SET GLOBAL innodb_thread_concurrency = @old_innodb_thread_concurrency; +SET GLOBAL innodb_thread_sleep_delay = @old_innodb_thread_sleep_delay; DROP TABLE t1; @@ -572,7 +585,7 @@ CREATE INDEX i1 ON t1 (a); DROP TABLE t1; # Before the fix it should show extra file like #sql-2405_2.par ---list_files $MYSQLD_DATADIR/test/ * +--list_files $MYSQLD_DATADIR/test/ *.par --disable_parsing --echo # @@ -607,7 +620,7 @@ ALTER TABLE t1 REORGANIZE PARTITION pMAX INTO SHOW WARNINGS; #Contents of the 'test' database directory: ---list_files $MYSQLD_DATADIR/test +--list_files $MYSQLD_DATADIR/test/ *.par disconnect con1; connection default; @@ -901,3 +914,115 @@ GROUP BY A.IMORY_ID, A.NUMBER, A.NAME, DATE_FORMAT(A.DATETIME, '%Y-%m-%d') ; drop table t2, t1; + + +set global default_storage_engine='innodb'; + +--echo # +--echo # MDEV-5963: InnoDB: Assertion failure in file row0sel.cc line 2503, +--echo # Failing assertion: 0 with "key ptr now exceeds key end by 762 bytes" +--echo # (independent testcase for Oracle Bug#13947868) +--echo # +CREATE TABLE t1 (f1 VARCHAR(512) CHARACTER SET utf8) ENGINE=InnoDB; +INSERT INTO t1 VALUES ('j'); + +CREATE TABLE t2 ( + f2 VARCHAR(5) CHARACTER SET latin1, + f3 VARCHAR(5) CHARACTER SET utf8, + f4 INT, + f5 VARCHAR(512) CHARACTER SET utf8, + f6 VARCHAR(256) CHARACTER SET utf8, + key (f2), + key (f3), + key (f5) +) ENGINE=InnoDB PARTITION BY LIST COLUMNS (f4) + SUBPARTITION BY KEY(f6) SUBPARTITIONS 4 ( + PARTITION p0 VALUES IN (1,3,9,null), + PARTITION p1 VALUES IN (2,4,0) +); + +INSERT INTO t2 VALUES + ('k','s',3,'b','j'),('a','b',NULL,'v','j'),('c','m',9,'t',NULL), + ('b','l',9,'b',NULL),('i','y',3,'o','w'),('c','m',NULL,'a','m'), + ('f','o',9,'m','w'),('f','q',NULL,'o','a'); + +CREATE TABLE t3 LIKE t2; + +SELECT * FROM t1 INNER JOIN t2 ON ( f5 = f1 ); +INSERT INTO t3 SELECT * FROM t2 WHERE f3 = 'm' AND f2 ='c'; + +DROP TABLE t1,t2,t3; + +set global default_storage_engine=default; + +--echo # +--echo # Bug#13737949: CRASH IN HA_PARTITION::INDEX_INIT +--echo # Bug#18694052: SERVER CRASH IN HA_PARTITION::INIT_RECORD_PRIORITY_QUEUE +--echo # +CREATE TABLE t1 +(a INT, + b INT, + PRIMARY KEY (a)) + ENGINE = InnoDB + PARTITION BY HASH (a) PARTITIONS 3; + START TRANSACTION WITH CONSISTENT SNAPSHOT; + --connect (con1, localhost, root,,) + --echo # con1 + ALTER TABLE t1 ADD INDEX idx1 (b); + --connection default + --echo # con default + --error ER_TABLE_DEF_CHANGED + SELECT b FROM t1 WHERE b = 0; + --error ER_TABLE_DEF_CHANGED + SELECT b FROM t1 WHERE b = 0; + --disconnect con1 + DROP TABLE t1; + +--echo # Same test without partitioning +CREATE TABLE t1 +(a INT, + b INT, + PRIMARY KEY (a)) + ENGINE = InnoDB; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +--echo # con1 +--connect (con1, localhost, root,,) +ALTER TABLE t1 ADD INDEX idx1 (b); +--connection default +--echo # con default +--error ER_TABLE_DEF_CHANGED +SELECT b FROM t1 WHERE b = 0; +--error ER_TABLE_DEF_CHANGED +SELECT b FROM t1 WHERE b = 0; +--disconnect con1 +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; + +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; + |