mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	Ndbapi can reorder recattr when doing sorted scan (for faster comparision)
    make sure handler maps correct recattr to correct mysql column
mysql-test/r/ndb_read_multi_range.result:
  bug#17729
mysql-test/t/ndb_read_multi_range.test:
  bug#17729
sql/ha_ndbcluster.cc:
  Make sure to map correct rec-attr against correct mysql column
    (ndbapi reorders when doing sorted scan)
		
	
		
			
				
	
	
		
			370 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			370 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| DROP TABLE IF EXISTS t1, t2, r1;
 | |
| create table t1 (
 | |
| a int primary key,
 | |
| b int not null,
 | |
| c int not null,
 | |
| index(b), unique index using hash(c)
 | |
| ) engine = ndb;
 | |
| insert into t1 values
 | |
| (1,2,1),(2,3,2),(3,4,3),(4,5,4),
 | |
| (5,2,12),(6,3,11),(7,4,10),(8,5,9),
 | |
| (9,2,8),(10,3,7),(11,4,6),(12,5,5);
 | |
| create table r1 as select * from t1 where a in (2,8,12);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where b in (1,2,5);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 1	2	1
 | |
| 4	5	4
 | |
| 5	2	12
 | |
| 8	5	9
 | |
| 9	2	8
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where c in (2,8,12);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 5	2	12
 | |
| 9	2	8
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where a in (2,8) or (a > 11) or (a <= 1);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 1	2	1
 | |
| 2	3	2
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where a in (33,8,12);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where a in (2,33,8,12,34);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where b in (1,33,5);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 4	5	4
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| select * from t1 where b in (1,33,5) order by a;
 | |
| a	b	c
 | |
| 4	5	4
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| create table r1 as select * from t1 where b in (45,1,33,5,44);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 4	5	4
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| drop table r1;
 | |
| select * from t1 where b in (45,22) order by a;
 | |
| a	b	c
 | |
| create table r1 as select * from t1 where c in (2,8,33);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 9	2	8
 | |
| drop table r1;
 | |
| create table r1 as select * from t1 where c in (13,2,8,33,12);
 | |
| select * from r1 order by a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 5	2	12
 | |
| 9	2	8
 | |
| drop table r1;
 | |
| select * from t1 where a in (33,8,12) order by a;
 | |
| a	b	c
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| select * from t1 where a in (33,34,35) order by a;
 | |
| a	b	c
 | |
| select * from t1 where a in (2,8) or (a > 11) or (a <= 1) order by a;
 | |
| a	b	c
 | |
| 1	2	1
 | |
| 2	3	2
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| select * from t1 where b in (6,7) or (b <= 5) or (b >= 10) order by b,a;
 | |
| a	b	c
 | |
| 1	2	1
 | |
| 5	2	12
 | |
| 9	2	8
 | |
| 2	3	2
 | |
| 6	3	11
 | |
| 10	3	7
 | |
| 3	4	3
 | |
| 7	4	10
 | |
| 11	4	6
 | |
| 4	5	4
 | |
| 8	5	9
 | |
| 12	5	5
 | |
| select * from t1 where c in (13,2,8,33,12) order by c,a;
 | |
| a	b	c
 | |
| 2	3	2
 | |
| 9	2	8
 | |
| 5	2	12
 | |
| drop table t1;
 | |
| create table t1 (
 | |
| a int not null,
 | |
| b int not null,
 | |
| c int not null,
 | |
| d int not null,
 | |
| e int not null,
 | |
| primary key (a,b,c,d), index (d)
 | |
| ) engine = ndb;
 | |
| insert into t1 values
 | |
| (1,2,1,1,1),(2,3,2,3,1),(3,4,3,1,1),(4,5,4,7,1),
 | |
| (5,2,12,12,1),(6,3,11,1,1),(7,4,10,3,1),(8,5,9,5,1),
 | |
| (9,2,8,6,1),(10,3,7,5,1),(11,4,6,3,1),(12,5,5,2,1),
 | |
| (1,2,1,2,1),
 | |
| (1,2,1,3,1),
 | |
| (1,2,1,4,1),
 | |
| (1,2,1,5,1);
 | |
| create table r1 as select * from t1
 | |
| where a=1 and b=2 and c=1 and d in (1,4,3,2);
 | |
| select * from r1 order by a,b,c,d;
 | |
| a	b	c	d	e
 | |
| 1	2	1	1	1
 | |
| 1	2	1	2	1
 | |
| 1	2	1	3	1
 | |
| 1	2	1	4	1
 | |
| drop table r1;
 | |
| update t1 set e = 100
 | |
| where d in (12,6,7);
 | |
| select * from t1 where d in (12,6,7) order by a,b,c,d;
 | |
| a	b	c	d	e
 | |
| 4	5	4	7	100
 | |
| 5	2	12	12	100
 | |
| 9	2	8	6	100
 | |
| select * from t1 where d not in (12,6,7) and e = 100;
 | |
| a	b	c	d	e
 | |
| update t1 
 | |
| set e = 101
 | |
| where a=1 and 
 | |
| b=2 and 
 | |
| c=1 and 
 | |
| d in (1,4,3,2);
 | |
| select * 
 | |
| from t1
 | |
| where a=1 and b=2 and c=1 and d in (1,4,3,2)
 | |
| order by a,b,c,d;
 | |
| a	b	c	d	e
 | |
| 1	2	1	1	101
 | |
| 1	2	1	2	101
 | |
| 1	2	1	3	101
 | |
| 1	2	1	4	101
 | |
| select * 
 | |
| from t1 
 | |
| where not (a=1 and b=2 and c=1 and d in (1,4,3,2))
 | |
| and e=101;
 | |
| a	b	c	d	e
 | |
| update t1 
 | |
| set e = 
 | |
| (case d
 | |
| when 12 then 112
 | |
| when 6  then 106
 | |
| when 7  then 107
 | |
| end)
 | |
| where d in (12,6,7);
 | |
| select * from t1 where d in (12,6,7) order by a,b,c,d;
 | |
| a	b	c	d	e
 | |
| 4	5	4	7	107
 | |
| 5	2	12	12	112
 | |
| 9	2	8	6	106
 | |
| update t1 
 | |
| set e = 
 | |
| (case d
 | |
| when 1 then 111
 | |
| when 4 then 444
 | |
| when 3 then 333
 | |
| when 2 then 222
 | |
| end)
 | |
| where a=1 and 
 | |
| b=2 and 
 | |
| c=1 and 
 | |
| d in (1,4,3,2);
 | |
| select * 
 | |
| from t1
 | |
| where a=1 and b=2 and c=1 and d in (1,4,3,2)
 | |
| order by a,b,c,d;
 | |
| a	b	c	d	e
 | |
| 1	2	1	1	111
 | |
| 1	2	1	2	222
 | |
| 1	2	1	3	333
 | |
| 1	2	1	4	444
 | |
| delete from t1 where d in (12,6,7);
 | |
| select * from t1 where d in (12,6,7);
 | |
| a	b	c	d	e
 | |
| drop table t1;
 | |
| create table t1 (
 | |
| a int not null primary key,
 | |
| b int,
 | |
| c int,
 | |
| d int,
 | |
| unique index (b),
 | |
| index(c)
 | |
| ) engine = ndb;
 | |
| insert into t1 values
 | |
| (1,null,1,1),
 | |
| (2,2,2,2),
 | |
| (3,null,null,3),
 | |
| (4,4,null,4),
 | |
| (5,null,5,null),
 | |
| (6,6,6,null),
 | |
| (7,null,null,null),
 | |
| (8,8,null,null),
 | |
| (9,null,9,9),
 | |
| (10,10,10,10),
 | |
| (11,null,null,11),
 | |
| (12,12,null,12),
 | |
| (13,null,13,null),
 | |
| (14,14,14,null),
 | |
| (15,null,null,null),
 | |
| (16,16,null,null);
 | |
| create table t2 as select * from t1 where a in (5,6,7,8,9,10);
 | |
| select * from t2 order by a;
 | |
| a	b	c	d
 | |
| 5	NULL	5	NULL
 | |
| 6	6	6	NULL
 | |
| 7	NULL	NULL	NULL
 | |
| 8	8	NULL	NULL
 | |
| 9	NULL	9	9
 | |
| 10	10	10	10
 | |
| drop table t2;
 | |
| create table t2 as select * from t1 where b in (5,6,7,8,9,10);
 | |
| select * from t2 order by a;
 | |
| a	b	c	d
 | |
| 6	6	6	NULL
 | |
| 8	8	NULL	NULL
 | |
| 10	10	10	10
 | |
| drop table t2;
 | |
| create table t2 as select * from t1 where c in (5,6,7,8,9,10);
 | |
| select * from t2 order by a;
 | |
| a	b	c	d
 | |
| 5	NULL	5	NULL
 | |
| 6	6	6	NULL
 | |
| 9	NULL	9	9
 | |
| 10	10	10	10
 | |
| drop table t2;
 | |
| drop table t1;
 | |
| CREATE TABLE t1 (
 | |
| a int(11) NOT NULL,
 | |
| b int(11) NOT NULL,
 | |
| c datetime default NULL,
 | |
| PRIMARY KEY  (a),
 | |
| KEY idx_bc (b,c)
 | |
| ) ENGINE=ndbcluster;
 | |
| INSERT INTO t1 VALUES 
 | |
| (406989,67,'2006-02-23 17:08:46'), (150078,67,'2005-10-26 11:17:45'),
 | |
| (406993,67,'2006-02-27 11:20:57'), (245655,67,'2005-12-08 15:59:08'),
 | |
| (406994,67,'2006-02-27 11:26:46'), (256,67,NULL),
 | |
| (398341,67,'2006-02-20 04:48:44'), (254,67,NULL),(1120,67,NULL),
 | |
| (406988,67,'2006-02-23 17:07:22'), (255,67,NULL),
 | |
| (398340,67,'2006-02-20 04:38:53'),(406631,67,'2006-02-23 10:49:42'),
 | |
| (245653,67,'2005-12-08 15:59:07'),(406992,67,'2006-02-24 16:47:18'),
 | |
| (245654,67,'2005-12-08 15:59:08'),(406995,67,'2006-02-28 11:55:00'),
 | |
| (127261,67,'2005-10-13 12:17:58'),(406991,67,'2006-02-24 16:42:32'),
 | |
| (245652,67,'2005-12-08 15:58:27'),(398545,67,'2006-02-20 04:53:13'),
 | |
| (154504,67,'2005-10-28 11:53:01'),(9199,67,NULL),(1,67,'2006-02-23 15:01:35'),
 | |
| (223456,67,NULL),(4101,67,NULL),(1133,67,NULL),
 | |
| (406990,67,'2006-02-23 18:01:45'),(148815,67,'2005-10-25 15:34:17'),
 | |
| (148812,67,'2005-10-25 15:30:01'),(245651,67,'2005-12-08 15:58:27'),
 | |
| (154503,67,'2005-10-28 11:52:38');
 | |
| create table t11 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 asc;
 | |
| create table t12 select * from t1 where b = 67 AND (c IS NULL OR c > NOW()) order by 3 desc;
 | |
| create table t21 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 asc;
 | |
| create table t22 select * from t1 where b = 67 AND (c IS NULL OR c > '2005-12-08') order by 3 desc;
 | |
| select * from t11 order by 1,2,3;
 | |
| a	b	c
 | |
| 254	67	NULL
 | |
| 255	67	NULL
 | |
| 256	67	NULL
 | |
| 1120	67	NULL
 | |
| 1133	67	NULL
 | |
| 4101	67	NULL
 | |
| 9199	67	NULL
 | |
| 223456	67	NULL
 | |
| select * from t12 order by 1,2,3;
 | |
| a	b	c
 | |
| 254	67	NULL
 | |
| 255	67	NULL
 | |
| 256	67	NULL
 | |
| 1120	67	NULL
 | |
| 1133	67	NULL
 | |
| 4101	67	NULL
 | |
| 9199	67	NULL
 | |
| 223456	67	NULL
 | |
| select * from t21 order by 1,2,3;
 | |
| a	b	c
 | |
| 1	67	2006-02-23 15:01:35
 | |
| 254	67	NULL
 | |
| 255	67	NULL
 | |
| 256	67	NULL
 | |
| 1120	67	NULL
 | |
| 1133	67	NULL
 | |
| 4101	67	NULL
 | |
| 9199	67	NULL
 | |
| 223456	67	NULL
 | |
| 245651	67	2005-12-08 15:58:27
 | |
| 245652	67	2005-12-08 15:58:27
 | |
| 245653	67	2005-12-08 15:59:07
 | |
| 245654	67	2005-12-08 15:59:08
 | |
| 245655	67	2005-12-08 15:59:08
 | |
| 398340	67	2006-02-20 04:38:53
 | |
| 398341	67	2006-02-20 04:48:44
 | |
| 398545	67	2006-02-20 04:53:13
 | |
| 406631	67	2006-02-23 10:49:42
 | |
| 406988	67	2006-02-23 17:07:22
 | |
| 406989	67	2006-02-23 17:08:46
 | |
| 406990	67	2006-02-23 18:01:45
 | |
| 406991	67	2006-02-24 16:42:32
 | |
| 406992	67	2006-02-24 16:47:18
 | |
| 406993	67	2006-02-27 11:20:57
 | |
| 406994	67	2006-02-27 11:26:46
 | |
| 406995	67	2006-02-28 11:55:00
 | |
| select * from t22 order by 1,2,3;
 | |
| a	b	c
 | |
| 1	67	2006-02-23 15:01:35
 | |
| 254	67	NULL
 | |
| 255	67	NULL
 | |
| 256	67	NULL
 | |
| 1120	67	NULL
 | |
| 1133	67	NULL
 | |
| 4101	67	NULL
 | |
| 9199	67	NULL
 | |
| 223456	67	NULL
 | |
| 245651	67	2005-12-08 15:58:27
 | |
| 245652	67	2005-12-08 15:58:27
 | |
| 245653	67	2005-12-08 15:59:07
 | |
| 245654	67	2005-12-08 15:59:08
 | |
| 245655	67	2005-12-08 15:59:08
 | |
| 398340	67	2006-02-20 04:38:53
 | |
| 398341	67	2006-02-20 04:48:44
 | |
| 398545	67	2006-02-20 04:53:13
 | |
| 406631	67	2006-02-23 10:49:42
 | |
| 406988	67	2006-02-23 17:07:22
 | |
| 406989	67	2006-02-23 17:08:46
 | |
| 406990	67	2006-02-23 18:01:45
 | |
| 406991	67	2006-02-24 16:42:32
 | |
| 406992	67	2006-02-24 16:47:18
 | |
| 406993	67	2006-02-27 11:20:57
 | |
| 406994	67	2006-02-27 11:26:46
 | |
| 406995	67	2006-02-28 11:55:00
 | |
| DROP TABLE t1, t11, t12, t21, t22;
 |