mark some file to been opensource for ce-farm

This commit is contained in:
niyuhang
2023-11-15 11:44:43 +00:00
committed by ob-robot
parent 4900683cff
commit c8ace58297
685 changed files with 1080566 additions and 111051 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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 one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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;

View 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;

View File

@ -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;