polardbxengine/mysql-test/suite/ndb/t/ndb_subquery.test

177 lines
7.2 KiB
Plaintext

-- source include/have_ndb.inc
--disable_warnings
drop table if exists t1, t2, t3, t4;
--enable_warnings
##########
# bug#5367
create table t1 (p int not null primary key, u int not null, o int not null,
unique (u), key(o)) engine=ndb
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
create table t2 (p int not null primary key, u int not null, o int not null,
unique (u), key(o)) engine=ndb
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
create table t3 (a int not null primary key, b int not null) engine=ndb
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
create table t4 (c int not null primary key, d int not null) engine=ndb
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
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), (4,4,4), (5,5,5);
insert into t3 values (1,10), (2,10), (3,30), (4, 30);
insert into t4 values (1,10), (2,10), (3,30), (4, 30);
# Use pk
--replace_column 10 # 11 #
explain select * from t2 where p NOT IN (select p from t1);
select * from t2 where p NOT IN (select p from t1) order by p;
# Use unique index
--replace_column 10 # 11 #
explain select * from t2 where p NOT IN (select u from t1);
select * from t2 where p NOT IN (select u from t1) order by p;
# Use ordered index
--replace_column 10 # 11 #
explain select * from t2 where p NOT IN (select o from t1);
select * from t2 where p NOT IN (select o from t1) order by p;
# Use scan
--replace_column 10 # 11 #
explain select * from t2 where p NOT IN (select p+0 from t1);
select * from t2 where p NOT IN (select p+0 from t1) order by p;
drop table t1;
drop table t2;
# bug#5367
##########
# End of 4.1 tests
#
# bug#11205
#
create table t1 (p int not null primary key, u int not null) engine=ndb;
insert into t1 values (1,1),(2,2),(3,3);
create table t2 as
select t1.*
from t1 as t1, t1 as t2, t1 as t3, t1 as t4, t1 as t5, t1 as t6, t1 as t7, t1 as t8
where t1.u = t2.u
and t2.u = t3.u
and t3.u = t4.u
and t4.u = t5.u
and t5.u = t6.u
and t6.u = t7.u
and t7.u = t8.u;
select * from t2 order by 1;
select * from t3 where a = any (select c from t4 where c = 1) order by a;
select * from t3 where a in (select c from t4 where c = 1) order by a;
select * from t3 where a <> some (select c from t4 where c = 1) order by a;
select * from t3 where a > all (select c from t4 where c = 1) order by a;
select * from t3 where row(1,10) = (select c,d from t4 where c = 1) order by a;
select * from t3 where exists (select * from t4 where c = 1) order by a;
drop table if exists t1, t2, t3, t4;
##########
# bug#58163
create table t (k int, uq int, unique key ix1 (uq)) engine = ndb;
insert into t values (1,3), (3,6), (6,9), (9,1);
select * from t where
k in (select uq from t as subq where subq.k>10);
drop table if exists t;
--echo End of 5.1 tests
##########
# bug#16744050 DUPLICATED ROWS RETURNED FROM IN-SUBQUERY
#
# Duplicate weedout didn't remove duplicates due
# to ha_ndbcluster::position() constructing keys with
# garbage past actuall length for VARCHAR fields.
CREATE TABLE `i` (
`col_int_key` int(11) DEFAULT NULL,
KEY `col_int_key` (`col_int_key`)
) ENGINE=ndbcluster
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
INSERT INTO `i` VALUES
(37), (36),
(8), (16), (42), (6), (8),
(11), (21), (13), (3), (41), (44),
(4), (4)
;
CREATE TABLE `v` (
`col_varchar_10_key` varchar(10) COLLATE latin1_bin DEFAULT NULL,
`col_datetime_key` datetime DEFAULT NULL,
`col_varchar_256` varchar(256) COLLATE latin1_bin NOT NULL DEFAULT '',
`col_int_unique` int(11) DEFAULT NULL,
`pk` int(11) NOT NULL,
`col_char_16` char(16) COLLATE latin1_bin DEFAULT NULL,
`col_varchar_256_unique` varchar(256) COLLATE latin1_bin DEFAULT NULL,
`col_char_16_unique` char(16) COLLATE latin1_bin DEFAULT NULL,
`col_int` int(11) DEFAULT NULL,
`col_datetime_unique` datetime DEFAULT NULL,
`col_datetime` datetime DEFAULT NULL,
`col_char_16_key` char(16) COLLATE latin1_bin DEFAULT NULL,
`col_varchar_256_key` varchar(256) COLLATE latin1_bin DEFAULT NULL,
`col_int_key` int(11) DEFAULT NULL,
`col_varchar_10` varchar(10) COLLATE latin1_bin DEFAULT NULL,
`col_varchar_10_unique` varchar(10) COLLATE latin1_bin DEFAULT NULL,
PRIMARY KEY (`pk`,`col_varchar_256`),
KEY `col_int_key` (`col_int_key`)
) ENGINE=ndbcluster
comment="NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
INSERT INTO `v` VALUES
('you\'re','2009-07-16 09:36:26','hkovsqapozumxaaufxv',4,3,'ghkovsqapozumx','well','cgh',1,'2003-12-19 20:20:58',NULL,'zcghkovsqapozumx','for',38,'ozcghkovsq','up'),
('how','2009-04-19 21:37:41','something',16,4,'I','fozcghkovsqapozumxaaufx','ofozcghkovsqapoz',16,NULL,NULL,'to','gofozcg',50,'dgofozcghk','back'),
('lcdytrrpqh','2000-08-25 17:23:04','jlcdytrrpqhjwzwdqfcnuiisfrmapu',18,13,'djlcdytrrpqhjwz','odjlcdytrrpqhjwzwdqfcnuiisf','of',6,NULL,'2003-12-21 02:53:21','xodjlcdytrrpqhjw','kxodjlcdytrrpqhjwzwdqfcnui',10,'xkxodjlcdy','you\'re'),
('want','2009-06-09 21:32:42','come',25,24,'yrprhaqtqyuyryml','fyrprhaqtqyuyrymlfv','xfyrprhaqtq',27,NULL,'2007-07-26 02:41:45','nxfyrprhaqtqyuyr','really',13,'mnxfyrprha','a'),
('pozumxaauf',NULL,'there',48,2,'a','qap','sqapozumxaaufxvm',12,NULL,'2008-08-12 14:41:31','vsqapozumxaaufxv','I\'m',45,'ovsqapozum','kovsqapozu'),
('going','2001-11-17 21:30:28','syodnmxkxodjlcdytrr',43,16,'v','dvsyodnmxkxod','ud',46,'2000-03-19 11:23:59','2000-08-05 09:22:19','some','she',40,'iudv','all'),
('ekzgviudvs','2009-02-26 08:37:21','nekzgviudvsyod',49,17,'inekzgviudvsyodn','cinekzgviudvsyodn','ok',12,'2007-12-04 07:42:22','2002-10-07 12:27:21','fcinekzgviudvsyo','to',6,'bfcinekz','hbfcin'),
('a',NULL,'sfrmapuikkd',9,9,'isfrmapuikkdlzaj','he\'s','iisfrmapuikkdlza',5,NULL,NULL,'got','uiisfrmapuikkdlzajntnnwrkdgofoz',28,'nuiisfrmap','cnuiisfrma'),
('odnmxkxo','2006-08-28 02:18:02','for',8,15,'my','hey','who',3,'2002-11-18 21:58:14',NULL,'right','yodnmxkxodjlcdytrrpqhjwz',0,'get','had'),
('your','2000-01-02 20:39:51','can',35,20,'aqgwquyt','gaqgwquytisgdhbfcinekzgviud','cgaqgwquytisgdhb',13,'2005-05-08 17:20:27','2003-07-08 19:23:36','be','lcgaqgwquytisgdhbfcinek',13,'can\'t','like'),
('tisgdhbfci',NULL,'ytisgdhbfcinekzgviudvsyodnmx',38,19,'uy','quytisgdhbfci','wquyti',3,'2008-06-20 00:22:51','2007-11-18 22:50:03','at','gwqu',31,'qgwquytisg','one'),
('rpqh',NULL,'rrpqhjwzwdqfcnuiisf',10,12,'go','yes','trrpqhjwzwdqfcnu',38,'2007-10-04 05:31:37',NULL,'ytrr','dytrrpqhjwzwdqfcnuii',7,'cdytrrpqhj','say'),
('on',NULL,'say',33,23,'about','izjphzzxquxwwrxan','I\'ll',7,'2009-02-10 20:02:17','2005-03-05 21:18:45','are','my',4,'lizjphzzxq','out'),
('just',NULL,'with',22,8,'rmap','something','something',4,NULL,'2006-01-14 09:08:21','or','mean',31,'frmapuikkd','here'),
('who','2000-07-21 09:51:12','or',28,10,'fcnuiisfrmapuikk','for','me',13,'2001-03-20 15:30:14','2003-09-12 10:09:54','is','qfcn',3,'when','well');
analyze table i,v;
#encourage usage of duplicate weedout algorithm:
set ndb_join_pushdown = off;
set optimizer_switch= 'firstmatch=off';
set optimizer_switch= 'materialization=off';
explain
SELECT pk, col_int_key
FROM v AS table1
WHERE table1.col_int_key IN (SELECT col_int_key AS field2 FROM i as table1s)
;
--sorted_result
SELECT pk, col_int_key
FROM v AS table1
WHERE table1.col_int_key IN (SELECT col_int_key AS field2 FROM i as table1s)
;
set optimizer_switch= default;
DROP TABLE IF EXISTS i,v;
--echo End of 5.6 tests