-- source include/have_ndb.inc

--disable_warnings
drop table if exists t1;
--enable_warnings

CREATE TABLE t1 (
  PORT varchar(16) NOT NULL,
  ACCESSNODE varchar(16) NOT NULL,
  POP varchar(48) NOT NULL,
  ACCESSTYPE int unsigned NOT NULL,
  CUSTOMER_ID varchar(20) collate latin1_bin NOT NULL,
  PROVIDER varchar(16),
  TEXPIRE int unsigned,
  NUM_IP int unsigned,
  LEASED_NUM_IP int unsigned,
  LOCKED_IP int unsigned,
  STATIC_DNS int unsigned,
  SUSPENDED_SERVICE int unsigned,
  SUSPENDED_REASON int unsigned,
  BGP_COMMUNITY int unsigned,
  INDEX CUSTOMER_ID_INDEX(CUSTOMER_ID),
  INDEX FQPN_INDEX(POP,ACCESSNODE,PORT),
  PRIMARY KEY(POP,ACCESSNODE,PORT,ACCESSTYPE)
) engine=ndbcluster;

INSERT INTO t1 VALUES ('port67', 'node78', 'pop98', 1, 'kllopmn', 'pr_43', 121212, 1, 2, 3, 8, NULL, NULL, NULL);
INSERT INTO t1 VALUES ('port67', 'node78', 'pop99', 2, 'klkighh', 'pr_44', 121213, 3, 3, 6, 7, NULL, NULL, NULL);
INSERT INTO t1 VALUES ('port79', 'node79', 'pop79', 2, 'kpongfaa', 'pr_44', 981213, 2, 4, 10, 11, 2, 99, 1278);
  

# Test select using port
select port, accessnode, pop, accesstype  from t1 where port='port67' order by accesstype;
select port, accessnode, pop, accesstype  from t1 where port='foo';

# Test select using accessnode
select port, accessnode, pop, accesstype  from t1 where accessnode='node78' order by accesstype;
select port, accessnode, pop, accesstype  from t1 where accessnode='foo';

# Test select using pop
select port, accessnode, pop, accesstype  from t1 where pop='pop98';
select port, accessnode, pop, accesstype  from t1 where pop='pop98';
select port, accessnode, pop, accesstype  from t1 where pop='pop98';
select port, accessnode, pop, accesstype  from t1 where pop='pop98' order by accesstype;
# The following two querys will not return any rows since 
# the index used for access is case sensitive
# They are thus disabled for now
#select port, accessnode, pop, accesstype  from t1 where pop='POP98';
#select port, accessnode, pop, accesstype  from t1 where pop='POP98' order by accesstype;
select port, accessnode, pop, accesstype  from t1 where pop='foo';

# Test select using accesstype
select port, accessnode, pop, accesstype  from t1 where accesstype=1;
select port, accessnode, pop, accesstype  from t1 where accesstype=2 order by port;
select port, accessnode, pop, accesstype  from t1 where accesstype=98 order by port;

# Test select using customer_id
# NOTE! customer_id has a INDEX (ordered index in NDB), it's case sensitive!
select port, accessnode, pop, accesstype  from t1 where customer_id='kllopmn';
select port, accessnode, pop, accesstype  from t1 where customer_id='KLLOPMN';
select port, accessnode, pop, accesstype  from t1 where customer_id='kLLoPMn';
select port, accessnode, pop, accesstype  from t1 where customer_id='foo';

# Test select using provider
select port, accessnode, pop, accesstype  from t1 where provider='pr_43';
select port, accessnode, pop, accesstype  from t1 where provider='foo';

# Test select using texpire
select port, accessnode from t1 where texpire=121212;
select port, accessnode from t1 where texpire=2323;

# Test select using num_ip
select port, accessnode, pop, accesstype  from t1 where num_ip=1;
select port, accessnode, pop, accesstype  from t1 where num_ip=89;

# Test select using leased_num_ip
select port, accessnode, pop, accesstype  from t1 where leased_num_ip=2;
select port, accessnode, pop, accesstype  from t1 where leased_num_ip=89;

# Test select using locked_ip
select port, accessnode, pop, accesstype  from t1 where locked_ip=3;
select port, accessnode, pop, accesstype  from t1 where locked_ip=89;

# Test select using static_dns
select port, accessnode, pop, accesstype  from t1 where static_dns=8;
select port, accessnode, pop, accesstype  from t1 where static_dns=89;

# Test select using suspended_service
select port, accessnode, pop, accesstype  from t1 where suspended_service=8;
select port, accessnode, pop, accesstype  from t1 where suspended_service=89;

# Test select using suspended_reason
select port, accessnode, pop, accesstype  from t1 where suspended_reason=NULL;
select port, accessnode, pop, accesstype  from t1 where suspended_reason=89;
select port, accessnode, pop, accesstype  from t1 where suspended_reason=0;

# Test select using bgp_community
select port, accessnode, pop, accesstype  from t1 where bgp_community=NULL;
select port, accessnode, pop, accesstype  from t1 where bgp_community=89;
select port, accessnode, pop, accesstype  from t1 where bgp_community=0;

# Test select using full primary key
select port, accessnode, pop, accesstype from t1 where port='port67' and accessnode='node78' and pop='pop98' and accesstype=1;
select port, accessnode, pop, accesstype from t1 where port='port67' and accesstype=1 and accessnode='node78' and pop='pop98';
select port, accessnode, pop, accesstype from t1 where pop='pop98' and port='port67' and accesstype=1 and accessnode='node78';
select port, accessnode from t1 where port='foo' and accessnode='foo' and pop='foo' and accesstype=99;

# Test select using partial primary key
select port, accessnode, pop, accesstype from t1 where port='port67' and pop='pop98' and accesstype=1;
select port, accessnode, pop, accesstype from t1 where accesstype=1 and accessnode='node78' and pop='pop98';
select port, accessnode, pop, accesstype from t1 where  port='port67' and accesstype=1 and accessnode='node78';
select port, accessnode from t1 where port='foo' and accessnode='foo' and pop='foo';

# Test select using CUSTOMER_ID_INDEX
select port, accessnode, pop, accesstype  from t1 where customer_id='kllopmn';
select port, accessnode, pop, accesstype  from t1 where customer_id='kllopmn' and accesstype=1;
select port, accessnode, pop, accesstype  from t1 where customer_id='kllopmn' and accesstype=2;
select port, accessnode, pop, accesstype  from t1 where accesstype=2 and customer_id='kllopmn';

# Test select using FQPN_INDEX
select port, accessnode, pop, accesstype  from t1 where pop='pop98' and accessnode='node78' and port='port67';
#select port, accessnode, pop, accesstype  from t1 where pop='pop98' and accessnode='node78' and port='port67' order by accesstype;
#select port, accessnode, pop, accesstype  from t1 where  accessnode='node78' and port='port67' and pop='pop98' order by accesstype;
#select port, accessnode, pop, accesstype  from t1 where port='port67' and pop='pop98' and accessnode='node78' order by accesstype;
select port, accessnode, pop, accesstype  from t1 where pop='pop98' and accessnode='node78' and port='port67' and customer_id='kllopmn';
select port, accessnode, pop, accesstype  from t1 where pop='pop98' and accessnode='node78' and port='port67' and customer_id='foo';

drop table t1;

# End of 4.1 tests

# bug#45525
create table t1 (
a int not null primary key,
c00 int not null, c01 int not null, c02 int not null, c03 int not null, c04 int not null, c05 int not null, c06 int not null, c07 int not null,
c10 int not null, c11 int not null, c12 int not null, c13 int not null, c14 int not null, c15 int not null, c16 int not null, c17 int not null,
c20 int not null, c21 int not null, c22 int not null, c23 int not null, c24 int not null, c25 int not null, c26 int not null, c27 int not null,
c30 int not null, c31 int not null, c32 int not null, c33 int not null, c34 int not null, c35 int not null, c36 int not null, c37 int not null,
c40 int not null, c41 int not null, c42 int not null, c43 int not null, c44 int not null, c45 int not null, c46 int not null, c47 int not null,
c50 int not null, c51 int not null, c52 int not null, c53 int not null, c54 int not null, c55 int not null, c56 int not null, c57 int not null,
c60 int not null, c61 int not null, c62 int not null, c63 int not null, c64 int not null, c65 int not null, c66 int not null, c67 int not null,
c70 int not null, c71 int not null, c72 int not null, c73 int not null, c74 int not null, c75 int not null, c76 int not null, c77 int not null,
unique (c00), unique (c01), unique (c02), unique (c03), unique (c04), unique (c05), unique (c06), unique (c07),
unique (c10), unique (c11), unique (c12), unique (c13), unique (c14), unique (c15), unique (c16), unique (c17),
unique (c20), unique (c21), unique (c22), unique (c23), unique (c24), unique (c25), unique (c26), unique (c27),
unique (c30), unique (c31), unique (c32), unique (c33), unique (c34), unique (c35), unique (c36), unique (c37),
unique (c40), unique (c41), unique (c42), unique (c43), unique (c44), unique (c45), unique (c46), unique (c47),
unique (c50), unique (c51), unique (c52), unique (c53), unique (c54), unique (c55), unique (c56), unique (c57),
unique (c60), unique (c61), unique (c62), unique (c63), unique (c64), unique (c65), unique (c66), unique (c67),
unique (c60), unique (c71), unique (c72), unique (c73), unique (c74), unique (c75), unique (c76)) engine = ndb;

drop table t1;

CREATE TABLE t1 (
a INT NOT NULL AUTO_INCREMENT ,
b INT NOT NULL ,
c VARCHAR ( 11 ) NOT NULL ,
PRIMARY KEY ( a ) ,
INDEX ( b )
) ENGINE = NDB;
 
INSERT INTO t1 (a ,b ,c) VALUES 
(NULL , '1', 'test'), (NULL , '2', 'test'), (NULL , '1', 'test'), 
(NULL , '2', 'test'), (NULL , '3', 'test'), (NULL , '4', 'test'), 
(NULL , '5', 'test'), (NULL , '6', 'test'), (NULL , '1', 'test'),
(NULL , '1', 'test');

explain select count(a) from t1 group by a;
explain select count(a) from t1 FORCE INDEX FOR GROUP BY (PRIMARY) group by a;
explain select count(b) from t1 group by b;
explain select count(b) from t1 FORCE INDEX FOR GROUP BY (b) group by b;
explain select distinct a from t1;
explain select distinct a from t1 group by a;
explain select distinct b from t1;
explain select distinct b from t1 group by b;

--sorted_result
select count(a) from t1 group by a;
--sorted_result
select count(a) from t1 FORCE INDEX FOR GROUP BY (PRIMARY) group by a;
--sorted_result
select count(b) from t1 group by b;
--sorted_result
select count(b) from t1 FORCE INDEX FOR GROUP BY (b) group by b;
--sorted_result
select distinct a from t1;
--sorted_result
select distinct a from t1 group by a;
--sorted_result
select distinct b from t1;
--sorted_result
select distinct b from t1 group by b;

drop table t1;

# bug#58280
create table t1(vc varchar(16), i int, vc2 varchar(1024)
  , PRIMARY KEY(vc,vc2) USING HASH
  , KEY i1(i)
  , KEY i2(vc)
 )  ENGINE=ndbcluster;

insert into t1 values
('1',1,'1'), ('2',2,'2'), ('3',3,'3'), ('4',1,'4'), ('5',2,'5'),
('6',3,'6'), ('7',1,'7'), ('8',2,'8'), ('9',3,'9'), ('10',1,'10'), 
('11',2,'11'), ('12',3,'12'), ('13',1,'13'), ('14',2,'14'), ('15',3,'15'),
('16',1,'16'), ('17',2,'17'), ('x',3,'x'), ('y',1,'y'), ('z',2,'z'),
('1000',3,'1000'), ('2000',3,'2000'), ('10000',3,'10000');

analyze table t1;
explain
select i,vc from t1
  where i>=1 or vc > '0';

--sorted_result
select i,vc from t1
  where i>=1 or vc > '0';

# also test with hidden primary key
create table t2(vc varchar(16), i int, vc2 varchar(1024)
  , KEY i1(i)
  , KEY i2(vc)
 )  ENGINE=ndbcluster;

insert into t2 values
('1',1,'1'), ('2',2,'2'), ('3',3,'3'), ('4',1,'4'), ('5',2,'5'),
('6',3,'6'), ('7',1,'7'), ('8',2,'8'), ('9',3,'9'), ('10',1,'10'), 
('11',2,'11'), ('12',3,'12'), ('13',1,'13'), ('14',2,'14'), ('15',3,'15'),
('16',1,'16'), ('17',2,'17'), ('x',3,'x'), ('y',1,'y'), ('z',2,'z'),
('1000',3,'1000'), ('2000',3,'2000'), ('10000',3,'10000');

analyze table t2;
explain
select i,vc from t2
  where i>=1 or vc > '0';

--sorted_result
select i,vc from t2
  where i>=1 or vc > '0';

drop table t1, t2;

# Bug#38914 permanent table crash after truncate table with slash in keyname
CREATE TABLE inleveroverzicht (
  id int(11) NOT NULL auto_increment,
  klantid int(11) NOT NULL default '0',
  productcode varchar(255) NOT NULL default '0',
  aantal int(11) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY klantid (klantid),
  KEY `klantid/productcode` (klantid,productcode)
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;

INSERT INTO inleveroverzicht (id, klantid, productcode, aantal) VALUES 
(33, 31, '15674', 11),
(32, 31, '0001256', 1);

SELECT * from inleveroverzicht ORDER BY id;

TRUNCATE TABLE inleveroverzicht;

SELECT * from inleveroverzicht  ORDER BY id;

DROP TABLE inleveroverzicht;

