mark some file to been opensource for ce-farm
This commit is contained in:
@ -0,0 +1,185 @@
|
||||
drop table if exists t1,t2;
|
||||
set ob_enable_index_direct_select=1;
|
||||
alter system set merger_check_interval = '10s' tenant sys;
|
||||
alter system set merger_check_interval = '10s' tenant all_user;
|
||||
alter system set merger_check_interval = '10s' tenant all_meta;
|
||||
create table t1(
|
||||
a1 char(3) primary key,
|
||||
a2 int,
|
||||
a3 char(3),
|
||||
a4 float,
|
||||
a5 datetime
|
||||
);
|
||||
create table t2(
|
||||
a1 char(3) primary key,
|
||||
a2 char(17),
|
||||
a3 char(2),
|
||||
a4 char(3)
|
||||
);
|
||||
insert into t1 values('AME',0,'SEA',0.100,date'1942-02-19');
|
||||
insert into t1 values('HBR',1,'SEA',0.085,date'1948-03-05');
|
||||
insert into t1 values('BOT',2,'SEA',0.085,date'1951-11-29');
|
||||
insert into t1 values('BMC',3,'SEA',0.085,date'1958-09-08');
|
||||
insert into t1 values('TWU',0,'LAX',0.080,date'1969-10-05');
|
||||
insert into t1 values('BDL',0,'DEN',0.080,date'1960-11-27');
|
||||
insert into t1 values('DTX',1,'NYC',0.080,date'1961-05-04');
|
||||
insert into t1 values('PLS',1,'WDC',0.075,date'1949-01-02');
|
||||
insert into t1 values('ZAJ',2,'CHI',0.075,date'1960-06-15');
|
||||
insert into t1 values('VVV',2,'MON',0.075,date'1959-06-28');
|
||||
insert into t1 values('GTM',3,'DAL',0.070,date'1977-09-23');
|
||||
insert into t1 values('SSJ',null,'CHI',null,date'1974-03-19');
|
||||
insert into t1 values('KKK',3,'ATL',null,null);
|
||||
insert into t1 values('XXX',null,'MIN',null,null);
|
||||
insert into t1 values('WWW',1,'LED',null,null);
|
||||
insert into t1 values('GG3',3,'DD3',0.051,now());
|
||||
insert into t1 values('GG2',3,'DD2',0.052,now());
|
||||
insert into t1 values('GG1',3,'DD1',0.053,now());
|
||||
insert into t2 values('TKF','Seattle','WA','AME');
|
||||
insert into t2 values('LCC','Los Angeles','CA','TWU');
|
||||
insert into t2 values('DEN','Denver','CO','BDL');
|
||||
insert into t2 values('SDC','San Diego','CA','TWU');
|
||||
insert into t2 values('NOL','New Orleans','LA','GTM');
|
||||
insert into t2 values('LAK','Los Angeles','CA','TWU');
|
||||
insert into t2 values('AAA','AAA','AA','AME');
|
||||
create index i2 on t1(a2);
|
||||
create index i3 on t1(a3);
|
||||
create index i5 on t1(a5);
|
||||
select * from (select a1, a2*2+1 as b2 from t1 where a2>=1-1 and a2<=round(9.0/2.0)*2) as t;
|
||||
a1 b2
|
||||
AME 1
|
||||
BDL 1
|
||||
BMC 7
|
||||
BOT 5
|
||||
DTX 3
|
||||
GG1 7
|
||||
GG2 7
|
||||
GG3 7
|
||||
GTM 7
|
||||
HBR 3
|
||||
KKK 7
|
||||
PLS 3
|
||||
TWU 1
|
||||
VVV 5
|
||||
WWW 3
|
||||
ZAJ 5
|
||||
select * from (select a1, a2*2+1 as b2, a3 from t1 where a2>=1-1 and a2<=round(9.0/2.0)*2) as t;
|
||||
a1 b2 a3
|
||||
AME 1 SEA
|
||||
BDL 1 DEN
|
||||
BMC 7 SEA
|
||||
BOT 5 SEA
|
||||
DTX 3 NYC
|
||||
GG1 7 DD1
|
||||
GG2 7 DD2
|
||||
GG3 7 DD3
|
||||
GTM 7 DAL
|
||||
HBR 3 SEA
|
||||
KKK 7 ATL
|
||||
PLS 3 WDC
|
||||
TWU 1 LAX
|
||||
VVV 5 MON
|
||||
WWW 3 LED
|
||||
ZAJ 5 CHI
|
||||
select * from (select a1, a2*2+1 as b2 from t1 where a2>=1-(9-8)+(3*5)-45/3 and a2<=100%55-35) as t;
|
||||
a1 b2
|
||||
AME 1
|
||||
BDL 1
|
||||
BMC 7
|
||||
BOT 5
|
||||
DTX 3
|
||||
GG1 7
|
||||
GG2 7
|
||||
GG3 7
|
||||
GTM 7
|
||||
HBR 3
|
||||
KKK 7
|
||||
PLS 3
|
||||
TWU 1
|
||||
VVV 5
|
||||
WWW 3
|
||||
ZAJ 5
|
||||
select * from (select a1, a2*2+1 as b2, a3 from t1 where a2>=1-(9-8)+(3*5)-45/3 and a2<=100%55-35) as t;
|
||||
a1 b2 a3
|
||||
AME 1 SEA
|
||||
BDL 1 DEN
|
||||
BMC 7 SEA
|
||||
BOT 5 SEA
|
||||
DTX 3 NYC
|
||||
GG1 7 DD1
|
||||
GG2 7 DD2
|
||||
GG3 7 DD3
|
||||
GTM 7 DAL
|
||||
HBR 3 SEA
|
||||
KKK 7 ATL
|
||||
PLS 3 WDC
|
||||
TWU 1 LAX
|
||||
VVV 5 MON
|
||||
WWW 3 LED
|
||||
ZAJ 5 CHI
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a3>=concat('D', 'EE') and a3<=concat('M', 'PP')) as t;
|
||||
a1 b2 a3 a4 a5
|
||||
BDL 1 DEN 0.08 timestamp
|
||||
TWU 1 LAX 0.08 timestamp
|
||||
VVV 5 MON 0.075 timestamp
|
||||
WWW 3 LED NULL timestamp
|
||||
XXX NULL MIN NULL timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a3>=concat(upper(substr('abcde',4,1)), upper(substr('ccddee',5,2))) and a3<=concat(upper(substr('lmnop',2,1)), upper(substr('ooppqq',3,2)))) as t;
|
||||
a1 b2 a3 a4 a5
|
||||
BDL 1 DEN 0.08 timestamp
|
||||
TWU 1 LAX 0.08 timestamp
|
||||
VVV 5 MON 0.075 timestamp
|
||||
WWW 3 LED NULL timestamp
|
||||
XXX NULL MIN NULL timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a4>=0.75/10+1-1 and a4<=0.2*0.4+4%2) as t;
|
||||
a1 b2 a3 a4 a5
|
||||
BDL 1 DEN 0.08 timestamp
|
||||
DTX 3 NYC 0.08 timestamp
|
||||
PLS 3 WDC 0.075 timestamp
|
||||
TWU 1 LAX 0.08 timestamp
|
||||
VVV 5 MON 0.075 timestamp
|
||||
ZAJ 5 CHI 0.075 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(now(), interval -60 minute) and a5<=date_add(current_timestamp(), interval -1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_add(current_timestamp(), interval -1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_add(now(), interval -1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(now(), interval 60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(current_timestamp(), interval 60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(current_timestamp(), interval 60 minute) and a5<=date_sub(now(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(now(), interval -60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_sub(now(), interval 1 microsecond)) as t;
|
||||
a1 b2 a3 a4
|
||||
GG1 7 DD1 0.053
|
||||
GG2 7 DD2 0.052
|
||||
GG3 7 DD3 0.051
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,64 @@
|
||||
drop table if exists GG;
|
||||
drop table if exists F;
|
||||
drop table if exists Q;
|
||||
CREATE TABLE `GG` (
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE;
|
||||
CREATE TABLE `F` (
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384
|
||||
USE_BLOOM_FILTER = FALSE;
|
||||
CREATE TABLE `Q` (
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384
|
||||
USE_BLOOM_FILTER = FALSE;
|
||||
SELECT GRANDPARENT1 . pk AS G1 FROM GG AS GRANDPARENT1 WHERE GRANDPARENT1 . `col_varchar_10` IN ( SELECT PARENT1 . `col_varchar_10_key` AS P1 FROM F AS PARENT1 LEFT JOIN Q AS PARENT2 USING ( pk ) WHERE ( ( PARENT1 . `pk` > GRANDPARENT1 . `col_int` ) OR GRANDPARENT1 . `col_varchar_10` >= 'i' ) ) AND ( ( ( ( ( ( ( GRANDPARENT1 . `col_varchar_20` < 'x' OR GRANDPARENT1 . `col_datetime` BETWEEN '2002-05-19' AND '2000-10-13' ) OR GRANDPARENT1 . pk IS NULL ) OR GRANDPARENT1 . `col_varchar_20` >= 'd' ) OR GRANDPARENT1 . `pk` <> 8 ) AND GRANDPARENT1 . `pk` >= 5 ) AND GRANDPARENT1 . `col_date` >= '2004-07-28' ) OR NOT GRANDPARENT1 . pk IS UNKNOWN ) GROUP BY GRANDPARENT1 . pk ORDER BY GRANDPARENT1 . pk LIMIT 9;
|
||||
G1
|
||||
@ -0,0 +1,68 @@
|
||||
DROP TABLE IF EXISTS B;
|
||||
CREATE TABLE B (
|
||||
col_varchar_10_key varchar(10),
|
||||
pk int,
|
||||
col_datetime_key datetime,
|
||||
col_date_key date,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_date date,
|
||||
col_varchar_10 varchar(10),
|
||||
col_varchar_20 varchar(20),
|
||||
col_int_key int,
|
||||
col_datetime datetime,
|
||||
col_int int,
|
||||
/*Indices*/
|
||||
key idx3(col_varchar_10_key ),
|
||||
primary key (pk),
|
||||
key idx9(col_datetime_key ),
|
||||
key idx7(col_date_key ),
|
||||
key idx5(col_varchar_20_key ),
|
||||
key idx1(col_int_key )) ;
|
||||
INSERT INTO B VALUES ('kkp', 1, '2004-10-16 00:57:16', '2004-01-14 09:42:56', 'REEQA', '2000-05-07 20:53:16', 't', 'RJWCV', NULL, '2004-08-27 11:24:22', NULL) ;
|
||||
COMMIT;
|
||||
DROP TABLE IF EXISTS C;
|
||||
CREATE TABLE C (
|
||||
col_varchar_10_key varchar(10),
|
||||
col_date_key date,
|
||||
col_varchar_20 varchar(20),
|
||||
col_datetime datetime,
|
||||
pk int,
|
||||
col_datetime_key datetime,
|
||||
col_int_key int,
|
||||
col_varchar_10 varchar(10),
|
||||
col_int int,
|
||||
col_date date,
|
||||
col_varchar_20_key varchar(20),
|
||||
/*Indices*/
|
||||
key idx3(col_varchar_10_key ),
|
||||
key idx7(col_date_key ),
|
||||
primary key (pk),
|
||||
key idx9(col_datetime_key ),
|
||||
key idx1(col_int_key ),
|
||||
key idx5(col_varchar_20_key )) ;
|
||||
INSERT INTO C VALUES ('m', '2009-05-26 08:23:35', 'ekkpo', '2008-03-08 07:14:41', 1, '2009-08-02 20:27:19', NULL, 'm', NULL, '2000-09-07 13:19:46', 'x') , ('WQNOL', '2000-07-21 17:07:25', 'NVCLE', '2006-07-26 20:52:57', 2, '2001-01-13 04:08:55', 1, 'that', NULL, '2002-07-10 00:05:57', 'r') ;
|
||||
COMMIT;
|
||||
DROP TABLE IF EXISTS BB;
|
||||
CREATE TABLE BB (
|
||||
pk int,
|
||||
col_date date,
|
||||
col_int int,
|
||||
col_datetime datetime,
|
||||
col_int_key int,
|
||||
col_varchar_10 varchar(10),
|
||||
col_varchar_20_key varchar(20),
|
||||
col_varchar_10_key varchar(10),
|
||||
col_datetime_key datetime,
|
||||
col_date_key date,
|
||||
col_varchar_20 varchar(20),
|
||||
/*Indices*/
|
||||
primary key (pk),
|
||||
key idx1(col_int_key ),
|
||||
key idx5(col_varchar_20_key ),
|
||||
key idx3(col_varchar_10_key ),
|
||||
key idx9(col_datetime_key ),
|
||||
key idx7(col_date_key )) ;
|
||||
INSERT INTO BB VALUES (1, '2003-04-23 18:41:16', 6, '2005-10-24 18:18:51', NULL, 'cwakbywrvs', 'u', 'don\'t', '2004-11-12 13:38:24', '2006-07-05 09:53:27', 'dcwakbyw') , (2, '2003-03-22 22:28:58', 2078998528, '2005-09-18 22:12:43', 1550974976, 'udc', 'WBKOU', 'HZHFS', '2000-04-25 09:07:11', '2001-09-13 00:42:07', 'IORCN') , (3, '2001-09-14 17:35:49', 4, '2005-03-07 05:20:49', 1091305472, 'NFLSW', 'her', 'out', '2005-02-02 14:47:19', '2007-01-20 03:29:40', 'tudc') , (4, '2006-01-01 23:25:41', NULL, '2000-11-12 21:13:27', 1665990656, 'LYLSS', 'otu', 'fotudcw', '2004-09-03 11:49:01', '2009-01-27 09:15:41', 'n') , (5, '2004-02-02 20:08:21', 2061369344, '2004-08-15 04:50:15', 1711734784, 'hfotudc', 'you\'re', 'khfot', '2004-08-03 23:41:18', '2000-01-22 17:43:03', 'vkhfotu') , (6, '2008-09-10 14:06:23', NULL, '2009-09-14 09:57:06', NULL, 'kvkhfot', 'bkvkhfo', 'x', '2004-01-21 19:21:48', '2007-10-20 07:39:44', 'FHWWV') , (7, '2003-07-04 00:34:31', NULL, '2008-07-27 01:31:54', -106692608, 'how', 'pbkvkh', 'i', '2000-05-07 05:59:07', '2000-11-27 00:01:21', 'DYXZD') , (8, '2007-03-15 19:03:40', NULL, '2002-12-08 17:54:25', 2, 'YXRPH', 'or', 'r', '2002-07-21 02:23:52', '2007-08-16 01:57:46', 'is') , (9, '2002-07-15 23:38:00', NULL, '2004-07-17 00:37:31', NULL, 'q', 'GFJQM', 'UZSQL', '2009-04-17 16:08:23', '2002-11-13 10:10:01', 'YGWXF') , (10, '2008-06-16 09:37:06', NULL, '2005-05-01 10:31:43', NULL, 'i', 'RUTYP', 'going', '2005-10-28 05:29:47', '2000-10-18 18:00:15', 'wpbkvkhf') , (11, '2009-01-27 05:17:20', -1565130752, '2006-01-07 01:49:08', NULL, 'FVHBX', 'k', 'back', '2007-06-04 02:44:36', '2006-04-17 11:51:02', 'my') , (12, '2008-09-24 18:38:14', -2060648448, '2009-11-13 13:17:05', NULL, 'x', 'ewp', 'a', '2007-11-03 14:29:08', '2007-05-01 14:13:50', 'e') , (13, '2008-01-24 14:22:57', NULL, '2002-11-26 19:45:28', 7, 'r', 'vewpbkvkh', 'l', '2009-07-10 13:35:54', '2008-01-25 01:56:47', 'he') , (14, '2008-04-25 00:17:00', NULL, '2006-03-07 23:02:00', NULL, 'cvewpb', 'or', 'ecvewpb', '2005-11-04 03:58:04', '2005-10-11 20:09:24', 'x') , (15, '2004-10-07 20:19:35', 1, '2008-01-04 05:10:39', 726663168, 'from', 'm', 'g', '2001-12-17 22:26:20', '2008-05-19 07:39:44', 'ZWYWB') , (16, '2001-09-06 07:16:23', 3, '2009-06-19 15:09:57', 2, 'o', 'here', 'o', '2006-07-01 11:55:01', '2006-01-27 17:54:25', 'GBCEX') , (17, '2008-03-06 09:09:32', 3, '2001-06-04 04:13:34', NULL, 'PUMFK', 'p', 'a', '2009-04-26 05:19:51', '2007-02-23 03:34:16', 'x') , (18, '2006-12-21 18:11:00', -404226048, '2004-06-11 08:48:52', 1, 'a', 'fecv', 'will', '2008-08-23 20:26:27', '2002-06-24 09:11:02', 'w') , (19, '2002-10-08 05:53:04', 2120482816, '2000-12-17 19:34:45', NULL, 'rwfecvew', 'ASJFE', 'zrw', '2004-07-25 04:19:45', '2006-09-20 19:38:40', 'QJNIQ') , (20, '2006-09-13 10:03:21', -1152385024, '2002-05-03 02:10:39', -15466496, 'k', 'fkzrwfec', 'u', '2004-06-04 00:06:00', '2007-04-08 02:38:52', 'VTLYL') , (21, '2000-03-08 22:50:32', -616038400, '2009-04-10 10:17:42', -1163395072, 'YKTPU', 'YDZSJ', 'with', '2006-08-25 05:45:16', '2005-07-18 21:14:55', 'sfkzrwf') , (22, '2002-05-27 21:53:54', 1513816064, '2002-08-09 18:52:10', 1348403200, 'h', 'going', 'VALIW', '2008-07-14 13:29:27', '2008-01-11 05:06:30', 'MZOIR') , (23, '2002-10-20 19:07:26', 5, '2004-01-25 07:30:01', NULL, 'UDIUZ', 'right', 'o', '2007-10-26 01:17:12', '2009-11-15 09:18:18', 'BERZH') , (24, '2001-07-01 02:58:05', NULL, '2001-03-05 15:25:43', 1, 'd', 'did', 'tsf', '2009-10-03 18:08:36', '2003-03-13 14:00:41', 'atsfkzr') , (25, '2003-05-10 04:15:51', 286654464, '2004-07-13 12:36:34', -1463091200, 'WNBRB', 'AYTIL', 'r', '2003-11-03 16:33:16', '2005-10-26 18:35:00', 'p') , (26, '2008-03-21 04:56:31', NULL, '2000-10-17 04:18:14', 233897984, 'hats', 'ahatsfkz', 'time', '2009-10-01 10:33:01', '2004-09-10 07:43:53', 'p') , (27, '2008-12-12 05:01:00', NULL, '2004-01-02 23:20:33', 7, 'NQKCO', 'TVTTB', 'KJYNW', '2000-05-06 14:41:27', '2003-11-28 23:04:01', 'yahatsfkz') , (28, '2005-09-08 16:11:04', NULL, '2002-03-05 17:07:00', NULL, 'i', 'e', 'fyahat', '2008-03-18 11:56:51', '2004-04-21 21:18:29', 'i') ;
|
||||
COMMIT;
|
||||
SELECT DISTINCT OUTR . `col_varchar_20` AS X FROM C AS OUTR2 LEFT JOIN B AS OUTR ON ( OUTR2 . `col_varchar_20` <> OUTR . `col_varchar_20` ) WHERE OUTR . `col_varchar_10` IN ( SELECT DISTINCT INNR . `col_varchar_20` AS Y FROM BB AS INNR2 LEFT JOIN BB AS INNR ON ( INNR2 . `col_date_key` = INNR . `col_date_key` ) WHERE INNR . `col_date_key` = INNR . `col_datetime_key` AND OUTR . `pk` IS NOT NULL ORDER BY INNR . `col_int` ) OR ( OUTR . `pk` > 8 AND NOT OUTR . `col_int_key` < 0 ) HAVING X >= '2002-01-19 16:26:37' ORDER BY OUTR . `col_int_key` , OUTR . `pk`;
|
||||
X
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,347 @@
|
||||
drop database if exists hualong;
|
||||
create database hualong;
|
||||
use hualong;
|
||||
CREATE TABLE `cb_dep_acct_54` ( `acctnbr` bigint(20) NOT NULL, `curracctstatcd` varchar(4) NOT NULL, PRIMARY KEY (`acctnbr`)) partition by hash(acctnbr) partitions 5;
|
||||
CREATE TABLE `cb_dep_acctbal_54` ( `acctnbr` bigint(20) NOT NULL, `balcatcd` varchar(4) NOT NULL, `baltypcd` varchar(4) NOT NULL, PRIMARY KEY (`acctnbr`, `balcatcd`, `baltypcd`));
|
||||
CREATE TABLE `cb_dep_rxtnbal_54` ( `acctnbr` varchar(34) NOT NULL, `rtxnnbr` bigint(20) NOT NULL, `balcatcd` varchar(4) NOT NULL, `baltypcd` varchar(4) NOT NULL);
|
||||
insert into cb_dep_acct_54 values (1, 'CLS');
|
||||
insert into cb_dep_acct_54 values (2, 'CLS');
|
||||
insert into cb_dep_acct_54 values (3, 'CCC');
|
||||
insert into cb_dep_acctbal_54 values (1, 3, 4);
|
||||
insert into cb_dep_acctbal_54 values (3, 7, 9);
|
||||
insert into cb_dep_acctbal_54 values (5, 6, 2333);
|
||||
insert into cb_dep_rxtnbal_54 values (1, 4, 3, 2);
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
Query Plan
|
||||
=======================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
-----------------------------------------------------------------------
|
||||
|0 |MERGE JOIN | |2 |30 |
|
||||
|1 |├─TABLE FULL SCAN |s |3 |3 |
|
||||
|2 |└─SORT | |2 |27 |
|
||||
|3 | └─SUBPLAN SCAN |VIEW1 |2 |27 |
|
||||
|4 | └─UNION ALL | |2 |27 |
|
||||
|5 | ├─PX COORDINATOR | |1 |12 |
|
||||
|6 | │ └─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|
||||
|7 | │ └─PX PARTITION ITERATOR | |1 |11 |
|
||||
|8 | │ └─TABLE FULL SCAN |a |1 |11 |
|
||||
|9 | └─HASH RIGHT SEMI JOIN | |1 |16 |
|
||||
|10| ├─TABLE FULL SCAN |r |1 |3 |
|
||||
|11| └─PX COORDINATOR | |2 |13 |
|
||||
|12| └─EXCHANGE OUT DISTR |:EX20000|2 |12 |
|
||||
|13| └─PX PARTITION ITERATOR| |2 |11 |
|
||||
|14| └─TABLE FULL SCAN |a |2 |11 |
|
||||
=======================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = VIEW1.a.acctnbr]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
1 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
2 - output([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
sort_keys([VIEW1.a.acctnbr, ASC])
|
||||
3 - output([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
access([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd])
|
||||
4 - output([UNION([1])], [UNION([2])]), filter(nil), rowset=16
|
||||
5 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
6 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
7 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
8 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
9 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([cast(r.acctnbr, DECIMAL(-1, -1)) = cast(a.acctnbr, DECIMAL(20, 0))]), other_conds(nil)
|
||||
10 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
11 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
12 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
13 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
14 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd = 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr) and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr != a.acctnbr)));
|
||||
Query Plan
|
||||
===========================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
---------------------------------------------------------------------------
|
||||
|0 |MERGE JOIN | |2 |30 |
|
||||
|1 |├─TABLE FULL SCAN |s |3 |3 |
|
||||
|2 |└─SORT | |2 |27 |
|
||||
|3 | └─SUBPLAN SCAN |VIEW1 |2 |27 |
|
||||
|4 | └─UNION ALL | |2 |27 |
|
||||
|5 | ├─PX COORDINATOR | |1 |12 |
|
||||
|6 | │ └─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|
||||
|7 | │ └─PX PARTITION ITERATOR | |1 |11 |
|
||||
|8 | │ └─TABLE FULL SCAN |a |1 |11 |
|
||||
|9 | └─MERGE SEMI JOIN | |1 |15 |
|
||||
|10| ├─SORT | |1 |13 |
|
||||
|11| │ └─NESTED-LOOP SEMI JOIN | |1 |13 |
|
||||
|12| │ ├─PX COORDINATOR | |2 |13 |
|
||||
|13| │ │ └─EXCHANGE OUT DISTR |:EX20000|2 |12 |
|
||||
|14| │ │ └─PX PARTITION ITERATOR| |2 |11 |
|
||||
|15| │ │ └─TABLE FULL SCAN |a |2 |11 |
|
||||
|16| │ └─MATERIAL | |1 |3 |
|
||||
|17| │ └─TABLE FULL SCAN |r |1 |3 |
|
||||
|18| └─SORT | |1 |3 |
|
||||
|19| └─TABLE FULL SCAN |r |1 |3 |
|
||||
===========================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = VIEW1.a.acctnbr]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
1 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
2 - output([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
sort_keys([VIEW1.a.acctnbr, ASC])
|
||||
3 - output([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd]), filter(nil), rowset=16
|
||||
access([VIEW1.a.acctnbr], [VIEW1.a.curracctstatcd])
|
||||
4 - output([UNION([1])], [UNION([2])]), filter(nil), rowset=16
|
||||
5 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
6 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
7 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
8 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
9 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([cast(r.acctnbr, DECIMAL(-1, -1)) = cast(a.acctnbr, DECIMAL(20, 0))]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
10 - output([a.acctnbr], [a.curracctstatcd], [cast(a.acctnbr, DECIMAL(20, 0))]), filter(nil), rowset=16
|
||||
sort_keys([cast(a.acctnbr, DECIMAL(20, 0)), ASC]), local merge sort
|
||||
11 - output([a.acctnbr], [a.curracctstatcd], [cast(a.acctnbr, DECIMAL(20, 0))]), filter(nil), rowset=16
|
||||
conds([cast(r.acctnbr, DECIMAL(-1, -1)) != cast(a.acctnbr, DECIMAL(20, 0))]), nl_params_(nil), use_batch=false
|
||||
12 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
13 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
14 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
15 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd = 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
16 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
17 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
18 - output([cast(r.acctnbr, DECIMAL(-1, -1))]), filter(nil), rowset=16
|
||||
sort_keys([cast(r.acctnbr, DECIMAL(-1, -1)), ASC])
|
||||
19 - output([cast(r.acctnbr, DECIMAL(-1, -1))]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and ((a.curracctstatcd != 'CLS' and exists(select 1 from cb_dep_acctbal_54 r where r.acctnbr = s.acctnbr)) or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
Query Plan
|
||||
=============================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
-----------------------------------------------------------------------------
|
||||
|0 |PX COORDINATOR | |2 |43 |
|
||||
|1 |└─EXCHANGE OUT DISTR |:EX10003|2 |41 |
|
||||
|2 | └─HASH UNION DISTINCT | |2 |38 |
|
||||
|3 | ├─HASH JOIN | |1 |18 |
|
||||
|4 | │ ├─PX PARTITION ITERATOR | |1 |11 |
|
||||
|5 | │ │ └─TABLE FULL SCAN |a |1 |11 |
|
||||
|6 | │ └─EXCHANGE IN DISTR | |3 |7 |
|
||||
|7 | │ └─EXCHANGE OUT DISTR (PKEY) |:EX10000|3 |6 |
|
||||
|8 | │ └─TABLE FULL SCAN |s |3 |3 |
|
||||
|9 | └─EXCHANGE IN DISTR | |1 |20 |
|
||||
|10| └─EXCHANGE OUT DISTR (PKEY) |:EX10002|1 |19 |
|
||||
|11| └─MERGE JOIN | |1 |18 |
|
||||
|12| ├─SORT | |1 |16 |
|
||||
|13| │ └─HASH RIGHT SEMI JOIN | |1 |16 |
|
||||
|14| │ ├─TABLE FULL SCAN |r |1 |3 |
|
||||
|15| │ └─EXCHANGE IN DISTR | |2 |13 |
|
||||
|16| │ └─EXCHANGE OUT DISTR |:EX10001|2 |12 |
|
||||
|17| │ └─PX PARTITION ITERATOR| |2 |11 |
|
||||
|18| │ └─TABLE FULL SCAN |a |2 |11 |
|
||||
|19| └─TABLE FULL SCAN |s |3 |3 |
|
||||
=============================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([INTERNAL_FUNCTION(UNION([1]), UNION([2]), UNION([3]), UNION([4]), UNION([5]))]), filter(nil), rowset=16
|
||||
1 - output([INTERNAL_FUNCTION(UNION([1]), UNION([2]), UNION([3]), UNION([4]), UNION([5]))]), filter(nil), rowset=16
|
||||
dop=1
|
||||
2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])], [UNION([5])]), filter(nil), rowset=16
|
||||
3 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = a.acctnbr]), other_conds(nil)
|
||||
4 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
affinitize, force partition granule
|
||||
5 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
6 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
7 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
(#keys=1, [s.acctnbr]), is_single, dop=1
|
||||
8 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
9 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
10 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
(#keys=1, [s.acctnbr]), is_single, dop=1
|
||||
11 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = a.acctnbr]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
12 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
sort_keys([a.acctnbr, ASC])
|
||||
13 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([cast(r.acctnbr, DECIMAL(-1, -1)) = cast(a.acctnbr, DECIMAL(20, 0))]), other_conds(nil)
|
||||
14 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
15 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
16 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
17 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
18 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd = 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
19 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by s.acctnbr;
|
||||
Query Plan
|
||||
=========================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
-------------------------------------------------------------------------
|
||||
|0 |MERGE GROUP BY | |2 |30 |
|
||||
|1 |└─MERGE JOIN | |2 |30 |
|
||||
|2 | ├─SORT | |2 |27 |
|
||||
|3 | │ └─SUBPLAN SCAN |VIEW2 |2 |27 |
|
||||
|4 | │ └─UNION ALL | |2 |27 |
|
||||
|5 | │ ├─PX COORDINATOR | |1 |12 |
|
||||
|6 | │ │ └─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|
||||
|7 | │ │ └─PX PARTITION ITERATOR | |1 |11 |
|
||||
|8 | │ │ └─TABLE FULL SCAN |a |1 |11 |
|
||||
|9 | │ └─HASH RIGHT SEMI JOIN | |1 |16 |
|
||||
|10| │ ├─TABLE FULL SCAN |r |1 |3 |
|
||||
|11| │ └─PX COORDINATOR | |2 |13 |
|
||||
|12| │ └─EXCHANGE OUT DISTR |:EX20000|2 |12 |
|
||||
|13| │ └─PX PARTITION ITERATOR| |2 |11 |
|
||||
|14| │ └─TABLE FULL SCAN |a |2 |11 |
|
||||
|15| └─TABLE FULL SCAN |s |3 |3 |
|
||||
=========================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
group([s.acctnbr]), agg_func(nil)
|
||||
1 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = VIEW2.a.acctnbr]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
2 - output([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
sort_keys([VIEW2.a.acctnbr, ASC])
|
||||
3 - output([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
access([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd])
|
||||
4 - output([UNION([1])], [UNION([2])]), filter(nil), rowset=16
|
||||
5 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
6 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
7 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
8 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
9 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([cast(r.acctnbr, DECIMAL(-1, -1)) = cast(a.acctnbr, DECIMAL(20, 0))]), other_conds(nil)
|
||||
10 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
11 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
12 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
13 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
14 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd = 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
15 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
explain select /*+ no_use_hash_aggregation */ * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by a.acctnbr;
|
||||
Query Plan
|
||||
=========================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
-------------------------------------------------------------------------
|
||||
|0 |MERGE GROUP BY | |2 |30 |
|
||||
|1 |└─MERGE JOIN | |2 |30 |
|
||||
|2 | ├─SORT | |2 |27 |
|
||||
|3 | │ └─SUBPLAN SCAN |VIEW2 |2 |27 |
|
||||
|4 | │ └─UNION ALL | |2 |27 |
|
||||
|5 | │ ├─PX COORDINATOR | |1 |12 |
|
||||
|6 | │ │ └─EXCHANGE OUT DISTR |:EX10000|1 |12 |
|
||||
|7 | │ │ └─PX PARTITION ITERATOR | |1 |11 |
|
||||
|8 | │ │ └─TABLE FULL SCAN |a |1 |11 |
|
||||
|9 | │ └─HASH RIGHT SEMI JOIN | |1 |16 |
|
||||
|10| │ ├─TABLE FULL SCAN |r |1 |3 |
|
||||
|11| │ └─PX COORDINATOR | |2 |13 |
|
||||
|12| │ └─EXCHANGE OUT DISTR |:EX20000|2 |12 |
|
||||
|13| │ └─PX PARTITION ITERATOR| |2 |11 |
|
||||
|14| │ └─TABLE FULL SCAN |a |2 |11 |
|
||||
|15| └─TABLE FULL SCAN |s |3 |3 |
|
||||
=========================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
group([VIEW2.a.acctnbr]), agg_func(nil)
|
||||
1 - output([VIEW2.a.acctnbr], [s.acctnbr], [s.balcatcd], [s.baltypcd], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([s.acctnbr = VIEW2.a.acctnbr]), other_conds(nil)
|
||||
merge_directions([ASC])
|
||||
2 - output([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
sort_keys([VIEW2.a.acctnbr, ASC])
|
||||
3 - output([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd]), filter(nil), rowset=16
|
||||
access([VIEW2.a.acctnbr], [VIEW2.a.curracctstatcd])
|
||||
4 - output([UNION([1])], [UNION([2])]), filter(nil), rowset=16
|
||||
5 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
6 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
7 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
8 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd != 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
9 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
equal_conds([cast(r.acctnbr, DECIMAL(-1, -1)) = cast(a.acctnbr, DECIMAL(20, 0))]), other_conds(nil)
|
||||
10 - output([r.acctnbr]), filter(nil), rowset=16
|
||||
access([r.acctnbr]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([r.__pk_increment]), range(MIN ; MAX)always true
|
||||
11 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
12 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
dop=1
|
||||
13 - output([a.acctnbr], [a.curracctstatcd]), filter(nil), rowset=16
|
||||
force partition granule
|
||||
14 - output([a.acctnbr], [a.curracctstatcd]), filter([a.curracctstatcd = 'CLS']), rowset=16
|
||||
access([a.acctnbr], [a.curracctstatcd]), partitions(p[0-4])
|
||||
is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([a.acctnbr]), range(MIN ; MAX)always true
|
||||
15 - output([s.acctnbr], [s.balcatcd], [s.baltypcd]), filter(nil), rowset=16
|
||||
access([s.acctnbr], [s.balcatcd], [s.baltypcd]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([s.acctnbr], [s.balcatcd], [s.baltypcd]), range(MIN,MIN,MIN ; MAX,MAX,MAX)always true
|
||||
drop database hualong;
|
||||
1987
tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery.result
Normal file
1987
tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,204 @@
|
||||
#
|
||||
# Bug#51457 Firstmatch semijoin strategy gives wrong results for
|
||||
# certain query plans
|
||||
#
|
||||
drop table if exists t0, t1, t2, t3, t6, t8;
|
||||
drop view if exists v1, v2, v3, v_t2, view_b, view_c;
|
||||
CREATE TABLE t0(a INTEGER);
|
||||
CREATE TABLE t1(a INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
CREATE TABLE t2(a INTEGER);
|
||||
INSERT INTO t2 VALUES(5), (8);
|
||||
CREATE TABLE t6(a INTEGER);
|
||||
INSERT INTO t6 VALUES(7), (1), (0), (5), (1), (4);
|
||||
CREATE TABLE t8(a INTEGER);
|
||||
INSERT INTO t8 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
Query Plan
|
||||
====================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
--------------------------------------------------------------------
|
||||
|0 |NESTED-LOOP JOIN CARTESIAN | |2 |3 |
|
||||
|1 |├─TABLE FULL SCAN |nt2 |2 |3 |
|
||||
|2 |└─MATERIAL | |1 |3 |
|
||||
|3 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|
||||
|4 | └─LIMIT | |1 |3 |
|
||||
|5 | └─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|
||||
|6 | ├─SUBPLAN SCAN |VIEW2|1 |3 |
|
||||
|7 | │ └─TABLE FULL SCAN |it1 |1 |3 |
|
||||
|8 | └─MATERIAL | |1 |3 |
|
||||
|9 | └─SUBPLAN SCAN |VIEW3|1 |3 |
|
||||
|10| └─TABLE FULL SCAN |it3 |1 |3 |
|
||||
====================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([nt2.a]), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
1 - output([nt2.a]), filter(nil), rowset=16
|
||||
access([nt2.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([nt2.__pk_increment]), range(MIN ; MAX)always true
|
||||
2 - output(nil), filter(nil), rowset=16
|
||||
3 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
4 - output([1]), filter(nil), rowset=16
|
||||
limit(1), offset(nil)
|
||||
5 - output(nil), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
6 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
7 - output([1]), filter([it1.a = 1]), rowset=16
|
||||
access([it1.a]), partitions(p0)
|
||||
limit(1), offset(nil), is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([it1.__pk_increment]), range(MIN ; MAX)always true
|
||||
8 - output(nil), filter(nil), rowset=16
|
||||
9 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
10 - output([1]), filter([it3.a = 1]), rowset=16
|
||||
access([it3.a]), partitions(p0)
|
||||
limit(1), offset(nil), is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([it3.__pk_increment]), range(MIN ; MAX)always true
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
a
|
||||
5
|
||||
8
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
Query Plan
|
||||
========================================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
------------------------------------------------------------------------
|
||||
|0 |NESTED-LOOP JOIN CARTESIAN | |16 |3 |
|
||||
|1 |├─TABLE FULL SCAN |nt4 |8 |3 |
|
||||
|2 |└─MATERIAL | |2 |3 |
|
||||
|3 | └─NESTED-LOOP JOIN CARTESIAN | |2 |3 |
|
||||
|4 | ├─TABLE FULL SCAN |nt2 |2 |3 |
|
||||
|5 | └─MATERIAL | |1 |3 |
|
||||
|6 | └─SUBPLAN SCAN |VIEW1|1 |3 |
|
||||
|7 | └─LIMIT | |1 |3 |
|
||||
|8 | └─NESTED-LOOP JOIN CARTESIAN | |1 |3 |
|
||||
|9 | ├─SUBPLAN SCAN |VIEW2|1 |3 |
|
||||
|10| │ └─TABLE FULL SCAN |it1 |1 |3 |
|
||||
|11| └─MATERIAL | |1 |3 |
|
||||
|12| └─SUBPLAN SCAN |VIEW3|1 |3 |
|
||||
|13| └─TABLE FULL SCAN |it3 |1 |3 |
|
||||
========================================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([nt2.a], [nt4.a]), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
1 - output([nt4.a]), filter(nil), rowset=16
|
||||
access([nt4.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([nt4.__pk_increment]), range(MIN ; MAX)always true
|
||||
2 - output([nt2.a]), filter(nil), rowset=16
|
||||
3 - output([nt2.a]), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
4 - output([nt2.a]), filter(nil), rowset=16
|
||||
access([nt2.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([nt2.__pk_increment]), range(MIN ; MAX)always true
|
||||
5 - output(nil), filter(nil), rowset=16
|
||||
6 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
7 - output([1]), filter(nil), rowset=16
|
||||
limit(1), offset(nil)
|
||||
8 - output(nil), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
9 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
10 - output([1]), filter([it1.a = 1]), rowset=16
|
||||
access([it1.a]), partitions(p0)
|
||||
limit(1), offset(nil), is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([it1.__pk_increment]), range(MIN ; MAX)always true
|
||||
11 - output(nil), filter(nil), rowset=16
|
||||
12 - output(nil), filter(nil), rowset=16
|
||||
access(nil)
|
||||
13 - output([1]), filter([it3.a = 1]), rowset=16
|
||||
access([it3.a]), partitions(p0)
|
||||
limit(1), offset(nil), is_index_back=false, is_global_index=false, filter_before_indexback[false],
|
||||
range_key([it3.__pk_increment]), range(MIN ; MAX)always true
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
a a
|
||||
5 1
|
||||
8 1
|
||||
5 3
|
||||
8 3
|
||||
5 5
|
||||
8 5
|
||||
5 7
|
||||
8 7
|
||||
5 9
|
||||
8 9
|
||||
5 7
|
||||
8 7
|
||||
5 3
|
||||
8 3
|
||||
5 1
|
||||
8 1
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t0 AS ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
Query Plan
|
||||
============================================================
|
||||
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
|
||||
------------------------------------------------------------
|
||||
|0 |NESTED-LOOP JOIN CARTESIAN | |2 |3 |
|
||||
|1 |├─TABLE FULL SCAN |nt3 |2 |3 |
|
||||
|2 |└─MATERIAL | |1 |8 |
|
||||
|3 | └─HASH SEMI JOIN | |1 |8 |
|
||||
|4 | ├─TABLE FULL SCAN |ot1 |1 |3 |
|
||||
|5 | └─SUBPLAN SCAN |VIEW1|2 |6 |
|
||||
|6 | └─HASH JOIN | |2 |6 |
|
||||
|7 | ├─TABLE FULL SCAN |it2 |1 |3 |
|
||||
|8 | └─TABLE FULL SCAN |it4 |8 |3 |
|
||||
============================================================
|
||||
Outputs & filters:
|
||||
-------------------------------------
|
||||
0 - output([ot1.a], [nt3.a]), filter(nil), rowset=16
|
||||
conds(nil), nl_params_(nil), use_batch=false
|
||||
1 - output([nt3.a]), filter(nil), rowset=16
|
||||
access([nt3.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([nt3.__pk_increment]), range(MIN ; MAX)always true
|
||||
2 - output([ot1.a]), filter(nil), rowset=16
|
||||
3 - output([ot1.a]), filter(nil), rowset=16
|
||||
equal_conds([ot1.a = VIEW1.a]), other_conds(nil)
|
||||
4 - output([ot1.a]), filter(nil), rowset=16
|
||||
access([ot1.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([ot1.__pk_increment]), range(MIN ; MAX)always true
|
||||
5 - output([VIEW1.a]), filter(nil), rowset=16
|
||||
access([VIEW1.a])
|
||||
6 - output([it2.a]), filter(nil), rowset=16
|
||||
equal_conds([it2.a = it4.a]), other_conds(nil)
|
||||
7 - output([it2.a]), filter(nil), rowset=16
|
||||
access([it2.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([it2.__pk_increment]), range(MIN ; MAX)always true
|
||||
8 - output([it4.a]), filter(nil), rowset=16
|
||||
access([it4.a]), partitions(p0)
|
||||
is_index_back=false, is_global_index=false,
|
||||
range_key([it4.__pk_increment]), range(MIN ; MAX)always true
|
||||
SELECT *
|
||||
FROM t0 as ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
a a
|
||||
DROP TABLE t0, t1, t2, t6, t8;
|
||||
# End of bug#51457
|
||||
@ -0,0 +1,123 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
#owner: yuchen.wyc
|
||||
# owner group: SQL1
|
||||
# tags: optimizer
|
||||
#description: Test index with constant expr and subquery
|
||||
|
||||
##
|
||||
## Table cleaning
|
||||
##
|
||||
#
|
||||
--enable_sorted_result
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
--source mysql_test/include/index_quick_major.inc
|
||||
#
|
||||
##
|
||||
## Tests to check query_range with const expression in subquery after from
|
||||
##
|
||||
#
|
||||
## Create database schema
|
||||
create table t1(
|
||||
a1 char(3) primary key,
|
||||
a2 int,
|
||||
a3 char(3),
|
||||
a4 float,
|
||||
a5 datetime
|
||||
);
|
||||
create table t2(
|
||||
a1 char(3) primary key,
|
||||
a2 char(17),
|
||||
a3 char(2),
|
||||
a4 char(3)
|
||||
);
|
||||
#
|
||||
## Populate table t1
|
||||
insert into t1 values('AME',0,'SEA',0.100,date'1942-02-19');
|
||||
insert into t1 values('HBR',1,'SEA',0.085,date'1948-03-05');
|
||||
insert into t1 values('BOT',2,'SEA',0.085,date'1951-11-29');
|
||||
insert into t1 values('BMC',3,'SEA',0.085,date'1958-09-08');
|
||||
insert into t1 values('TWU',0,'LAX',0.080,date'1969-10-05');
|
||||
insert into t1 values('BDL',0,'DEN',0.080,date'1960-11-27');
|
||||
insert into t1 values('DTX',1,'NYC',0.080,date'1961-05-04');
|
||||
insert into t1 values('PLS',1,'WDC',0.075,date'1949-01-02');
|
||||
insert into t1 values('ZAJ',2,'CHI',0.075,date'1960-06-15');
|
||||
insert into t1 values('VVV',2,'MON',0.075,date'1959-06-28');
|
||||
insert into t1 values('GTM',3,'DAL',0.070,date'1977-09-23');
|
||||
insert into t1 values('SSJ',null,'CHI',null,date'1974-03-19');
|
||||
insert into t1 values('KKK',3,'ATL',null,null);
|
||||
insert into t1 values('XXX',null,'MIN',null,null);
|
||||
insert into t1 values('WWW',1,'LED',null,null);
|
||||
insert into t1 values('GG3',3,'DD3',0.051,now());
|
||||
insert into t1 values('GG2',3,'DD2',0.052,now());
|
||||
insert into t1 values('GG1',3,'DD1',0.053,now());
|
||||
#
|
||||
# Populate table t2
|
||||
insert into t2 values('TKF','Seattle','WA','AME');
|
||||
insert into t2 values('LCC','Los Angeles','CA','TWU');
|
||||
insert into t2 values('DEN','Denver','CO','BDL');
|
||||
insert into t2 values('SDC','San Diego','CA','TWU');
|
||||
insert into t2 values('NOL','New Orleans','LA','GTM');
|
||||
insert into t2 values('LAK','Los Angeles','CA','TWU');
|
||||
insert into t2 values('AAA','AAA','AA','AME');
|
||||
|
||||
## Create index i1 for t1
|
||||
create index i2 on t1(a2);
|
||||
create index i3 on t1(a3);
|
||||
create index i5 on t1(a5);
|
||||
|
||||
--source mysql_test/include/check_all_idx_ok.inc
|
||||
|
||||
# >>> Not supported(2014.9.17 - OceanBase 0.5.1.3 (r25917M) (Built Sep 16 2014 19:46:06)): int_column >= (expr with / or round(), type is numeric) will not go through index on int_column
|
||||
|
||||
## subquery with const expr on int
|
||||
# - alias query range (like b2>=... and b2<=...) will not use index, while the original column can use index
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1, a2*2+1 as b2 from t1 where a2>=1-1 and a2<=round(9.0/2.0)*2) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1, a2*2+1 as b2, a3 from t1 where a2>=1-1 and a2<=round(9.0/2.0)*2) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1, a2*2+1 as b2 from t1 where a2>=1-(9-8)+(3*5)-45/3 and a2<=100%55-35) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1, a2*2+1 as b2, a3 from t1 where a2>=1-(9-8)+(3*5)-45/3 and a2<=100%55-35) as t;
|
||||
|
||||
## subquery with const expr on varchar
|
||||
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a3>=concat('D', 'EE') and a3<=concat('M', 'PP')) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a3>=concat(upper(substr('abcde',4,1)), upper(substr('ccddee',5,2))) and a3<=concat(upper(substr('lmnop',2,1)), upper(substr('ooppqq',3,2)))) as t;
|
||||
|
||||
## subquery with const expr on numeric
|
||||
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4,a5 from t1 where a4>=0.75/10+1-1 and a4<=0.2*0.4+4%2) as t;
|
||||
|
||||
## subquery with const expr on timestamp
|
||||
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(now(), interval -60 minute) and a5<=date_add(current_timestamp(), interval -1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_add(current_timestamp(), interval -1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_add(now(), interval -1 microsecond)) as t;
|
||||
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(now(), interval 60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(current_timestamp(), interval 60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_sub(current_timestamp(), interval 60 minute) and a5<=date_sub(now(), interval 1 microsecond)) as t;
|
||||
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(now(), interval -60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_sub(current_timestamp(), interval 1 microsecond)) as t;
|
||||
--replace_column 5 timestamp
|
||||
select * from (select a1,a2*2+1 as b2,a3,a4 from t1 where a5>=date_add(current_timestamp(), interval -60 minute) and a5<=date_sub(now(), interval 1 microsecond)) as t;
|
||||
|
||||
|
||||
@ -0,0 +1,436 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
#owner:link.zt
|
||||
#owner group: sql1
|
||||
# tags: optimizer
|
||||
#bug
|
||||
#bug
|
||||
#bug
|
||||
#bug
|
||||
#bug
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3, table10_key_pk_parts_1_bigint, table0_hash_pk_parts_1_bigint, table2_bigint, table10_bigint, table100_bigint, tt, `table300_bigint`, t, m;
|
||||
--enable_warnings
|
||||
create table t1(a int primary key, b int, c int);
|
||||
create table t2(a int primary key, b int, c int);
|
||||
create table t3(a int primary key, b int, c int);
|
||||
CREATE TABLE `table10_key_pk_parts_1_bigint` (
|
||||
`col_varchar_16_key` varchar(16) DEFAULT NULL,
|
||||
`col_char_5_index` char(5) DEFAULT NULL,
|
||||
`col_varchar_8` varchar(8) DEFAULT NULL,
|
||||
`col_char_5` char(5) DEFAULT NULL,
|
||||
`col_bigint` bigint(20) DEFAULT NULL,
|
||||
`col_timestamp_6_key` timestamp(6) NULL DEFAULT NULL,
|
||||
`pk` bigint(20) NOT NULL,
|
||||
`col_char_20_index` char(20) DEFAULT NULL,
|
||||
`col_bigint_key` bigint(20) DEFAULT NULL,
|
||||
`col_char_20` char(20) DEFAULT NULL,
|
||||
`col_timestamp_6_index` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_varchar_8_key` varchar(8) DEFAULT NULL,
|
||||
`col_char_20_key` char(20) DEFAULT NULL,
|
||||
`col_varchar_16_index` varchar(16) DEFAULT NULL,
|
||||
`col_varchar_16` varchar(16) DEFAULT NULL,
|
||||
`col_char_5_key` char(5) DEFAULT NULL,
|
||||
`col_bigint_index` bigint(20) DEFAULT NULL,
|
||||
`col_timestamp_6` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_varchar_8_index` varchar(8) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx13` (`pk`,`col_varchar_16_key`),
|
||||
KEY `idx5` (`pk`,`col_char_5_index`),
|
||||
KEY `idx16` (`pk`,`col_timestamp_6_key`),
|
||||
KEY `idx11` (`pk`,`col_char_20_index`),
|
||||
KEY `idx1` (`pk`,`col_bigint_key`),
|
||||
KEY `idx17` (`pk`,`col_timestamp_6_index`),
|
||||
KEY `idx7` (`pk`,`col_varchar_8_key`),
|
||||
KEY `idx10` (`pk`,`col_char_20_key`),
|
||||
KEY `idx14` (`pk`,`col_varchar_16_index`),
|
||||
KEY `idx4` (`pk`,`col_char_5_key`),
|
||||
KEY `idx2` (`pk`,`col_bigint_index`),
|
||||
KEY `idx8` (`pk`,`col_varchar_8_index`)
|
||||
);
|
||||
CREATE TABLE `table0_hash_pk_parts_1_bigint` (
|
||||
`col_char_20_key` char(20) DEFAULT NULL,
|
||||
`col_timestamp_6_key` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_varchar_8` varchar(8) DEFAULT NULL,
|
||||
`col_varchar_16_index` varchar(16) DEFAULT NULL,
|
||||
`col_char_5` char(5) DEFAULT NULL,
|
||||
`col_char_5_key` char(5) DEFAULT NULL,
|
||||
`pk` bigint(20) NOT NULL,
|
||||
`col_varchar_8_index` varchar(8) DEFAULT NULL,
|
||||
`col_varchar_8_key` varchar(8) DEFAULT NULL,
|
||||
`col_char_20` char(20) DEFAULT NULL,
|
||||
`col_char_20_index` char(20) DEFAULT NULL,
|
||||
`col_varchar_16_key` varchar(16) DEFAULT NULL,
|
||||
`col_timestamp_6` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_bigint_key` bigint(20) DEFAULT NULL,
|
||||
`col_bigint` bigint(20) DEFAULT NULL,
|
||||
`col_varchar_16` varchar(16) DEFAULT NULL,
|
||||
`col_timestamp_6_index` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_bigint_index` bigint(20) DEFAULT NULL,
|
||||
`col_char_5_index` char(5) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx10` (`pk`,`col_char_20_key`),
|
||||
KEY `idx16` (`pk`,`col_timestamp_6_key`),
|
||||
KEY `idx14` (`pk`,`col_varchar_16_index`),
|
||||
KEY `idx4` (`pk`,`col_char_5_key`),
|
||||
KEY `idx8` (`pk`,`col_varchar_8_index`),
|
||||
KEY `idx7` (`pk`,`col_varchar_8_key`),
|
||||
KEY `idx11` (`pk`,`col_char_20_index`),
|
||||
KEY `idx13` (`pk`,`col_varchar_16_key`),
|
||||
KEY `idx1` (`pk`,`col_bigint_key`),
|
||||
KEY `idx17` (`pk`,`col_timestamp_6_index`),
|
||||
KEY `idx2` (`pk`,`col_bigint_index`),
|
||||
KEY `idx5` (`pk`,`col_char_5_index`)
|
||||
);
|
||||
CREATE TABLE table2_bigint (
|
||||
col_char_20 char(20),
|
||||
col_timestamp_6 timestamp(6) NULL DEFAULT NULL,
|
||||
pk bigint,
|
||||
col_bigint bigint,
|
||||
col_decimal_20_0 decimal(20,0),
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
CREATE TABLE table10_bigint (
|
||||
col_decimal_20_0 decimal(20,0),
|
||||
col_bigint bigint,
|
||||
col_timestamp_6 timestamp(6) NULL DEFAULT NULL,
|
||||
pk bigint,
|
||||
col_char_20 char(20),
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
CREATE TABLE table100_bigint (
|
||||
col_decimal_20_0 decimal(20,0),
|
||||
col_bigint bigint,
|
||||
col_timestamp_6 timestamp(6) NULL DEFAULT NULL,
|
||||
col_char_20 char(20),
|
||||
pk bigint,
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
|
||||
CREATE TABLE `tt` (
|
||||
`pk` bigint(20) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE `table300_bigint` (
|
||||
`col_datetime_index` datetime DEFAULT NULL,
|
||||
`pk` bigint(20) NOT NULL,
|
||||
`col_bigint_key` bigint(20) DEFAULT NULL,
|
||||
`col_bigint_index` bigint(20) DEFAULT NULL,
|
||||
`col_datetime_3_index` datetime(3) DEFAULT NULL,
|
||||
`col_decimal_20_0_key` decimal(20,0) DEFAULT NULL,
|
||||
`col_decimal_20_0_index` decimal(20,0) DEFAULT NULL,
|
||||
`col_timestamp_2_key` timestamp(2) NULL DEFAULT NULL,
|
||||
`col_timestamp_6` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_char_20` char(20) DEFAULT NULL,
|
||||
`col_double_key` double DEFAULT NULL,
|
||||
`col_float_index` float DEFAULT NULL,
|
||||
`col_timestamp` timestamp NULL DEFAULT NULL,
|
||||
`col_bigint` bigint(20) DEFAULT NULL,
|
||||
`col_decimal_20_0` decimal(20,0) DEFAULT NULL,
|
||||
`col_timestamp_2` timestamp(2) NULL DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_timestamp_6_index` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_float` float DEFAULT NULL,
|
||||
`col_double_index` double DEFAULT NULL,
|
||||
`col_char_20_index` char(20) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_timestamp_key` timestamp NULL DEFAULT NULL,
|
||||
`col_timestamp_index` timestamp NULL DEFAULT NULL,
|
||||
`col_timestamp_6_key` timestamp(6) NULL DEFAULT NULL,
|
||||
`col_char_20_key` char(20) DEFAULT NULL,
|
||||
`col_float_key` float DEFAULT NULL,
|
||||
`col_timestamp_2_index` timestamp(2) NULL DEFAULT NULL,
|
||||
`col_datetime_3` datetime(3) DEFAULT NULL,
|
||||
`col_datetime_3_key` datetime(3) DEFAULT NULL,
|
||||
`col_double` double DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx20` (`pk`, `col_datetime_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx1` (`pk`, `col_bigint_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx2` (`pk`, `col_bigint_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx26` (`pk`, `col_datetime_3_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx4` (`pk`, `col_decimal_20_0_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx5` (`pk`, `col_decimal_20_0_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx28` (`pk`, `col_timestamp_2_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx7` (`pk`, `col_double_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx11` (`pk`, `col_float_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx17` (`pk`, `col_timestamp_6_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx8` (`pk`, `col_double_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx14` (`pk`, `col_char_20_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx19` (`pk`, `col_datetime_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx22` (`pk`, `col_timestamp_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx23` (`pk`, `col_timestamp_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx16` (`pk`, `col_timestamp_6_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx13` (`pk`, `col_char_20_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx10` (`pk`, `col_float_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx29` (`pk`, `col_timestamp_2_index`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx25` (`pk`, `col_datetime_3_key`) BLOCK_SIZE 16384 GLOBAL
|
||||
) ;
|
||||
CREATE TABLE `m` (
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx5` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx9` (`pk`, `col_datetime_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx3` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx7` (`pk`, `col_date_key`) BLOCK_SIZE 16384 GLOBAL
|
||||
) ;
|
||||
CREATE TABLE `t` (
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx5` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx7` (`pk`, `col_date_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx3` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx9` (`pk`, `col_datetime_key`) BLOCK_SIZE 16384 GLOBAL,
|
||||
KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL
|
||||
) ;
|
||||
--disable_query_log
|
||||
insert into t1 values (1,1,1), (2,2,2), (3,3,3);
|
||||
insert into t2 values (1,1,1), (2,2,2), (3,3,3);
|
||||
insert into t3 values (1,1,1);
|
||||
INSERT INTO `table0_hash_pk_parts_1_bigint` VALUES (NULL,NULL,NULL,NULL,NULL,NULL,-25168,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-22160,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-21268,NULL,NULL,NULL,NULL,NULL,NULL,51,NULL,NULL,'2015-06-19 01:55:00.000006',10,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-20311,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-16351,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('i','2016-06-17 03:10:10.000003',NULL,NULL,NULL,NULL,-13037,NULL,NULL,NULL,'',NULL,NULL,-13037,5,NULL,'2015-06-19 01:55:00.000006',10,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-12786,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-669,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,-100,NULL,NULL,NULL,NULL,NULL,NULL,51,NULL,NULL,'2015-06-19 01:55:00.000006',99999,NULL),('i','2016-06-17 03:10:10.000003',NULL,NULL,NULL,NULL,-10,NULL,NULL,NULL,'',NULL,NULL,-10,5,NULL,'2015-06-19 01:55:00.000006',10,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,6,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,8,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,30,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,44,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,53,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,59,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,70,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,81,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,99,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,105,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,115,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,135,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,148,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,161,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,164,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,191,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,211,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,212,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,218,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,234,NULL,NULL,NULL,NULL,NULL,NULL,169,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,244,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,245,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,2220,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,6715,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,11823,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,12874,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,17385,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,19852,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,25193,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,26110,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,28080,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(NULL,NULL,NULL,NULL,NULL,NULL,29720,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),('qipmrji',NULL,NULL,NULL,NULL,NULL,999996,NULL,NULL,NULL,'',NULL,NULL,-10,5,NULL,'2015-06-19 01:55:00.000006',10,NULL);
|
||||
INSERT INTO table2_bigint VALUES (NULL, '2000-07-19 22:07:03.000009', 1, 0, NULL) , (NULL, '2000-05-03 04:38:01.045141', 2, -2787, 2) ;
|
||||
INSERT INTO table10_bigint VALUES (56, 7, '2000-10-25 10:15:53.004831', 1, 'been') , (29405, NULL, '2004-01-20 23:51:28.058184', 2, 'see') , (90, 3, '2008-06-15 10:54:23.055032', 3, 'don\'t') , (0, -158751886864809984, '2002-04-26 18:06:02.060785', 4, '') , (0, -6699385920690323456, '2006-04-09 06:18:59.031724', 5, 'q') , (4, NULL, '2007-12-10 15:10:25.052765', 6, 'here') , (0, 98, '2008-07-11 05:46:33.024169', 7, '') , (0, 3368, '2000-02-08 23:09:29.028746', 8, 'just') , (0, -2933813682255167488, '2003-07-12 15:30:37.028849', 9, '') , (NULL, NULL, '2000-06-20 12:12:34.007609', 10, '') ;
|
||||
INSERT INTO table100_bigint VALUES (-21311, 1, '2007-03-17 20:28:38.005342', '', 1) , (0, -123, '2000-04-27 13:39:25.043491', 'for', 2) , (0, NULL, '2009-09-04 19:30:59.029955', '', 3) , (0, NULL, '2008-01-24 15:50:35.035110', NULL, 4) , (1, NULL, '2004-03-14 16:07:38.052919', 'on', 5) , (NULL, 25389, '2006-03-10 05:22:52.044278', 'got', 6) , (0, -6936387851080695808, '2004-05-01 17:20:32.026832', 'a', 7) , (0, 0, '2007-12-09 07:32:39.005570', NULL, 8) , (NULL, 3, '2006-10-24 01:24:25.026620', 'tmbqlwenzgckc', 9) , (0, 44, '2003-02-20 23:14:48.000651', 'h', 10) , (19575, NULL, '2009-01-25 00:09:09.001093', 'otmbqlwenzgckcn', 11) , (NULL, 0, '2009-06-19 02:32:42.058558', 'kotm', 12) , (29556, 0, '2007-06-08 20:50:32.016203', 'l', 13) , (4, 0, '2005-02-06 02:36:47.052485', 'l', 14) , (0, NULL, '2006-12-08 23:44:39.007581', 'about', 15) , (3, 30190, '2005-08-01 19:47:21.059817', '', 16) , (NULL, -26963, '2004-09-27 15:32:24.028886', '', 17) , (30237, 6357, '2003-08-16 22:11:36.049190', 'd', 18) , (3, 30809, '2007-07-28 05:01:11.059553', 'say', 19) , (2, 58, '2004-08-08 06:06:53.000657', 'up', 20) , (2, 0, '2004-05-05 00:07:53.056717', 'p', 21) , (15596, -7243477050672021504, '2007-10-24 07:41:20.009540', NULL, 22) , (NULL, NULL, '2006-03-11 09:00:32.056732', '', 23) , (8, -3532510957718732800, '2002-11-27 13:24:21.026572', '', 24) , (0, -51, '2003-04-21 15:26:32.028150', NULL, 25) , (NULL, 84, '2000-02-02 15:46:51.044670', 'skotmbqlwen', 26) , (NULL, 2, '2006-09-27 05:51:42.056306', NULL, 27) , (27085, -6619, '2009-02-15 11:17:39.055271', 'fsko', 28) , (NULL, NULL, '2009-04-13 12:19:23.022903', '', 29) , (-66, 5, '2005-04-24 16:04:01.045099', 'd', 30) , (7, -3244, '2006-07-22 09:35:25.042817', 'on', 31) , (0, 3723913941881978880, '2008-06-15 01:26:27.059265', 'qfskotmbqlwenzgck', 32) , (32548, 0, '2009-09-01 20:04:07.011921', '', 33) , (3, 1, '2000-03-09 07:38:25.065179', 'h', 34) , (58, -54, '2002-05-18 22:17:27.056729', 'why', 35) , (NULL, NULL, '2004-06-03 21:40:57.058002', '', 36) , (0, 12773, '2007-02-07 14:14:48.038385', '', 37) , (15190, 119, '2006-11-26 07:53:46.058393', NULL, 38) , (5, 24282, '2003-02-23 20:50:34.063257', 'xqfskotmbqlwenzgck', 39) , (0, -13, '2007-07-04 01:29:16.039068', '', 40) , (0, 1124, '2005-02-20 12:37:29.013723', 'qxqfskotmb', 41) , (0, -32, '2009-05-08 11:12:46.009877', NULL, 42) , (0, 6, '2002-08-25 23:27:40.031436', '', 43) , (110, 73, '2008-10-23 15:40:48.051839', 'd', 44) , (-86, 0, '2009-09-16 20:42:47.031709', 'yqx', 45) , (0, 0, '2006-05-05 11:09:02.062541', 'back', 46) , (-6444, 3, '2003-04-04 02:09:51.030921', 'ayqxqfskotmbqlw', 47) , (1, -923, '2002-05-04 07:55:07.031726', 'was', 48) , (17882, 0, '2002-06-11 02:46:37.022034', 'eayqxq', 49) , (NULL, 0, '2002-02-12 09:51:50.003898', 'we', 50) ;
|
||||
INSERT INTO table100_bigint VALUES (6473, 1, '2006-06-10 19:15:15.029803', 'p', 51) , (0, 8179662823211663360, '2000-02-15 08:01:15.034064', 's', 52) , (-102, 32031, '2009-02-09 22:43:57.050865', NULL, 53) , (0, 6, '2003-08-11 06:03:05.020104', 'oeayq', 54) , (NULL, 4649966615260037120, '2000-06-14 15:15:55.049659', NULL, 55) , (24144, NULL, '2008-12-04 13:24:31.025947', 'don\'t', 56) , (0, -43, '2004-12-27 06:24:02.010371', 'of', 57) , (24623, 8205839996045754368, '2002-08-21 07:12:32.027641', '', 58) , (0, -24716, '2000-03-16 14:51:39.010623', 'about', 59) , (26659, 3, '2004-06-06 19:06:01.029667', 'r', 60) , (NULL, 29, '2002-08-09 19:26:55.024733', NULL, 61) , (29, -55, '2005-09-27 06:31:56.004104', 's', 62) , (32, 6, '2008-01-01 11:11:26.034894', 'there', 63) , (-5158, 8, '2001-02-19 17:07:58.059336', NULL, 64) , (115, 3044996298055876608, '2009-06-13 08:06:29.000465', 'coeayqxqfskotmbqlwen', 65) , (NULL, 4, '2007-07-21 08:39:58.000032', '', 66) , (0, 0, '2005-12-12 01:43:20.000184', 'all', 67) , (-28909, -1, '2003-08-27 07:31:53.003529', NULL, 68) , (NULL, 0, '2005-12-18 03:32:29.024492', 'gcoeayqxqfsko', 69) , (-112, NULL, '2000-08-03 14:49:12.013523', 'igcoeayqxqfsk', 70) , (17, -42, '2000-06-11 20:35:43.041900', 'd', 71) , (1, -2930435982534639616, '2009-06-21 09:40:58.030559', 'think', 72) , (-24017, -1119988932331700224, '2009-01-18 19:20:18.019570', 'wigcoeayqxqfsk', 73) , (0, 69, '2006-08-09 02:47:04.054485', '', 74) , (NULL, 9, '2009-06-26 03:35:18.043361', NULL, 75) , (2, 1552053021582557184, '2002-06-26 02:20:24.009712', 'twigcoeayqxqfskotmbq', 76) , (17, 15764, '2001-10-16 09:11:21.060633', 'u', 77) , (-21, 3, '2009-11-05 07:21:41.064706', '', 78) , (0, -19328, '2000-04-24 13:28:27.003988', 'q', 79) , (NULL, 0, '2003-11-06 00:09:42.018807', 'go', 80) , (-77, 0, '2007-03-26 07:50:39.026203', '', 81) , (606, -7484, '2000-07-06 22:01:56.054643', NULL, 82) , (0, NULL, '2007-11-20 02:20:32.038229', NULL, 83) , (NULL, 0, '2001-09-24 00:41:24.017007', NULL, 84) , (0, 8, '2000-08-28 15:15:53.064752', 'v', 85) , (-65, 0, '2000-09-26 05:04:57.002300', '', 86) , (0, 0, '2003-05-21 12:10:24.034445', 'qtwigcoeayqxq', 87) , (-12544, NULL, '2000-11-08 21:34:36.039377', NULL, 88) , (0, 7, '2006-10-22 15:15:59.036516', 'tqtwigcoe', 89) , (1, 3060195946798252032, '2001-08-24 18:55:23.063284', 'at', 90) , (0, 6, '2003-06-06 23:48:30.003355', 'really', 91) , (5976, 1, '2005-05-20 21:08:12.042416', '', 92) , (0, -712, '2004-11-10 06:57:46.020647', 'd', 93) , (8, -1510957674982801408, '2003-12-23 23:45:20.002287', 'ltqtwig', 94) , (0, NULL, '2005-01-13 11:52:34.019677', 'p', 95) , (41, 8, '2008-02-09 23:42:24.065168', 'on', 96) , (NULL, -71, '2002-01-23 13:26:27.042369', '', 97) , (31320, 4432667933239410688, '2000-06-23 07:35:10.022327', 'bltqtw', 98) , (0, 98, '2000-07-13 08:45:05.047190', '', 99) , (NULL, 3, '2001-07-04 11:09:34.043627', '', 100) ;
|
||||
--enable_query_log
|
||||
|
||||
--result_format 4
|
||||
--explain_protocol 2
|
||||
## bug
|
||||
##
|
||||
## test non-correlated subquery
|
||||
select /*+no_rewrite*/ sum((select sum(a) from t1)) from t1;
|
||||
select /*+no_rewrite*/ sum((select sum(a) from t1)) from t1 group by b;
|
||||
|
||||
## test correlated subquery
|
||||
select /*+no_rewrite*/ sum((select sum(a) from t1 as t2 where t2.a = t1.a)) from t1;
|
||||
select /*+no_rewrite*/ sum((select sum(a) from t1 as t2 where t2.a = t1.a)) from t1 group by b;
|
||||
|
||||
## bug
|
||||
##
|
||||
##
|
||||
select * from t1, t2 where t1.a + (select sum(b) from t3) = t2.b;
|
||||
select * from t1, t2 where t1.a + (select sum(b) from t3 where t1.a = t3.a) = t2.b;
|
||||
|
||||
select (select sum(b) from t2) as temp, sum(a) from t1 group by temp;
|
||||
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4;
|
||||
select (select sum(b) from t2) as temp from t1 group by temp having temp < 4;
|
||||
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4 and temp > (select sum(b) from t3);
|
||||
select (select sum(b) from t2) as temp from t1 group by temp having temp > 4 and temp > (select sum(b) from t2);
|
||||
|
||||
## bug
|
||||
select (select sum(b) from t2) as temp, a from t1 group by a having temp > 4;
|
||||
|
||||
## bug
|
||||
explain select t1.a from t1 right outer join t2 using(a) where t1.a <=> (select 4 from t1 limit 1);
|
||||
|
||||
## bug
|
||||
SELECT a IN (SELECT a FROM t1 ) FROM t1 LIMIT 1;
|
||||
|
||||
## bug
|
||||
select /*+no_rewrite*/ a, (select sum(b) from t2 where t1.a = t2.a) as agg from t1 having agg > 1 and agg < 3;
|
||||
|
||||
## bug
|
||||
select (SELECT coalesce( (SELECT/*+no_rewrite*/ * FROM ( SELECT MAX( pk ) FROM table10_key_pk_parts_1_bigint WHERE CAST( CONCAT( SUBSTR( 'q' , 1, 20) , col_char_20_index ) AS CHAR) >= CAST( CONCAT( SUBSTR( 'kqqdwykxz' , 1, 20) , col_char_20_index ) AS CHAR) ORDER BY col_timestamp_6_index , col_char_5_key ASC , col_bigint_index ASC , pk ) TC1), (SELECT * FROM ( SELECT col_bigint FROM table0_hash_pk_parts_1_bigint WHERE ( col_char_20 NOT IN ('a' , 'b' , 'a') ) OR NOT ( col_char_20_index IN ( 'a' , 'b' , 'a' ) ) ORDER BY col_bigint DESC , col_char_20_index , pk ASC LIMIT 1 ) TC2), 2 ));
|
||||
select (SELECT coalesce( (SELECT * FROM ( SELECT MAX( pk ) FROM table10_key_pk_parts_1_bigint WHERE CAST( CONCAT( SUBSTR( 'q' , 1, 20) , col_char_20_index ) AS CHAR) >= CAST( CONCAT( SUBSTR( 'kqqdwykxz' , 1, 20) , col_char_20_index ) AS CHAR) ORDER BY col_timestamp_6_index , col_char_5_key ASC , col_bigint_index ASC , pk ) TC1), (SELECT * FROM ( SELECT col_bigint FROM table0_hash_pk_parts_1_bigint WHERE ( col_char_20 NOT IN ('a' , 'b' , 'a') ) OR NOT ( col_char_20_index IN ( 'a' , 'b' , 'a' ) ) ORDER BY col_bigint DESC , col_char_20_index , pk ASC LIMIT 1 ) TC2), 2 ));
|
||||
|
||||
## bug
|
||||
SELECT Sum(1) FROM table10_bigint WHERE pk NOT IN (SELECT pk FROM table2_bigint WHERE pk NOT IN (SELECT col_decimal_20_0 FROM table100_bigint WHERE (SELECT (SELECT Min(10) FROM table100_bigint WHERE col_char_20 > 0)) = col_decimal_20_0));
|
||||
SELECT coalesce( (SELECT SUM(LENGTH(TRIM(SUBSTR(SUBSTR('hizctdn', 1, 20), 1, 20)))) FROM table10_bigint WHERE pk NOT IN (SELECT pk FROM table2_bigint WHERE pk NOT IN (SELECT col_decimal_20_0 FROM table100_bigint WHERE (SELECT coalesce( (SELECT MIN(10) FROM table100_bigint WHERE col_char_20 > CAST(CONCAT(col_char_20, SUBSTR('nhizctdn', 1, 20)) AS CHAR(100)) ORDER BY pk , pk), (SELECT ROUND(FLOOR(62))), 1)) = ROUND(ABS(ROUND(FLOOR(col_decimal_20_0)))) ORDER BY pk , col_bigint , col_char_20 DESC , pk DESC) ORDER BY col_decimal_20_0 , pk DESC) ORDER BY col_bigint, col_char_20, col_decimal_20_0, col_timestamp_6, pk , pk DESC), (SELECT col_decimal_20_0 FROM table10_bigint WHERE pk < -10 ORDER BY col_bigint , pk DESC LIMIT 1), 99);
|
||||
|
||||
## bug
|
||||
SELECT pk FROM table300_bigint WHERE col_char_20 <> (SELECT ( SELECT MIN((SELECT pk FROM m WHERE col_bigint <=> 13624)) FROM t));
|
||||
|
||||
## bug
|
||||
SELECT * FROM tt AS table1 WHERE table1 . pk <> (SELECT coalesce((SELECT MAX((SELECT SUM(-100) FROM tt WHERE NOT EXISTS (SELECT * FROM tt AS table3 LEFT OUTER JOIN tt AS table4 USING (pk) WHERE table1 . pk <> 99 LIMIT 8) )) FROM tt ), 99)) ;
|
||||
|
||||
## bug
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
create table t1 (pk int);
|
||||
create table t2 (pk int, c1 char(20));
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (1, '1'),(2, '2');
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
select (select SUM( (select SUM(c1) from t1) ) from t1 ) from t2;
|
||||
--error 1111
|
||||
select (select SUM( c1 + (select SUM(c1) from t1) ) from t1 ) from t2;
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
insert into t1 values (2);
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
--error 1242
|
||||
select (select SUM( (select SUM(c1) from t1) ) from t1 ) from t2;
|
||||
--error 1111
|
||||
select (select SUM( c1 + (select SUM(c1) from t1) ) from t1 ) from t2;
|
||||
|
||||
## bug
|
||||
--disable_warnings
|
||||
drop table if exists t0;
|
||||
--enable_warnings
|
||||
CREATE TABLE t0(c0 FLOAT COMMENT 'asdf' , c1 DECIMAL ZEROFILL NULL COMMENT 'asdf' ) ;
|
||||
SELECT /*+ USE_HASH_AGGREGATION */ ALL t0.c0 AS ref0 FROM t0 WHERE (CAST( EXISTS (SELECT 1 from dual wHERE FALSE) AS SIGNED)) IN (( EXISTS (SELECT 1)) XOR ( EXISTS (SELECT 1)), t0.c0, CAST("" AS SIGNED)) UNION ALL SELECT /*+ USE_HASH_AGGREGATION */ t0.c0 AS ref0 FROM t0 WHERE (NOT ((CAST( EXISTS (SELECT 1 from dual wHERE FALSE) AS SIGNED)) IN (( EXISTS (SELECT 1)) XOR ( EXISTS (SELECT 1)), t0.c0, CAST("" AS SIGNED)))) UNION ALL SELECT /*+ USE_HASH_AGGREGATION */ ALL t0.c0 AS ref0 FROM t0 WHERE ((CAST( EXISTS (SELECT 1 from dual wHERE FALSE) AS SIGNED)) IN (( EXISTS (SELECT 1)) XOR ( EXISTS (SELECT 1)), t0.c0, CAST("" AS SIGNED))) IS NULL;
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS T1;
|
||||
CREATE TABLE T1 (
|
||||
col_int_key int,
|
||||
col_varchar_20 varchar(20),
|
||||
col_int int,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_char_20 char(20),
|
||||
col_char_20_key char(20),
|
||||
pk int,
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
INSERT/**/ INTO T1 VALUES (4, 'ofmpdxvhqvfnyxowgqq', 7, 'jofmpdxvh', 'ojofmpdxvhqvfn', 'b', 1) ;
|
||||
|
||||
DROP TABLE IF EXISTS T2;
|
||||
CREATE TABLE T2 (
|
||||
col_char_20_key char(20),
|
||||
col_int_key int,
|
||||
pk int,
|
||||
col_int int,
|
||||
col_varchar_20 varchar(20),
|
||||
col_varchar_20_key varchar(20),
|
||||
col_char_20 char(20),
|
||||
/*Indices*/
|
||||
primary key (pk) ) PARTITION BY hash (pk) partitions 5 ;
|
||||
INSERT/**/ INTO T2 VALUES ('kbojofmpdxvhqvf', 4, 1, 2, 'bkbojofmpdxvhqvfnyxo', 'tbkboj', 'ttbkbo') ;
|
||||
|
||||
DROP TABLE IF EXISTS T3;
|
||||
CREATE TABLE T3 (
|
||||
col_int int,
|
||||
col_char_20 char(20),
|
||||
col_char_20_key char(20),
|
||||
col_int_key int,
|
||||
col_varchar_20 varchar(20),
|
||||
col_varchar_20_key varchar(20),
|
||||
pk int,
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
INSERT/**/ INTO T3 VALUES (5, 'attbkbojofmpd', 'da', 6, 'ydatt', 'myd', 1) ;
|
||||
INSERT/**/ INTO T3 VALUES (6, 'qmydat', 'xqmydattbkbojofmp', 5, 'qx', 'rqxqmydattb', 2) ;
|
||||
INSERT/**/ INTO T3 VALUES (5, 'urqxqmydatt', 'ru', 2, 'trurqxqmydattbk', 'ftrurqxq', 3) ;
|
||||
|
||||
DROP TABLE IF EXISTS T4;
|
||||
CREATE TABLE T4 (
|
||||
col_varchar_20 varchar(20),
|
||||
col_char_20_key char(20),
|
||||
col_int int,
|
||||
pk int,
|
||||
col_int_key int,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_char_20 char(20),
|
||||
/*Indices*/
|
||||
primary key (pk) ) PARTITION BY hash (pk) partitions 5 ;
|
||||
INSERT/**/ INTO T4 VALUES ('hftrurqxqmyda', 'ohftrurqx', 8, 1, 7, 'zoh', 'y') ;
|
||||
INSERT/**/ INTO T4 VALUES ('iyzohftr', 'diyzohftrurqx', 7, 2, 9, 'ldiyzohftrurqxqmydat', 'nldiyzohftru') ;
|
||||
INSERT/**/ INTO T4 VALUES ('vn', 'svnldiyzohftrur', 1, 3, 8, 'fsvnldiyzohf', 's') ;
|
||||
|
||||
DROP TABLE IF EXISTS T5;
|
||||
CREATE TABLE T5 (
|
||||
col_varchar_20_key varchar(20),
|
||||
col_varchar_20 varchar(20),
|
||||
col_int_key int,
|
||||
col_char_20_key char(20),
|
||||
col_int int,
|
||||
pk int,
|
||||
col_char_20 char(20),
|
||||
/*Indices*/
|
||||
primary key (pk) ) ;
|
||||
INSERT/**/ INTO T5 VALUES ('tsfsvnldiyzoh', 'xtsfsvnldiyzohft', 7, 'axtsfsvnldiyzoh', 7, 1, 'iaxtsfsvnldiyzohftru') ;
|
||||
INSERT/**/ INTO T5 VALUES ('diaxtsfsv', 'bdiaxts', 3, 'lbdiax', 0, 2, 'ilbdiaxtsfsvnl') ;
|
||||
INSERT/**/ INTO T5 VALUES ('uilbdiaxtsfsvnldiyz', 'wuilbdia', 4, 'jwuilbdiaxtsf', 1, 3, 'qj') ;
|
||||
INSERT/**/ INTO T5 VALUES ('hq', 'shqjwuilbdiaxtsf', 5, 'q', 9, 4, 'kq') ;
|
||||
INSERT/**/ INTO T5 VALUES ('akqshqjw', 'hakqshqjwuil', 8, 'jhakqshqjwuilbdia', 1, 5, 'sjhakqshq') ;
|
||||
|
||||
DROP TABLE IF EXISTS T6;
|
||||
CREATE TABLE T6 (
|
||||
col_int_key int,
|
||||
pk int,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_int int,
|
||||
col_char_20_key char(20),
|
||||
col_char_20 char(20),
|
||||
col_varchar_20 varchar(20),
|
||||
/*Indices*/
|
||||
primary key (pk) ) PARTITION BY hash (pk) partitions 5 ;
|
||||
INSERT/**/ INTO T6 VALUES (4, 1, 'xsj', 8, 'ixsjhakqshqj', 'jixsjhakqshqj', 'njixsjhakqsh') ;
|
||||
INSERT/**/ INTO T6 VALUES (2, 2, 'rnjixsjhakqshqj', 0, 'zrnjixsjhak', 'tzrnjixsjha', 'stzrnjixsjhak') ;
|
||||
INSERT/**/ INTO T6 VALUES (8, 3, 'b', 5, 'zbstzrnjixsjhakqshq', 'bzbstzrnjixs', 'kbz') ;
|
||||
INSERT/**/ INTO T6 VALUES (6, 4, 'ikbzbst', 1, 'jikbzbstzrnjixsjhakq', 'tjikbzbstzrnjixsj', 'ctjikbzbstzrnj') ;
|
||||
INSERT/**/ INTO T6 VALUES (1, 5, 'lctjikbzbstzrn', 6, 'f', 'tflctjikbzbstzrn', 'ftflctjikb') ;
|
||||
|
||||
--enable_warnings
|
||||
|
||||
SELECT 1 AS ref0
|
||||
FROM t5 T11 left join t1 T12 ON T11.col_char_20 < T11.col_varchar_20_key
|
||||
WHERE T11.pk IN (SELECT Avg(T12.col_int + 1) FROM t6 T14);
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
create table t1 (c1 int, c2 int);
|
||||
create table t2 (c1 int, c2 int);
|
||||
insert/**/ into t1 values (1, 1), (2, 2);
|
||||
insert/**/ into t2 values (1, 1), (2, 2);
|
||||
select * from t1 where not exists (select /*+no_unnest*/ 1 from (select 1 + t1.c1 as c1, t2.c2 as s2 from t2) v where c1 = s2 and c1 + 1 <= s2);
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
|
||||
create table t1 (c1 int, c2 int);
|
||||
create table t2 (c1 int, c2 int);
|
||||
create table t3 (c1 int, c2 int);
|
||||
create index idx_c2 on t2(c2);
|
||||
create index idx_c1 on t2(c1);
|
||||
create index idx_t1_c1 on t1 (c1);
|
||||
|
||||
insert/**/ into t1 values (1, 1);
|
||||
insert/**/ into t2 values (1, 1);
|
||||
insert/**/ into t3 values (1, 2);
|
||||
|
||||
SELECT /*+use_nl(t2 v1)*/ *
|
||||
FROM
|
||||
(SELECT /*+no_merge*, no_rewrite, full(t1)*/
|
||||
c1,
|
||||
(SELECT c1 FROM t3 limit 1) as s_c1,
|
||||
(SELECT c2 FROM t3 limit 1) as s_c2
|
||||
FROM t1) v1,
|
||||
t2
|
||||
WHERE v1.s_c2 >= t2.c2 and v1.c1 = t2.c1;
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
@ -0,0 +1,80 @@
|
||||
# owner: xiaoyi.xy
|
||||
# owner group: SQL3
|
||||
# tags: optimizer
|
||||
# description:
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists GG;
|
||||
drop table if exists F;
|
||||
drop table if exists Q;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE `GG` (
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE;
|
||||
|
||||
CREATE TABLE `F` (
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384
|
||||
USE_BLOOM_FILTER = FALSE;
|
||||
|
||||
CREATE TABLE `Q` (
|
||||
`col_int_key` int(11) DEFAULT NULL,
|
||||
`col_varchar_20` varchar(20) DEFAULT NULL,
|
||||
`pk` int(11) NOT NULL,
|
||||
`col_varchar_20_key` varchar(20) DEFAULT NULL,
|
||||
`col_date_key` date DEFAULT NULL,
|
||||
`col_date` date DEFAULT NULL,
|
||||
`col_varchar_10_key` varchar(10) DEFAULT NULL,
|
||||
`col_varchar_10` varchar(10) DEFAULT NULL,
|
||||
`col_datetime_key` datetime DEFAULT NULL,
|
||||
`col_int` int(11) DEFAULT NULL,
|
||||
`col_datetime` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`),
|
||||
KEY `idx1` (`col_int_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx5` (`col_varchar_20_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx7` (`col_date_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx3` (`col_varchar_10_key`) BLOCK_SIZE 16384,
|
||||
KEY `idx9` (`col_datetime_key`) BLOCK_SIZE 16384
|
||||
) DEFAULT CHARSET = utf8mb4 BLOCK_SIZE = 16384
|
||||
USE_BLOOM_FILTER = FALSE;
|
||||
|
||||
|
||||
|
||||
SELECT GRANDPARENT1 . pk AS G1 FROM GG AS GRANDPARENT1 WHERE GRANDPARENT1 . `col_varchar_10` IN ( SELECT PARENT1 . `col_varchar_10_key` AS P1 FROM F AS PARENT1 LEFT JOIN Q AS PARENT2 USING ( pk ) WHERE ( ( PARENT1 . `pk` > GRANDPARENT1 . `col_int` ) OR GRANDPARENT1 . `col_varchar_10` >= 'i' ) ) AND ( ( ( ( ( ( ( GRANDPARENT1 . `col_varchar_20` < 'x' OR GRANDPARENT1 . `col_datetime` BETWEEN '2002-05-19' AND '2000-10-13' ) OR GRANDPARENT1 . pk IS NULL ) OR GRANDPARENT1 . `col_varchar_20` >= 'd' ) OR GRANDPARENT1 . `pk` <> 8 ) AND GRANDPARENT1 . `pk` >= 5 ) AND GRANDPARENT1 . `col_date` >= '2004-07-28' ) OR NOT GRANDPARENT1 . pk IS UNKNOWN ) GROUP BY GRANDPARENT1 . pk ORDER BY GRANDPARENT1 . pk LIMIT 9;
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,43 @@
|
||||
# owner: link.zt
|
||||
# owner group: sql1
|
||||
# tags: optimizer
|
||||
# description:
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists hualong;
|
||||
--enable_warnings
|
||||
create database hualong;
|
||||
use hualong;
|
||||
|
||||
#
|
||||
CREATE TABLE `cb_dep_acct_54` ( `acctnbr` bigint(20) NOT NULL, `curracctstatcd` varchar(4) NOT NULL, PRIMARY KEY (`acctnbr`)) partition by hash(acctnbr) partitions 5;
|
||||
CREATE TABLE `cb_dep_acctbal_54` ( `acctnbr` bigint(20) NOT NULL, `balcatcd` varchar(4) NOT NULL, `baltypcd` varchar(4) NOT NULL, PRIMARY KEY (`acctnbr`, `balcatcd`, `baltypcd`));
|
||||
CREATE TABLE `cb_dep_rxtnbal_54` ( `acctnbr` varchar(34) NOT NULL, `rtxnnbr` bigint(20) NOT NULL, `balcatcd` varchar(4) NOT NULL, `baltypcd` varchar(4) NOT NULL);
|
||||
|
||||
insert into cb_dep_acct_54 values (1, 'CLS');
|
||||
insert into cb_dep_acct_54 values (2, 'CLS');
|
||||
insert into cb_dep_acct_54 values (3, 'CCC');
|
||||
|
||||
insert into cb_dep_acctbal_54 values (1, 3, 4);
|
||||
insert into cb_dep_acctbal_54 values (3, 7, 9);
|
||||
insert into cb_dep_acctbal_54 values (5, 6, 2333);
|
||||
|
||||
insert into cb_dep_rxtnbal_54 values (1, 4, 3, 2);
|
||||
|
||||
##select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
##select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr) and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr != a.acctnbr)));
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr) and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr != a.acctnbr)));
|
||||
##select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and ((a.curracctstatcd != 'CLS' and exists(select 1 from cb_dep_acctbal_54 r where r.acctnbr = s.acctnbr)) or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and ((a.curracctstatcd != 'CLS' and exists(select 1 from cb_dep_acctbal_54 r where r.acctnbr = s.acctnbr)) or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr)));
|
||||
##select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by s.acctnbr;
|
||||
explain select * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by s.acctnbr;
|
||||
##select /*+ no_use_hash_aggregation */ * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by a.acctnbr;
|
||||
explain select /*+ no_use_hash_aggregation */ * from cb_dep_acctbal_54 s, cb_dep_acct_54 a where s.acctnbr = a.acctnbr and (a.curracctstatcd != 'CLS' or (a.curracctstatcd = 'CLS' and exists(select 1 from cb_dep_rxtnbal_54 r where r.acctnbr = a.acctnbr))) group by a.acctnbr;
|
||||
|
||||
drop database hualong;
|
||||
534
tools/deploy/mysql_test/test_suite/subquery/t/subquery.test
Normal file
534
tools/deploy/mysql_test/test_suite/subquery/t/subquery.test
Normal file
@ -0,0 +1,534 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
# owner: link.zt
|
||||
# owner group: sql4
|
||||
# tags: optimizer
|
||||
# description: 子查询结果集
|
||||
--disable_info
|
||||
--disable_metadata
|
||||
--disable_warnings
|
||||
create database if not exists test;
|
||||
use test;
|
||||
drop table if exists t1, t2, t3;
|
||||
--enable_warnings
|
||||
create table t1(c1 int primary key, c2 int);
|
||||
create table t2(c1 int primary key, c2 int);
|
||||
create table t3(c1 int primary key, c2 int);
|
||||
insert into t1 values(1, 1), (2, 2), (3, 3), (4, 3), (5, 2);
|
||||
insert into t2 values(1, 1), (2, 2);
|
||||
insert into t3 values(5, 5), (6, 6);
|
||||
|
||||
###where subquery
|
||||
select * from t1 where c1>ANY(select c1 from t2);
|
||||
select * from t1 where c1<ALL(select c1 from t2);
|
||||
--error 1242
|
||||
select * from t1 where c1=(select c1 from t2);
|
||||
select * from t1 where c1=(select c1 from t2 limit 1);
|
||||
select * from t1 where c1=ANY(select c1 from t2 where t1.c2>t2.c2);
|
||||
select * from t1 where exists(select c1 from t2 where t1.c2>t2.c2);
|
||||
select * from t1 where 1<ANY(select c1 from t2);
|
||||
select c2 from t1 where exists(select c2 from t2 where t1.c1>t2.c1);
|
||||
select * from t1 where c1>(select c1 from t2 where t2.c1=1);
|
||||
select * from t1 where exists(select * from t2 where t1.c1=t2.c2);
|
||||
select * from t1 where c1 in (select c1 from t1);
|
||||
select * from t1 where c1 not in (select c1 from t1);
|
||||
select c1 from t1 where c1 not in (select c1 from t2 where c2 not in (select c2 from t2));
|
||||
|
||||
#from-subquery
|
||||
select * from (select * from t1 limit 1) t;
|
||||
select c from (select c1 as c from t1) tt;
|
||||
select c1 from t1 where c1 in (select c1 from t2 where c2 >= some(select max(c1) from (select c1 from t3 where t1.c2=t3.c1 order by c1 limit 1) as tt));
|
||||
|
||||
|
||||
#select subquery
|
||||
--error 1241
|
||||
select (select c1, c2 from t1) from t1;
|
||||
--error 1242
|
||||
select (select c1 from t1) from t1;
|
||||
select (select c1 from t1 where c1=1) from t1;
|
||||
select (select 1)=ANY(select 1);
|
||||
SELECT (SELECT 1)>ALL(SELECT 1);
|
||||
SELECT (SELECT 1,2,3) = ROW(1,2,3);
|
||||
SELECT (SELECT 1,2,3) = ROW(1,2,1);
|
||||
SELECT (SELECT 1,2,3) < ROW(1,2,1);
|
||||
SELECT (SELECT 1,2,3) > ROW(1,2,1);
|
||||
SELECT (SELECT 1,2,3) = ROW(1,2,NULL);
|
||||
SELECT ROW(1,2,3) = (SELECT 1,2,3);
|
||||
SELECT ROW(1,2,3) = (SELECT 1,2,1);
|
||||
SELECT ROW(1,2,3) < (SELECT 1,2,1);
|
||||
SELECT ROW(1,2,3) > (SELECT 1,2,1);
|
||||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
#row compare
|
||||
#greater than
|
||||
select (select 3, 2, 1)>row(1, 2, 1);
|
||||
select (select 1, 2, 3)>row(1, 2, 1);
|
||||
select (select 1, 2, 3)>row(1, 2, 3);
|
||||
select (select 1, 3, 2)>row(1, 2, 3);
|
||||
select (select 1, 2, 3)>row(1, 3, 2);
|
||||
select (select 1, null, 2)>row(1, 2, 2);
|
||||
select (select 1, 2, null)>row(1, 1, 2);
|
||||
#greater equal
|
||||
select (select 3, 2, 1)>=row(1, 2, 1);
|
||||
select (select 1, 2, 3)>=row(1, 2, 1);
|
||||
select (select 1, 2, 3)>=row(1, 2, 3);
|
||||
select (select 1, 3, 2)>=row(1, 2, 3);
|
||||
select (select 1, 2, 3)>=row(1, 3, 2);
|
||||
select (select 1, null, 2)>=row(1, 2, 2);
|
||||
select (select 1, 2, null)>=row(1, 1, 2);
|
||||
#less than
|
||||
select (select 1, 2, 3)<row(3, 2, 1);
|
||||
select (select 1, 2, 3)<row(1, 3, 2);
|
||||
select (select 1, 2, 1)<row(1, 2, 3);
|
||||
select (select 1, 2, 3)<row(1, 2, 3);
|
||||
select (select 1, 3, 2)<row(1, 2, 3);
|
||||
select (select 1, null, 2)<row(1, 2, 2);
|
||||
select (select 1, 2, null)<row(1, 1, 2);
|
||||
#less equal
|
||||
select (select 1, 2, 3)<=row(3, 2, 1);
|
||||
select (select 1, 2, 3)<=row(1, 3, 2);
|
||||
select (select 1, 2, 1)<=row(1, 2, 3);
|
||||
select (select 1, 2, 3)<=row(1, 2, 3);
|
||||
select (select 1, 3, 2)<=row(1, 2, 3);
|
||||
select (select 1, null, 2)<=row(1, 2, 2);
|
||||
select (select 1, 2, null)<=row(1, 1, 2);
|
||||
#equal
|
||||
select (select 1, 2, 3)=row(1, 2, 3);
|
||||
select (select 1, 2, 3)=row(1, 2, 1);
|
||||
select (select 1, 2, 1)=row(3, 2, 1);
|
||||
select (select 1, null, 1)=row(1, 2, 1);
|
||||
#ns equal
|
||||
select (select 1, 2, 3)<=>row(1, 2, 3);
|
||||
select (select 1, 2, 3)<=>row(1, 2, 1);
|
||||
select (select 1, null, 1)<=>row(1, 2, 1);
|
||||
select (select 1, null, 3)<=>row(1, null, 3);
|
||||
#not equal
|
||||
select (select 1, 2, 3)!=row(1, 2, 3);
|
||||
select (select 1, 2, 3)!=row(1, 2, 1);
|
||||
select (select 1, null, 1)!=row(1, 2, 1);
|
||||
select (select 1, null, 3)!=row(1, null, 3);
|
||||
|
||||
#group by subquery
|
||||
--sorted_result
|
||||
select * from t1 group by (select c1 from t1 limit 1);
|
||||
--error 1241
|
||||
select * from t1 group by (select c1, c2 from t1);
|
||||
|
||||
#test ANY/SOME/ALL keywords
|
||||
delete from t1;
|
||||
insert into t1 values(1, NULL), (2, NULL), (3, NULL), (4, NULL);
|
||||
select NULL=ANY(select c1 from t1);
|
||||
select NULL=ALL(select c1 from t1);
|
||||
delete from t1;
|
||||
insert into t1 values(1, NULL), (2, 2), (3, 3), (4, 4);
|
||||
select 2=ANY(select c2 from t1);
|
||||
select 2=ALL(select c2 from t1);
|
||||
#return NULL
|
||||
select 5=ANY(select c2 from t1);
|
||||
#return NULL
|
||||
select 5!=ANY(select c2 from t1);
|
||||
delete from t1;
|
||||
insert into t1 values(1, 1), (2, NULL), (3, 3), (4, 4);
|
||||
select 1=ANY(select c1 from t1);
|
||||
select 1!=ANY(select c1 from t1);
|
||||
select 1=ALL(select c1 from t1);
|
||||
select 1!=ALL(select c1 from t1);
|
||||
select 5=ANY(select c1 from t1);
|
||||
select 5!=ANY(select c1 from t1);
|
||||
select 5=ALL(select c1 from t1);
|
||||
select 5!=ALL(select c1 from t1);
|
||||
delete from t1;
|
||||
insert into t1 values(1, 1), (2, 2), (3, 3), (4, NULL);
|
||||
select 1!=ANY(select c1 from t1);
|
||||
select 1=ANY(select c1 from t1);
|
||||
select 1!=ALL(select c1 from t1);
|
||||
select 1=ALL(select c1 from t1);
|
||||
select 5!=ANY(select c1 from t1);
|
||||
select 5=ANY(select c1 from t1);
|
||||
select 5!=ALL(select c1 from t1);
|
||||
select 5=ALL(select c1 from t1);
|
||||
|
||||
### test for related subquery with one column expr ###
|
||||
select * from t1 where c1 > (select t2.c1 from t2 where t1.c1 limit 1);
|
||||
select t1.c1 from t1 left join t3 on t1.c1 = t3.c1 where t3.c1 < (select t2.c1 from t2 where t3.c1 limit 1);
|
||||
select * from t1 where c1 > (select t2.c1 from t2 where t1.c1 > 1 limit 1);
|
||||
|
||||
#
|
||||
drop table if exists t1, t2;
|
||||
create table t1 (a int not null, b int not null, index it1a(a), index iab(a, b));
|
||||
create table t2 (c int not null, d int not null);
|
||||
insert into t1 values (1,10);
|
||||
insert into t1 values (1,20);
|
||||
insert into t1 values (2,10);
|
||||
insert into t1 values (2,20);
|
||||
insert into t1 values (2,30);
|
||||
insert into t1 values (3,20);
|
||||
insert into t1 values (4,40);
|
||||
insert into t2 values (2,10);
|
||||
insert into t2 values (2,20);
|
||||
insert into t2 values (2,40);
|
||||
insert into t2 values (3,20);
|
||||
insert into t2 values (4,10);
|
||||
insert into t2 values (5,10);
|
||||
--sorted_result
|
||||
select a from t1 group by a having a in (select c from t2 where d >= 20);
|
||||
|
||||
drop table if exists t1;
|
||||
create table t1(c1 int);
|
||||
select count(1) from t1 where false;
|
||||
select count(1) from t1 having false;
|
||||
--sorted_result
|
||||
select count(1) from t1 group by c1 having false;
|
||||
--sorted_result
|
||||
select count(1) from t1 where false group by c1;
|
||||
insert into t1 values(1);
|
||||
select * from t1 where c1 in (trim((select 1)), 2);
|
||||
select * from t1 where c1 in ((select c1 from t1), 2);
|
||||
select * from t1 where c1 in ((select t1.c1 from t1 t), 2);
|
||||
|
||||
#clean tables
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
#project/81079/issue/11488676?akProjectId=81079&akProjectId=81079&
|
||||
--disable_warnings
|
||||
drop table if exists DD,AA,J,CC,GG;
|
||||
--enable_warnings
|
||||
CREATE TABLE DD ( col_int int, pk int, col_varchar_20 varchar(20), col_int_key int, primary key (pk));
|
||||
CREATE TABLE AA ( pk int, col_int_key int, col_varchar_20 varchar(20), col_int int, primary key (pk));
|
||||
CREATE TABLE J ( col_varchar_20 varchar(20), pk int primary key);
|
||||
CREATE TABLE CC ( col_int_key int, pk int, col_int int, col_varchar_20 varchar(20), primary key (pk));
|
||||
CREATE TABLE GG (col_varchar_20 varchar(20), pk int primary key);
|
||||
insert into DD (pk, col_varchar_20, col_int, col_int_key) value(1, "YYY", 5,3);
|
||||
insert into AA (pk, col_varchar_20, col_int, col_int_key) value(2, 'me', 4, 3);
|
||||
insert into CC (pk, col_varchar_20, col_int) value(3, 'you', 4);
|
||||
SELECT GRANDPARENT1 . col_varchar_20 AS G1 FROM DD AS GRANDPARENT1 WHERE GRANDPARENT1 . `col_int_key` IN ( SELECT DISTINCT PARENT1 . `col_int_key` AS P1 FROM AA AS PARENT1 LEFT JOIN J AS PARENT2 USING ( col_varchar_20 ) WHERE PARENT1 . `col_int` IN ( SELECT CHILD1 . `col_int` AS C1 FROM CC AS CHILD1 LEFT JOIN GG AS CHILD2 USING ( col_varchar_20 ) ) AND ( GRANDPARENT1 . `col_int` >= 1 ));
|
||||
--disable_warnings
|
||||
drop table if exists DD,AA,J,CC,GG;
|
||||
--enable_warnings
|
||||
|
||||
#extract query range from push-down filter
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3;
|
||||
--enable_warnings
|
||||
create table t1(c1 int primary key, c2 int, c3 int);
|
||||
create table t2(c1 int primary key, c2 int, c3 int);
|
||||
create table t3(c1 int primary key, c2 int, c3 int);
|
||||
insert into t1 values(1, 2, 3);
|
||||
insert into t1 values(2, 2, 3);
|
||||
insert into t2 values(1, 2, 3);
|
||||
insert into t2 values(2, 2, 3);
|
||||
insert into t3 values(1, 2, 3);
|
||||
insert into t3 values(2, 2, 3);
|
||||
explain select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 = t2.c1);
|
||||
explain select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 > t2.c1);
|
||||
explain select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 < t2.c1);
|
||||
explain select * from t1, t2 where t1.c1 > exists(select c1 from t2 where t2.c1 = t1.c1);
|
||||
explain select * from t1 where (select c1 from t2 limit 1)+1 in (select 2 from t3 where t1.c1=t3.c1);
|
||||
explain select * from t1 having count(*) > (select c1 from t2 where t1.c1=t2.c1);
|
||||
explain select * from t1, t2 where t2.c1 = t1.c1 and t2.c1 = (select c1 from t3 where t3.c1 = t1.c1);
|
||||
explain select * from (select c1+1 as a1 from t1 where t1.c2 = 2) a, t2 where a.a1 = t2.c2 or t2.c1 = ANY(select c3 from t3 where t3.c1 > a.a1);
|
||||
select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 = t2.c1);
|
||||
select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 > t2.c1);
|
||||
select * from t1 where t1.c2 = 5 or exists (select 1 from t2 where t1.c1 < t2.c1);
|
||||
select * from t1, t2 where t1.c1 > exists(select c1 from t2 where t2.c1 = t1.c1);
|
||||
select * from t1 where (select c1 from t2 limit 1)+1 in (select 2 from t3 where t1.c1=t3.c1);
|
||||
select * from t1 having count(*) > (select c1 from t2 where t1.c1=t2.c1);
|
||||
select * from t1, t2 where t2.c1 = t1.c1 and t2.c1 = (select c1 from t3 where t3.c1 = t1.c1);
|
||||
select * from (select c1+1 as a1 from t1 where t1.c2 = 2) a, t2 where a.a1 = t2.c2 or t2.c1 = ANY(select c3 from t3 where t3.c1 > a.a1);
|
||||
#extract query range for multi plan operators
|
||||
explain select * from t1 where t1.c1 > (select sum(c1) from t2 where t2.c1 = t1.c1);
|
||||
explain select * from t1 where t1.c1 > (select sum(c1) from t2 where t2.c1 = t1.c1 and t2.c2 > (select max(c2) from t3 where t3.c1 = t2.c1));
|
||||
explain select * from t1 where t1.c2 in (select avg(c1) from t2 where t2.c1 = t1.c1 union select count(1) from t3 where t3.c1 = t1.c1);
|
||||
explain select * from t1 where t1.c1 != (select c2 from t2 where t2.c1 = (select max(c2) from t3 where t3.c1 = t1.c1) order by t2.c2 limit 1);
|
||||
select * from t1 where t1.c1 > (select sum(c1) from t2 where t2.c1 = t1.c1);
|
||||
select * from t1 where t1.c1 > (select sum(c1) from t2 where t2.c1 = t1.c1 and t2.c2 > (select max(c2) from t3 where t3.c1 = t2.c1));
|
||||
select * from t1 where t1.c2 in (select avg(c1) from t2 where t2.c1 = t1.c1 union select count(1) from t3 where t3.c1 = t1.c1);
|
||||
select * from t1 where t1.c1 != (select c2 from t2 where t2.c1 = (select max(c2) from t3 where t3.c1 = t1.c1) order by t2.c2 limit 1);
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3;
|
||||
|
||||
#issue/9168337
|
||||
#subquery in [not]exists could be eliminated or refined
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
create table t1(a int, b int);
|
||||
create table t2(a int, b int);
|
||||
create table t3(a int, b int);
|
||||
#basic exists subquery with aggr, group by, having
|
||||
explain select * from t1 where exists (select 1, round(1.1) from dual);
|
||||
explain select * from t1 where exists (select max(a) from t2);
|
||||
explain select * from t1 where exists (select group_concat(a, b) from t2 group by a);
|
||||
explain select * from t1 where exists (select max(a), sum(a), count(a) from t2);
|
||||
explain select * from t1 where exists (select max(a), sum(a), count(a) from t2 group by a);
|
||||
explain select * from t1 where exists (select max(a), sum(a), count(a) from t2 group by a having a > 1);
|
||||
explain select * from t1 where exists (select max(a), sum(a), count(a) from t2 group by a having sum(a) > 1);
|
||||
explain select * from t1 where exists (select max(a), sum(a), count(a) from t2 group by a having sum(a) > 1 and count(a) > 0);
|
||||
#basic not exists subquery with aggr, group by, having
|
||||
explain select * from t1 where not exists (select 1, round(1.1) from dual);
|
||||
explain select * from t1 where not exists (select max(a) from t2);
|
||||
explain select * from t1 where not exists (select group_concat(a, b) from t2 group by a);
|
||||
explain select * from t1 where not exists (select max(a), sum(a), count(a) from t2);
|
||||
explain select * from t1 where not exists (select max(a), sum(a), count(a) from t2 group by a);
|
||||
explain select * from t1 where not exists (select max(a), sum(a), count(a) from t2 group by a having a > 1);
|
||||
explain select * from t1 where not exists (select max(a), sum(a), count(a) from t2 group by a having sum(a) > 1);
|
||||
explain select * from t1 where not exists (select max(a), sum(a), count(a) from t2 group by a having sum(a) > 1 and count(a) > 0);
|
||||
#mixed situations
|
||||
explain select * from t1, (select * from t2 where exists(select sum(a) from t3)) t4 where t1.a = t4.a;
|
||||
explain select * from t1 where t1.a in (select a from t2 where exists(select count(a) from t3));
|
||||
explain select * from t1 where exists(select max(a) from t2 group by a having max(a) > 1);
|
||||
explain select * from t1, (select * from t2 having a > 1) t4 where t1.a = t4.a;
|
||||
explain select * from t1, (select * from t2 where exists(select sum(a) from t3 group by a having a > 1)) t4 where t1.a = t4.a;
|
||||
explain select * from t1 where exists ( select max(a) from t2 group by a having exists (select * from t3 where t3.a > max(t2.a)));
|
||||
explain select * from t1 where exists ( select sum(a) from t2 group by a having exists (select * from t3 where t3.a > sum(t2.a)));
|
||||
#eliminate exists subquery in params
|
||||
explain select * from t1 where b > exists(select b from t2 where b > exists(select b from t3));
|
||||
explain select * from t1 where b > exists(select a from t2 where b > exists(select sum(a) from t3));
|
||||
explain select * from t1 where b > exists(select sum(a) from t2 where t2.b > exists(select sum(a) from t3));
|
||||
|
||||
## bug:
|
||||
--disable_warnings
|
||||
drop table if exists T;
|
||||
--enable_warnings
|
||||
create table T (pk int);
|
||||
explain select pk from t table1 where (table1.pk >= (select 1 from T limit 1)) AND ((1,9) in (select 1,9));
|
||||
|
||||
## bug:
|
||||
explain select (select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk)
|
||||
from t;
|
||||
select (select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk),
|
||||
(select 1 except select pk)
|
||||
from t;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
CREATE TABLE `t1` (
|
||||
`c1` varbinary(20) DEFAULT NULL
|
||||
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 2 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0;
|
||||
CREATE TABLE `t2` (
|
||||
`a` int(11) NOT NULL,
|
||||
`b` varchar(20) DEFAULT NULL,
|
||||
`c` decimal(20,10) DEFAULT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 2 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
|
||||
partition by hash(a) partitions 2;
|
||||
|
||||
insert into t1 values(1), (2);
|
||||
insert into t2 values(1,2,1);
|
||||
|
||||
select /*+no_rewrite*/(select sum(b) from t2) as temp from t1 group by temp having temp > 4 and temp > (select sum(b) from t2);
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
--echo #
|
||||
CREATE TABLE `t1` (
|
||||
`pk1` int(11) NOT NULL,
|
||||
`pk2` varchar(10) NOT NULL,
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
`c3` varchar(20) DEFAULT NULL,
|
||||
`c4` timestamp(6) NULL DEFAULT '2012-01-01 04:00:00.000000',
|
||||
`c5` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk1`, `pk2`)
|
||||
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 2 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0;
|
||||
insert into t1 values(1, '2', 3, 3, null, null, null);
|
||||
select /*+no_rewrite*/ c1, (select max(c2) FROM t1 ) a FROM t1 order by (select c1 FROM t1 where c2 in (select c1 FROM t1 where c2 = a)) + 1;
|
||||
drop table t1 ;
|
||||
|
||||
# bug:
|
||||
--disable_warnings
|
||||
drop table if exists table0_hash_pk_parts_1_bigint;
|
||||
drop table if exists s;
|
||||
drop table if exists ff;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE table0_hash_pk_parts_1_bigint (
|
||||
col_timestamp_6_index timestamp(6) NULL DEFAULT NULL,
|
||||
col_varchar_20 varchar(20),
|
||||
col_char_20 char(20),
|
||||
col_decimal_20_0_key decimal(20,0),
|
||||
pk bigint,
|
||||
col_char_20_index char(20),
|
||||
col_bigint_key bigint,
|
||||
col_bigint bigint,
|
||||
col_timestamp_6 timestamp(6) NULL DEFAULT NULL,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_bigint_index bigint,
|
||||
col_decimal_20_0_index decimal(20,0),
|
||||
col_decimal_20_0 decimal(20,0),
|
||||
col_char_20_key char(20),
|
||||
col_varchar_20_index varchar(20),
|
||||
col_timestamp_6_key timestamp(6) NULL DEFAULT NULL,
|
||||
/*Indices*/
|
||||
index idx14(pk, col_timestamp_6_index ),
|
||||
key idx1(pk, col_decimal_20_0_key ),
|
||||
primary key (pk) ,
|
||||
index idx8(pk, col_char_20_index ),
|
||||
key idx4(pk, col_bigint_key ),
|
||||
key idx10(pk, col_varchar_20_key ),
|
||||
index idx5(pk, col_bigint_index ),
|
||||
index idx2(pk, col_decimal_20_0_index ),
|
||||
key idx7(pk, col_char_20_key ),
|
||||
index idx11(pk, col_varchar_20_index ),
|
||||
key idx13(pk, col_timestamp_6_key )) PARTITION BY hash (pk) partitions 1;
|
||||
|
||||
CREATE TABLE S (
|
||||
col_varchar_20_key varchar(20),
|
||||
col_varchar_10 varchar(10),
|
||||
col_varchar_20 varchar(20),
|
||||
col_date date,
|
||||
col_datetime datetime,
|
||||
col_int int,
|
||||
col_date_key date,
|
||||
col_int_key int,
|
||||
pk int,
|
||||
col_datetime_key datetime,
|
||||
col_varchar_10_key varchar(10),
|
||||
/*Indices*/
|
||||
key idx5(pk, col_varchar_20_key ),
|
||||
key idx7(pk, col_date_key ),
|
||||
key idx1(pk, col_int_key ),
|
||||
primary key (pk) ,
|
||||
key idx9(pk, col_datetime_key ),
|
||||
key idx3(pk, col_varchar_10_key ));
|
||||
|
||||
CREATE TABLE FF (
|
||||
col_varchar_20 varchar(20),
|
||||
col_varchar_10_key varchar(10),
|
||||
col_int int,
|
||||
col_datetime datetime,
|
||||
col_date_key date,
|
||||
col_varchar_20_key varchar(20),
|
||||
col_varchar_10 varchar(10),
|
||||
col_datetime_key datetime,
|
||||
pk int,
|
||||
col_int_key int,
|
||||
col_date date,
|
||||
/*Indices*/
|
||||
key idx3(pk, col_varchar_10_key ),
|
||||
key idx7(pk, col_date_key ),
|
||||
key idx5(pk, col_varchar_20_key ),
|
||||
key idx9(pk, col_datetime_key ),
|
||||
primary key (pk) ,
|
||||
key idx1(pk, col_int_key ));
|
||||
|
||||
explain
|
||||
SELECT 1
|
||||
FROM table0_hash_pk_parts_1_bigint
|
||||
WHERE
|
||||
(SELECT
|
||||
(SELECT MIN(
|
||||
(SELECT MAX(-100)
|
||||
FROM ff
|
||||
WHERE (col_timestamp_6 >= '2015-01-01')))
|
||||
FROM s
|
||||
WHERE pk IN
|
||||
(SELECT col_bigint
|
||||
FROM table0_hash_pk_parts_1_bigint))) < 1;
|
||||
|
||||
SELECT 1
|
||||
FROM table0_hash_pk_parts_1_bigint
|
||||
WHERE
|
||||
(SELECT
|
||||
(SELECT MIN(
|
||||
(SELECT MAX(-100)
|
||||
FROM ff
|
||||
WHERE (col_timestamp_6 >= '2015-01-01')))
|
||||
FROM s
|
||||
WHERE pk IN
|
||||
(SELECT col_bigint
|
||||
FROM table0_hash_pk_parts_1_bigint))) < 1;
|
||||
|
||||
explain
|
||||
SELECT 1
|
||||
FROM table0_hash_pk_parts_1_bigint
|
||||
WHERE
|
||||
(SELECT
|
||||
(SELECT MIN(
|
||||
(SELECT 1
|
||||
FROM ff
|
||||
WHERE (col_timestamp_6 >= '2015-01-01'))) + 1 AS tmp
|
||||
FROM s
|
||||
WHERE pk IN
|
||||
(SELECT col_bigint
|
||||
FROM table0_hash_pk_parts_1_bigint)));
|
||||
|
||||
SELECT 1
|
||||
FROM table0_hash_pk_parts_1_bigint
|
||||
WHERE
|
||||
(SELECT
|
||||
(SELECT MIN(
|
||||
(SELECT 1
|
||||
FROM ff
|
||||
WHERE (col_timestamp_6 >= '2015-01-01'))) + 1 AS tmp
|
||||
FROM s
|
||||
WHERE pk IN
|
||||
(SELECT col_bigint
|
||||
FROM table0_hash_pk_parts_1_bigint)));
|
||||
|
||||
drop table s;
|
||||
drop table table0_hash_pk_parts_1_bigint;
|
||||
drop table ff;
|
||||
@ -0,0 +1,114 @@
|
||||
--disable_query_log
|
||||
set @@session.explicit_defaults_for_timestamp=off;
|
||||
--enable_query_log
|
||||
# owner: link.zt
|
||||
# owner group: sql4
|
||||
# tags: optimizer
|
||||
# description: 从mysql中迁移过来的基础subquery_sj_firstmatch.test测试集
|
||||
#
|
||||
# Run subquery_sj.inc with semijoin and turn off all strategies, but FirstMatch
|
||||
#
|
||||
|
||||
#--source include/have_semijoin.inc
|
||||
#--source include/have_firstmatch.inc
|
||||
#set optimizer_switch='semijoin=on,firstmatch=on';
|
||||
#
|
||||
#--disable_query_log
|
||||
#if (`select locate('materialization', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='materialization=off';
|
||||
#}
|
||||
#if (`select locate('loosescan', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='loosescan=off';
|
||||
#}
|
||||
#if (`select locate('index_condition_pushdown', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='index_condition_pushdown=off';
|
||||
#}
|
||||
#if (`select locate('mrr', @@optimizer_switch) > 0`)
|
||||
#{
|
||||
# set optimizer_switch='mrr=off';
|
||||
#}
|
||||
#--enable_query_log
|
||||
#
|
||||
#--source include/subquery_sj.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug#51457 Firstmatch semijoin strategy gives wrong results for
|
||||
--echo # certain query plans
|
||||
--echo #
|
||||
|
||||
#SET @@default_storage_engine='innodb';
|
||||
#SET @@optimizer_switch='semijoin=on,materialization=off,firstmatch=on,loosescan=off,block_nested_loop=off,batched_key_access=off';
|
||||
--disable_warnings
|
||||
drop table if exists t0, t1, t2, t3, t6, t8;
|
||||
drop view if exists v1, v2, v3, v_t2, view_b, view_c;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t0(a INTEGER);
|
||||
|
||||
CREATE TABLE t1(a INTEGER);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
CREATE TABLE t2(a INTEGER);
|
||||
INSERT INTO t2 VALUES(5), (8);
|
||||
|
||||
CREATE TABLE t6(a INTEGER);
|
||||
INSERT INTO t6 VALUES(7), (1), (0), (5), (1), (4);
|
||||
|
||||
CREATE TABLE t8(a INTEGER);
|
||||
INSERT INTO t8 VALUES(1), (3), (5), (7), (9), (7), (3), (1);
|
||||
|
||||
-- disable_query_log
|
||||
-- disable_result_log
|
||||
#ANALYZE TABLE t0;
|
||||
#ANALYZE TABLE t1;
|
||||
#ANALYZE TABLE t2;
|
||||
#ANALYZE TABLE t6;
|
||||
#ANALYZE TABLE t8;
|
||||
-- enable_result_log
|
||||
-- enable_query_log
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
SELECT *
|
||||
FROM t2 AS nt2, t8 AS nt4
|
||||
WHERE 1 IN (SELECT it1.a
|
||||
FROM t1 AS it1 JOIN t6 AS it3 ON it1.a=it3.a);
|
||||
|
||||
EXPLAIN
|
||||
SELECT *
|
||||
FROM t0 AS ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
|
||||
SELECT *
|
||||
FROM t0 as ot1, t2 AS nt3
|
||||
WHERE ot1.a IN (SELECT it2.a
|
||||
FROM t1 AS it2 JOIN t8 AS it4 ON it2.a=it4.a);
|
||||
|
||||
DROP TABLE t0, t1, t2, t6, t8;
|
||||
|
||||
#SET @@default_storage_engine=default;
|
||||
#SET @@optimizer_switch=default;
|
||||
|
||||
--echo # End of bug#51457
|
||||
|
||||
#set optimizer_switch=default;
|
||||
|
||||
Reference in New Issue
Block a user