Merge bb-10.2-ext into 10.3

This commit is contained in:
Marko Mäkelä 2017-06-27 08:14:45 +03:00
commit 176000a54c
82 changed files with 3033 additions and 269 deletions

View File

@ -554,7 +554,7 @@ EXPLAIN SELECT * FROM (SELECT * FROM t1) AS table1,
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY <derived3> ref key0 key0 5 const 0
3 DERIVED t2 ALL NULL NULL NULL NULL 2 Using temporary
3 DERIVED t2 ALL NULL NULL NULL NULL 2 Using where; Using temporary
Warnings:
Note 1249 Select 4 was reduced during optimization
DROP TABLE t1, t2;

View File

@ -7250,6 +7250,7 @@ EXPLAIN
"materialized": {
"query_block": {
"select_id": 5,
"having_condition": "s > 2",
"filesort": {
"sort_key": "t4.d",
"temporary_table": {
@ -7621,6 +7622,7 @@ EXPLAIN
"materialized": {
"query_block": {
"select_id": 3,
"having_condition": "s < 50",
"filesort": {
"sort_key": "t3.a",
"temporary_table": {
@ -7771,9 +7773,14 @@ EXPLAIN
"select_id": 4,
"table": {
"table_name": "t",
"access_type": "ALL",
"access_type": "range",
"possible_keys": ["PRIMARY"],
"key": "PRIMARY",
"key_length": "4",
"used_key_parts": ["pk"],
"rows": 2,
"filtered": 100
"filtered": 100,
"index_condition": "t.pk > 2"
}
}
}
@ -8463,3 +8470,258 @@ WHERE row <> order_number;
row order_number
14 51
DROP TABLE sales_documents;
#
# MDEV-12845: pushdown from merged derived using equalities
#
create table t1 (a int);
insert into t1 values
(4), (8), (5), (3), (10), (2), (7);
create table t2 (b int, c int);
insert into t2 values
(2,1), (5,2), (2,2), (4,1), (4,3),
(5,3), (2,4), (4,6), (2,1);
create view v1 as
select b, sum(c) as s from t2 group by b;
create view v2 as
select distinct b, c from t2;
create view v3 as
select b, max(c) as m from t2 group by b;
select b
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where b > 2;
b
4
5
explain format=json select b
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where b > 2;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 7,
"filtered": 100,
"attached_condition": "t1.a > 2 and t1.a is not null"
},
"table": {
"table_name": "<derived3>",
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
"key_length": "5",
"used_key_parts": ["b"],
"ref": ["test.t1.a"],
"rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
"select_id": 3,
"filesort": {
"sort_key": "t2.b",
"temporary_table": {
"table": {
"table_name": "t2",
"access_type": "ALL",
"rows": 9,
"filtered": 100,
"attached_condition": "t2.b > 2"
}
}
}
}
}
}
}
}
select a
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where a > 2;
a
4
5
explain format=json select a
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where a > 2;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 7,
"filtered": 100,
"attached_condition": "t1.a > 2 and t1.a is not null"
},
"table": {
"table_name": "<derived3>",
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
"key_length": "5",
"used_key_parts": ["b"],
"ref": ["test.t1.a"],
"rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
"select_id": 3,
"filesort": {
"sort_key": "t2.b",
"temporary_table": {
"table": {
"table_name": "t2",
"access_type": "ALL",
"rows": 9,
"filtered": 100,
"attached_condition": "t2.b > 2"
}
}
}
}
}
}
}
}
select a
from ( select t1.a, v2.b, v2.c from t1, v2 where t1.a = v2.b ) as t
where a > 2;
a
4
4
4
5
5
explain format=json select a
from ( select t1.a, v2.b, v2.c from t1, v2 where t1.a = v2.b ) as t
where a > 2;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 7,
"filtered": 100,
"attached_condition": "t1.a > 2 and t1.a is not null"
},
"table": {
"table_name": "<derived3>",
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
"key_length": "5",
"used_key_parts": ["b"],
"ref": ["test.t1.a"],
"rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
"select_id": 3,
"temporary_table": {
"table": {
"table_name": "t2",
"access_type": "ALL",
"rows": 9,
"filtered": 100,
"attached_condition": "t2.b > 2"
}
}
}
}
}
}
}
select a
from ( select t1.a, v3.b, v3.m from t1, v3 where t1.a = v3.m ) as t
where a > 2;
a
4
3
explain format=json select a
from ( select t1.a, v3.b, v3.m from t1, v3 where t1.a = v3.m ) as t
where a > 2;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 7,
"filtered": 100,
"attached_condition": "t1.a > 2 and t1.a is not null"
},
"table": {
"table_name": "<derived3>",
"access_type": "ref",
"possible_keys": ["key0"],
"key": "key0",
"key_length": "5",
"used_key_parts": ["m"],
"ref": ["test.t1.a"],
"rows": 2,
"filtered": 100,
"materialized": {
"query_block": {
"select_id": 3,
"having_condition": "m > 2",
"filesort": {
"sort_key": "t2.b",
"temporary_table": {
"table": {
"table_name": "t2",
"access_type": "ALL",
"rows": 9,
"filtered": 100
}
}
}
}
}
}
}
}
drop view v1,v2,v3;
drop table t1,t2;
#
# MDEV-13166: pushdown from merged derived
#
CREATE TABLE t1 (i int) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1),(2);
CREATE VIEW v1 AS SELECT MAX(i) AS f FROM t1;
SELECT * FROM ( SELECT * FROM v1 ) AS sq WHERE f > 0;
f
2
explain format=json SELECT * FROM ( SELECT * FROM v1 ) AS sq WHERE f > 0;
EXPLAIN
{
"query_block": {
"select_id": 1,
"table": {
"table_name": "<derived3>",
"access_type": "ALL",
"rows": 2,
"filtered": 100,
"attached_condition": "v1.f > 0",
"materialized": {
"query_block": {
"select_id": 3,
"having_condition": "f > 0",
"table": {
"table_name": "t1",
"access_type": "ALL",
"rows": 2,
"filtered": 100
}
}
}
}
}
}
DROP VIEW v1;
DROP TABLE t1;

View File

@ -900,7 +900,7 @@ EXPLAIN
"access_type": "ALL",
"rows": 11,
"filtered": 100,
"attached_condition": "t1.f1 in (2,3)"
"attached_condition": "t1.f1 < 7 and t1.f1 in (2,3)"
}
}
}
@ -1107,7 +1107,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ref a a 4 const 1 Using index
1 PRIMARY <derived2> ref key0 key0 8 const,const 1
2 DERIVED t3 ALL NULL NULL NULL NULL 12 Using temporary; Using filesort
2 DERIVED t3 ALL NULL NULL NULL NULL 12 Using where; Using temporary; Using filesort
SELECT * FROM t1, t2, v1 WHERE t2.a=t1.a AND t2.a=v1.a AND t2.a=v1.b;
a a a b
c c c c

22
mysql-test/r/mdl.result Normal file
View File

@ -0,0 +1,22 @@
#
# MDEV-12882 - Assertion `mdl_ticket->m_type == MDL_SHARED_UPGRADABLE ||
# mdl_ticket->m_type == MDL_SHARED_NO_WRITE ||
# mdl_ticket->m_type == MDL_SHARED_NO_READ_WRITE ||
# mdl_ticket->m_type == MDL_SHARED_READ'
# failed in MDL_context::upgrade_shared_lock
#
CREATE TABLE t1(a INT) ENGINE=InnoDB;
LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ;
SELECT * FROM information_schema.metadata_lock_info;
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
9 MDL_INTENTION_EXCLUSIVE NULL Global read lock
9 MDL_SHARED_NO_READ_WRITE NULL Table metadata lock test t1
UNLOCK TABLES;
LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT;
SELECT * FROM information_schema.metadata_lock_info;
THREAD_ID LOCK_MODE LOCK_DURATION LOCK_TYPE TABLE_SCHEMA TABLE_NAME
9 MDL_INTENTION_EXCLUSIVE NULL Global read lock
9 MDL_SHARED_WRITE NULL Table metadata lock test t1
9 MDL_SHARED_READ_ONLY NULL Table metadata lock test t1
UNLOCK TABLES;
DROP TABLE t1;

View File

@ -0,0 +1,97 @@
CREATE TABLE t1 (c1 INT, c2 VARCHAR(30));
PREPARE populate_table FROM "INSERT into t1 values (1, 'manual_insert_1'),
(4, 'manual_insert_2')";
INSERT INTO t1 SELECT row_number() over(), "should_have_0" FROM t1;
INSERT INTO t1 SELECT 1 + row_number() over(), "should_have_2" FROM t1;
EXECUTE populate_table;
INSERT INTO t1 SELECT 10 + row_number() over(), "should repeat 4 times [11-14]" FROM t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1 manual_insert_1
4 manual_insert_2
11 should repeat 4 times [11-14]
12 should repeat 4 times [11-14]
13 should repeat 4 times [11-14]
14 should repeat 4 times [11-14]
0 should_have_0
2 should_have_2
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 10 + (dense_rank() over(order by c1)), "dense_rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
11 dense_rank_insert
12 dense_rank_insert
1 manual_insert_1
4 manual_insert_2
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 100 + (rank() over(order by c1)), "rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1 manual_insert_1
4 manual_insert_2
101 rank_insert
102 rank_insert
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 100 + (ntile(10) over(order by c1)), "ntile_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1 manual_insert_1
4 manual_insert_2
101 ntile_insert
102 ntile_insert
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (percent_rank() over(order by c1)), "percent_rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1 manual_insert_1
4 manual_insert_2
1000 percent_rank_insert
1001 percent_rank_insert
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (count(*) over(order by c1)), "count_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1001 count_insert
1002 count_insert
1 manual_insert_1
4 manual_insert_2
DELETE FROM t1;
EXECUTE populate_table;
#
# Test how avg interacts when the results need to be rounded.
#
SELECT 1000 + (avg(c1) over(order by c1)) as avg_expr, c1, "This will be inserted into t1" from t1;
avg_expr c1 This will be inserted into t1
1001.0000 1 This will be inserted into t1
1002.5000 4 This will be inserted into t1
INSERT INTO t1
SELECT 1000 + (avg(c1) over(order by c1)), "avg_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
c1 c2
1001 avg_insert
1003 avg_insert
1 manual_insert_1
4 manual_insert_2
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (sum(c1) over(order by c1)), "sum_insert" from t1;
SELECT c1, c2
FROM t1
ORDER BY c2, c1;
c1 c2
1 manual_insert_1
4 manual_insert_2
1001 sum_insert
1005 sum_insert
DROP table t1;

View File

@ -1,7 +1,31 @@
CREATE TABLE t1 (
`i1` INT(10) UNSIGNED NOT NULL,
`d1` TIMESTAMP NULL DEFAULT NULL
) ENGINE=innodb;
CREATE TABLE t1 (i1 INT UNSIGNED NULL DEFAULT 42) ENGINE=innodb;
INSERT INTO t1 VALUES(NULL);
ALTER TABLE t1 CHANGE i1 i1 INT UNSIGNED NOT NULL DEFAULT rand(),
ALGORITHM=INPLACE;
ERROR 22004: Invalid use of NULL value
ALTER TABLE t1 CHANGE i1 i1 INT UNSIGNED NOT NULL DEFAULT rand(),
ALGORITHM=COPY;
ERROR 01000: Data truncated for column 'i1' at row 1
ALTER TABLE t1 CHANGE i1 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY(id), ALGORITHM=INPLACE;
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY
ALTER TABLE t1 ADD PRIMARY KEY(i1), ALGORITHM=INPLACE;
ERROR 22004: Invalid use of NULL value
ALTER TABLE t1 CHANGE i1 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY(id);
affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM t1;
id
1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (i1 INT UNSIGNED NOT NULL, d1 TIMESTAMP NULL) ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
@ -17,21 +41,56 @@ i1 d1
4 NULL
5 NULL
set sql_mode = 'STRICT_ALL_TABLES,NO_ZERO_DATE';
ALTER TABLE t1 CHANGE `d1` `d1` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NULL DEFAULT '2017-05-08 16:23:45',
ALGORITHM=INPLACE;
SELECT DISTINCT d1 FROM t1;
d1
NULL
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NULL DEFAULT '2017-05-08 16:32:45',
ALGORITHM=COPY;
SELECT DISTINCT d1 FROM t1;
d1
NULL
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP DEFAULT '2017-05-08 16:32:54';
affected rows: 5
info: Records: 5 Duplicates: 0 Warnings: 0
# Note: NULL was changed to CURRENT_TIMESTAMP(),
# not the specified constant DEFAULT value!
SELECT COUNT(DISTINCT d1),COUNT(d1),COUNT(*) FROM t1;
COUNT(DISTINCT d1) COUNT(d1) COUNT(*)
1 5 5
SELECT DISTINCT (CURRENT_TIMESTAMP()-d1) <= 60 FROM t1;
(CURRENT_TIMESTAMP()-d1) <= 60
1
drop table t1;
CREATE TABLE t1 (
`i1` INT(10) UNSIGNED NOT NULL,
`d1` TIMESTAMP NULL DEFAULT NULL
) ENGINE=innodb;
INSERT INTO t1 (i1) VALUES (1), (2), (3), (4), (5);
ALTER TABLE t1 CHANGE `d1` `d1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
affected rows: 5
info: Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLE t1 ADD COLUMN w1 varchar(20) NULL DEFAULT USER();
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 CHANGE w1 u1 varchar(30) NULL DEFAULT substr(USER(),1);
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
SELECT u1, COUNT(DISTINCT d1) FROM t1 GROUP BY u1;
u1 COUNT(DISTINCT d1)
root@localhost 1
ALTER TABLE t1 ADD COLUMN d2 TIMESTAMP DEFAULT '2017-05-08 16:23:45',
LOCK=NONE;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1, LOCK=NONE;
ERROR 0A000: LOCK=NONE is not supported for this operation. Try LOCK=SHARED
ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1, ALGORITHM=INPLACE;
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY
ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1;
affected rows: 5
info: Records: 5 Duplicates: 0 Warnings: 0
SELECT d1-d3, d2 FROM t1;
d1-d3 d2
0 2017-05-08 16:23:45
@ -44,7 +103,17 @@ Table Create Table
t1 CREATE TABLE `t1` (
`i1` int(10) unsigned NOT NULL,
`d1` timestamp NOT NULL DEFAULT current_timestamp(),
`u1` varchar(30) DEFAULT substr(user(),1),
`d2` timestamp NOT NULL DEFAULT '2017-05-08 16:23:45',
`d3` timestamp NOT NULL DEFAULT `d1`
) ENGINE=InnoDB DEFAULT CHARSET=latin1
ALTER TABLE t1 ADD COLUMN d4 TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
SELECT COUNT(DISTINCT d4),COUNT(d4),COUNT(*) FROM t1;
COUNT(DISTINCT d4) COUNT(d4) COUNT(*)
1 5 5
SELECT DISTINCT (CURRENT_TIMESTAMP()-d4) <= 60 FROM t1;
(CURRENT_TIMESTAMP()-d4) <= 60
1
DROP TABLE t1;

View File

@ -1,5 +1,5 @@
create table t1(f1 int not null, f2 int not null, index idx(f2))engine=innodb;
create table t2(f1 int not null, f2 int not null, index idx(f2))engine=innodb;
create table t2(f1 int primary key, f2 int, index idx(f2))engine=innodb;
insert into t1 values(1, 2);
insert into t2 values(1, 2);
SET GLOBAL innodb_fast_shutdown = 0;
@ -85,6 +85,37 @@ ERROR HY000: Table 't2' is read only
show tables;
Tables_in_test
t2
# Restart the server with innodb_force_recovery=2
select * from t2;
f1 f2
1 2
begin;
update t2 set f2=3;
connect con1,localhost,root,,;
create table t3(a int)engine=innodb;
# Force a redo log flush of the above uncommitted UPDATE
SET GLOBAL innodb_flush_log_at_trx_commit=1;
drop table t3;
disconnect con1;
connection default;
# Kill the server
# Restart the server with innodb_force_recovery=3
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
select * from t2;
f1 f2
1 3
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
select * from t2;
f1 f2
1 2
SET GLOBAL innodb_lock_wait_timeout=1;
insert into t2 values(1,2);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
insert into t2 values(9,10);
select * from t2;
f1 f2
1 2
9 10
drop table t2;
show tables;
Tables_in_test

View File

@ -1,16 +1,46 @@
--source include/have_innodb.inc
CREATE TABLE t1 (
`i1` INT(10) UNSIGNED NOT NULL,
`d1` TIMESTAMP NULL DEFAULT NULL
) ENGINE=innodb;
CREATE TABLE t1 (i1 INT UNSIGNED NULL DEFAULT 42) ENGINE=innodb;
INSERT INTO t1 VALUES(NULL);
--enable_info
--error ER_INVALID_USE_OF_NULL
ALTER TABLE t1 CHANGE i1 i1 INT UNSIGNED NOT NULL DEFAULT rand(),
ALGORITHM=INPLACE;
--error WARN_DATA_TRUNCATED
ALTER TABLE t1 CHANGE i1 i1 INT UNSIGNED NOT NULL DEFAULT rand(),
ALGORITHM=COPY;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
ALTER TABLE t1 CHANGE i1 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY(id), ALGORITHM=INPLACE;
--error ER_INVALID_USE_OF_NULL
ALTER TABLE t1 ADD PRIMARY KEY(i1), ALGORITHM=INPLACE;
ALTER TABLE t1 CHANGE i1 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY(id);
--disable_info
SELECT * FROM t1;
SHOW CREATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (i1 INT UNSIGNED NOT NULL, d1 TIMESTAMP NULL) ENGINE=InnoDB;
SHOW CREATE TABLE t1;
INSERT INTO t1 (i1) VALUES (1), (2), (3), (4), (5);
select * from t1;
set sql_mode = 'STRICT_ALL_TABLES,NO_ZERO_DATE';
ALTER TABLE t1 CHANGE `d1` `d1` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NULL DEFAULT '2017-05-08 16:23:45',
ALGORITHM=INPLACE;
SELECT DISTINCT d1 FROM t1;
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NULL DEFAULT '2017-05-08 16:32:45',
ALGORITHM=COPY;
SELECT DISTINCT d1 FROM t1;
--enable_info
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP DEFAULT '2017-05-08 16:32:54';
--disable_info
--echo # Note: NULL was changed to CURRENT_TIMESTAMP(),
--echo # not the specified constant DEFAULT value!
SELECT COUNT(DISTINCT d1),COUNT(d1),COUNT(*) FROM t1;
SELECT DISTINCT (CURRENT_TIMESTAMP()-d1) <= 60 FROM t1;
drop table t1;
CREATE TABLE t1 (
@ -18,8 +48,14 @@ CREATE TABLE t1 (
`d1` TIMESTAMP NULL DEFAULT NULL
) ENGINE=innodb;
INSERT INTO t1 (i1) VALUES (1), (2), (3), (4), (5);
ALTER TABLE t1 CHANGE `d1` `d1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
--enable_info
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE t1 ADD COLUMN w1 varchar(20) NULL DEFAULT USER();
ALTER TABLE t1 CHANGE w1 u1 varchar(30) NULL DEFAULT substr(USER(),1);
--disable_info
SELECT u1, COUNT(DISTINCT d1) FROM t1 GROUP BY u1;
--enable_info
ALTER TABLE t1 ADD COLUMN d2 TIMESTAMP DEFAULT '2017-05-08 16:23:45',
LOCK=NONE;
--error ER_ALTER_OPERATION_NOT_SUPPORTED
@ -27,6 +63,12 @@ ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1, LOCK=NONE;
--error ER_ALTER_OPERATION_NOT_SUPPORTED
ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1, ALGORITHM=INPLACE;
ALTER TABLE t1 ADD COLUMN d3 TIMESTAMP DEFAULT d1;
--disable_info
SELECT d1-d3, d2 FROM t1;
SHOW CREATE TABLE t1;
--enable_info
ALTER TABLE t1 ADD COLUMN d4 TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
--disable_info
SELECT COUNT(DISTINCT d4),COUNT(d4),COUNT(*) FROM t1;
SELECT DISTINCT (CURRENT_TIMESTAMP()-d4) <= 60 FROM t1;
DROP TABLE t1;

View File

@ -10,7 +10,7 @@ call mtr.add_suppression("InnoDB: Allocated tablespace ID \\d+ for test.t[12], o
--enable_query_log
create table t1(f1 int not null, f2 int not null, index idx(f2))engine=innodb;
create table t2(f1 int not null, f2 int not null, index idx(f2))engine=innodb;
create table t2(f1 int primary key, f2 int, index idx(f2))engine=innodb;
insert into t1 values(1, 2);
insert into t2 values(1, 2);
@ -132,8 +132,40 @@ truncate table t2;
drop table t2;
show tables;
--echo # Restart the server with innodb_force_recovery=2
--let $restart_parameters= --innodb-force-recovery=2
--source include/restart_mysqld.inc
select * from t2;
begin;
update t2 set f2=3;
connect (con1,localhost,root,,);
create table t3(a int)engine=innodb;
--echo # Force a redo log flush of the above uncommitted UPDATE
SET GLOBAL innodb_flush_log_at_trx_commit=1;
drop table t3;
disconnect con1;
connection default;
--source include/kill_mysqld.inc
--echo # Restart the server with innodb_force_recovery=3
--let $restart_parameters= --innodb-force-recovery=3
--source include/start_mysqld.inc
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
select * from t2;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
select * from t2;
SET GLOBAL innodb_lock_wait_timeout=1;
--error ER_LOCK_WAIT_TIMEOUT
insert into t2 values(1,2);
insert into t2 values(9,10);
--let $restart_parameters=
--source include/restart_mysqld.inc
select * from t2;
drop table t2;
show tables;

View File

@ -1,20 +1,27 @@
include/master-slave.inc
[connection master]
connection master;
set @save_general_log = @@global.general_log;
set @save_log_output = @@global.log_output;
connection slave;
set @save_slave_net_timeout = @@global.slave_net_timeout;
connection master;
set @@global.general_log = ON;
set @@global.log_output = 'table,file';
connection slave;
include/stop_slave.inc
change master to master_host = '127.0.0.1',master_port = MASTER_PORT,
master_user = 'root', master_heartbeat_period = 0;
set @@global.slave_net_timeout = @@global.net_read_timeout * 2;
include/start_slave.inc
include/stop_slave.inc
connection master;
select event_time from (select event_time from mysql.general_log as t_1 where command_type like 'Connect' order by event_time desc limit 2) as t_2 order by event_time desc limit 1 into @ts_last;
select event_time from (select event_time from mysql.general_log as t_1 where command_type like 'Connect' order by event_time desc limit 2) as t_2 order by event_time asc limit 1 into @ts_prev;
include/assert.inc [time between last reconnection and the reconnection before that should be >= slave_net_timeout]
connection master;
set @@global.general_log = @save_general_log;
set @@global.log_output = @save_log_output;
connection slave;
set @@global.slave_net_timeout = @save_slave_net_timeout;
include/rpl_end.inc

View File

@ -26,7 +26,8 @@ if (!$mysql_errname)
SHOW CREATE TABLE t1;
DROP TEMPORARY TABLE t1;
DROP TABLE t1;
}
DROP TABLE t1;
--source cleanup_engine.inc

View File

@ -131,6 +131,11 @@ if (!$mysql_errname)
INSERT INTO t1 (b,b20,v16,v128) VALUES ('a','char1','varchar1a','varchar1b'),('a','char2','varchar2a','varchar2b'),('b','char3','varchar1a','varchar1b'),('c','char4','varchar3a','varchar3b'),('d','char5','varchar4a','varchar3b'),('e','char6','varchar2a','varchar3b');
INSERT INTO t1 (b,b20,v16,v128) SELECT b,b20,v16,v128 FROM t1;
--disable_result_log
--disable_query_log
ANALYZE TABLE t1;
--enable_query_log
--enable_result_log
--replace_column 1 # 2 # 3 # 4 # 5 # 7 # 8 # 9 # 10 #
EXPLAIN SELECT HEX(SUBSTRING(v16,0,3)) FROM t1 WHERE v16 LIKE 'varchar%';

View File

@ -1452,3 +1452,77 @@ SELECT * FROM
WHERE row <> order_number;
DROP TABLE sales_documents;
--echo #
--echo # MDEV-12845: pushdown from merged derived using equalities
--echo #
create table t1 (a int);
insert into t1 values
(4), (8), (5), (3), (10), (2), (7);
create table t2 (b int, c int);
insert into t2 values
(2,1), (5,2), (2,2), (4,1), (4,3),
(5,3), (2,4), (4,6), (2,1);
create view v1 as
select b, sum(c) as s from t2 group by b;
create view v2 as
select distinct b, c from t2;
create view v3 as
select b, max(c) as m from t2 group by b;
let $q1=
select b
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where b > 2;
eval $q1;
eval explain format=json $q1;
let $q2=
select a
from ( select t1.a, v1.b, v1.s from t1, v1 where t1.a = v1.b ) as t
where a > 2;
eval $q2;
eval explain format=json $q2;
let $q3=
select a
from ( select t1.a, v2.b, v2.c from t1, v2 where t1.a = v2.b ) as t
where a > 2;
eval $q3;
eval explain format=json $q3;
let $q4=
select a
from ( select t1.a, v3.b, v3.m from t1, v3 where t1.a = v3.m ) as t
where a > 2;
eval $q4;
eval explain format=json $q4;
drop view v1,v2,v3;
drop table t1,t2;
--echo #
--echo # MDEV-13166: pushdown from merged derived
--echo #
CREATE TABLE t1 (i int) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1),(2);
CREATE VIEW v1 AS SELECT MAX(i) AS f FROM t1;
let $q=
SELECT * FROM ( SELECT * FROM v1 ) AS sq WHERE f > 0;
eval $q;
eval explain format=json $q;
DROP VIEW v1;
DROP TABLE t1;

19
mysql-test/t/mdl.test Normal file
View File

@ -0,0 +1,19 @@
--source include/have_metadata_lock_info.inc
--source include/have_innodb.inc
--echo #
--echo # MDEV-12882 - Assertion `mdl_ticket->m_type == MDL_SHARED_UPGRADABLE ||
--echo # mdl_ticket->m_type == MDL_SHARED_NO_WRITE ||
--echo # mdl_ticket->m_type == MDL_SHARED_NO_READ_WRITE ||
--echo # mdl_ticket->m_type == MDL_SHARED_READ'
--echo # failed in MDL_context::upgrade_shared_lock
--echo #
CREATE TABLE t1(a INT) ENGINE=InnoDB;
LOCK TABLES t1 WRITE CONCURRENT, t1 AS t2 READ;
SELECT * FROM information_schema.metadata_lock_info;
UNLOCK TABLES;
LOCK TABLES t1 AS t2 READ, t1 WRITE CONCURRENT;
SELECT * FROM information_schema.metadata_lock_info;
UNLOCK TABLES;
DROP TABLE t1;

View File

@ -0,0 +1,79 @@
CREATE TABLE t1 (c1 INT, c2 VARCHAR(30));
PREPARE populate_table FROM "INSERT into t1 values (1, 'manual_insert_1'),
(4, 'manual_insert_2')";
INSERT INTO t1 SELECT row_number() over(), "should_have_0" FROM t1;
INSERT INTO t1 SELECT 1 + row_number() over(), "should_have_2" FROM t1;
EXECUTE populate_table;
INSERT INTO t1 SELECT 10 + row_number() over(), "should repeat 4 times [11-14]" FROM t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 10 + (dense_rank() over(order by c1)), "dense_rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 100 + (rank() over(order by c1)), "rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 100 + (ntile(10) over(order by c1)), "ntile_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (percent_rank() over(order by c1)), "percent_rank_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (count(*) over(order by c1)), "count_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
--echo #
--echo # Test how avg interacts when the results need to be rounded.
--echo #
SELECT 1000 + (avg(c1) over(order by c1)) as avg_expr, c1, "This will be inserted into t1" from t1;
INSERT INTO t1
SELECT 1000 + (avg(c1) over(order by c1)), "avg_insert" from t1;
SELECT c1, c2 FROM t1 ORDER BY c2, c1;
DELETE FROM t1;
EXECUTE populate_table;
INSERT INTO t1
SELECT 1000 + (sum(c1) over(order by c1)), "sum_insert" from t1;
SELECT c1, c2
FROM t1
ORDER BY c2, c1;
DROP table t1;

View File

@ -7117,122 +7117,181 @@ Item *Item_field::update_value_transformer(THD *thd, uchar *select_arg)
}
Item *Item_field::derived_field_transformer_for_having(THD *thd, uchar *arg)
static
Item *get_field_item_for_having(THD *thd, Item *item, st_select_lex *sel)
{
st_select_lex *sl= (st_select_lex *)arg;
table_map map= sl->master_unit()->derived->table->map;
if (!((Item_field*)this)->item_equal)
{
if (used_tables() == map)
{
Item_ref *rf=
new (thd->mem_root) Item_ref(thd, &sl->context,
NullS, NullS,
&((Item_field*) this)->field_name);
if (!rf)
return 0;
return rf;
}
}
DBUG_ASSERT(item->type() == Item::FIELD_ITEM ||
(item->type() == Item::REF_ITEM &&
((Item_ref *) item)->ref_type() == Item_ref::VIEW_REF));
Item_field *field_item= NULL;
table_map map= sel->master_unit()->derived->table->map;
Item_equal *item_equal= item->get_item_equal();
if (!item_equal)
field_item= (Item_field *)(item->real_item());
else
{
Item_equal *cond= (Item_equal *) ((Item_field*)this)->item_equal;
Item_equal_fields_iterator li(*cond);
Item *item;
while ((item=li++))
Item_equal_fields_iterator li(*item_equal);
Item *equal_item;
while ((equal_item= li++))
{
if (item->used_tables() == map && item->real_item()->type() == FIELD_ITEM)
if (equal_item->used_tables() == map)
{
Item_ref *rf=
new (thd->mem_root) Item_ref(thd, &sl->context,
field_item= (Item_field *)(equal_item->real_item());
break;
}
}
}
if (field_item)
{
Item_ref *ref= new (thd->mem_root) Item_ref(thd, &sel->context,
NullS, NullS,
&((Item_field*) (item->real_item()))->
field_name);
if (!rf)
return 0;
return rf;
&field_item->field_name);
return ref;
}
DBUG_ASSERT(0);
return NULL;
}
Item *Item_field::derived_field_transformer_for_having(THD *thd, uchar *arg)
{
st_select_lex *sel= (st_select_lex *)arg;
table_map tab_map= sel->master_unit()->derived->table->map;
if (item_equal && !(item_equal->used_tables() & tab_map))
return this;
if (!item_equal && used_tables() != tab_map)
return this;
return get_field_item_for_having(thd, this, sel);
}
Item *Item_direct_view_ref::derived_field_transformer_for_having(THD *thd,
uchar *arg)
{
st_select_lex *sel= (st_select_lex *)arg;
table_map tab_map= sel->master_unit()->derived->table->map;
if ((item_equal && !(item_equal->used_tables() & tab_map)) ||
!item_equal)
return this;
return get_field_item_for_having(thd, this, sel);
}
static
Item *find_producing_item(Item *item, st_select_lex *sel)
{
DBUG_ASSERT(item->type() == Item::FIELD_ITEM ||
(item->type() == Item::REF_ITEM &&
((Item_ref *) item)->ref_type() == Item_ref::VIEW_REF));
Item *producing_item;
Item_field *field_item= NULL;
Item_equal *item_equal= item->get_item_equal();
table_map tab_map= sel->master_unit()->derived->table->map;
if (item->used_tables() == tab_map)
field_item= (Item_field *) (item->real_item());
if (!field_item && item_equal)
{
Item_equal_fields_iterator it(*item_equal);
Item *equal_item;
while ((equal_item= it++))
{
if (equal_item->used_tables() == tab_map)
{
field_item= (Item_field *) (equal_item->real_item());
break;
}
}
}
List_iterator_fast<Item> li(sel->item_list);
if (field_item)
{
uint field_no= field_item->field->field_index;
for (uint i= 0; i <= field_no; i++)
producing_item= li++;
return producing_item;
}
return NULL;
}
Item *Item_field::derived_field_transformer_for_where(THD *thd, uchar *arg)
{
st_select_lex *sel= (st_select_lex *)arg;
Item *producing_item= find_producing_item(this, sel);
if (producing_item)
return producing_item->build_clone(thd, thd->mem_root);
return this;
}
Item *Item_direct_view_ref::derived_field_transformer_for_where(THD *thd,
uchar *arg)
{
if (item_equal)
{
st_select_lex *sel= (st_select_lex *)arg;
Item *producing_item= find_producing_item(this, sel);
DBUG_ASSERT (producing_item != NULL);
return producing_item->build_clone(thd, thd->mem_root);
}
return this;
}
Item *Item_field::derived_field_transformer_for_where(THD *thd, uchar *arg)
static
Grouping_tmp_field *find_matching_grouping_field(Item *item,
st_select_lex *sel)
{
Item *producing_item;
st_select_lex *sl= (st_select_lex *)arg;
List_iterator_fast<Item> li(sl->item_list);
table_map map= sl->master_unit()->derived->table->map;
if (used_tables() == map)
{
uint field_no= ((Item_field*) this)->field->field_index;
for (uint i= 0; i <= field_no; i++)
producing_item= li++;
return producing_item->build_clone(thd, thd->mem_root);
}
else if (((Item_field*)this)->item_equal)
{
Item_equal *cond= (Item_equal *) ((Item_field*)this)->item_equal;
Item_equal_fields_iterator it(*cond);
Item *item;
while ((item=it++))
{
if (item->used_tables() == map && item->real_item()->type() == FIELD_ITEM)
{
DBUG_ASSERT(item->type() == Item::FIELD_ITEM ||
(item->type() == Item::REF_ITEM &&
((Item_ref *) item)->ref_type() == Item_ref::VIEW_REF));
List_iterator<Grouping_tmp_field> li(sel->grouping_tmp_fields);
Grouping_tmp_field *gr_field;
Item_field *field_item= (Item_field *) (item->real_item());
while ((gr_field= li++))
{
if (field_item->field == gr_field->tmp_field)
return gr_field;
}
Item_equal *item_equal= item->get_item_equal();
if (item_equal)
{
Item_equal_fields_iterator it(*item_equal);
Item *equal_item;
while ((equal_item= it++))
{
field_item= (Item_field *) (equal_item->real_item());
li.rewind();
uint field_no= field_item->field->field_index;
for (uint i= 0; i <= field_no; i++)
producing_item= li++;
return producing_item->build_clone(thd, thd->mem_root);
while ((gr_field= li++))
{
if (field_item->field == gr_field->tmp_field)
return gr_field;
}
}
}
return this;
return NULL;
}
Item *Item_field::derived_grouping_field_transformer_for_where(THD *thd,
uchar *arg)
{
st_select_lex *sl= (st_select_lex *)arg;
List_iterator<Grouping_tmp_field> li(sl->grouping_tmp_fields);
Grouping_tmp_field *field;
table_map map= sl->master_unit()->derived->table->map;
if (used_tables() == map)
{
while ((field=li++))
{
if (((Item_field*) this)->field == field->tmp_field)
return field->producing_item->build_clone(thd, thd->mem_root);
}
}
else if (((Item_field*)this)->item_equal)
{
Item_equal *cond= (Item_equal *) ((Item_field*)this)->item_equal;
Item_equal_fields_iterator it(*cond);
Item *item;
while ((item=it++))
{
if (item->used_tables() == map && item->real_item()->type() == FIELD_ITEM)
{
Item_field *field_item= (Item_field *) (item->real_item());
li.rewind();
while ((field=li++))
{
if (field_item->field == field->tmp_field)
{
return field->producing_item->build_clone(thd, thd->mem_root);
}
}
}
}
}
st_select_lex *sel= (st_select_lex *)arg;
Grouping_tmp_field *gr_field= find_matching_grouping_field(this, sel);
if (gr_field)
return gr_field->producing_item->build_clone(thd, thd->mem_root);
return this;
}
Item *
Item_direct_view_ref::derived_grouping_field_transformer_for_where(THD *thd,
uchar *arg)
{
if (!item_equal)
return this;
st_select_lex *sel= (st_select_lex *)arg;
Grouping_tmp_field *gr_field= find_matching_grouping_field(this, sel);
return gr_field->producing_item->build_clone(thd, thd->mem_root);
}
void Item_field::print(String *str, enum_query_type query_type)
{
if (field && field->table->const_table &&
@ -8720,6 +8779,32 @@ Item *Item_direct_view_ref::replace_equal_field(THD *thd, uchar *arg)
}
bool Item_direct_view_ref::excl_dep_on_table(table_map tab_map)
{
table_map used= used_tables();
if (used & OUTER_REF_TABLE_BIT)
return false;
if (!(used & ~tab_map))
return true;
if (item_equal)
{
DBUG_ASSERT(real_item()->type() == Item::FIELD_ITEM);
return item_equal->used_tables() & tab_map;
}
return (*ref)->excl_dep_on_table(tab_map);
}
bool Item_direct_view_ref::excl_dep_on_grouping_fields(st_select_lex *sel)
{
if (item_equal)
{
DBUG_ASSERT(real_item()->type() == Item::FIELD_ITEM);
return find_matching_grouping_field(this, sel) != NULL;
}
return (*ref)->excl_dep_on_grouping_fields(sel);
}
bool Item_default_value::eq(const Item *item, bool binary_cmp) const
{
return item->type() == DEFAULT_VALUE_ITEM &&
@ -10128,46 +10213,16 @@ const char *dbug_print_unit(SELECT_LEX_UNIT *un)
#endif /*DBUG_OFF*/
bool Item_field::exclusive_dependence_on_table_processor(void *map)
bool Item_field::excl_dep_on_table(table_map tab_map)
{
table_map tab_map= *((table_map *) map);
return !((used_tables() == tab_map ||
(item_equal && item_equal->used_tables() & tab_map)));
return used_tables() == tab_map ||
(item_equal && (item_equal->used_tables() & tab_map));
}
bool Item_field::exclusive_dependence_on_grouping_fields_processor(void *arg)
bool
Item_field::excl_dep_on_grouping_fields(st_select_lex *sel)
{
st_select_lex *sl= (st_select_lex *)arg;
List_iterator<Grouping_tmp_field> li(sl->grouping_tmp_fields);
Grouping_tmp_field *field;
table_map map= sl->master_unit()->derived->table->map;
if (used_tables() == map)
{
while ((field=li++))
{
if (((Item_field*) this)->field == field->tmp_field)
return false;
}
}
else if (((Item_field*)this)->item_equal)
{
Item_equal *cond= (Item_equal *) ((Item_field*)this)->item_equal;
Item_equal_fields_iterator it(*cond);
Item *item;
while ((item=it++))
{
if (item->used_tables() == map && item->real_item()->type() == FIELD_ITEM)
{
li.rewind();
while ((field=li++))
{
if (((Item_field *)(item->real_item()))->field == field->tmp_field)
return false;
}
}
}
}
return true;
return find_matching_grouping_field(this, sel) != NULL;
}
void Item::register_in(THD *thd)

View File

@ -1497,8 +1497,20 @@ public:
virtual bool limit_index_condition_pushdown_processor(void *arg) { return 0; }
virtual bool exists2in_processor(void *arg) { return 0; }
virtual bool find_selective_predicates_list_processor(void *arg) { return 0; }
virtual bool exclusive_dependence_on_table_processor(void *arg) { return 0; }
virtual bool exclusive_dependence_on_grouping_fields_processor(void *arg) { return 0; }
/*
TRUE if the expression depends only on the table indicated by tab_map
or can be converted to such an exression using equalities.
Not to be used for AND/OR formulas.
*/
virtual bool excl_dep_on_table(table_map tab_map) { return false; }
/*
TRUE if the expression depends only on grouping fields of sel
or can be converted to such an exression using equalities.
Not to be used for AND/OR formulas.
*/
virtual bool excl_dep_on_grouping_fields(st_select_lex *sel) { return false; }
virtual bool switch_to_nullable_fields_processor(void *arg) { return 0; }
virtual bool find_function_processor (void *arg) { return 0; }
/*
@ -1934,6 +1946,28 @@ protected:
}
bool transform_args(THD *thd, Item_transformer transformer, uchar *arg);
void propagate_equal_fields(THD *, const Item::Context &, COND_EQUAL *);
bool excl_dep_on_table(table_map tab_map)
{
for (uint i= 0; i < arg_count; i++)
{
if (args[i]->const_item())
continue;
if (!args[i]->excl_dep_on_table(tab_map))
return false;
}
return true;
}
bool excl_dep_on_grouping_fields(st_select_lex *sel)
{
for (uint i= 0; i < arg_count; i++)
{
if (args[i]->const_item())
continue;
if (!args[i]->excl_dep_on_grouping_fields(sel))
return false;
}
return true;
}
public:
Item_args(void)
:args(NULL), arg_count(0)
@ -2795,8 +2829,8 @@ public:
Item *derived_field_transformer_for_where(THD *thd, uchar *arg);
Item *derived_grouping_field_transformer_for_where(THD *thd, uchar *arg);
virtual void print(String *str, enum_query_type query_type);
bool exclusive_dependence_on_table_processor(void *map);
bool exclusive_dependence_on_grouping_fields_processor(void *arg);
bool excl_dep_on_table(table_map tab_map);
bool excl_dep_on_grouping_fields(st_select_lex *sel);
bool cleanup_excluding_fields_processor(void *arg)
{ return field ? 0 : cleanup_processor(arg); }
bool cleanup_excluding_const_fields_processor(void *arg)
@ -4426,10 +4460,15 @@ public:
}
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_ref>(thd, mem_root, this); }
bool exclusive_dependence_on_table_processor(void *map)
{ return depended_from != NULL; }
bool exclusive_dependence_on_grouping_fields_processor(void *arg)
{ return depended_from != NULL; }
bool excl_dep_on_table(table_map tab_map)
{
table_map used= used_tables();
if (used & OUTER_REF_TABLE_BIT)
return false;
return (used == tab_map) || (*ref)->excl_dep_on_table(tab_map);
}
bool excl_dep_on_grouping_fields(st_select_lex *sel)
{ return (*ref)->excl_dep_on_grouping_fields(sel); }
bool cleanup_excluding_fields_processor(void *arg)
{
Item *item= real_item();
@ -4732,6 +4771,13 @@ public:
view_arg->view_used_tables|= (*ref)->used_tables();
return 0;
}
bool excl_dep_on_table(table_map tab_map);
bool excl_dep_on_grouping_fields(st_select_lex *sel);
Item *derived_field_transformer_for_having(THD *thd, uchar *arg);
Item *derived_field_transformer_for_where(THD *thd, uchar *arg);
Item *derived_grouping_field_transformer_for_where(THD *thd,
uchar *arg);
void save_val(Field *to)
{
if (check_null_ref())
@ -4813,6 +4859,8 @@ public:
item_equal= NULL;
Item_direct_ref::cleanup();
}
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_direct_view_ref>(thd, mem_root, this); }
};

View File

@ -2945,6 +2945,14 @@ public:
void set_context_field(Item_field *ctx_field) { context_field= ctx_field; }
void set_link_equal_fields(bool flag) { link_equal_fields= flag; }
Item* get_copy(THD *thd, MEM_ROOT *mem_root) { return 0; }
/*
This does not comply with the specification of the virtual method,
but Item_equal items are processed distinguishly anyway
*/
bool excl_dep_on_table(table_map tab_map)
{
return used_tables() & tab_map;
}
friend class Item_equal_fields_iterator;
bool count_sargable_conds(void *arg);
friend class Item_equal_iterator<List_iterator_fast,Item>;

View File

@ -310,6 +310,19 @@ public:
return this;
}
bool excl_dep_on_table(table_map tab_map)
{
if (used_tables() & OUTER_REF_TABLE_BIT)
return false;
return !(used_tables() & ~tab_map) ||
Item_args::excl_dep_on_table(tab_map);
}
bool excl_dep_on_grouping_fields(st_select_lex *sel)
{
return Item_args::excl_dep_on_grouping_fields(sel);
}
/*
We assume the result of any function that has a TIMESTAMP argument to be
timezone-dependent, since a TIMESTAMP value in both numeric and string

View File

@ -120,6 +120,16 @@ public:
return this;
}
bool excl_dep_on_table(table_map tab_map)
{
return Item_args::excl_dep_on_table(tab_map);
}
bool excl_dep_on_grouping_fields(st_select_lex *sel)
{
return Item_args::excl_dep_on_grouping_fields(sel);
}
bool check_vcol_func_processor(void *arg) {return FALSE; }
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_row>(thd, mem_root, this); }

View File

@ -7108,10 +7108,13 @@ bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array,
split_sum_func() must be called for Window Function items, see
Item_window_func::split_sum_func.
*/
if ((item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM &&
sum_func_list) || item->with_window_func)
if (sum_func_list &&
((item->with_sum_func && item->type() != Item::SUM_FUNC_ITEM) ||
item->with_window_func))
{
item->split_sum_func(thd, ref_pointer_array, *sum_func_list,
SPLIT_SUM_SELECT);
}
thd->lex->current_select->select_list_tables|= item->used_tables();
thd->lex->used_tables|= item->used_tables();
thd->lex->current_select->cur_pos_in_select_list++;

View File

@ -4609,26 +4609,47 @@ extern "C" const struct charset_info_st *thd_charset(MYSQL_THD thd)
return(thd->charset());
}
/**
OBSOLETE : there's no way to ensure the string is null terminated.
Use thd_query_string instead()
*/
extern "C" char **thd_query(MYSQL_THD thd)
{
return (&thd->query_string.string.str);
}
/**
Get the current query string for the thread.
This function is not thread safe and can be used only by thd owner thread.
@param The MySQL internal thread pointer
@return query string and length. May be non-null-terminated.
*/
extern "C" LEX_STRING * thd_query_string (MYSQL_THD thd)
{
DBUG_ASSERT(thd == current_thd);
return(&thd->query_string.string);
}
/**
Get the current query string for the thread.
@param thd The MySQL internal thread pointer
@param buf Buffer where the query string will be copied
@param buflen Length of the buffer
@return Length of the query
@note This function is thread safe as the query string is
accessed under mutex protection and the string is copied
into the provided buffer. @see thd_query_string().
*/
extern "C" size_t thd_query_safe(MYSQL_THD thd, char *buf, size_t buflen)
{
mysql_mutex_lock(&thd->LOCK_thd_data);
size_t len= MY_MIN(buflen - 1, thd->query_length());
memcpy(buf, thd->query(), len);
mysql_mutex_unlock(&thd->LOCK_thd_data);
buf[len]= '\0';
return len;
}
extern "C" int thd_slave_thread(const MYSQL_THD thd)
{
return(thd->slave_thread);

View File

@ -153,7 +153,7 @@ extern MYSQL_PLUGIN_IMPORT const char **errmesg;
extern bool volatile shutdown_in_progress;
extern "C" LEX_STRING * thd_query_string (MYSQL_THD thd);
extern "C" char **thd_query(MYSQL_THD thd);
extern "C" size_t thd_query_safe(MYSQL_THD thd, char *buf, size_t buflen);
/**
@class CSET_STRING
@ -183,7 +183,6 @@ public:
CHARSET_INFO *charset() const { return cs; }
friend LEX_STRING * thd_query_string (MYSQL_THD thd);
friend char **thd_query(MYSQL_THD thd);
};

View File

@ -1247,7 +1247,7 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived)
Item *cond_over_grouping_fields;
sl->collect_grouping_fields(thd);
sl->check_cond_extraction_for_grouping_fields(extracted_cond_copy,
&Item::exclusive_dependence_on_grouping_fields_processor);
derived);
cond_over_grouping_fields=
sl->build_cond_for_grouping_fields(thd, extracted_cond_copy, true);
@ -1286,7 +1286,8 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived)
if (!extracted_cond_copy)
continue;
extracted_cond_copy->walk(&Item::cleanup_processor, 0, 0);
extracted_cond_copy->walk(&Item::cleanup_excluding_const_fields_processor,
0, 0);
sl->cond_pushed_into_having= extracted_cond_copy;
}
thd->lex->current_select= save_curr_select;

View File

@ -6901,8 +6901,9 @@ void st_select_lex::collect_grouping_fields(THD *thd)
from cond.
*/
void st_select_lex::check_cond_extraction_for_grouping_fields(Item *cond,
Item_processor check_processor)
void
st_select_lex::check_cond_extraction_for_grouping_fields(Item *cond,
TABLE_LIST *derived)
{
cond->clear_extraction_flag();
if (cond->type() == Item::COND_ITEM)
@ -6915,7 +6916,7 @@ void st_select_lex::check_cond_extraction_for_grouping_fields(Item *cond,
Item *item;
while ((item=li++))
{
check_cond_extraction_for_grouping_fields(item, check_processor);
check_cond_extraction_for_grouping_fields(item, derived);
if (item->get_extraction_flag() != NO_EXTRACTION_FL)
{
count++;
@ -6937,9 +6938,11 @@ void st_select_lex::check_cond_extraction_for_grouping_fields(Item *cond,
}
}
else
cond->set_extraction_flag(cond->walk(check_processor,
0, (uchar *) this) ?
NO_EXTRACTION_FL : FULL_EXTRACTION_FL);
{
int fl= cond->excl_dep_on_grouping_fields(this) ?
FULL_EXTRACTION_FL : NO_EXTRACTION_FL;
cond->set_extraction_flag(fl);
}
}

View File

@ -1196,7 +1196,7 @@ public:
bool check_subqueries_with_recursive_references();
void collect_grouping_fields(THD *thd);
void check_cond_extraction_for_grouping_fields(Item *cond,
Item_processor processor);
TABLE_LIST *derived);
Item *build_cond_for_grouping_fields(THD *thd, Item *cond,
bool no_to_clones);

View File

@ -2799,6 +2799,7 @@ retry:
! table->prelocking_placeholder &&
table->table->file->lock_count() == 0)
{
enum enum_mdl_type lock_type;
/*
In case when LOCK TABLE ... READ LOCAL was issued for table with
storage engine which doesn't support READ LOCAL option and doesn't
@ -2811,9 +2812,12 @@ retry:
deadlock_handler.init();
thd->push_internal_handler(&deadlock_handler);
lock_type= table->table->mdl_ticket->get_type() == MDL_SHARED_WRITE ?
MDL_SHARED_NO_READ_WRITE : MDL_SHARED_READ_ONLY;
bool result= thd->mdl_context.upgrade_shared_lock(
table->table->mdl_ticket,
MDL_SHARED_READ_ONLY,
lock_type,
thd->variables.lock_wait_timeout);
thd->pop_internal_handler();

View File

@ -8140,8 +8140,7 @@ void TABLE_LIST::check_pushable_cond_for_table(Item *cond)
item->clear_extraction_flag();
}
}
else if (cond->walk(&Item::exclusive_dependence_on_table_processor,
0, (void *) &tab_map))
else if (!cond->excl_dep_on_table(tab_map))
cond->set_extraction_flag(NO_EXTRACTION_FL);
}

View File

@ -917,6 +917,15 @@ buf_flush_init_for_writing(
case 1:
reset_type = FIL_PAGE_IBUF_BITMAP;
break;
case FSP_TRX_SYS_PAGE_NO:
if (block->page.id.page_no()
== TRX_SYS_PAGE_NO
&& block->page.id.space()
== TRX_SYS_SPACE) {
reset_type = FIL_PAGE_TYPE_TRX_SYS;
break;
}
/* fall through */
default:
switch (page_type) {
case FIL_PAGE_INDEX:
@ -3124,12 +3133,6 @@ DECLARE_THREAD(buf_flush_page_cleaner_coordinator)(
os_thread_create */
{
my_thread_init();
ulint next_loop_time = ut_time_ms() + 1000;
ulint n_flushed = 0;
ulint last_activity = srv_get_activity_count();
ulint last_pages = 0;
my_thread_init();
#ifdef UNIV_PFS_THREAD
pfs_register_thread(page_cleaner_thread_key);
#endif /* UNIV_PFS_THREAD */
@ -3151,6 +3154,8 @@ DECLARE_THREAD(buf_flush_page_cleaner_coordinator)(
" page cleaner thread priority can be changed."
" See the man page of setpriority().";
}
/* Signal that setpriority() has been attempted. */
os_event_set(recv_sys->flush_end);
#endif /* UNIV_LINUX */
while (!srv_read_only_mode
@ -3200,6 +3205,10 @@ DECLARE_THREAD(buf_flush_page_cleaner_coordinator)(
ulint warn_interval = 1;
ulint warn_count = 0;
int64_t sig_count = os_event_reset(buf_flush_event);
ulint next_loop_time = ut_time_ms() + 1000;
ulint n_flushed = 0;
ulint last_activity = srv_get_activity_count();
ulint last_pages = 0;
while (srv_shutdown_state == SRV_SHUTDOWN_NONE) {

View File

@ -2505,6 +2505,7 @@ dict_create_or_check_sys_tablespace(void)
<< ". Dropping incompletely created tables.";
ut_a(err == DB_OUT_OF_FILE_SPACE
|| err == DB_DUPLICATE_KEY
|| err == DB_TOO_MANY_CONCURRENT_TRXS);
row_drop_table_for_mysql("SYS_TABLESPACES", trx, TRUE, TRUE);
@ -2532,11 +2533,11 @@ dict_create_or_check_sys_tablespace(void)
sys_tablespaces_err = dict_check_if_system_table_exists(
"SYS_TABLESPACES", DICT_NUM_FIELDS__SYS_TABLESPACES + 1, 1);
ut_a(sys_tablespaces_err == DB_SUCCESS);
ut_a(sys_tablespaces_err == DB_SUCCESS || err != DB_SUCCESS);
sys_datafiles_err = dict_check_if_system_table_exists(
"SYS_DATAFILES", DICT_NUM_FIELDS__SYS_DATAFILES + 1, 1);
ut_a(sys_datafiles_err == DB_SUCCESS);
ut_a(sys_datafiles_err == DB_SUCCESS || err != DB_SUCCESS);
return(err);
}

View File

@ -2386,22 +2386,7 @@ innobase_get_stmt_safe(
char* buf,
size_t buflen)
{
LEX_STRING* stmt;
size_t length=0;
ut_ad(buflen > 1);
stmt = thd ? thd_query_string(thd) : NULL;
if (stmt && stmt->str) {
length = stmt->length >= buflen ? buflen - 1 : stmt->length;
memcpy(buf, stmt->str, length);
buf[length]='\0';
} else {
buf[0]='\0';
}
return (length);
return thd_query_safe(thd, buf, buflen);
}
/**********************************************************************//**

View File

@ -1011,6 +1011,7 @@ ha_innobase::check_if_supported_inplace_alter(
constant DEFAULT expression. */
cf_it.rewind();
Field **af = altered_table->field;
while (Create_field* cf = cf_it++) {
DBUG_ASSERT(cf->field
|| (ha_alter_info->handler_flags
@ -1018,49 +1019,71 @@ ha_innobase::check_if_supported_inplace_alter(
if (const Field* f = cf->field) {
/* This could be changing an existing column
from NULL to NOT NULL. For now, ensure that
the DEFAULT is a constant. */
if (~ha_alter_info->handler_flags
& (Alter_inplace_info::ALTER_COLUMN_NOT_NULLABLE
| Alter_inplace_info::ALTER_COLUMN_DEFAULT)
from NULL to NOT NULL. */
switch ((*af)->type()) {
case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_TIMESTAMP2:
/* Inserting NULL into a TIMESTAMP column
would cause the DEFAULT value to be
replaced. Ensure that the DEFAULT
expression is not changing during
ALTER TABLE. */
if (!f->real_maybe_null()
|| (*af)->real_maybe_null()) {
/* This ALTER TABLE is not both changing
a column to NOT NULL and changing the
DEFAULT value of a column, or this column
does allow NULL after the ALTER TABLE. */
/* The column was NOT NULL, or it
will allow NULL after ALTER TABLE. */
goto next_column;
}
/* Find the matching column in the old table. */
Field** fp;
for (fp = table->field; *fp; fp++) {
if (f != *fp) {
continue;
}
if (!f->real_maybe_null()) {
/* The column already is NOT NULL. */
goto next_column;
}
break;
}
/* The column must be found in the old table. */
DBUG_ASSERT(fp < &table->field[table->s->fields]);
}
if (!(*af)->default_value
|| (*af)->default_value->flags == 0) {
/* The NOT NULL column is not
carrying a non-constant DEFAULT. */
&& (*af)->is_real_null()) {
/* No DEFAULT value is
specified. We can report
errors for any NULL values for
the TIMESTAMP.
FIXME: Allow any DEFAULT
expression whose value does
not change during ALTER TABLE.
This would require a fix in
row_merge_read_clustered_index()
to try to replace the DEFAULT
value before reporting
DB_INVALID_NULL. */
goto next_column;
}
break;
default:
/* For any other data type, NULL
values are not converted.
(An AUTO_INCREMENT attribute cannot
be introduced to a column with
ALGORITHM=INPLACE.) */
ut_ad((MTYP_TYPENR((*af)->unireg_check)
== Field::NEXT_NUMBER)
== (MTYP_TYPENR(f->unireg_check)
== Field::NEXT_NUMBER));
goto next_column;
}
/* TODO: Allow NULL column values to
be replaced with a non-constant DEFAULT. */
if (cf->field) {
ha_alter_info->unsupported_reason
= innobase_get_err_msg(
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON_NOT_NULL);
} else if (!(*af)->default_value
|| !((*af)->default_value->flags
& ~(VCOL_SESSION_FUNC | VCOL_TIME_FUNC))) {
/* The added NOT NULL column lacks a DEFAULT value,
or the DEFAULT is the same for all rows.
(Time functions, such as CURRENT_TIMESTAMP(),
are evaluated from a timestamp that is assigned
at the start of the statement. Session
functions, such as USER(), always evaluate the
same within a statement.) */
/* Compute the DEFAULT values of non-constant columns
(VCOL_SESSION_FUNC | VCOL_TIME_FUNC). */
(*af)->set_default();
goto next_column;
}
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
@ -4471,11 +4494,13 @@ prepare_inplace_alter_table_dict(
|| !innobase_fulltext_exist(altered_table))) {
/* InnoDB can perform an online operation (LOCK=NONE). */
} else {
size_t query_length;
/* This should have been blocked in
check_if_supported_inplace_alter(). */
ut_ad(0);
my_error(ER_NOT_SUPPORTED_YET, MYF(0),
thd_query(ctx->prebuilt->trx->mysql_thd));
innobase_get_stmt_unsafe(ctx->prebuilt->trx->mysql_thd,
&query_length));
goto error_handled;
}

View File

@ -70,11 +70,6 @@ Created 9/17/2000 Heikki Tuuri
#include <deque>
#include <vector>
static const char* MODIFICATIONS_NOT_ALLOWED_MSG_FORCE_RECOVERY =
"innodb_force_recovery is on. We do not allow database modifications"
" by the user. Shut down mysqld and edit my.cnf to set"
" innodb_force_recovery=0";
/** Provide optional 4.x backwards compatibility for 5.0 and above */
ibool row_rollback_on_timeout = FALSE;
@ -1432,9 +1427,7 @@ row_insert_for_mysql(
} else if (!prebuilt->table->is_readable()) {
return(row_mysql_get_table_status(prebuilt->table, trx, true));
} else if (srv_force_recovery) {
ib::error() << MODIFICATIONS_NOT_ALLOWED_MSG_FORCE_RECOVERY;
} else if (high_level_read_only) {
return(DB_READ_ONLY);
}
DBUG_EXECUTE_IF("mark_table_corrupted", {
@ -1850,9 +1843,8 @@ row_update_for_mysql_using_upd_graph(
return(row_mysql_get_table_status(table, trx, true));
}
if(srv_force_recovery) {
ib::error() << MODIFICATIONS_NOT_ALLOWED_MSG_FORCE_RECOVERY;
DBUG_RETURN(DB_READ_ONLY);
if (high_level_read_only) {
return(DB_READ_ONLY);
}
DEBUG_SYNC_C("innodb_row_update_for_mysql_begin");
@ -4474,10 +4466,8 @@ row_rename_table_for_mysql(
ut_a(new_name != NULL);
ut_ad(trx->state == TRX_STATE_ACTIVE);
if (srv_force_recovery) {
ib::info() << MODIFICATIONS_NOT_ALLOWED_MSG_FORCE_RECOVERY;
err = DB_READ_ONLY;
goto funct_exit;
if (high_level_read_only) {
return(DB_READ_ONLY);
} else if (row_mysql_is_system_table(new_name)) {

View File

@ -1471,10 +1471,6 @@ innobase_start_or_create_for_mysql()
srv_read_only_mode = true;
}
if (srv_force_recovery == SRV_FORCE_NO_LOG_REDO) {
srv_read_only_mode = 1;
}
high_level_read_only = srv_read_only_mode
|| srv_force_recovery > SRV_FORCE_NO_TRX_UNDO;
@ -1865,6 +1861,10 @@ innobase_start_or_create_for_mysql()
NULL, NULL);
}
#ifdef UNIV_LINUX
/* Wait for the setpriority() call to finish. */
os_event_wait(recv_sys->flush_end);
#endif /* UNIV_LINUX */
srv_start_state_set(SRV_START_STATE_IO);
}
@ -2573,13 +2573,15 @@ files_checked:
operations */
if (!srv_read_only_mode) {
thread_handles[1 + SRV_MAX_N_IO_THREADS] = os_thread_create(
srv_master_thread,
NULL, thread_ids + (1 + SRV_MAX_N_IO_THREADS));
thread_started[1 + SRV_MAX_N_IO_THREADS] = true;
srv_start_state_set(SRV_START_STATE_MASTER);
}
if (!srv_read_only_mode
&& srv_force_recovery < SRV_FORCE_NO_BACKGROUND) {
srv_undo_sources = true;
/* Create the dict stats gathering thread */
srv_dict_stats_thread_active = true;
@ -2588,10 +2590,6 @@ files_checked:
/* Create the thread that will optimize the FTS sub-system. */
fts_optimize_init();
}
if (!srv_read_only_mode
&& srv_force_recovery < SRV_FORCE_NO_BACKGROUND) {
thread_handles[5 + SRV_MAX_N_IO_THREADS] = os_thread_create(
srv_purge_coordinator_thread,

View File

@ -285,6 +285,12 @@ trx_purge_add_update_undo_to_history(
purge have been started, recv_recovery_rollback_active() can
start transactions in row_merge_drop_temp_indexes() and
fts_drop_orphaned_tables(), and roll back recovered transactions.
Arbitrary user transactions may be executed when all the undo log
related background processes (including purge) are disabled due to
innodb_force_recovery=2 or innodb_force_recovery=3.
DROP TABLE may be executed at any innodb_force_recovery level.
After the purge thread has been given permission to exit,
in fast shutdown, we may roll back transactions (trx->undo_no==0)
in THD::cleanup() invoked from unlink_thd(). */
@ -292,6 +298,8 @@ trx_purge_add_update_undo_to_history(
|| ((srv_startup_is_before_trx_rollback_phase
|| trx_rollback_or_clean_is_active)
&& purge_sys->state == PURGE_STATE_INIT)
|| (srv_force_recovery >= SRV_FORCE_NO_BACKGROUND
&& purge_sys->state == PURGE_STATE_DISABLED)
|| (trx->undo_no == 0 && srv_fast_shutdown));
/* Add the log as the first in the history list */

View File

@ -323,7 +323,6 @@ trx_sys_read_wsrep_checkpoint(
long long seqno= -1;
memcpy(xid->data + 24, &seqno, sizeof(long long));
xid->formatID = -1;
trx_sys_update_wsrep_checkpoint(xid, sys_header, &mtr);
mtr_commit(&mtr);
return;
}

View File

@ -0,0 +1,71 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/cache_index.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/cache_index.reject 2017-06-22 01:11:22.479981459 +0300
@@ -12,31 +12,31 @@
SET GLOBAL <CACHE_NAME>.key_buffer_size=128*1024;
CACHE INDEX t1 INDEX (a), t2 IN <CACHE_NAME>;
Table Op Msg_type Msg_text
-test.t1 assign_to_keycache status OK
-test.t2 assign_to_keycache status OK
+test.t1 assign_to_keycache note The storage engine for the table doesn't support assign_to_keycache
+test.t2 assign_to_keycache note The storage engine for the table doesn't support assign_to_keycache
LOAD INDEX INTO CACHE t1, t2;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
-test.t2 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.t2 preload_keys note The storage engine for the table doesn't support preload_keys
INSERT INTO t1 (a,b) VALUES (3,'c'),(4,'d');
SET GLOBAL <CACHE_NAME>.key_buffer_size=8*1024;
LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
-test.t2 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
+test.t2 preload_keys note The storage engine for the table doesn't support preload_keys
SET GLOBAL <CACHE_NAME>.key_cache_age_threshold = 100, <CACHE_NAME>.key_cache_block_size = 512, <CACHE_NAME>.key_cache_division_limit = 1, <CACHE_NAME>.key_cache_segments=2;
INSERT INTO t1 (a,b) VALUES (5,'e'),(6,'f');
LOAD INDEX INTO CACHE t1;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
SET GLOBAL new_<CACHE_NAME>.key_buffer_size=128*1024;
CACHE INDEX t1 IN new_<CACHE_NAME>;
Table Op Msg_type Msg_text
-test.t1 assign_to_keycache status OK
+test.t1 assign_to_keycache note The storage engine for the table doesn't support assign_to_keycache
INSERT INTO t1 (a,b) VALUES (7,'g'),(8,'h');
LOAD INDEX INTO CACHE t1 IGNORE LEAVES;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
INSERT INTO t1 (a,b) VALUES (9,'i');
DROP TABLE t2;
DROP TABLE t1;
@@ -47,11 +47,11 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
CACHE INDEX t1 IN <CACHE_NAME>;
Table Op Msg_type Msg_text
-test.t1 assign_to_keycache status OK
+test.t1 assign_to_keycache note The storage engine for the table doesn't support assign_to_keycache
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
LOAD INDEX INTO CACHE t1;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -59,11 +59,11 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
CACHE INDEX t1 IN <CACHE_NAME>;
Table Op Msg_type Msg_text
-test.t1 assign_to_keycache status OK
+test.t1 assign_to_keycache note The storage engine for the table doesn't support assign_to_keycache
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
LOAD INDEX INTO CACHE t1;
Table Op Msg_type Msg_text
-test.t1 preload_keys status OK
+test.t1 preload_keys note The storage engine for the table doesn't support preload_keys
DROP TABLE t1;
SET GLOBAL <CACHE_NAME>.key_buffer_size=0;
SET GLOBAL new_<CACHE_NAME>.key_buffer_size=0;

View File

@ -0,0 +1,13 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/checksum_table_live.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/checksum_table_live.reject 2017-06-22 01:12:38.695980980 +0300
@@ -11,8 +11,8 @@
test.t1 4272806499
CHECKSUM TABLE t1, t2 QUICK;
Table Checksum
-test.t1 4272806499
-test.t2 0
+test.t1 NULL
+test.t2 NULL
CHECKSUM TABLE t1, t2 EXTENDED;
Table Checksum
test.t1 4272806499

View File

@ -0,0 +1,25 @@
###########################################
#
# This is a stub of the include file cleanup_engine.inc which
# should be placed in storage/<engine>/mysql-test/storage_engine folder.
#
################################
#
# Here you can add whatever is needed to cleanup
# in case your define_engine.inc created any artefacts,
# e.g. an additional schema and/or tables.
--let $datadir= `SELECT @@datadir`
--error 0,1
--file_exists $datadir/.rocksdb/*
if (!$mysql_errno)
{
--enable_reconnect
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--rmdir $datadir/.rocksdb
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--source include/wait_until_connected_again.inc
}

View File

@ -0,0 +1,45 @@
###########################################
#
# This is a template of the include file define_engine.inc which
# should be placed in storage/<engine>/mysql-test/storage_engine folder.
#
################################
#
# The name of the engine under test must be defined in $ENGINE variable.
# You can set it either here (uncomment and edit) or in your environment.
#
let $ENGINE = RocksDB;
#
################################
#
# The following three variables define specific options for columns and tables.
# Normally there should be none needed, but for some engines it can be different.
# If the engine requires specific column option for all or indexed columns,
# set them inside the comment, e.g. /*!NOT NULL*/.
# Do the same for table options if needed, e.g. /*!INSERT_METHOD=LAST*/
let $default_col_opts = /*!*/;
let $default_col_indexed_opts = /*!*/;
let $default_tbl_opts = /*!*/;
# INDEX, UNIQUE INDEX, PRIMARY KEY, special index type - choose the fist that the engine allows,
# or set it to /*!*/ if none is supported
let $default_index = /*!INDEX*/;
# If the engine does not support the following types, replace them with the closest possible
let $default_int_type = INT(11);
let $default_char_type = CHAR(8);
################################
--disable_query_log
--disable_result_log
# Here you can place your custom MTR code which needs to be executed before each test,
# e.g. creation of an additional schema or table, etc.
# The cleanup part should be defined in cleanup_engine.inc
--enable_query_log
--enable_result_log

View File

@ -0,0 +1,25 @@
alter_tablespace : Not supported
autoinc_secondary : Not supported
create_table : MDEV-12914 - Engine for temporary tables which are implicitly created as RocksDB is substituted silently
delete_low_prio : Not supported
foreign_keys : Not supported
fulltext_search : Not supported
handler : Not supported
index_enable_disable : Not supported
insert_delayed : Not supported
insert_high_prio : Not supported
insert_low_prio : Not supported
lock : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message
lock_concurrent : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message
optimize_table : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message
repair_table : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message
select_high_prio : Not supported
show_table_status : MDEV-13152 - Indeterministic row number in SHOW TABLE STATUS on RocksDB table
tbl_opt_data_dir : Not supported
tbl_opt_index_dir : Not supported
type_spatial : Not supported
type_spatial_indexes : Not supported
update_low_prio : Not supported
update_ignore : MDEV-13151 - Indeterministic results of multi-table update on RocksDB tables
update_multi : MDEV-13151 - Indeterministic results of multi-table update on RocksDB tables
vcol : Not supported

View File

@ -0,0 +1,98 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index.reject 2017-06-22 13:55:28.615693291 +0300
@@ -4,7 +4,7 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE
+t1 1 a 1 a # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -12,8 +12,8 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a_b 1 a # # NULL NULL # BTREE a_b index
-t1 1 a_b 2 b # # NULL NULL # BTREE a_b index
+t1 1 a_b 1 a # # NULL NULL # LSMTREE a_b index
+t1 1 a_b 2 b # # NULL NULL # LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -22,46 +22,48 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE
-t1 1 b 1 b # # NULL NULL # BTREE
+t1 1 a 1 a # # NULL NULL # LSMTREE
+t1 1 b 1 b # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # BTREE
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD <CUSTOM_INDEX> (a) COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE simple index on a
+t1 1 a 1 a # # NULL NULL # LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # BTREE
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-ALTER TABLE t1 DROP INDEX a;
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ALTER TABLE t1 ADD UNIQUE INDEX a(a) ;
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,26 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_key_block_size.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_key_block_size.reject 2017-06-22 13:56:59.503692719 +0300
@@ -19,10 +19,19 @@
b <CHAR_COLUMN>,
UNIQUE INDEX ind2(b(1) DESC) KEY_BLOCK_SIZE=32768 COMMENT 'big key_block_size value'
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 ind2 1 b # # 1 NULL # # big key_block_size value
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom column options*/,
+b CHAR(8) /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX ind2(b(1) DESC) KEY_BLOCK_SIZE=32768 COMMENT 'big key_block_size value'
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique keys on char columns or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
<CUSTOM_INDEX> a_b(a,b) KEY_BLOCK_SIZE=8192

View File

@ -0,0 +1,98 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_type_btree.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_type_btree.reject 2017-06-22 13:58:02.359692324 +0300
@@ -4,7 +4,7 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE
+t1 1 a 1 a # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -12,8 +12,8 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a_b 1 a # # NULL NULL # BTREE a_b index
-t1 1 a_b 2 b # # NULL NULL # BTREE a_b index
+t1 1 a_b 1 a # # NULL NULL # LSMTREE a_b index
+t1 1 a_b 2 b # # NULL NULL # LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -22,46 +22,48 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE
-t1 1 b 1 b # # NULL NULL # BTREE
+t1 1 a 1 a # # NULL NULL # LSMTREE
+t1 1 b 1 b # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX USING BTREE (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # BTREE
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX USING BTREE (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD <CUSTOM_INDEX> (a) USING BTREE COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # BTREE simple index on a
+t1 1 a 1 a # # NULL NULL # LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX USING BTREE (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # BTREE
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-ALTER TABLE t1 DROP INDEX a;
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ALTER TABLE t1 ADD UNIQUE INDEX a(a) USING BTREE;
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX USING BTREE (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,98 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_type_hash.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/index_type_hash.reject 2017-06-22 14:00:42.867691315 +0300
@@ -4,7 +4,7 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # HASH
+t1 1 a 1 a # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -12,8 +12,8 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a_b 1 a # # NULL NULL # HASH a_b index
-t1 1 a_b 2 b # # NULL NULL # HASH a_b index
+t1 1 a_b 1 a # # NULL NULL # LSMTREE a_b index
+t1 1 a_b 2 b # # NULL NULL # LSMTREE a_b index
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
@@ -22,46 +22,48 @@
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SHOW KEYS IN t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # HASH
-t1 1 b 1 b # # NULL NULL # HASH
+t1 1 a 1 a # # NULL NULL # LSMTREE
+t1 1 b 1 b # # NULL NULL # LSMTREE
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX USING HASH (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # HASH
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX USING HASH (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (100,'z');
ALTER TABLE t1 ADD <CUSTOM_INDEX> (a) USING HASH COMMENT 'simple index on a';
SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 1 a 1 a # # NULL NULL # HASH simple index on a
+t1 1 a 1 a # # NULL NULL # LSMTREE simple index on a
ALTER TABLE t1 DROP KEY a;
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>,
b <CHAR_COLUMN>,
UNIQUE INDEX USING HASH (a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW KEYS IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a 1 a # # NULL NULL # HASH
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b');
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-ALTER TABLE t1 DROP INDEX a;
-INSERT INTO t1 (a,b) VALUES (1,'c');
-ALTER TABLE t1 ADD UNIQUE INDEX a(a) USING HASH;
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/,
+b CHAR(8) /*!*/ /*Custom column options*/,
+UNIQUE INDEX USING HASH (a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,148 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/insert_with_keys.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/insert_with_keys.reject 2017-06-22 14:01:57.539690846 +0300
@@ -22,93 +22,27 @@
6 f
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, UNIQUE INDEX(a)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
-INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
-INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
-INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
-ERROR 23000: Duplicate entry '1' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-INSERT INTO t1 (a,b) VALUES (3,'a'),(0,'');
-ERROR 23000: Duplicate entry '3' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-INSERT INTO t1 (a,b) VALUES (0,'');
-SELECT a,b FROM t1;
-a b
-0
-1 a
-100 a
-2 b
-29 n
-3 c
-30 m
-4 d
-5 e
-6 f
-INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
-Warnings:
-Warning 1062 Duplicate entry '1' for key 'a'
-INSERT INTO t1 (a,b) VALUES (3,'a'),(4,'d') ON DUPLICATE KEY UPDATE a = a+10;
-SELECT a,b FROM t1;
-a b
-0
-1 a
-100 a
-12345 z
-13 c
-14 d
-2 b
-29 n
-30 m
-5 e
-6 f
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/, b CHAR(8) /*!*/ /*Custom column options*/, UNIQUE INDEX(a)) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, UNIQUE INDEX(a,b)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
-INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
-INSERT INTO t1 (a,b) VALUES (30,'m'),(29,'n');
-INSERT INTO t1 (a,b) VALUES (100,'b'), (2,'c');
-INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
-ERROR 23000: Duplicate entry '1-a' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-SELECT a,b FROM t1;
-a b
-1 a
-100 a
-100 b
-2 b
-2 c
-29 n
-3 c
-30 m
-4 d
-5 e
-6 f
-INSERT IGNORE INTO t1 (a,b) VALUES (1,'a'),(12345,'z');
-Warnings:
-Warning 1062 Duplicate entry '1-a' for key 'a'
-INSERT INTO t1 (a,b) VALUES (1,'a'),(12345,'z') ON DUPLICATE KEY UPDATE a = a+VALUES(a);
-SELECT a,b FROM t1;
-a b
-100 a
-100 b
-2 a
-2 b
-2 c
-24690 z
-29 n
-3 c
-30 m
-4 d
-5 e
-6 f
-INSERT INTO t1 (a,b) VALUES (101,'x'),(101,'x');
-ERROR 23000: Duplicate entry '101-x' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/, b CHAR(8) /*!*/ /*Custom indexed column options*/, UNIQUE INDEX(a,b)) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Multi-part indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN> PRIMARY KEY, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e');
INSERT INTO t1 (a,b) VALUES (100,'a'), (6,'f');
@@ -153,21 +87,13 @@
6 f
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN> UNIQUE KEY, b <INT_COLUMN> UNIQUE KEY, c <INT_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 VALUES(1,1,0);
-INSERT INTO t1 VALUES(2,3,0);
-INSERT INTO t1 VALUES(3,2,0);
-INSERT INTO t1 VALUES(1,1,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(2,3,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(3,2,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(2,5,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(3,5,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(5,3,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(6,2,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(1,3,0) ON DUPLICATE KEY UPDATE c=c+1;
-INSERT INTO t1 VALUES(2,2,0) ON DUPLICATE KEY UPDATE c=c+1;
-SELECT * FROM t1;
-a b c
-1 1 2
-2 3 4
-3 2 3
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/ UNIQUE KEY, b INT(11) /*!*/ /*Custom indexed column options*/ UNIQUE KEY, c INT(11) /*!*/ /*Custom column options*/) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Multiple unique keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,15 @@
#
# This include file just replaces the storage engine under test by the generic string <STORAGE_ENGINE>
# in the next statement. More masks can be added by defining $add_regex, e.g.
# let $add_regex = /$data_dir/<DATA_DIR>/ /$index_dir/<INDEX_DIR>/
#
--let $regex = /$storage_engine/<STORAGE_ENGINE>/i / COLLATE[= ]latin1_bin//
if ($add_regex)
{
--let $regex = $regex $add_regex
}
--let $add_regex =
--replace_regex $regex

View File

@ -0,0 +1,25 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/misc.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/misc.reject 2017-06-22 02:34:23.647950149 +0300
@@ -28,6 +28,9 @@
SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE ORDER BY TABLE_NAME;
TABLE_NAME COLUMN_NAME REFERENCED_TABLE_NAME REFERENCED_COLUMN_NAME
+Warning 1286 Unknown storage engine 'InnoDB'
+Warning 1286 Unknown storage engine 'InnoDB'
+Warnings:
column_stats column_name NULL NULL
column_stats db_name NULL NULL
column_stats table_name NULL NULL
@@ -58,12 +61,6 @@
index_stats index_name NULL NULL
index_stats prefix_arity NULL NULL
index_stats table_name NULL NULL
-innodb_index_stats database_name NULL NULL
-innodb_index_stats index_name NULL NULL
-innodb_index_stats stat_name NULL NULL
-innodb_index_stats table_name NULL NULL
-innodb_table_stats database_name NULL NULL
-innodb_table_stats table_name NULL NULL
plugin name NULL NULL
proc db NULL NULL
proc name NULL NULL

View File

@ -0,0 +1,13 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/parts/checksum_table.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/parts/checksum_table.reject 2017-06-22 19:25:02.935568998 +0300
@@ -31,8 +31,8 @@
test.t1 4272806499
CHECKSUM TABLE t1, t2 QUICK;
Table Checksum
-test.t1 4272806499
-test.t2 0
+test.t1 NULL
+test.t2 NULL
CHECKSUM TABLE t1, t2 EXTENDED;
Table Checksum
test.t1 4272806499

View File

@ -0,0 +1,20 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/parts/create_table.result 2017-06-22 00:33:46.419995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/parts/create_table.reject 2017-06-22 19:25:05.335568983 +0300
@@ -65,7 +65,7 @@
1 SIMPLE t1 abc,def # # # # # # #
EXPLAIN PARTITIONS SELECT a FROM t1 WHERE a = 100;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE NULL NULL # # # # # # #
+1 SIMPLE t1 def # # # # # # #
INSERT INTO t1 (a) VALUES (50);
ERROR HY000: Table has no partition for value 50
DROP TABLE t1;
@@ -81,7 +81,7 @@
1 SIMPLE t1 abc_abcsp0,def_defsp0 # # # # # # #
EXPLAIN PARTITIONS SELECT a FROM t1 WHERE a = 100;
id select_type table partitions type possible_keys key key_len ref rows Extra
-1 SIMPLE NULL NULL # # # # # # #
+1 SIMPLE t1 def_defsp0 # # # # # # #
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, SUBPARTITION_NAME, PARTITION_METHOD, SUBPARTITION_METHOD
FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 't1';
TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_METHOD SUBPARTITION_METHOD

View File

@ -0,0 +1,3 @@
alter_table : MDEV-13153 - Assertion `global_status_var.global_memory_used == 0'
optimize_table : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message
repair_table : MDEV-13148 - LOCK TABLE on RocksDB table fails with a bogus error message

View File

@ -0,0 +1 @@
--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW

View File

@ -0,0 +1,31 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/replace.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/replace.reject 2017-06-22 14:03:14.971690359 +0300
@@ -20,18 +20,16 @@
5 e
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, UNIQUE INDEX (a)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-REPLACE INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c');
-INSERT INTO t1 (a,b) VALUES (2,'d');
-ERROR 23000: Duplicate entry '2' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-REPLACE INTO t1 (a,b) VALUES (2,'d');
-SELECT a,b FROM t1;
-a b
-1 a
-2 d
-3 c
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom indexed column options*/, b CHAR(8) /*!*/ /*Custom column options*/, UNIQUE INDEX (a)) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, PRIMARY KEY (b)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
REPLACE INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c');
INSERT INTO t1 (a,b) VALUES (4,'b');

View File

@ -0,0 +1,14 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/show_engine.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/show_engine.reject 2017-06-22 15:24:52.547659575 +0300
@@ -4,7 +4,10 @@
# volatile data (timestamps, memory info, etc.)
SHOW ENGINE <STORAGE_ENGINE> STATUS;
Type Name Status
-<STORAGE_ENGINE> ### Engine status, can be long and changeable ###
+DBSTATS <STORAGE_ENGINE> ### Engine status, can be long and changeable ###
+CF_COMPACTION __system__ ### Engine status, can be long and changeable ###
+CF_COMPACTION default ### Engine status, can be long and changeable ###
+Memory_Stats <STORAGE_ENGINE> ### Engine status, can be long and changeable ###
# For SHOW MUTEX even the number of lines is volatile, so the result logging is disabled,
# the test only checks that the command does not produce any errors
SHOW ENGINE <STORAGE_ENGINE> MUTEX;

View File

@ -0,0 +1,20 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/show_table_status.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/show_table_status.reject 2017-06-22 14:04:10.723690009 +0300
@@ -19,7 +19,7 @@
Create_time ###
Update_time ###
Check_time NULL
-Collation latin1_swedish_ci
+Collation latin1_bin
Checksum NULL
Create_options
Comment
@@ -37,7 +37,7 @@
Create_time ###
Update_time ###
Check_time NULL
-Collation latin1_swedish_ci
+Collation latin1_bin
Checksum NULL
Create_options
Comment

View File

@ -0,0 +1 @@
--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW --collation-server=latin1_bin

View File

@ -0,0 +1,11 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_opt_insert_method.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_opt_insert_method.reject 2017-06-22 02:39:45.243948128 +0300
@@ -5,7 +5,7 @@
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` char(8) DEFAULT NULL
-) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1 INSERT_METHOD=FIRST
+) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1
ALTER TABLE t1 INSERT_METHOD=NO;
SHOW CREATE TABLE t1;
Table Create Table

View File

@ -0,0 +1,16 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_opt_union.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_opt_union.reject 2017-06-22 02:41:02.719947641 +0300
@@ -4,11 +4,11 @@
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1 UNION=(`child1`)
+) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1
ALTER TABLE t1 UNION = (child1,child2);
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
-) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1 UNION=(`child1`,`child2`)
+) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1
DROP TABLE t1, child1, child2;

View File

@ -0,0 +1,24 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_temporary.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/tbl_temporary.reject 2017-06-22 15:27:50.643658456 +0300
@@ -1,11 +1,14 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (c CHAR(1)) ENGINE=MyISAM;
CREATE TEMPORARY TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW CREATE TABLE t1;
-Table Create Table
-t1 CREATE TEMPORARY TABLE `t1` (
- `a` int(11) DEFAULT NULL,
- `b` char(8) DEFAULT NULL
-) ENGINE=<STORAGE_ENGINE> DEFAULT CHARSET=latin1
-DROP TEMPORARY TABLE t1;
+ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TEMPORARY'
+# ERROR: Statement ended with errno 1478, errname ER_ILLEGAL_HA_CREATE_OPTION (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TEMPORARY TABLE t1 (a INT(11) /*!*/ /*Custom column options*/, b CHAR(8) /*!*/ /*Custom column options*/) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_ILLEGAL_HA_CREATE_OPTION.
+# Temporary tables or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
DROP TABLE t1;

View File

@ -0,0 +1,24 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/truncate_table.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/truncate_table.reject 2017-06-22 02:43:27.183946733 +0300
@@ -29,13 +29,12 @@
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c');
HANDLER t1 OPEN AS h1;
-HANDLER h1 READ FIRST;
-a b
-1 a
-TRUNCATE TABLE t1;
-HANDLER h1 READ NEXT;
-ERROR 42S02: Unknown table 'h1' in HANDLER
-HANDLER t1 OPEN AS h2;
-HANDLER h2 READ FIRST;
-a b
+ERROR HY000: Storage engine ROCKSDB of the table `test`.`t1` doesn't have this option
+# ------------ UNEXPECTED RESULT ------------
+# The statement|command finished with ER_ILLEGAL_HA.
+# HANDLER or the syntax or the mix could be unsupported.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
DROP TABLE t1;

View File

@ -0,0 +1,10 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/delete.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/delete.reject 2017-06-22 19:29:36.827567276 +0300
@@ -68,5 +68,7 @@
DELETE FROM t1;
INSERT INTO t1 (a,b) VALUES (1,'a');
ROLLBACK TO SAVEPOINT spt1;
+ERROR HY000: MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows.
COMMIT;
+ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
DROP TABLE t1;

View File

@ -0,0 +1,4 @@
cons_snapshot_serializable : Not supported
level_read_uncommitted : Not supported
level_serializable : Not supported
xa_recovery : MDEV-13155 - XA recovery not supported for RocksDB

View File

@ -0,0 +1,24 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/insert.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/insert.reject 2017-06-22 19:29:39.131567262 +0300
@@ -37,18 +37,18 @@
INSERT INTO t1 SET a = 11, b = 'f';
INSERT t1 SET b = DEFAULT;
ROLLBACK TO SAVEPOINT spt1;
+ERROR HY000: MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows.
INSERT INTO t1 (b,a) VALUES ('test1',10);
+ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
COMMIT;
+ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
SELECT a,b FROM t1;
a b
1 a
-10 NULL
10 foo
-10 test1
100 foo
11 abc
2 b
-20 NULL
3 c
4 d
5 e

View File

@ -0,0 +1,10 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/level_read_committed.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/level_read_committed.reject 2017-06-22 19:29:41.459567247 +0300
@@ -77,6 +77,7 @@
CREATE TABLE t1 (a <INT_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
START TRANSACTION WITH CONSISTENT SNAPSHOT;
+ERROR HY000: Only REPEATABLE READ isolation level is supported for START TRANSACTION WITH CONSISTENT SNAPSHOT in RocksDB Storage Engine.
connection con2;
INSERT INTO t1 (a) VALUES (1);
connection con1;

View File

@ -0,0 +1,35 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/level_repeatable_read.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/level_repeatable_read.reject 2017-06-22 20:33:13.935543284 +0300
@@ -24,8 +24,7 @@
SELECT a FROM t1;
a
INSERT INTO t1 (a) SELECT a+100 FROM t1;
-ERROR HY000: Lock wait timeout exceeded; try restarting transaction
-# WARNING: Statement ended with errno 1205, errname 'ER_LOCK_WAIT_TIMEOUT'.
+# WARNING: Statement ended with errno 0, errname ''.
# If it differs from the result file, it might indicate a problem.
SELECT a FROM t1;
a
@@ -47,22 +46,16 @@
# If it differs from the result file, it might indicate a problem.
SELECT a FROM t1;
a
-201
-202
COMMIT;
SELECT a FROM t1;
a
1
2
-201
-202
connection con2;
SELECT a FROM t1;
a
1
2
-201
-202
connection default;
disconnect con1;
disconnect con2;

View File

@ -0,0 +1 @@
--ignore-db-dirs=.rocksdb --plugin-load=$HA_ROCKSDB_SO --binlog_format=ROW

View File

@ -0,0 +1,38 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/update.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/trx/update.reject 2017-06-22 19:29:57.267567148 +0300
@@ -29,20 +29,23 @@
SAVEPOINT spt1;
UPDATE t1 SET b = '';
ROLLBACK TO SAVEPOINT spt1;
+ERROR HY000: MyRocks currently does not support ROLLBACK TO SAVEPOINT if modifying rows.
UPDATE t1 SET b = 'upd' WHERE a = 10050;
+ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
COMMIT;
+ERROR HY000: This transaction was rolled back and cannot be committed. Only supported operation is to roll it back, so all pending changes will be discarded. Please restart another transaction.
SELECT a,b FROM t1;
a b
-10050 upd
-10050 upd
-51 update2
-51 update2
-52 update2
-52 update2
-53 update2
-53 update2
-54 update2
-54 update2
-55 update2
-55 update2
+10050 NULL
+10050 NULL
+51 NULL
+51 NULL
+52 NULL
+52 NULL
+53 NULL
+53 NULL
+54 NULL
+54 NULL
+55 NULL
+55 NULL
DROP TABLE t1;

View File

@ -0,0 +1,61 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_binary_indexes.result 2017-06-22 15:31:43.719656991 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_binary_indexes.reject 2017-06-22 15:32:27.007656719 +0300
@@ -50,34 +50,21 @@
v128 VARBINARY(128) <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX b_v (b,v128)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 b_v 1 b # # NULL NULL # #
-t1 0 b_v 2 v128 # # NULL NULL # #
-INSERT INTO t1 (b,b20,v16,v128) VALUES ('a','char1','varchar1a','varchar1b'),('a','char2','varchar2a','varchar2b'),('b','char3','varchar1a','varchar1b'),('c','char4','varchar3a','varchar3b');
-EXPLAIN SELECT HEX(b), HEX(v128) FROM t1 WHERE b != 'a' AND v128 > 'varchar';
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # b_v # # # #
-SELECT HEX(b), HEX(v128) FROM t1 WHERE b != 'a' AND v128 > 'varchar';
-HEX(b) HEX(v128)
-62 766172636861723162
-63 766172636861723362
-EXPLAIN SELECT HEX(b), HEX(v128) FROM t1 USE INDEX (b_v) WHERE b != 'a' AND v128 > 'varchar';
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # b_v # # # #
-SELECT HEX(b), HEX(v128) FROM t1 USE INDEX (b_v) WHERE b != 'a' AND v128 > 'varchar';
-HEX(b) HEX(v128)
-62 766172636861723162
-63 766172636861723362
-EXPLAIN SELECT HEX(v128), COUNT(*) FROM t1 GROUP BY HEX(v128);
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # b_v # # # #
-SELECT HEX(v128), COUNT(*) FROM t1 GROUP BY HEX(v128);
-HEX(v128) COUNT(*)
-766172636861723162 2
-766172636861723262 1
-766172636861723362 1
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (b BINARY /*!*/ /*Custom indexed column options*/,
+b20 BINARY(20) /*!*/ /*Custom column options*/,
+v16 VARBINARY(16) /*!*/ /*Custom column options*/,
+v128 VARBINARY(128) /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX b_v (b,v128)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# BINARY or VARBINARY types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (b BINARY <CUSTOM_COL_OPTIONS>,
b20 BINARY(20) <CUSTOM_COL_OPTIONS>,
v16 VARBINARY(16) <CUSTOM_COL_OPTIONS>,
@@ -92,7 +79,7 @@
ANALYZE TABLE t1;
EXPLAIN SELECT HEX(SUBSTRING(v16,0,3)) FROM t1 WHERE v16 LIKE 'varchar%';
id select_type table type possible_keys key key_len ref rows Extra
-# # # # # NULL # # # #
+# # # # # v16 # # # #
SELECT HEX(SUBSTRING(v16,7,3)) FROM t1 WHERE v16 LIKE 'varchar%';
HEX(SUBSTRING(v16,7,3))
723161

View File

@ -0,0 +1,87 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_bit_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_bit_indexes.reject 2017-06-22 14:07:37.807688707 +0300
@@ -59,30 +59,21 @@
d BIT(64) <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX b_c (b,c)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 b_c 1 b # # NULL NULL # #
-t1 0 b_c 2 c # # NULL NULL # #
-INSERT INTO t1 (a,b,c,d) VALUES
-(0,0xFFFFF,0,1),(0,256,0xAAA,0x12345),(1,16,0,0xFFFFFFF),(0,11,12,13),
-(1,100,101,102),(0,12,13,14),(1,13,14,15),(0,101,201,202),(1,1000,1001,1002),
-(1,0xFFFF,0xFFFFFFFF,0xFFFFFFFFFFFFFFFF);
-EXPLAIN SELECT HEX(b+c) FROM t1 WHERE c > 1 OR HEX(b) < 0xFFFFFF;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # b_c # # # #
-SELECT HEX(b+c) FROM t1 WHERE c > 1 OR HEX(b) < 0xFFFFFF;
-HEX(b+c)
-10
-10000FFFE
-12E
-17
-19
-1B
-7D1
-BAA
-C9
-FFFFF
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a BIT /*!*/ /*Custom column options*/,
+b BIT(20) /*!*/ /*Custom indexed column options*/,
+c BIT(32) /*!*/ /*Custom indexed column options*/,
+d BIT(64) /*!*/ /*Custom column options*/,
+UNIQUE INDEX b_c (b,c)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# BIT types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a BIT <CUSTOM_COL_OPTIONS>,
b BIT(20) <CUSTOM_COL_OPTIONS>,
c BIT(32) <CUSTOM_COL_OPTIONS>,
@@ -110,23 +101,18 @@
d BIT(64) <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX (d)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 d 1 d # # NULL NULL # #
-INSERT INTO t1 (a,b,c,d) VALUES
-(0,0xFFFFF,0,1),(0,256,0xAAA,0x12345),(1,16,0,0xFFFFFFF),(0,11,12,13),
-(1,100,101,102),(0,12,13,14),(1,13,14,15),(0,101,201,202),(1,1000,1001,1002),
-(1,0xFFFF,0xFFFFFFFF,0xFFFFFFFFFFFFFFFF);
-EXPLAIN SELECT d FROM t1 WHERE d BETWEEN 1 AND 10000;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # d # # # #
-SELECT d+0 FROM t1 WHERE d BETWEEN 1 AND 10000;
-d+0
-1
-1002
-102
-13
-14
-15
-202
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a BIT /*!*/ /*Custom column options*/,
+b BIT(20) /*!*/ /*Custom column options*/,
+c BIT(32) /*!*/ /*Custom column options*/,
+d BIT(64) /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX (d)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# BIT types or unique keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,71 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_blob_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_blob_indexes.reject 2017-06-22 14:09:07.227688145 +0300
@@ -71,53 +71,21 @@
l LONGBLOB <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX l_t (l(256),t(64))
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 l_t 1 l # # 256 NULL # #
-t1 0 l_t 2 t # # 64 NULL # #
-INSERT INTO t1 (b,t,m,l) VALUES
-('','','',''),
-('a','b','c','d'),
-('b','d','c','b'),
-('test1','test2','test3','test4'),
-(REPEAT('a',128),REPEAT('b',128),REPEAT('c',128),REPEAT('d',128)),
-(HEX('abcd'),HEX('def'),HEX('a'),HEX('abc')),
-('abc','def','ghi','jkl'),
-('test2','test3','test4','test5'),
-('test3','test4','test5','test6'),
-(REPEAT('b',128),REPEAT('f',128),REPEAT('e',128),REPEAT('d',128)),
-(REPEAT('c',128),REPEAT('b',128),REPEAT('c',128),REPEAT('e',128));
-EXPLAIN SELECT SUBSTRING(t,64), SUBSTRING(l,256) FROM t1 WHERE t!=l AND l NOT IN ('test1') ORDER BY t, l DESC;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # l_t # # # # #
-SELECT SUBSTRING(t,64), SUBSTRING(l,256) FROM t1 WHERE t!=l AND l NOT IN ('test1') ORDER BY t, l DESC;
-SUBSTRING(t,64) SUBSTRING(l,256)
-
-
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-
-
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-
-
-EXPLAIN SELECT SUBSTRING(t,64), SUBSTRING(l,256) FROM t1 FORCE INDEX (l_t) WHERE t!=l AND l NOT IN ('test1') ORDER BY t, l DESC;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # l_t # # # # #
-SELECT SUBSTRING(t,64), SUBSTRING(l,256) FROM t1 FORCE INDEX (l_t) WHERE t!=l AND l NOT IN ('test1') ORDER BY t, l DESC;
-SUBSTRING(t,64) SUBSTRING(l,256)
-
-
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-
-
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-
-
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (b BLOB /*!*/ /*Custom column options*/,
+t TINYBLOB /*!*/ /*Custom indexed column options*/,
+m MEDIUMBLOB /*!*/ /*Custom column options*/,
+l LONGBLOB /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX l_t (l(256),t(64))
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# BLOB types or unique indexes or multi-part indexes or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (b BLOB <CUSTOM_COL_OPTIONS>,
t TINYBLOB <CUSTOM_COL_OPTIONS>,
m MEDIUMBLOB <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,64 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_char_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_char_indexes.reject 2017-06-22 14:10:08.479687760 +0300
@@ -67,46 +67,21 @@
v128 VARCHAR(128) <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX c_v (c,v128)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 c_v 1 c # # NULL NULL # #
-t1 0 c_v 2 v128 # # NULL NULL # #
-INSERT INTO t1 (c,c20,v16,v128) VALUES ('a','char1','varchar1a','varchar1b'),('a','char2','varchar2a','varchar2b'),('b','char3','varchar1a','varchar1b'),('c','char4','varchar3a','varchar3b');
-EXPLAIN SELECT c, v128 FROM t1 WHERE c != 'a' AND v128 > 'varchar';
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # c_v # # # #
-SELECT c, v128 FROM t1 WHERE c != 'a' AND v128 > 'varchar';
-c v128
-b varchar1b
-c varchar3b
-EXPLAIN SELECT v128, COUNT(*) FROM t1 GROUP BY v128;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # c_v # # # #
-SELECT v128, COUNT(*) FROM t1 GROUP BY v128;
-v128 COUNT(*)
-varchar1b 2
-varchar2b 1
-varchar3b 1
-EXPLAIN SELECT v128, COUNT(*) FROM t1 USE INDEX FOR GROUP BY (c_v) GROUP BY v128;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # c_v # # # #
-SELECT v128, COUNT(*) FROM t1 USE INDEX FOR GROUP BY (c_v) GROUP BY v128;
-v128 COUNT(*)
-varchar1b 2
-varchar2b 1
-varchar3b 1
-SET SESSION optimizer_switch = 'engine_condition_pushdown=on';
-Warnings:
-Warning 1681 'engine_condition_pushdown=on' is deprecated and will be removed in a future release
-EXPLAIN SELECT c,c20,v16,v128 FROM t1 WHERE c > 'a';
-id select_type table type possible_keys key key_len ref rows Extra
-# # # range c_v c_v # # # Using index condition
-SELECT c,c20,v16,v128 FROM t1 WHERE c > 'a';
-c c20 v16 v128
-b char3 varchar1a varchar1b
-c char4 varchar3a varchar3b
-SET SESSION optimizer_switch = @@global.optimizer_switch;
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (c CHAR /*!*/ /*Custom indexed column options*/,
+c20 CHAR(20) /*!*/ /*Custom column options*/,
+v16 VARCHAR(16) /*!*/ /*Custom column options*/,
+v128 VARCHAR(128) /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX c_v (c,v128)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# CHAR or VARCHAR types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (c CHAR <CUSTOM_COL_OPTIONS>,
c20 CHAR(20) <CUSTOM_COL_OPTIONS>,
v16 VARCHAR(16) <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,65 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_date_time_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_date_time_indexes.reject 2017-06-22 15:05:44.883666789 +0300
@@ -194,46 +194,22 @@
y YEAR <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX d_t (d,t)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 d_t 1 d # # NULL NULL # #
-t1 0 d_t 2 t # # NULL NULL # #
-SET @tm = '2012-04-09 05:27:00';
-INSERT INTO t1 (d,dt,ts,t,y) VALUES
-('2012-01-12', '2010-11-22 12:33:54', '2011-11-14 21:45:55', '00:12:33', '2000'),
-('2012-01-12', '2010-11-22 11:43:14', '2011-11-14 21:45:55', '00:12:32', '2001'),
-('2012-03-31', '2011-08-28 21:33:56', '1999-04-30 19:11:08', '12:00:00', '1999'),
-('2012-03-13', '2011-08-27 21:33:56', '1999-03-30 19:11:08', '12:10:00', '1998'),
-('2011-03-31', '2011-08-28 20:33:56', '1997-01-31 11:54:01', '22:04:10', '1994'),
-(DATE(@tm),@tm,TIMESTAMP(@tm),TIME(@tm),YEAR(@tm));
-EXPLAIN SELECT d, t FROM t1 WHERE CONCAT(d,' ',t) != CURRENT_DATE();
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # d_t # # # #
-SELECT d, t FROM t1 WHERE CONCAT(d,' ',t) != CURRENT_DATE();
-d t
-2011-03-31 22:04:10
-2012-01-12 00:12:32
-2012-01-12 00:12:33
-2012-03-13 12:10:00
-2012-03-31 12:00:00
-2012-04-09 05:27:00
-EXPLAIN SELECT d, t FROM t1 IGNORE INDEX (d_t) WHERE CONCAT(d,' ',t) != CURRENT_DATE();
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # NULL # # # #
-SELECT d, t FROM t1 IGNORE INDEX (d_t) WHERE CONCAT(d,' ',t) != CURRENT_DATE();
-d t
-2011-03-31 22:04:10
-2012-01-12 00:12:32
-2012-01-12 00:12:33
-2012-03-13 12:10:00
-2012-03-31 12:00:00
-2012-04-09 05:27:00
-INSERT INTO t1 (d,dt,ts,t,y) VALUES
-('2012-01-12', '2010-11-22 12:33:53', '2011-11-14 21:45:55', '00:12:33', '2000');
-ERROR 23000: Duplicate entry '2012-01-12-00:12:33' for key 'd_t'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (d DATE /*!*/ /*Custom indexed column options*/,
+dt DATETIME /*!*/ /*Custom column options*/,
+ts TIMESTAMP /*!*/ /*Custom column options*/,
+t TIME /*!*/ /*Custom indexed column options*/,
+y YEAR /*!*/ /*Custom column options*/,
+UNIQUE INDEX d_t (d,t)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Date and time types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (d DATE <CUSTOM_COL_OPTIONS>,
dt DATETIME <CUSTOM_COL_OPTIONS>,
ts TIMESTAMP <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,20 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_enum.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_enum.reject 2017-06-22 02:55:49.599942066 +0300
@@ -24,8 +24,6 @@
test2 4
test5 2
ALTER TABLE t1 ADD COLUMN e ENUM('a','A') <CUSTOM_COL_OPTIONS>;
-Warnings:
-Note 1291 Column 'e' has duplicated value 'a' in ENUM
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a enum('') # # #
@@ -37,7 +35,7 @@
a b c e
NULL
test2 4 NULL
- test3 75 a
+ test3 75 A
test5 2 NULL
SELECT a,b,c,e FROM t1 WHERE b='test2' OR a != '';
a b c e

View File

@ -0,0 +1,47 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_enum_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_enum_indexes.reject 2017-06-22 15:08:42.299665674 +0300
@@ -21,30 +21,20 @@
c ENUM('1a','1b','1d','1j','4a','4z','5a','5b','6v','6z') <CUSTOM_COL_OPTIONS>,
UNIQUE KEY a_b (a,b)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (a,b,c) VALUES
-('N.America','test1','5a'),('Europe','test1','5b'),('Europe','test2','6v'),
-('Africa','test3','4z'),('Africa','test4','1j'),('Antarctica','test4','1d');
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 a_b 1 a # # NULL NULL # #
-t1 0 a_b 2 b # # NULL NULL # #
-EXPLAIN SELECT a FROM t1 WHERE b > 'test2' ORDER BY a;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # a_b # # # #
-SELECT a FROM t1 WHERE b > 'test2' ORDER BY a;
-a
-Africa
-Africa
-Antarctica
-EXPLAIN SELECT a FROM t1 FORCE INDEX (a_b) WHERE b > 'test2' ORDER BY a;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # a_b # # # #
-SELECT a FROM t1 FORCE INDEX (a_b) WHERE b > 'test2' ORDER BY a;
-a
-Africa
-Africa
-Antarctica
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a ENUM('N.America','S.America','Africa','Europe','Australia','Asia','Antarctica') /*!*/ /*Custom indexed column options*/,
+b ENUM('test1','test2','test3','test4','test5') /*!*/ /*Custom indexed column options*/,
+c ENUM('1a','1b','1d','1j','4a','4z','5a','5b','6v','6z') /*!*/ /*Custom column options*/,
+UNIQUE KEY a_b (a,b)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# ENUM types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a ENUM('N.America','S.America','Africa','Europe','Australia','Asia','Antarctica') <CUSTOM_COL_OPTIONS>,
b ENUM('test1','test2','test3','test4','test5') <CUSTOM_COL_OPTIONS>,
c ENUM('1a','1b','1d','1j','4a','4z','5a','5b','6v','6z') <CUSTOM_COL_OPTIONS> PRIMARY KEY

View File

@ -0,0 +1,51 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_fixed_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_fixed_indexes.reject 2017-06-22 15:09:58.611665194 +0300
@@ -77,33 +77,21 @@
n2 NUMERIC(65,4) <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX n1_n2 (n1,n2)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 n1_n2 1 n1 # # NULL NULL # #
-t1 0 n1_n2 2 n2 # # NULL NULL # #
-INSERT INTO t1 (d1,d2,n1,n2) VALUES
-(10.22,60.12345,123456,14.3456),
-(10.0,60.12345,123456,14),
-(11.14,15,123456,13),
-(100,100,1,2),
-(0,0,0,0),
-(4540424564.23,3343303441.0,12,13),
-(15,17,23,100000);
-Warnings:
-Warning 1264 Out of range value for column 'd1' at row 6
-EXPLAIN SELECT DISTINCT n1+n2 FROM t1;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # n1_n2 # # # #
-SELECT DISTINCT n1+n2 FROM t1;
-n1+n2
-0.0000
-100023.0000
-123469.0000
-123470.0000
-123470.3456
-25.0000
-3.0000
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (d1 DECIMAL(10,2) /*!*/ /*Custom column options*/,
+d2 DECIMAL(60,10) /*!*/ /*Custom column options*/,
+n1 NUMERIC /*!*/ /*Custom indexed column options*/,
+n2 NUMERIC(65,4) /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX n1_n2 (n1,n2)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Fixed point types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (d1 DECIMAL(10,2) <CUSTOM_COL_OPTIONS>,
d2 DECIMAL(60,10) <CUSTOM_COL_OPTIONS>,
n1 NUMERIC <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,97 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_float_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_float_indexes.reject 2017-06-22 15:11:12.543664729 +0300
@@ -58,9 +58,11 @@
4644
ALTER TABLE t1 DROP PRIMARY KEY;
ALTER TABLE t1 ADD UNIQUE KEY(d);
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
EXPLAIN SELECT d FROM t1 WHERE r > 0 and d > 0 ORDER BY d;
id select_type table type possible_keys key key_len ref rows Extra
-# # # # # d # # # #
+# # # # # NULL # # # #
SELECT d FROM t1 WHERE r > 0 and d > 0 ORDER BY d;
d
1.2345
@@ -73,51 +75,42 @@
dp DOUBLE PRECISION (64,10) <CUSTOM_COL_OPTIONS>,
UNIQUE KEY r_dp (r,dp)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 r_dp 1 r # # NULL NULL # #
-t1 0 r_dp 2 dp # # NULL NULL # #
-INSERT INTO t1 (f,r,d,dp) VALUES
-(1.2345,1422.22,1.2345,1234567.89),
-(0,0,0,0),
-(-1,-1,-1,-1),
-(17.5843,4953453454.44,29229114.0,1111111.23),
-(4644,1422.22,466664.999,0.5);
-EXPLAIN SELECT r, dp FROM t1 WHERE r > 0 or dp > 0;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # r_dp # # # #
-SELECT r, dp FROM t1 WHERE r > 0 or dp > 0;
-r dp
-1422.220 0.5000000000
-1422.220 1234567.8900000000
-4953453454.440 1111111.2300000000
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (f FLOAT /*!*/ /*Custom column options*/,
+r REAL(20,3) /*!*/ /*Custom indexed column options*/,
+d DOUBLE /*!*/ /*Custom column options*/,
+dp DOUBLE PRECISION (64,10) /*!*/ /*Custom indexed column options*/,
+UNIQUE KEY r_dp (r,dp)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Float point types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (f FLOAT <CUSTOM_COL_OPTIONS>,
r REAL(20,3) <CUSTOM_COL_OPTIONS>,
d DOUBLE <CUSTOM_COL_OPTIONS>,
dp DOUBLE PRECISION (64,10) <CUSTOM_COL_OPTIONS>,
UNIQUE KEY(d)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 d 1 d # # NULL NULL # #
-INSERT INTO t1 (f,r,d,dp) VALUES
-(1.2345,1422.22,1.2345,1234567.89),
-(0,0,0,0),
-(-1,-1,-1,-1),
-(17.5843,4953453454.44,29229114.0,1111111.23),
-(4644,1422.22,466664.999,0.5);
-EXPLAIN SELECT DISTINCT d FROM t1 ORDER BY d;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # d # # # #
-SELECT DISTINCT d FROM t1 ORDER BY d;
-d
--1
-0
-1.2345
-466664.999
-29229114
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (f FLOAT /*!*/ /*Custom column options*/,
+r REAL(20,3) /*!*/ /*Custom column options*/,
+d DOUBLE /*!*/ /*Custom indexed column options*/,
+dp DOUBLE PRECISION (64,10) /*!*/ /*Custom column options*/,
+UNIQUE KEY(d)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Float point types or unique keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (f FLOAT <CUSTOM_COL_OPTIONS>,
r REAL(20,3) <CUSTOM_COL_OPTIONS>,
d DOUBLE <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,57 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_int_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_int_indexes.reject 2017-06-22 15:12:14.199664342 +0300
@@ -96,38 +96,19 @@
b BIGINT <CUSTOM_COL_OPTIONS>,
UNIQUE KEY b_t (b,t)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (i,t,s,m,b) VALUES (1,2,3,4,5),(1000,100,10000,1000000,1000000000000000000),(5,100,10000,1000000,100000000000000000),(2,3,4,5,6),(3,4,5,6,7),(101,102,103,104,105),(10001,103,10002,10003,10004),(10,11,12,13,14),(11,12,13,14,15),(12,13,14,15,16);
-SELECT b+t FROM t1 WHERE (b,t) IN ( SELECT b, t FROM t1 WHERE i>1 ) ORDER BY b+t;
-b+t
-9
-11
-25
-27
-29
-207
-10107
-100000000000000100
-1000000000000000100
-SELECT b+t FROM t1 FORCE INDEX (b_t) WHERE (b,t) IN ( SELECT b, t FROM t1 WHERE i>1 ) ORDER BY b+t;
-b+t
-9
-11
-25
-27
-29
-207
-10107
-100000000000000100
-1000000000000000100
-SELECT b+t FROM t1 IGNORE INDEX (b_t) WHERE (b,t) IN ( SELECT b, t FROM t1 WHERE i>1 ) ORDER BY b+t;
-b+t
-9
-11
-25
-27
-29
-207
-10107
-100000000000000100
-1000000000000000100
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (i INT /*!*/ /*Custom column options*/,
+t TINYINT /*!*/ /*Custom indexed column options*/,
+s SMALLINT /*!*/ /*Custom column options*/,
+m MEDIUMINT /*!*/ /*Custom column options*/,
+b BIGINT /*!*/ /*Custom indexed column options*/,
+UNIQUE KEY b_t (b,t)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# INT types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,11 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_set.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_set.reject 2017-06-22 03:02:58.695939369 +0300
@@ -30,8 +30,6 @@
test2,test3 01,23,34,44
test2,test4
ALTER TABLE t1 ADD COLUMN e SET('a','A') <CUSTOM_COL_OPTIONS>;
-Warnings:
-Note 1291 Column 'e' has duplicated value 'a' in SET
SHOW COLUMNS IN t1;
Field Type Null Key Default Extra
a set('') # # #

View File

@ -0,0 +1,47 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_set_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_set_indexes.reject 2017-06-22 15:19:48.679661485 +0300
@@ -108,30 +108,17 @@
c SET('01','22','23','33','34','39','40','44','50','63','64') <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX b_a (b,a)
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 b_a 1 b # # NULL NULL # #
-t1 0 b_a 2 a # # NULL NULL # #
-INSERT INTO t1 (a,b,c) VALUES
-('','test2,test3','01,34,44,23'),
-('',5,2),
-('N.America,Asia','test4,test2',''),
-('Africa,Europe,Asia','test2,test3','01'),
-('Antarctica','test3','34,44'),
-('Asia','test5','50'),
-('Europe,S.America','test1,','39');
-Warnings:
-Warning 1265 Data truncated for column 'b' at row 7
-EXPLAIN SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # # b_a # # # #
-SELECT DISTINCT a, b FROM t1 ORDER BY b DESC, a;
-a b
- test1,test3
- test2,test3
-Africa,Europe,Asia test2,test3
-Antarctica test3
-Asia test5
-N.America,Asia test2,test4
-S.America,Europe test1
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a SET('N.America','S.America','Africa','Antarctica','Australia','Europe','Asia') /*!*/ /*Custom indexed column options*/,
+b SET('test1','test2','test3','test4','test5') /*!*/ /*Custom indexed column options*/,
+c SET('01','22','23','33','34','39','40','44','50','63','64') /*!*/ /*Custom column options*/,
+UNIQUE INDEX b_a (b,a)
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# SET types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------

View File

@ -0,0 +1,68 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_text_indexes.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/type_text_indexes.reject 2017-06-22 15:20:42.963661144 +0300
@@ -65,50 +65,21 @@
l LONGTEXT <CUSTOM_COL_OPTIONS>,
UNIQUE INDEX l_tt (l(256),tt(64))
) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-SHOW INDEX IN t1;
-Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
-t1 0 l_tt 1 l # # 256 NULL # #
-t1 0 l_tt 2 tt # # 64 NULL # #
-INSERT INTO t1 (t,tt,m,l) VALUES
-('','','',''),
-('a','b','c','d'),
-('b','d','c','b'),
-('test1','test2','test3','test4'),
-(REPEAT('a',128),REPEAT('b',128),REPEAT('c',128),REPEAT('d',128)),
-('abc','def','ghi','jkl'),
-('test2','test3','test4','test5'),
-('test3','test4','test5','test6'),
-(REPEAT('b',128),REPEAT('f',128),REPEAT('e',128),REPEAT('d',128)),
-(REPEAT('c',128),REPEAT('b',128),REPEAT('c',128),REPEAT('e',128));
-EXPLAIN SELECT SUBSTRING(tt,64), SUBSTRING(l,256) FROM t1 WHERE tt!=l AND l NOT IN ('test1') ORDER BY tt, l DESC;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # l_tt # # # # #
-SELECT SUBSTRING(tt,64), SUBSTRING(l,256) FROM t1 WHERE tt!=l AND l NOT IN ('test1') ORDER BY tt, l DESC;
-SUBSTRING(tt,64) SUBSTRING(l,256)
-
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-
-
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-
-
-EXPLAIN SELECT SUBSTRING(tt,64), SUBSTRING(l,256) FROM t1 FORCE INDEX (l_t) WHERE tt!=l AND l NOT IN ('test1') ORDER BY tt, l DESC;
-id select_type table type possible_keys key key_len ref rows Extra
-# # # # l_tt l_tt # # # #
-SELECT SUBSTRING(tt,64), SUBSTRING(l,256) FROM t1 FORCE INDEX (l_t) WHERE tt!=l AND l NOT IN ('test1') ORDER BY tt, l DESC;
-SUBSTRING(tt,64) SUBSTRING(l,256)
-
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-
-
-fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-
-
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (t TEXT /*!*/ /*Custom column options*/,
+tt TINYTEXT /*!*/ /*Custom indexed column options*/,
+m MEDIUMTEXT /*!*/ /*Custom column options*/,
+l LONGTEXT /*!*/ /*Custom indexed column options*/,
+UNIQUE INDEX l_tt (l(256),tt(64))
+) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# TEXT types or unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (t TEXT <CUSTOM_COL_OPTIONS>,
tt TINYTEXT <CUSTOM_COL_OPTIONS>,
m MEDIUMTEXT <CUSTOM_COL_OPTIONS>,

View File

@ -0,0 +1,77 @@
--- /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/update_with_keys.result 2017-06-22 00:33:46.423995639 +0300
+++ /data/src/bb-10.2-mdev12528/mysql-test/suite/storage_engine/update_with_keys.reject 2017-06-22 15:21:52.275660708 +0300
@@ -17,54 +17,27 @@
8
DROP TABLE t1;
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, UNIQUE INDEX(a)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(0,'f'),(100,'a');
-UPDATE t1 SET a=a+200;
-UPDATE t1 SET a=0 WHERE a > 250;
-UPDATE t1 SET a=205 WHERE a=200;
-ERROR 23000: Duplicate entry '205' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-UPDATE t1 SET a=12345 ORDER BY a, b LIMIT 1;
-SELECT a,b FROM t1;
-a b
-12345 a
-200 f
-201 a
-202 b
-203 c
-204 d
-205 e
-UPDATE t1 SET a=80 WHERE a IN (202,203);
-ERROR 23000: Duplicate entry '80' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom column options*/, b CHAR(8) /*!*/ /*Custom column options*/, UNIQUE INDEX(a)) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN>, b <CHAR_COLUMN>, UNIQUE INDEX(a,b)) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
-INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(100,'a'),(6,'f');
-UPDATE t1 SET a=6 WHERE a=3;
-UPDATE t1 SET a=100 WHERE a=1;
-ERROR 23000: Duplicate entry '100-a' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-UPDATE t1 SET a=4, b='d' WHERE b='f';
-ERROR 23000: Duplicate entry '4-d' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-UPDATE t1 SET a=a+1;
-SELECT a,b FROM t1;
-a b
-101 a
-2 a
-3 b
-5 d
-6 e
-7 c
-7 f
-UPDATE t1 SET b='z';
-ERROR 23000: Duplicate entry '7-z' for key 'a'
-# Statement ended with one of expected results (ER_DUP_ENTRY,ER_DUP_KEY).
-# If you got a difference in error message, just add it to rdiff file
-DROP TABLE t1;
+ERROR HY000: Unique index support is disabled when the table has no primary key.
+# ERROR: Statement ended with errno 1105, errname ER_UNKNOWN_ERROR (expected to succeed)
+# ------------ UNEXPECTED RESULT ------------
+# [ CREATE TABLE t1 (a INT(11) /*!*/ /*Custom column options*/, b CHAR(8) /*!*/ /*Custom column options*/, UNIQUE INDEX(a,b)) ENGINE=RocksDB /*!*/ /*Custom table options*/ ]
+# The statement|command finished with ER_UNKNOWN_ERROR.
+# Unique keys or multi-part keys or the mix could be unsupported|malfunctioning, or the problem was caused by previous errors.
+# You can change the engine code, or create an rdiff, or disable the test by adding it to disabled.def.
+# Further in this test, the message might sometimes be suppressed; a part of the test might be skipped.
+# Also, this problem may cause a chain effect (more errors of different kinds in the test).
+# -------------------------------------------
CREATE TABLE t1 (a <INT_COLUMN> PRIMARY KEY, b <CHAR_COLUMN>) ENGINE=<STORAGE_ENGINE> <CUSTOM_TABLE_OPTIONS>;
INSERT INTO t1 (a,b) VALUES (1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(0,'f'),(100,'a');
UPDATE t1 SET a=a+200;

View File

@ -19601,6 +19601,40 @@ static void test_prepare_analyze()
check_execute(stmt, rc);
}
static void test_mdev12579()
{
MYSQL_STMT *stmt= mysql_stmt_init(mysql);
MYSQL_BIND bind[2];
int rc;
long l=3;
const char *data = "123456";
rc= mysql_query(mysql, "CREATE TABLE mdev12579 (k integer,t LONGTEXT,b LONGBLOB,x integer)");
myquery(rc);
rc= mysql_stmt_prepare(stmt, "INSERT INTO mdev12579 VALUES (1,?,NULL,?)", -1);
myquery(rc);
rc= mysql_stmt_send_long_data(stmt, 0, data, 6);
rc= mysql_stmt_send_long_data(stmt, 0, data, 6);
rc= mysql_stmt_send_long_data(stmt, 0, data, 6);
memset(bind, 0, sizeof(MYSQL_BIND) * 2);
bind[0].buffer_type= MYSQL_TYPE_VAR_STRING;
bind[1].buffer_type= MYSQL_TYPE_LONG;
bind[1].buffer= &l;
mysql_stmt_bind_param(stmt, bind);
rc= mysql_stmt_execute(stmt);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
rc= mysql_query(mysql, "DROP TABLE mdev12579");
myquery(rc);
}
static struct my_tests_st my_tests[]= {
{ "disable_query_logs", disable_query_logs },
{ "test_view_sp_list_fields", test_view_sp_list_fields },
@ -19879,6 +19913,7 @@ static struct my_tests_st my_tests[]= {
{ "test_compressed_protocol", test_compressed_protocol },
{ "test_big_packet", test_big_packet },
{ "test_prepare_analyze", test_prepare_analyze },
{ "test_mdev12579", test_mdev12579 },
{ 0, 0 }
};