2
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
5
####Checking the bit values####
8
######### INSERT/SELECT#########
10
#### Insert and select 0 bit data into the table####
11
CREATE TABLE t1(c1 BIT(0));
12
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
18
set @v3=repeat('1',@v1);
19
let $STR0= query_get_value(select @v3 as I,I,1);
20
eval INSERT INTO t1 VALUES (b'$STR0');
21
set @v3=repeat('0',@v1);
22
let $STR1= query_get_value(select @v3 as I,I,1);
23
eval INSERT INTO t1 VALUES (b'$STR1');
24
set @v3=repeat('01',@v2);
25
let $STR2= query_get_value(select @v3 as I,I,1);
26
eval INSERT INTO t1 VALUES (b'$STR2');
27
set @v3=repeat('10',@v2);
28
let $STR3= query_get_value(select @v3 as I,I,1);
29
eval INSERT INTO t1 VALUES (b'$STR3');
30
set @v3=repeat('1',@v1);
31
set @v4=repeat('01',@v2);
32
set @v5=repeat('10',@v2);
33
let $STR0= query_get_value(select @v3 as I,I,1);
34
let $STR2= query_get_value(select @v4 as I,I,1);
35
let $STR3= query_get_value(select @v5 as I,I,1);
36
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
39
INSERT INTO t1 VALUES (b'0');
40
INSERT INTO t2 VALUES (b'0', b'0', b'0');
42
SELECT HEX(c1) FROM t1;
44
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
46
SELECT OCT(c1) FROM t1;
48
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
50
SELECT BIN(c1) FROM t1;
52
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
54
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
56
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
58
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
60
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
62
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
64
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
66
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
68
CREATE TABLE t3 (c1 BIT(65));
69
# Checking for bug #9571
70
CREATE TABLE t4(i INT, b BIT NOT NULL);
71
ALTER TABLE t4 ADD PRIMARY KEY (i);
72
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
73
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
74
#Borrowed from suite/ndb/t/ndb_bitfield.test
75
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
76
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
78
SELECT HEX(c1),HEX(c2) FROM t5;
80
#Insert permissible NULLs
81
INSERT IGNORE INTO t5 VALUES(96,null);
82
INSERT INTO t6 VALUES(null,null);
83
# Now select using various table access methods (full table scan, range scan, index scan etc.)
86
SELECT HEX(c1),HEX(c2) FROM t5;
88
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
90
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
91
## Forward index scan, covering ##
93
SELECT bin(c1) FROM t5;
94
## Backward index scan, covering ##
95
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
96
## Forward index scan, non-covering ##
97
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
98
## Backward index scan, non-covering ##
99
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
101
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
102
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
103
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
104
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
105
## Range access, ordered ##
106
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
107
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
108
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
109
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
110
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
111
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
112
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
113
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
114
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
115
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
116
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
117
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
118
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
119
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
120
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
121
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
122
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
123
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
124
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
125
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
126
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
127
## Range access, backwards scan ##
128
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
129
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
130
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
131
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
132
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
133
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
134
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
135
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
136
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
137
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
138
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
139
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
140
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
141
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
142
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
143
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
144
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
145
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
146
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
147
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
148
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
149
#Inserting different charachers
150
CREATE TABLE t7(c1 BIT(0));
151
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
154
############# UPDATE ###########
156
# Update order by limit
157
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
160
# Update with arithmetic operations
161
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
163
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
166
# Update with NULL ( NULL to number & number to NULL)
167
UPDATE t6 SET c2=NULL WHERE c1=23;
169
UPDATE t6 SET c2=10 WHERE c2=NULL;
172
# Update range values
173
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
175
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
177
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
180
# Update outside range would be clipped to closest endpoints
181
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
183
UPDATE t6 SET c2=-1 WHERE c1=94;
186
# Update ignore on bad null error
188
SELECT hex(c1) FROM t5 WHERE c1<>0;
189
SET SQL_MODE=STRICT_ALL_TABLES;
190
--error ER_BAD_NULL_ERROR
191
UPDATE t5 SET c1=NULL WHERE c1<>0;
192
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
194
SELECT hex(c1),hex(c2) FROM t5;
195
SET SQL_MODE=DEFAULT;
199
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
202
SELECT hex(c1),hex(c2) FROM t5;
205
# Update using various access methods
208
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
209
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
212
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
213
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
215
SELECT hex(c1),hex(c2) FROM t5;
218
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
219
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
221
SELECT hex(c1),hex(c2) FROM t5;
222
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
224
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
227
SELECT hex(c1),hex(c2) FROM t5;
229
# Update using eq_ref
230
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
231
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
233
############# DELETE ###########
238
#Borrowed from suite/ndb/t/ndb_bitfield.test
239
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
240
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
242
# Delete by order by limit
243
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
246
# Delete rows with NULL column
247
DELETE FROM t6 WHERE c2=NULL;
250
# Delete with range values
251
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
253
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
255
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
259
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
261
SELECT hex(c1),hex(c2) FROM t5;
264
# Delete using various access methods
267
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
268
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
271
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
272
DELETE FROM t5 WHERE c1=6 AND c2=6;
274
SELECT hex(c1),hex(c2) FROM t5;
277
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
278
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
280
SELECT hex(c1),hex(c2) FROM t5;
281
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
282
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
284
SELECT hex(c1),hex(c2) FROM t5;
286
# Update using eq_ref
287
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
288
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
291
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
293
####Checking the bit values####
296
######### INSERT/SELECT#########
298
#### Insert and select 1 bit data into the table####
299
CREATE TABLE t1(c1 BIT(1));
300
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
306
set @v3=repeat('1',@v1);
307
let $STR0= query_get_value(select @v3 as I,I,1);
308
eval INSERT INTO t1 VALUES (b'$STR0');
309
set @v3=repeat('0',@v1);
310
let $STR1= query_get_value(select @v3 as I,I,1);
311
eval INSERT INTO t1 VALUES (b'$STR1');
312
set @v3=repeat('01',@v2);
313
let $STR2= query_get_value(select @v3 as I,I,1);
314
eval INSERT INTO t1 VALUES (b'$STR2');
315
set @v3=repeat('10',@v2);
316
let $STR3= query_get_value(select @v3 as I,I,1);
317
eval INSERT INTO t1 VALUES (b'$STR3');
318
set @v3=repeat('1',@v1);
319
set @v4=repeat('01',@v2);
320
set @v5=repeat('10',@v2);
321
let $STR0= query_get_value(select @v3 as I,I,1);
322
let $STR2= query_get_value(select @v4 as I,I,1);
323
let $STR3= query_get_value(select @v5 as I,I,1);
324
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
327
INSERT INTO t1 VALUES (b'0');
328
INSERT INTO t2 VALUES (b'0', b'0', b'0');
330
SELECT HEX(c1) FROM t1;
332
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
334
SELECT OCT(c1) FROM t1;
336
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
338
SELECT BIN(c1) FROM t1;
340
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
342
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
344
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
346
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
348
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
350
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
352
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
354
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
356
CREATE TABLE t3 (c1 BIT(65));
357
# Checking for bug #9571
358
CREATE TABLE t4(i INT, b BIT NOT NULL);
359
ALTER TABLE t4 ADD PRIMARY KEY (i);
360
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
361
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
362
#Borrowed from suite/ndb/t/ndb_bitfield.test
363
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
364
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
366
SELECT HEX(c1),HEX(c2) FROM t5;
368
#Insert permissible NULLs
369
INSERT IGNORE INTO t5 VALUES(96,null);
370
INSERT INTO t6 VALUES(null,null);
371
# Now select using various table access methods (full table scan, range scan, index scan etc.)
372
## Full table scan ##
374
SELECT HEX(c1),HEX(c2) FROM t5;
376
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
378
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
379
## Forward index scan, covering ##
381
SELECT bin(c1) FROM t5;
382
## Backward index scan, covering ##
383
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
384
## Forward index scan, non-covering ##
385
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
386
## Backward index scan, non-covering ##
387
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
389
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
390
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
391
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
392
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
393
## Range access, ordered ##
394
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
395
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
396
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
397
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
398
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
399
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
400
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
401
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
402
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
403
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
404
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
405
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
406
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
407
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
408
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
409
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
410
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
411
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
412
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
413
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
414
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
415
## Range access, backwards scan ##
416
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
417
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
418
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
419
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
420
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
421
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
422
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
423
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
424
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
425
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
426
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
427
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
428
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
429
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
430
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
431
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
432
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
433
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
434
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
435
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
436
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
437
#Inserting different charachers
438
CREATE TABLE t7(c1 BIT(1));
439
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
442
############# UPDATE ###########
444
# Update order by limit
445
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
448
# Update with arithmetic operations
449
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
451
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
454
# Update with NULL ( NULL to number & number to NULL)
455
UPDATE t6 SET c2=NULL WHERE c1=23;
457
UPDATE t6 SET c2=10 WHERE c2=NULL;
460
# Update range values
461
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
463
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
465
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
468
# Update outside range would be clipped to closest endpoints
469
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
471
UPDATE t6 SET c2=-1 WHERE c1=94;
474
# Update ignore on bad null error
476
SELECT hex(c1) FROM t5 WHERE c1<>0;
477
SET SQL_MODE=STRICT_ALL_TABLES;
478
--error ER_BAD_NULL_ERROR
479
UPDATE t5 SET c1=NULL WHERE c1<>0;
480
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
482
SELECT hex(c1),hex(c2) FROM t5;
483
SET SQL_MODE=DEFAULT;
487
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
490
SELECT hex(c1),hex(c2) FROM t5;
493
# Update using various access methods
496
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
497
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
500
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
501
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
503
SELECT hex(c1),hex(c2) FROM t5;
506
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
507
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
509
SELECT hex(c1),hex(c2) FROM t5;
510
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
512
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
515
SELECT hex(c1),hex(c2) FROM t5;
517
# Update using eq_ref
518
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
519
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
521
############# DELETE ###########
526
#Borrowed from suite/ndb/t/ndb_bitfield.test
527
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
528
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
530
# Delete by order by limit
531
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
534
# Delete rows with NULL column
535
DELETE FROM t6 WHERE c2=NULL;
538
# Delete with range values
539
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
541
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
543
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
547
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
549
SELECT hex(c1),hex(c2) FROM t5;
552
# Delete using various access methods
555
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
556
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
559
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
560
DELETE FROM t5 WHERE c1=6 AND c2=6;
562
SELECT hex(c1),hex(c2) FROM t5;
565
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
566
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
568
SELECT hex(c1),hex(c2) FROM t5;
569
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
570
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
572
SELECT hex(c1),hex(c2) FROM t5;
574
# Update using eq_ref
575
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
576
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
579
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
581
####Checking the bit values####
584
######### INSERT/SELECT#########
586
#### Insert and select 2 bit data into the table####
587
CREATE TABLE t1(c1 BIT(2));
588
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
594
set @v3=repeat('1',@v1);
595
let $STR0= query_get_value(select @v3 as I,I,1);
596
eval INSERT INTO t1 VALUES (b'$STR0');
597
set @v3=repeat('0',@v1);
598
let $STR1= query_get_value(select @v3 as I,I,1);
599
eval INSERT INTO t1 VALUES (b'$STR1');
600
set @v3=repeat('01',@v2);
601
let $STR2= query_get_value(select @v3 as I,I,1);
602
eval INSERT INTO t1 VALUES (b'$STR2');
603
set @v3=repeat('10',@v2);
604
let $STR3= query_get_value(select @v3 as I,I,1);
605
eval INSERT INTO t1 VALUES (b'$STR3');
606
set @v3=repeat('1',@v1);
607
set @v4=repeat('01',@v2);
608
set @v5=repeat('10',@v2);
609
let $STR0= query_get_value(select @v3 as I,I,1);
610
let $STR2= query_get_value(select @v4 as I,I,1);
611
let $STR3= query_get_value(select @v5 as I,I,1);
612
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
615
INSERT INTO t1 VALUES (b'0');
616
INSERT INTO t2 VALUES (b'0', b'0', b'0');
618
SELECT HEX(c1) FROM t1;
620
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
622
SELECT OCT(c1) FROM t1;
624
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
626
SELECT BIN(c1) FROM t1;
628
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
630
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
632
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
634
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
636
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
638
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
640
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
642
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
644
CREATE TABLE t3 (c1 BIT(65));
645
# Checking for bug #9571
646
CREATE TABLE t4(i INT, b BIT NOT NULL);
647
ALTER TABLE t4 ADD PRIMARY KEY (i);
648
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
649
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
650
#Borrowed from suite/ndb/t/ndb_bitfield.test
651
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
652
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
654
SELECT HEX(c1),HEX(c2) FROM t5;
656
#Insert permissible NULLs
657
INSERT IGNORE INTO t5 VALUES(96,null);
658
INSERT INTO t6 VALUES(null,null);
659
# Now select using various table access methods (full table scan, range scan, index scan etc.)
660
## Full table scan ##
662
SELECT HEX(c1),HEX(c2) FROM t5;
664
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
666
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
667
## Forward index scan, covering ##
669
SELECT bin(c1) FROM t5;
670
## Backward index scan, covering ##
671
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
672
## Forward index scan, non-covering ##
673
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
674
## Backward index scan, non-covering ##
675
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
677
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
678
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
679
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
680
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
681
## Range access, ordered ##
682
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
683
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
684
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
685
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
686
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
687
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
688
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
689
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
690
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
691
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
692
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
693
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
694
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
695
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
696
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
697
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
698
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
699
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
700
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
701
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
702
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
703
## Range access, backwards scan ##
704
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
705
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
706
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
707
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
708
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
709
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
710
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
711
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
712
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
713
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
714
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
715
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
716
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
717
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
718
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
719
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
720
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
721
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
722
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
723
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
724
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
725
#Inserting different charachers
726
CREATE TABLE t7(c1 BIT(2));
727
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
730
############# UPDATE ###########
732
# Update order by limit
733
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
736
# Update with arithmetic operations
737
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
739
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
742
# Update with NULL ( NULL to number & number to NULL)
743
UPDATE t6 SET c2=NULL WHERE c1=23;
745
UPDATE t6 SET c2=10 WHERE c2=NULL;
748
# Update range values
749
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
751
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
753
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
756
# Update outside range would be clipped to closest endpoints
757
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
759
UPDATE t6 SET c2=-1 WHERE c1=94;
762
# Update ignore on bad null error
764
SELECT hex(c1) FROM t5 WHERE c1<>0;
765
SET SQL_MODE=STRICT_ALL_TABLES;
766
--error ER_BAD_NULL_ERROR
767
UPDATE t5 SET c1=NULL WHERE c1<>0;
768
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
770
SELECT hex(c1),hex(c2) FROM t5;
771
SET SQL_MODE=DEFAULT;
775
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
778
SELECT hex(c1),hex(c2) FROM t5;
781
# Update using various access methods
784
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
785
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
788
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
789
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
791
SELECT hex(c1),hex(c2) FROM t5;
794
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
795
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
797
SELECT hex(c1),hex(c2) FROM t5;
798
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
800
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
803
SELECT hex(c1),hex(c2) FROM t5;
805
# Update using eq_ref
806
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
807
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
809
############# DELETE ###########
814
#Borrowed from suite/ndb/t/ndb_bitfield.test
815
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
816
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
818
# Delete by order by limit
819
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
822
# Delete rows with NULL column
823
DELETE FROM t6 WHERE c2=NULL;
826
# Delete with range values
827
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
829
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
831
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
835
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
837
SELECT hex(c1),hex(c2) FROM t5;
840
# Delete using various access methods
843
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
844
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
847
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
848
DELETE FROM t5 WHERE c1=6 AND c2=6;
850
SELECT hex(c1),hex(c2) FROM t5;
853
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
854
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
856
SELECT hex(c1),hex(c2) FROM t5;
857
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
858
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
860
SELECT hex(c1),hex(c2) FROM t5;
862
# Update using eq_ref
863
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
864
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
867
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
869
####Checking the bit values####
872
######### INSERT/SELECT#########
874
#### Insert and select 4 bit data into the table####
875
CREATE TABLE t1(c1 BIT(4));
876
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
882
set @v3=repeat('1',@v1);
883
let $STR0= query_get_value(select @v3 as I,I,1);
884
eval INSERT INTO t1 VALUES (b'$STR0');
885
set @v3=repeat('0',@v1);
886
let $STR1= query_get_value(select @v3 as I,I,1);
887
eval INSERT INTO t1 VALUES (b'$STR1');
888
set @v3=repeat('01',@v2);
889
let $STR2= query_get_value(select @v3 as I,I,1);
890
eval INSERT INTO t1 VALUES (b'$STR2');
891
set @v3=repeat('10',@v2);
892
let $STR3= query_get_value(select @v3 as I,I,1);
893
eval INSERT INTO t1 VALUES (b'$STR3');
894
set @v3=repeat('1',@v1);
895
set @v4=repeat('01',@v2);
896
set @v5=repeat('10',@v2);
897
let $STR0= query_get_value(select @v3 as I,I,1);
898
let $STR2= query_get_value(select @v4 as I,I,1);
899
let $STR3= query_get_value(select @v5 as I,I,1);
900
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
903
INSERT INTO t1 VALUES (b'0');
904
INSERT INTO t2 VALUES (b'0', b'0', b'0');
906
SELECT HEX(c1) FROM t1;
908
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
910
SELECT OCT(c1) FROM t1;
912
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
914
SELECT BIN(c1) FROM t1;
916
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
918
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
920
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
922
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
924
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
926
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
928
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
930
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
932
CREATE TABLE t3 (c1 BIT(65));
933
# Checking for bug #9571
934
CREATE TABLE t4(i INT, b BIT NOT NULL);
935
ALTER TABLE t4 ADD PRIMARY KEY (i);
936
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
937
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
938
#Borrowed from suite/ndb/t/ndb_bitfield.test
939
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
940
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
942
SELECT HEX(c1),HEX(c2) FROM t5;
944
#Insert permissible NULLs
945
INSERT IGNORE INTO t5 VALUES(96,null);
946
INSERT INTO t6 VALUES(null,null);
947
# Now select using various table access methods (full table scan, range scan, index scan etc.)
948
## Full table scan ##
950
SELECT HEX(c1),HEX(c2) FROM t5;
952
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
954
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
955
## Forward index scan, covering ##
957
SELECT bin(c1) FROM t5;
958
## Backward index scan, covering ##
959
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
960
## Forward index scan, non-covering ##
961
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
962
## Backward index scan, non-covering ##
963
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
965
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
966
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
967
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
968
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
969
## Range access, ordered ##
970
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
971
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
972
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
973
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
974
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
975
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
976
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
977
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
978
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
979
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
980
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
981
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
982
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
983
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
984
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
985
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
986
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
987
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
988
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
989
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
990
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
991
## Range access, backwards scan ##
992
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
993
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
994
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
995
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
996
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
997
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
998
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
999
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
1000
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
1001
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
1002
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
1003
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
1004
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
1005
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
1006
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
1007
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
1008
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
1009
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
1010
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
1011
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
1012
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
1013
#Inserting different charachers
1014
CREATE TABLE t7(c1 BIT(4));
1015
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
1018
############# UPDATE ###########
1020
# Update order by limit
1021
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1024
# Update with arithmetic operations
1025
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
1027
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
1030
# Update with NULL ( NULL to number & number to NULL)
1031
UPDATE t6 SET c2=NULL WHERE c1=23;
1033
UPDATE t6 SET c2=10 WHERE c2=NULL;
1036
# Update range values
1037
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
1039
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
1041
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
1044
# Update outside range would be clipped to closest endpoints
1045
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
1047
UPDATE t6 SET c2=-1 WHERE c1=94;
1050
# Update ignore on bad null error
1052
SELECT hex(c1) FROM t5 WHERE c1<>0;
1053
SET SQL_MODE=STRICT_ALL_TABLES;
1054
--error ER_BAD_NULL_ERROR
1055
UPDATE t5 SET c1=NULL WHERE c1<>0;
1056
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
1058
SELECT hex(c1),hex(c2) FROM t5;
1059
SET SQL_MODE=DEFAULT;
1063
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
1066
SELECT hex(c1),hex(c2) FROM t5;
1069
# Update using various access methods
1072
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1073
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1075
# Update using Const
1076
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1077
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
1079
SELECT hex(c1),hex(c2) FROM t5;
1081
# Update using range
1082
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1083
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
1085
SELECT hex(c1),hex(c2) FROM t5;
1086
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1088
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
1091
SELECT hex(c1),hex(c2) FROM t5;
1093
# Update using eq_ref
1094
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1095
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1097
############# DELETE ###########
1102
#Borrowed from suite/ndb/t/ndb_bitfield.test
1103
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1104
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
1106
# Delete by order by limit
1107
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1110
# Delete rows with NULL column
1111
DELETE FROM t6 WHERE c2=NULL;
1114
# Delete with range values
1115
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
1117
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
1119
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
1123
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
1125
SELECT hex(c1),hex(c2) FROM t5;
1128
# Delete using various access methods
1131
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1132
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1134
# Update using Const
1135
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1136
DELETE FROM t5 WHERE c1=6 AND c2=6;
1138
SELECT hex(c1),hex(c2) FROM t5;
1140
# Update using range
1141
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1142
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
1144
SELECT hex(c1),hex(c2) FROM t5;
1145
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1146
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1148
SELECT hex(c1),hex(c2) FROM t5;
1150
# Update using eq_ref
1151
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1152
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1154
# Droping the tables
1155
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
1157
####Checking the bit values####
1160
######### INSERT/SELECT#########
1162
#### Insert and select 8 bit data into the table####
1163
CREATE TABLE t1(c1 BIT(8));
1164
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
1170
set @v3=repeat('1',@v1);
1171
let $STR0= query_get_value(select @v3 as I,I,1);
1172
eval INSERT INTO t1 VALUES (b'$STR0');
1173
set @v3=repeat('0',@v1);
1174
let $STR1= query_get_value(select @v3 as I,I,1);
1175
eval INSERT INTO t1 VALUES (b'$STR1');
1176
set @v3=repeat('01',@v2);
1177
let $STR2= query_get_value(select @v3 as I,I,1);
1178
eval INSERT INTO t1 VALUES (b'$STR2');
1179
set @v3=repeat('10',@v2);
1180
let $STR3= query_get_value(select @v3 as I,I,1);
1181
eval INSERT INTO t1 VALUES (b'$STR3');
1182
set @v3=repeat('1',@v1);
1183
set @v4=repeat('01',@v2);
1184
set @v5=repeat('10',@v2);
1185
let $STR0= query_get_value(select @v3 as I,I,1);
1186
let $STR2= query_get_value(select @v4 as I,I,1);
1187
let $STR3= query_get_value(select @v5 as I,I,1);
1188
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
1191
INSERT INTO t1 VALUES (b'0');
1192
INSERT INTO t2 VALUES (b'0', b'0', b'0');
1194
SELECT HEX(c1) FROM t1;
1196
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
1198
SELECT OCT(c1) FROM t1;
1200
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
1202
SELECT BIN(c1) FROM t1;
1204
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
1206
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
1208
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
1210
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
1212
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
1214
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
1216
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
1218
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
1220
CREATE TABLE t3 (c1 BIT(65));
1221
# Checking for bug #9571
1222
CREATE TABLE t4(i INT, b BIT NOT NULL);
1223
ALTER TABLE t4 ADD PRIMARY KEY (i);
1224
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
1225
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
1226
#Borrowed from suite/ndb/t/ndb_bitfield.test
1227
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1228
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1230
SELECT HEX(c1),HEX(c2) FROM t5;
1232
#Insert permissible NULLs
1233
INSERT IGNORE INTO t5 VALUES(96,null);
1234
INSERT INTO t6 VALUES(null,null);
1235
# Now select using various table access methods (full table scan, range scan, index scan etc.)
1236
## Full table scan ##
1238
SELECT HEX(c1),HEX(c2) FROM t5;
1240
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
1242
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
1243
## Forward index scan, covering ##
1245
SELECT bin(c1) FROM t5;
1246
## Backward index scan, covering ##
1247
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
1248
## Forward index scan, non-covering ##
1249
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
1250
## Backward index scan, non-covering ##
1251
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
1253
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
1254
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
1255
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
1256
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
1257
## Range access, ordered ##
1258
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
1260
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
1262
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
1263
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
1264
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
1265
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
1266
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
1267
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
1268
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
1270
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
1271
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
1272
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
1273
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
1274
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
1275
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
1276
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
1277
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
1278
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
1279
## Range access, backwards scan ##
1280
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
1281
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
1283
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
1285
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
1286
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
1287
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
1288
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
1289
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
1290
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
1291
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
1293
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
1294
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
1295
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
1296
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
1297
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
1298
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
1299
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
1300
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
1301
#Inserting different charachers
1302
CREATE TABLE t7(c1 BIT(8));
1303
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
1306
############# UPDATE ###########
1308
# Update order by limit
1309
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1312
# Update with arithmetic operations
1313
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
1315
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
1318
# Update with NULL ( NULL to number & number to NULL)
1319
UPDATE t6 SET c2=NULL WHERE c1=23;
1321
UPDATE t6 SET c2=10 WHERE c2=NULL;
1324
# Update range values
1325
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
1327
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
1329
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
1332
# Update outside range would be clipped to closest endpoints
1333
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
1335
UPDATE t6 SET c2=-1 WHERE c1=94;
1338
# Update ignore on bad null error
1340
SELECT hex(c1) FROM t5 WHERE c1<>0;
1341
SET SQL_MODE=STRICT_ALL_TABLES;
1342
--error ER_BAD_NULL_ERROR
1343
UPDATE t5 SET c1=NULL WHERE c1<>0;
1344
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
1346
SELECT hex(c1),hex(c2) FROM t5;
1347
SET SQL_MODE=DEFAULT;
1351
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
1354
SELECT hex(c1),hex(c2) FROM t5;
1357
# Update using various access methods
1360
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1361
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1363
# Update using Const
1364
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1365
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
1367
SELECT hex(c1),hex(c2) FROM t5;
1369
# Update using range
1370
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1371
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
1373
SELECT hex(c1),hex(c2) FROM t5;
1374
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1376
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
1379
SELECT hex(c1),hex(c2) FROM t5;
1381
# Update using eq_ref
1382
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1383
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1385
############# DELETE ###########
1390
#Borrowed from suite/ndb/t/ndb_bitfield.test
1391
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1392
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
1394
# Delete by order by limit
1395
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1398
# Delete rows with NULL column
1399
DELETE FROM t6 WHERE c2=NULL;
1402
# Delete with range values
1403
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
1405
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
1407
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
1411
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
1413
SELECT hex(c1),hex(c2) FROM t5;
1416
# Delete using various access methods
1419
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1420
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1422
# Update using Const
1423
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1424
DELETE FROM t5 WHERE c1=6 AND c2=6;
1426
SELECT hex(c1),hex(c2) FROM t5;
1428
# Update using range
1429
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1430
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
1432
SELECT hex(c1),hex(c2) FROM t5;
1433
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1434
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1436
SELECT hex(c1),hex(c2) FROM t5;
1438
# Update using eq_ref
1439
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1440
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1442
# Droping the tables
1443
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
1445
####Checking the bit values####
1448
######### INSERT/SELECT#########
1450
#### Insert and select 16 bit data into the table####
1451
CREATE TABLE t1(c1 BIT(16));
1452
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
1458
set @v3=repeat('1',@v1);
1459
let $STR0= query_get_value(select @v3 as I,I,1);
1460
eval INSERT INTO t1 VALUES (b'$STR0');
1461
set @v3=repeat('0',@v1);
1462
let $STR1= query_get_value(select @v3 as I,I,1);
1463
eval INSERT INTO t1 VALUES (b'$STR1');
1464
set @v3=repeat('01',@v2);
1465
let $STR2= query_get_value(select @v3 as I,I,1);
1466
eval INSERT INTO t1 VALUES (b'$STR2');
1467
set @v3=repeat('10',@v2);
1468
let $STR3= query_get_value(select @v3 as I,I,1);
1469
eval INSERT INTO t1 VALUES (b'$STR3');
1470
set @v3=repeat('1',@v1);
1471
set @v4=repeat('01',@v2);
1472
set @v5=repeat('10',@v2);
1473
let $STR0= query_get_value(select @v3 as I,I,1);
1474
let $STR2= query_get_value(select @v4 as I,I,1);
1475
let $STR3= query_get_value(select @v5 as I,I,1);
1476
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
1479
INSERT INTO t1 VALUES (b'0');
1480
INSERT INTO t2 VALUES (b'0', b'0', b'0');
1482
SELECT HEX(c1) FROM t1;
1484
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
1486
SELECT OCT(c1) FROM t1;
1488
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
1490
SELECT BIN(c1) FROM t1;
1492
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
1494
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
1496
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
1498
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
1500
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
1502
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
1504
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
1506
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
1508
CREATE TABLE t3 (c1 BIT(65));
1509
# Checking for bug #9571
1510
CREATE TABLE t4(i INT, b BIT NOT NULL);
1511
ALTER TABLE t4 ADD PRIMARY KEY (i);
1512
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
1513
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
1514
#Borrowed from suite/ndb/t/ndb_bitfield.test
1515
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1516
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1518
SELECT HEX(c1),HEX(c2) FROM t5;
1520
#Insert permissible NULLs
1521
INSERT IGNORE INTO t5 VALUES(96,null);
1522
INSERT INTO t6 VALUES(null,null);
1523
# Now select using various table access methods (full table scan, range scan, index scan etc.)
1524
## Full table scan ##
1526
SELECT HEX(c1),HEX(c2) FROM t5;
1528
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
1530
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
1531
## Forward index scan, covering ##
1533
SELECT bin(c1) FROM t5;
1534
## Backward index scan, covering ##
1535
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
1536
## Forward index scan, non-covering ##
1537
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
1538
## Backward index scan, non-covering ##
1539
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
1541
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
1542
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
1543
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
1544
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
1545
## Range access, ordered ##
1546
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
1547
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
1548
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
1549
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
1550
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
1551
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
1552
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
1553
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
1554
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
1555
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
1556
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
1557
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
1558
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
1559
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
1560
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
1561
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
1562
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
1563
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
1564
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
1565
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
1566
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
1567
## Range access, backwards scan ##
1568
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
1569
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
1570
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
1571
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
1572
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
1573
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
1574
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
1575
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
1576
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
1577
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
1578
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
1579
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
1580
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
1581
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
1582
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
1583
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
1584
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
1585
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
1586
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
1587
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
1588
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
1589
#Inserting different charachers
1590
CREATE TABLE t7(c1 BIT(16));
1591
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
1594
############# UPDATE ###########
1596
# Update order by limit
1597
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1600
# Update with arithmetic operations
1601
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
1603
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
1606
# Update with NULL ( NULL to number & number to NULL)
1607
UPDATE t6 SET c2=NULL WHERE c1=23;
1609
UPDATE t6 SET c2=10 WHERE c2=NULL;
1612
# Update range values
1613
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
1615
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
1617
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
1620
# Update outside range would be clipped to closest endpoints
1621
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
1623
UPDATE t6 SET c2=-1 WHERE c1=94;
1626
# Update ignore on bad null error
1628
SELECT hex(c1) FROM t5 WHERE c1<>0;
1629
SET SQL_MODE=STRICT_ALL_TABLES;
1630
--error ER_BAD_NULL_ERROR
1631
UPDATE t5 SET c1=NULL WHERE c1<>0;
1632
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
1634
SELECT hex(c1),hex(c2) FROM t5;
1635
SET SQL_MODE=DEFAULT;
1639
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
1642
SELECT hex(c1),hex(c2) FROM t5;
1645
# Update using various access methods
1648
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1649
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1651
# Update using Const
1652
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1653
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
1655
SELECT hex(c1),hex(c2) FROM t5;
1657
# Update using range
1658
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1659
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
1661
SELECT hex(c1),hex(c2) FROM t5;
1662
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1664
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
1667
SELECT hex(c1),hex(c2) FROM t5;
1669
# Update using eq_ref
1670
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1671
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1673
############# DELETE ###########
1678
#Borrowed from suite/ndb/t/ndb_bitfield.test
1679
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1680
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
1682
# Delete by order by limit
1683
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1686
# Delete rows with NULL column
1687
DELETE FROM t6 WHERE c2=NULL;
1690
# Delete with range values
1691
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
1693
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
1695
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
1699
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
1701
SELECT hex(c1),hex(c2) FROM t5;
1704
# Delete using various access methods
1707
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1708
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1710
# Update using Const
1711
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1712
DELETE FROM t5 WHERE c1=6 AND c2=6;
1714
SELECT hex(c1),hex(c2) FROM t5;
1716
# Update using range
1717
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1718
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
1720
SELECT hex(c1),hex(c2) FROM t5;
1721
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1722
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1724
SELECT hex(c1),hex(c2) FROM t5;
1726
# Update using eq_ref
1727
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1728
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1730
# Droping the tables
1731
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
1733
####Checking the bit values####
1736
######### INSERT/SELECT#########
1738
#### Insert and select 32 bit data into the table####
1739
CREATE TABLE t1(c1 BIT(32));
1740
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
1746
set @v3=repeat('1',@v1);
1747
let $STR0= query_get_value(select @v3 as I,I,1);
1748
eval INSERT INTO t1 VALUES (b'$STR0');
1749
set @v3=repeat('0',@v1);
1750
let $STR1= query_get_value(select @v3 as I,I,1);
1751
eval INSERT INTO t1 VALUES (b'$STR1');
1752
set @v3=repeat('01',@v2);
1753
let $STR2= query_get_value(select @v3 as I,I,1);
1754
eval INSERT INTO t1 VALUES (b'$STR2');
1755
set @v3=repeat('10',@v2);
1756
let $STR3= query_get_value(select @v3 as I,I,1);
1757
eval INSERT INTO t1 VALUES (b'$STR3');
1758
set @v3=repeat('1',@v1);
1759
set @v4=repeat('01',@v2);
1760
set @v5=repeat('10',@v2);
1761
let $STR0= query_get_value(select @v3 as I,I,1);
1762
let $STR2= query_get_value(select @v4 as I,I,1);
1763
let $STR3= query_get_value(select @v5 as I,I,1);
1764
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
1767
INSERT INTO t1 VALUES (b'0');
1768
INSERT INTO t2 VALUES (b'0', b'0', b'0');
1770
SELECT HEX(c1) FROM t1;
1772
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
1774
SELECT OCT(c1) FROM t1;
1776
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
1778
SELECT BIN(c1) FROM t1;
1780
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
1782
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
1784
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
1786
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
1788
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
1790
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
1792
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
1794
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
1796
CREATE TABLE t3 (c1 BIT(65));
1797
# Checking for bug #9571
1798
CREATE TABLE t4(i INT, b BIT NOT NULL);
1799
ALTER TABLE t4 ADD PRIMARY KEY (i);
1800
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
1801
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
1802
#Borrowed from suite/ndb/t/ndb_bitfield.test
1803
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1804
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1806
SELECT HEX(c1),HEX(c2) FROM t5;
1808
#Insert permissible NULLs
1809
INSERT IGNORE INTO t5 VALUES(96,null);
1810
INSERT INTO t6 VALUES(null,null);
1811
# Now select using various table access methods (full table scan, range scan, index scan etc.)
1812
## Full table scan ##
1814
SELECT HEX(c1),HEX(c2) FROM t5;
1816
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
1818
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
1819
## Forward index scan, covering ##
1821
SELECT bin(c1) FROM t5;
1822
## Backward index scan, covering ##
1823
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
1824
## Forward index scan, non-covering ##
1825
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
1826
## Backward index scan, non-covering ##
1827
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
1829
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
1830
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
1831
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
1832
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
1833
## Range access, ordered ##
1834
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
1835
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
1836
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
1837
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
1838
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
1839
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
1840
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
1841
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
1842
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
1843
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
1844
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
1845
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
1846
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
1847
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
1848
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
1849
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
1850
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
1851
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
1852
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
1853
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
1854
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
1855
## Range access, backwards scan ##
1856
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
1857
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
1858
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
1859
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
1860
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
1861
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
1862
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
1863
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
1864
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
1865
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
1866
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
1867
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
1868
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
1869
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
1870
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
1871
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
1872
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
1873
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
1874
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
1875
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
1876
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
1877
#Inserting different charachers
1878
CREATE TABLE t7(c1 BIT(32));
1879
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
1882
############# UPDATE ###########
1884
# Update order by limit
1885
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1888
# Update with arithmetic operations
1889
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
1891
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
1894
# Update with NULL ( NULL to number & number to NULL)
1895
UPDATE t6 SET c2=NULL WHERE c1=23;
1897
UPDATE t6 SET c2=10 WHERE c2=NULL;
1900
# Update range values
1901
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
1903
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
1905
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
1908
# Update outside range would be clipped to closest endpoints
1909
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
1911
UPDATE t6 SET c2=-1 WHERE c1=94;
1914
# Update ignore on bad null error
1916
SELECT hex(c1) FROM t5 WHERE c1<>0;
1917
SET SQL_MODE=STRICT_ALL_TABLES;
1918
--error ER_BAD_NULL_ERROR
1919
UPDATE t5 SET c1=NULL WHERE c1<>0;
1920
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
1922
SELECT hex(c1),hex(c2) FROM t5;
1923
SET SQL_MODE=DEFAULT;
1927
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
1930
SELECT hex(c1),hex(c2) FROM t5;
1933
# Update using various access methods
1936
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1937
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1939
# Update using Const
1940
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
1941
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
1943
SELECT hex(c1),hex(c2) FROM t5;
1945
# Update using range
1946
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
1947
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
1949
SELECT hex(c1),hex(c2) FROM t5;
1950
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
1952
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
1955
SELECT hex(c1),hex(c2) FROM t5;
1957
# Update using eq_ref
1958
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1959
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
1961
############# DELETE ###########
1966
#Borrowed from suite/ndb/t/ndb_bitfield.test
1967
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
1968
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
1970
# Delete by order by limit
1971
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
1974
# Delete rows with NULL column
1975
DELETE FROM t6 WHERE c2=NULL;
1978
# Delete with range values
1979
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
1981
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
1983
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
1987
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
1989
SELECT hex(c1),hex(c2) FROM t5;
1992
# Delete using various access methods
1995
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1996
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
1998
# Update using Const
1999
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2000
DELETE FROM t5 WHERE c1=6 AND c2=6;
2002
SELECT hex(c1),hex(c2) FROM t5;
2004
# Update using range
2005
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2006
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
2008
SELECT hex(c1),hex(c2) FROM t5;
2009
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2010
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2012
SELECT hex(c1),hex(c2) FROM t5;
2014
# Update using eq_ref
2015
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2016
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2018
# Droping the tables
2019
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
2021
####Checking the bit values####
2024
######### INSERT/SELECT#########
2026
#### Insert and select 64 bit data into the table####
2027
CREATE TABLE t1(c1 BIT(64));
2028
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
2034
set @v3=repeat('1',@v1);
2035
let $STR0= query_get_value(select @v3 as I,I,1);
2036
eval INSERT INTO t1 VALUES (b'$STR0');
2037
set @v3=repeat('0',@v1);
2038
let $STR1= query_get_value(select @v3 as I,I,1);
2039
eval INSERT INTO t1 VALUES (b'$STR1');
2040
set @v3=repeat('01',@v2);
2041
let $STR2= query_get_value(select @v3 as I,I,1);
2042
eval INSERT INTO t1 VALUES (b'$STR2');
2043
set @v3=repeat('10',@v2);
2044
let $STR3= query_get_value(select @v3 as I,I,1);
2045
eval INSERT INTO t1 VALUES (b'$STR3');
2046
set @v3=repeat('1',@v1);
2047
set @v4=repeat('01',@v2);
2048
set @v5=repeat('10',@v2);
2049
let $STR0= query_get_value(select @v3 as I,I,1);
2050
let $STR2= query_get_value(select @v4 as I,I,1);
2051
let $STR3= query_get_value(select @v5 as I,I,1);
2052
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
2055
INSERT INTO t1 VALUES (b'0');
2056
INSERT INTO t2 VALUES (b'0', b'0', b'0');
2058
SELECT HEX(c1) FROM t1;
2060
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
2062
SELECT OCT(c1) FROM t1;
2064
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
2066
SELECT BIN(c1) FROM t1;
2068
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
2070
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
2072
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
2074
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
2076
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
2078
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
2080
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
2082
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
2084
CREATE TABLE t3 (c1 BIT(65));
2085
# Checking for bug #9571
2086
CREATE TABLE t4(i INT, b BIT NOT NULL);
2087
ALTER TABLE t4 ADD PRIMARY KEY (i);
2088
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
2089
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
2090
#Borrowed from suite/ndb/t/ndb_bitfield.test
2091
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2092
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2094
SELECT HEX(c1),HEX(c2) FROM t5;
2096
#Insert permissible NULLs
2097
INSERT IGNORE INTO t5 VALUES(96,null);
2098
INSERT INTO t6 VALUES(null,null);
2099
# Now select using various table access methods (full table scan, range scan, index scan etc.)
2100
## Full table scan ##
2102
SELECT HEX(c1),HEX(c2) FROM t5;
2104
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
2106
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
2107
## Forward index scan, covering ##
2109
SELECT bin(c1) FROM t5;
2110
## Backward index scan, covering ##
2111
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
2112
## Forward index scan, non-covering ##
2113
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
2114
## Backward index scan, non-covering ##
2115
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
2117
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
2118
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
2119
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
2120
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
2121
## Range access, ordered ##
2122
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
2123
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
2124
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
2125
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
2126
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
2127
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
2128
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
2129
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
2130
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
2131
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
2132
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
2133
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
2134
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
2135
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
2136
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
2137
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
2138
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
2139
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
2140
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
2141
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
2142
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
2143
## Range access, backwards scan ##
2144
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
2145
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
2146
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
2147
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
2148
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
2149
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
2150
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
2151
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
2152
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
2153
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
2154
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
2155
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
2156
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
2157
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
2158
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
2159
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
2160
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
2161
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
2162
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
2163
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
2164
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
2165
#Inserting different charachers
2166
CREATE TABLE t7(c1 BIT(64));
2167
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
2170
############# UPDATE ###########
2172
# Update order by limit
2173
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2176
# Update with arithmetic operations
2177
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
2179
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
2182
# Update with NULL ( NULL to number & number to NULL)
2183
UPDATE t6 SET c2=NULL WHERE c1=23;
2185
UPDATE t6 SET c2=10 WHERE c2=NULL;
2188
# Update range values
2189
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
2191
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
2193
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
2196
# Update outside range would be clipped to closest endpoints
2197
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
2199
UPDATE t6 SET c2=-1 WHERE c1=94;
2202
# Update ignore on bad null error
2204
SELECT hex(c1) FROM t5 WHERE c1<>0;
2205
SET SQL_MODE=STRICT_ALL_TABLES;
2206
--error ER_BAD_NULL_ERROR
2207
UPDATE t5 SET c1=NULL WHERE c1<>0;
2208
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
2210
SELECT hex(c1),hex(c2) FROM t5;
2211
SET SQL_MODE=DEFAULT;
2215
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
2218
SELECT hex(c1),hex(c2) FROM t5;
2221
# Update using various access methods
2224
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2225
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2227
# Update using Const
2228
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2229
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
2231
SELECT hex(c1),hex(c2) FROM t5;
2233
# Update using range
2234
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2235
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
2237
SELECT hex(c1),hex(c2) FROM t5;
2238
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2240
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
2243
SELECT hex(c1),hex(c2) FROM t5;
2245
# Update using eq_ref
2246
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2247
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2249
############# DELETE ###########
2254
#Borrowed from suite/ndb/t/ndb_bitfield.test
2255
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2256
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
2258
# Delete by order by limit
2259
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2262
# Delete rows with NULL column
2263
DELETE FROM t6 WHERE c2=NULL;
2266
# Delete with range values
2267
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
2269
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
2271
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
2275
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
2277
SELECT hex(c1),hex(c2) FROM t5;
2280
# Delete using various access methods
2283
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2284
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2286
# Update using Const
2287
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2288
DELETE FROM t5 WHERE c1=6 AND c2=6;
2290
SELECT hex(c1),hex(c2) FROM t5;
2292
# Update using range
2293
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2294
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
2296
SELECT hex(c1),hex(c2) FROM t5;
2297
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2298
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2300
SELECT hex(c1),hex(c2) FROM t5;
2302
# Update using eq_ref
2303
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2304
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2306
# Droping the tables
2307
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
2309
####Checking the bit values####
2312
######### INSERT/SELECT#########
2314
#### Insert and select 0 bit data into the table####
2315
CREATE TABLE t1(c1 BIT(0));
2316
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
2322
set @v3=repeat('1',@v1);
2323
let $STR0= query_get_value(select @v3 as I,I,1);
2324
eval INSERT INTO t1 VALUES (b'$STR0');
2325
set @v3=repeat('0',@v1);
2326
let $STR1= query_get_value(select @v3 as I,I,1);
2327
eval INSERT INTO t1 VALUES (b'$STR1');
2328
set @v3=repeat('01',@v2);
2329
let $STR2= query_get_value(select @v3 as I,I,1);
2330
eval INSERT INTO t1 VALUES (b'$STR2');
2331
set @v3=repeat('10',@v2);
2332
let $STR3= query_get_value(select @v3 as I,I,1);
2333
eval INSERT INTO t1 VALUES (b'$STR3');
2334
set @v3=repeat('1',@v1);
2335
set @v4=repeat('01',@v2);
2336
set @v5=repeat('10',@v2);
2337
let $STR0= query_get_value(select @v3 as I,I,1);
2338
let $STR2= query_get_value(select @v4 as I,I,1);
2339
let $STR3= query_get_value(select @v5 as I,I,1);
2340
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
2343
INSERT INTO t1 VALUES (b'1');
2344
INSERT INTO t2 VALUES (b'1', b'1', b'1');
2346
SELECT HEX(c1) FROM t1;
2348
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
2350
SELECT OCT(c1) FROM t1;
2352
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
2354
SELECT BIN(c1) FROM t1;
2356
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
2358
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
2360
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
2362
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
2364
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
2366
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
2368
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
2370
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
2372
CREATE TABLE t3 (c1 BIT(65));
2373
# Checking for bug #9571
2374
CREATE TABLE t4(i INT, b BIT NOT NULL);
2375
ALTER TABLE t4 ADD PRIMARY KEY (i);
2376
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
2377
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
2378
#Borrowed from suite/ndb/t/ndb_bitfield.test
2379
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2380
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2382
SELECT HEX(c1),HEX(c2) FROM t5;
2384
#Insert permissible NULLs
2385
INSERT IGNORE INTO t5 VALUES(96,null);
2386
INSERT INTO t6 VALUES(null,null);
2387
# Now select using various table access methods (full table scan, range scan, index scan etc.)
2388
## Full table scan ##
2390
SELECT HEX(c1),HEX(c2) FROM t5;
2392
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
2394
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
2395
## Forward index scan, covering ##
2397
SELECT bin(c1) FROM t5;
2398
## Backward index scan, covering ##
2399
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
2400
## Forward index scan, non-covering ##
2401
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
2402
## Backward index scan, non-covering ##
2403
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
2405
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
2406
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
2407
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
2408
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
2409
## Range access, ordered ##
2410
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
2411
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
2412
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
2413
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
2414
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
2415
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
2416
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
2417
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
2418
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
2419
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
2420
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
2421
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
2422
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
2423
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
2424
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
2425
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
2426
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
2427
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
2428
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
2429
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
2430
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
2431
## Range access, backwards scan ##
2432
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
2433
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
2434
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
2435
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
2436
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
2437
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
2438
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
2439
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
2440
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
2441
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
2442
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
2443
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
2444
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
2445
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
2446
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
2447
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
2448
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
2449
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
2450
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
2451
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
2452
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
2453
#Inserting different charachers
2454
CREATE TABLE t7(c1 BIT(0));
2455
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
2458
############# UPDATE ###########
2460
# Update order by limit
2461
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2464
# Update with arithmetic operations
2465
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
2467
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
2470
# Update with NULL ( NULL to number & number to NULL)
2471
UPDATE t6 SET c2=NULL WHERE c1=23;
2473
UPDATE t6 SET c2=10 WHERE c2=NULL;
2476
# Update range values
2477
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
2479
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
2481
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
2484
# Update outside range would be clipped to closest endpoints
2485
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
2487
UPDATE t6 SET c2=-1 WHERE c1=94;
2490
# Update ignore on bad null error
2492
SELECT hex(c1) FROM t5 WHERE c1<>0;
2493
SET SQL_MODE=STRICT_ALL_TABLES;
2494
--error ER_BAD_NULL_ERROR
2495
UPDATE t5 SET c1=NULL WHERE c1<>0;
2496
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
2498
SELECT hex(c1),hex(c2) FROM t5;
2499
SET SQL_MODE=DEFAULT;
2503
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
2506
SELECT hex(c1),hex(c2) FROM t5;
2509
# Update using various access methods
2512
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2513
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2515
# Update using Const
2516
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2517
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
2519
SELECT hex(c1),hex(c2) FROM t5;
2521
# Update using range
2522
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2523
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
2525
SELECT hex(c1),hex(c2) FROM t5;
2526
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2528
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
2531
SELECT hex(c1),hex(c2) FROM t5;
2533
# Update using eq_ref
2534
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2535
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2537
############# DELETE ###########
2542
#Borrowed from suite/ndb/t/ndb_bitfield.test
2543
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2544
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
2546
# Delete by order by limit
2547
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2550
# Delete rows with NULL column
2551
DELETE FROM t6 WHERE c2=NULL;
2554
# Delete with range values
2555
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
2557
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
2559
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
2563
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
2565
SELECT hex(c1),hex(c2) FROM t5;
2568
# Delete using various access methods
2571
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2572
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2574
# Update using Const
2575
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2576
DELETE FROM t5 WHERE c1=6 AND c2=6;
2578
SELECT hex(c1),hex(c2) FROM t5;
2580
# Update using range
2581
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2582
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
2584
SELECT hex(c1),hex(c2) FROM t5;
2585
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2586
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2588
SELECT hex(c1),hex(c2) FROM t5;
2590
# Update using eq_ref
2591
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2592
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2594
# Droping the tables
2595
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
2597
####Checking the bit values####
2600
######### INSERT/SELECT#########
2602
#### Insert and select 1 bit data into the table####
2603
CREATE TABLE t1(c1 BIT(1));
2604
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
2610
set @v3=repeat('1',@v1);
2611
let $STR0= query_get_value(select @v3 as I,I,1);
2612
eval INSERT INTO t1 VALUES (b'$STR0');
2613
set @v3=repeat('0',@v1);
2614
let $STR1= query_get_value(select @v3 as I,I,1);
2615
eval INSERT INTO t1 VALUES (b'$STR1');
2616
set @v3=repeat('01',@v2);
2617
let $STR2= query_get_value(select @v3 as I,I,1);
2618
eval INSERT INTO t1 VALUES (b'$STR2');
2619
set @v3=repeat('10',@v2);
2620
let $STR3= query_get_value(select @v3 as I,I,1);
2621
eval INSERT INTO t1 VALUES (b'$STR3');
2622
set @v3=repeat('1',@v1);
2623
set @v4=repeat('01',@v2);
2624
set @v5=repeat('10',@v2);
2625
let $STR0= query_get_value(select @v3 as I,I,1);
2626
let $STR2= query_get_value(select @v4 as I,I,1);
2627
let $STR3= query_get_value(select @v5 as I,I,1);
2628
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
2631
INSERT INTO t1 VALUES (b'1');
2632
INSERT INTO t2 VALUES (b'1', b'1', b'1');
2634
SELECT HEX(c1) FROM t1;
2636
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
2638
SELECT OCT(c1) FROM t1;
2640
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
2642
SELECT BIN(c1) FROM t1;
2644
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
2646
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
2648
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
2650
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
2652
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
2654
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
2656
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
2658
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
2660
CREATE TABLE t3 (c1 BIT(65));
2661
# Checking for bug #9571
2662
CREATE TABLE t4(i INT, b BIT NOT NULL);
2663
ALTER TABLE t4 ADD PRIMARY KEY (i);
2664
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
2665
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
2666
#Borrowed from suite/ndb/t/ndb_bitfield.test
2667
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2668
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2670
SELECT HEX(c1),HEX(c2) FROM t5;
2672
#Insert permissible NULLs
2673
INSERT IGNORE INTO t5 VALUES(96,null);
2674
INSERT INTO t6 VALUES(null,null);
2675
# Now select using various table access methods (full table scan, range scan, index scan etc.)
2676
## Full table scan ##
2678
SELECT HEX(c1),HEX(c2) FROM t5;
2680
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
2682
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
2683
## Forward index scan, covering ##
2685
SELECT bin(c1) FROM t5;
2686
## Backward index scan, covering ##
2687
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
2688
## Forward index scan, non-covering ##
2689
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
2690
## Backward index scan, non-covering ##
2691
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
2693
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
2694
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
2695
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
2696
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
2697
## Range access, ordered ##
2698
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
2699
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
2700
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
2701
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
2702
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
2703
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
2704
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
2705
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
2706
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
2707
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
2708
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
2709
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
2710
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
2711
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
2712
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
2713
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
2714
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
2715
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
2716
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
2717
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
2718
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
2719
## Range access, backwards scan ##
2720
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
2721
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
2722
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
2723
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
2724
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
2725
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
2726
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
2727
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
2728
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
2729
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
2730
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
2731
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
2732
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
2733
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
2734
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
2735
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
2736
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
2737
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
2738
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
2739
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
2740
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
2741
#Inserting different charachers
2742
CREATE TABLE t7(c1 BIT(1));
2743
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
2746
############# UPDATE ###########
2748
# Update order by limit
2749
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2752
# Update with arithmetic operations
2753
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
2755
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
2758
# Update with NULL ( NULL to number & number to NULL)
2759
UPDATE t6 SET c2=NULL WHERE c1=23;
2761
UPDATE t6 SET c2=10 WHERE c2=NULL;
2764
# Update range values
2765
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
2767
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
2769
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
2772
# Update outside range would be clipped to closest endpoints
2773
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
2775
UPDATE t6 SET c2=-1 WHERE c1=94;
2778
# Update ignore on bad null error
2780
SELECT hex(c1) FROM t5 WHERE c1<>0;
2781
SET SQL_MODE=STRICT_ALL_TABLES;
2782
--error ER_BAD_NULL_ERROR
2783
UPDATE t5 SET c1=NULL WHERE c1<>0;
2784
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
2786
SELECT hex(c1),hex(c2) FROM t5;
2787
SET SQL_MODE=DEFAULT;
2791
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
2794
SELECT hex(c1),hex(c2) FROM t5;
2797
# Update using various access methods
2800
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2801
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2803
# Update using Const
2804
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2805
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
2807
SELECT hex(c1),hex(c2) FROM t5;
2809
# Update using range
2810
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2811
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
2813
SELECT hex(c1),hex(c2) FROM t5;
2814
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2816
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
2819
SELECT hex(c1),hex(c2) FROM t5;
2821
# Update using eq_ref
2822
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2823
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2825
############# DELETE ###########
2830
#Borrowed from suite/ndb/t/ndb_bitfield.test
2831
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2832
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
2834
# Delete by order by limit
2835
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
2838
# Delete rows with NULL column
2839
DELETE FROM t6 WHERE c2=NULL;
2842
# Delete with range values
2843
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
2845
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
2847
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
2851
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
2853
SELECT hex(c1),hex(c2) FROM t5;
2856
# Delete using various access methods
2859
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2860
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
2862
# Update using Const
2863
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
2864
DELETE FROM t5 WHERE c1=6 AND c2=6;
2866
SELECT hex(c1),hex(c2) FROM t5;
2868
# Update using range
2869
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
2870
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
2872
SELECT hex(c1),hex(c2) FROM t5;
2873
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2874
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
2876
SELECT hex(c1),hex(c2) FROM t5;
2878
# Update using eq_ref
2879
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2880
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
2882
# Droping the tables
2883
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
2885
####Checking the bit values####
2888
######### INSERT/SELECT#########
2890
#### Insert and select 2 bit data into the table####
2891
CREATE TABLE t1(c1 BIT(2));
2892
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
2898
set @v3=repeat('1',@v1);
2899
let $STR0= query_get_value(select @v3 as I,I,1);
2900
eval INSERT INTO t1 VALUES (b'$STR0');
2901
set @v3=repeat('0',@v1);
2902
let $STR1= query_get_value(select @v3 as I,I,1);
2903
eval INSERT INTO t1 VALUES (b'$STR1');
2904
set @v3=repeat('01',@v2);
2905
let $STR2= query_get_value(select @v3 as I,I,1);
2906
eval INSERT INTO t1 VALUES (b'$STR2');
2907
set @v3=repeat('10',@v2);
2908
let $STR3= query_get_value(select @v3 as I,I,1);
2909
eval INSERT INTO t1 VALUES (b'$STR3');
2910
set @v3=repeat('1',@v1);
2911
set @v4=repeat('01',@v2);
2912
set @v5=repeat('10',@v2);
2913
let $STR0= query_get_value(select @v3 as I,I,1);
2914
let $STR2= query_get_value(select @v4 as I,I,1);
2915
let $STR3= query_get_value(select @v5 as I,I,1);
2916
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
2919
INSERT INTO t1 VALUES (b'1');
2920
INSERT INTO t2 VALUES (b'1', b'1', b'1');
2922
SELECT HEX(c1) FROM t1;
2924
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
2926
SELECT OCT(c1) FROM t1;
2928
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
2930
SELECT BIN(c1) FROM t1;
2932
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
2934
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
2936
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
2938
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
2940
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
2942
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
2944
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
2946
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
2948
CREATE TABLE t3 (c1 BIT(65));
2949
# Checking for bug #9571
2950
CREATE TABLE t4(i INT, b BIT NOT NULL);
2951
ALTER TABLE t4 ADD PRIMARY KEY (i);
2952
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
2953
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
2954
#Borrowed from suite/ndb/t/ndb_bitfield.test
2955
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2956
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
2958
SELECT HEX(c1),HEX(c2) FROM t5;
2960
#Insert permissible NULLs
2961
INSERT IGNORE INTO t5 VALUES(96,null);
2962
INSERT INTO t6 VALUES(null,null);
2963
# Now select using various table access methods (full table scan, range scan, index scan etc.)
2964
## Full table scan ##
2966
SELECT HEX(c1),HEX(c2) FROM t5;
2968
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
2970
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
2971
## Forward index scan, covering ##
2973
SELECT bin(c1) FROM t5;
2974
## Backward index scan, covering ##
2975
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
2976
## Forward index scan, non-covering ##
2977
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
2978
## Backward index scan, non-covering ##
2979
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
2981
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
2982
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
2983
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
2984
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
2985
## Range access, ordered ##
2986
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
2987
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
2988
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
2989
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
2990
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
2991
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
2992
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
2993
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
2994
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
2995
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
2996
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
2997
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
2998
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
2999
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
3000
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
3001
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
3002
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
3003
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
3004
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
3005
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
3006
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
3007
## Range access, backwards scan ##
3008
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
3009
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
3010
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
3011
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
3012
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
3013
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
3014
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
3015
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
3016
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
3017
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
3018
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
3019
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
3020
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
3021
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
3022
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
3023
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
3024
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
3025
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
3026
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
3027
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
3028
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
3029
#Inserting different charachers
3030
CREATE TABLE t7(c1 BIT(2));
3031
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
3034
############# UPDATE ###########
3036
# Update order by limit
3037
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3040
# Update with arithmetic operations
3041
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
3043
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
3046
# Update with NULL ( NULL to number & number to NULL)
3047
UPDATE t6 SET c2=NULL WHERE c1=23;
3049
UPDATE t6 SET c2=10 WHERE c2=NULL;
3052
# Update range values
3053
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
3055
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
3057
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
3060
# Update outside range would be clipped to closest endpoints
3061
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
3063
UPDATE t6 SET c2=-1 WHERE c1=94;
3066
# Update ignore on bad null error
3068
SELECT hex(c1) FROM t5 WHERE c1<>0;
3069
SET SQL_MODE=STRICT_ALL_TABLES;
3070
--error ER_BAD_NULL_ERROR
3071
UPDATE t5 SET c1=NULL WHERE c1<>0;
3072
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
3074
SELECT hex(c1),hex(c2) FROM t5;
3075
SET SQL_MODE=DEFAULT;
3079
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
3082
SELECT hex(c1),hex(c2) FROM t5;
3085
# Update using various access methods
3088
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3089
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3091
# Update using Const
3092
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3093
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
3095
SELECT hex(c1),hex(c2) FROM t5;
3097
# Update using range
3098
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3099
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
3101
SELECT hex(c1),hex(c2) FROM t5;
3102
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3104
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
3107
SELECT hex(c1),hex(c2) FROM t5;
3109
# Update using eq_ref
3110
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3111
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3113
############# DELETE ###########
3118
#Borrowed from suite/ndb/t/ndb_bitfield.test
3119
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3120
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
3122
# Delete by order by limit
3123
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3126
# Delete rows with NULL column
3127
DELETE FROM t6 WHERE c2=NULL;
3130
# Delete with range values
3131
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
3133
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
3135
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
3139
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
3141
SELECT hex(c1),hex(c2) FROM t5;
3144
# Delete using various access methods
3147
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3148
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3150
# Update using Const
3151
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3152
DELETE FROM t5 WHERE c1=6 AND c2=6;
3154
SELECT hex(c1),hex(c2) FROM t5;
3156
# Update using range
3157
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3158
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
3160
SELECT hex(c1),hex(c2) FROM t5;
3161
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3162
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3164
SELECT hex(c1),hex(c2) FROM t5;
3166
# Update using eq_ref
3167
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3168
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3170
# Droping the tables
3171
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
3173
####Checking the bit values####
3176
######### INSERT/SELECT#########
3178
#### Insert and select 4 bit data into the table####
3179
CREATE TABLE t1(c1 BIT(4));
3180
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
3186
set @v3=repeat('1',@v1);
3187
let $STR0= query_get_value(select @v3 as I,I,1);
3188
eval INSERT INTO t1 VALUES (b'$STR0');
3189
set @v3=repeat('0',@v1);
3190
let $STR1= query_get_value(select @v3 as I,I,1);
3191
eval INSERT INTO t1 VALUES (b'$STR1');
3192
set @v3=repeat('01',@v2);
3193
let $STR2= query_get_value(select @v3 as I,I,1);
3194
eval INSERT INTO t1 VALUES (b'$STR2');
3195
set @v3=repeat('10',@v2);
3196
let $STR3= query_get_value(select @v3 as I,I,1);
3197
eval INSERT INTO t1 VALUES (b'$STR3');
3198
set @v3=repeat('1',@v1);
3199
set @v4=repeat('01',@v2);
3200
set @v5=repeat('10',@v2);
3201
let $STR0= query_get_value(select @v3 as I,I,1);
3202
let $STR2= query_get_value(select @v4 as I,I,1);
3203
let $STR3= query_get_value(select @v5 as I,I,1);
3204
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
3207
INSERT INTO t1 VALUES (b'1');
3208
INSERT INTO t2 VALUES (b'1', b'1', b'1');
3210
SELECT HEX(c1) FROM t1;
3212
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
3214
SELECT OCT(c1) FROM t1;
3216
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
3218
SELECT BIN(c1) FROM t1;
3220
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
3222
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
3224
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
3226
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
3228
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
3230
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
3232
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
3234
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
3236
CREATE TABLE t3 (c1 BIT(65));
3237
# Checking for bug #9571
3238
CREATE TABLE t4(i INT, b BIT NOT NULL);
3239
ALTER TABLE t4 ADD PRIMARY KEY (i);
3240
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
3241
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
3242
#Borrowed from suite/ndb/t/ndb_bitfield.test
3243
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3244
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3246
SELECT HEX(c1),HEX(c2) FROM t5;
3248
#Insert permissible NULLs
3249
INSERT IGNORE INTO t5 VALUES(96,null);
3250
INSERT INTO t6 VALUES(null,null);
3251
# Now select using various table access methods (full table scan, range scan, index scan etc.)
3252
## Full table scan ##
3254
SELECT HEX(c1),HEX(c2) FROM t5;
3256
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
3258
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
3259
## Forward index scan, covering ##
3261
SELECT bin(c1) FROM t5;
3262
## Backward index scan, covering ##
3263
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
3264
## Forward index scan, non-covering ##
3265
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
3266
## Backward index scan, non-covering ##
3267
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
3269
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
3270
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
3271
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
3272
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
3273
## Range access, ordered ##
3274
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
3275
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
3276
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
3277
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
3278
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
3279
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
3280
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
3281
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
3282
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
3283
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
3284
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
3285
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
3286
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
3287
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
3288
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
3289
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
3290
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
3291
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
3292
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
3293
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
3294
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
3295
## Range access, backwards scan ##
3296
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
3297
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
3298
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
3299
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
3300
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
3301
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
3302
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
3303
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
3304
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
3305
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
3306
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
3307
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
3308
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
3309
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
3310
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
3311
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
3312
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
3313
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
3314
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
3315
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
3316
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
3317
#Inserting different charachers
3318
CREATE TABLE t7(c1 BIT(4));
3319
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
3322
############# UPDATE ###########
3324
# Update order by limit
3325
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3328
# Update with arithmetic operations
3329
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
3331
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
3334
# Update with NULL ( NULL to number & number to NULL)
3335
UPDATE t6 SET c2=NULL WHERE c1=23;
3337
UPDATE t6 SET c2=10 WHERE c2=NULL;
3340
# Update range values
3341
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
3343
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
3345
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
3348
# Update outside range would be clipped to closest endpoints
3349
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
3351
UPDATE t6 SET c2=-1 WHERE c1=94;
3354
# Update ignore on bad null error
3356
SELECT hex(c1) FROM t5 WHERE c1<>0;
3357
SET SQL_MODE=STRICT_ALL_TABLES;
3358
--error ER_BAD_NULL_ERROR
3359
UPDATE t5 SET c1=NULL WHERE c1<>0;
3360
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
3362
SELECT hex(c1),hex(c2) FROM t5;
3363
SET SQL_MODE=DEFAULT;
3367
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
3370
SELECT hex(c1),hex(c2) FROM t5;
3373
# Update using various access methods
3376
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3377
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3379
# Update using Const
3380
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3381
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
3383
SELECT hex(c1),hex(c2) FROM t5;
3385
# Update using range
3386
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3387
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
3389
SELECT hex(c1),hex(c2) FROM t5;
3390
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3392
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
3395
SELECT hex(c1),hex(c2) FROM t5;
3397
# Update using eq_ref
3398
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3399
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3401
############# DELETE ###########
3406
#Borrowed from suite/ndb/t/ndb_bitfield.test
3407
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3408
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
3410
# Delete by order by limit
3411
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3414
# Delete rows with NULL column
3415
DELETE FROM t6 WHERE c2=NULL;
3418
# Delete with range values
3419
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
3421
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
3423
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
3427
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
3429
SELECT hex(c1),hex(c2) FROM t5;
3432
# Delete using various access methods
3435
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3436
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3438
# Update using Const
3439
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3440
DELETE FROM t5 WHERE c1=6 AND c2=6;
3442
SELECT hex(c1),hex(c2) FROM t5;
3444
# Update using range
3445
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3446
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
3448
SELECT hex(c1),hex(c2) FROM t5;
3449
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3450
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3452
SELECT hex(c1),hex(c2) FROM t5;
3454
# Update using eq_ref
3455
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3456
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3458
# Droping the tables
3459
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
3461
####Checking the bit values####
3464
######### INSERT/SELECT#########
3466
#### Insert and select 8 bit data into the table####
3467
CREATE TABLE t1(c1 BIT(8));
3468
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
3474
set @v3=repeat('1',@v1);
3475
let $STR0= query_get_value(select @v3 as I,I,1);
3476
eval INSERT INTO t1 VALUES (b'$STR0');
3477
set @v3=repeat('0',@v1);
3478
let $STR1= query_get_value(select @v3 as I,I,1);
3479
eval INSERT INTO t1 VALUES (b'$STR1');
3480
set @v3=repeat('01',@v2);
3481
let $STR2= query_get_value(select @v3 as I,I,1);
3482
eval INSERT INTO t1 VALUES (b'$STR2');
3483
set @v3=repeat('10',@v2);
3484
let $STR3= query_get_value(select @v3 as I,I,1);
3485
eval INSERT INTO t1 VALUES (b'$STR3');
3486
set @v3=repeat('1',@v1);
3487
set @v4=repeat('01',@v2);
3488
set @v5=repeat('10',@v2);
3489
let $STR0= query_get_value(select @v3 as I,I,1);
3490
let $STR2= query_get_value(select @v4 as I,I,1);
3491
let $STR3= query_get_value(select @v5 as I,I,1);
3492
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
3495
INSERT INTO t1 VALUES (b'1');
3496
INSERT INTO t2 VALUES (b'1', b'1', b'1');
3498
SELECT HEX(c1) FROM t1;
3500
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
3502
SELECT OCT(c1) FROM t1;
3504
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
3506
SELECT BIN(c1) FROM t1;
3508
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
3510
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
3512
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
3514
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
3516
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
3518
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
3520
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
3522
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
3524
CREATE TABLE t3 (c1 BIT(65));
3525
# Checking for bug #9571
3526
CREATE TABLE t4(i INT, b BIT NOT NULL);
3527
ALTER TABLE t4 ADD PRIMARY KEY (i);
3528
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
3529
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
3530
#Borrowed from suite/ndb/t/ndb_bitfield.test
3531
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3532
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3534
SELECT HEX(c1),HEX(c2) FROM t5;
3536
#Insert permissible NULLs
3537
INSERT IGNORE INTO t5 VALUES(96,null);
3538
INSERT INTO t6 VALUES(null,null);
3539
# Now select using various table access methods (full table scan, range scan, index scan etc.)
3540
## Full table scan ##
3542
SELECT HEX(c1),HEX(c2) FROM t5;
3544
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
3546
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
3547
## Forward index scan, covering ##
3549
SELECT bin(c1) FROM t5;
3550
## Backward index scan, covering ##
3551
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
3552
## Forward index scan, non-covering ##
3553
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
3554
## Backward index scan, non-covering ##
3555
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
3557
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
3558
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
3559
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
3560
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
3561
## Range access, ordered ##
3562
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
3564
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
3566
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
3567
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
3568
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
3569
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
3570
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
3571
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
3572
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
3574
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
3575
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
3576
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
3577
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
3578
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
3579
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
3580
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
3581
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
3582
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
3583
## Range access, backwards scan ##
3584
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
3585
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
3587
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
3589
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
3590
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
3591
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
3592
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
3593
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
3594
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
3595
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
3597
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
3598
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
3599
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
3600
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
3601
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
3602
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
3603
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
3604
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
3605
#Inserting different charachers
3606
CREATE TABLE t7(c1 BIT(8));
3607
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
3610
############# UPDATE ###########
3612
# Update order by limit
3613
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3616
# Update with arithmetic operations
3617
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
3619
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
3622
# Update with NULL ( NULL to number & number to NULL)
3623
UPDATE t6 SET c2=NULL WHERE c1=23;
3625
UPDATE t6 SET c2=10 WHERE c2=NULL;
3628
# Update range values
3629
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
3631
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
3633
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
3636
# Update outside range would be clipped to closest endpoints
3637
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
3639
UPDATE t6 SET c2=-1 WHERE c1=94;
3642
# Update ignore on bad null error
3644
SELECT hex(c1) FROM t5 WHERE c1<>0;
3645
SET SQL_MODE=STRICT_ALL_TABLES;
3646
--error ER_BAD_NULL_ERROR
3647
UPDATE t5 SET c1=NULL WHERE c1<>0;
3648
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
3650
SELECT hex(c1),hex(c2) FROM t5;
3651
SET SQL_MODE=DEFAULT;
3655
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
3658
SELECT hex(c1),hex(c2) FROM t5;
3661
# Update using various access methods
3664
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3665
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3667
# Update using Const
3668
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3669
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
3671
SELECT hex(c1),hex(c2) FROM t5;
3673
# Update using range
3674
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3675
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
3677
SELECT hex(c1),hex(c2) FROM t5;
3678
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3680
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
3683
SELECT hex(c1),hex(c2) FROM t5;
3685
# Update using eq_ref
3686
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3687
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3689
############# DELETE ###########
3694
#Borrowed from suite/ndb/t/ndb_bitfield.test
3695
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3696
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
3698
# Delete by order by limit
3699
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3702
# Delete rows with NULL column
3703
DELETE FROM t6 WHERE c2=NULL;
3706
# Delete with range values
3707
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
3709
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
3711
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
3715
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
3717
SELECT hex(c1),hex(c2) FROM t5;
3720
# Delete using various access methods
3723
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3724
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3726
# Update using Const
3727
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3728
DELETE FROM t5 WHERE c1=6 AND c2=6;
3730
SELECT hex(c1),hex(c2) FROM t5;
3732
# Update using range
3733
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3734
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
3736
SELECT hex(c1),hex(c2) FROM t5;
3737
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3738
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3740
SELECT hex(c1),hex(c2) FROM t5;
3742
# Update using eq_ref
3743
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3744
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3746
# Droping the tables
3747
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
3749
####Checking the bit values####
3752
######### INSERT/SELECT#########
3754
#### Insert and select 16 bit data into the table####
3755
CREATE TABLE t1(c1 BIT(16));
3756
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
3762
set @v3=repeat('1',@v1);
3763
let $STR0= query_get_value(select @v3 as I,I,1);
3764
eval INSERT INTO t1 VALUES (b'$STR0');
3765
set @v3=repeat('0',@v1);
3766
let $STR1= query_get_value(select @v3 as I,I,1);
3767
eval INSERT INTO t1 VALUES (b'$STR1');
3768
set @v3=repeat('01',@v2);
3769
let $STR2= query_get_value(select @v3 as I,I,1);
3770
eval INSERT INTO t1 VALUES (b'$STR2');
3771
set @v3=repeat('10',@v2);
3772
let $STR3= query_get_value(select @v3 as I,I,1);
3773
eval INSERT INTO t1 VALUES (b'$STR3');
3774
set @v3=repeat('1',@v1);
3775
set @v4=repeat('01',@v2);
3776
set @v5=repeat('10',@v2);
3777
let $STR0= query_get_value(select @v3 as I,I,1);
3778
let $STR2= query_get_value(select @v4 as I,I,1);
3779
let $STR3= query_get_value(select @v5 as I,I,1);
3780
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
3783
INSERT INTO t1 VALUES (b'1');
3784
INSERT INTO t2 VALUES (b'1', b'1', b'1');
3786
SELECT HEX(c1) FROM t1;
3788
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
3790
SELECT OCT(c1) FROM t1;
3792
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
3794
SELECT BIN(c1) FROM t1;
3796
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
3798
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
3800
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
3802
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
3804
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
3806
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
3808
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
3810
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
3812
CREATE TABLE t3 (c1 BIT(65));
3813
# Checking for bug #9571
3814
CREATE TABLE t4(i INT, b BIT NOT NULL);
3815
ALTER TABLE t4 ADD PRIMARY KEY (i);
3816
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
3817
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
3818
#Borrowed from suite/ndb/t/ndb_bitfield.test
3819
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3820
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3822
SELECT HEX(c1),HEX(c2) FROM t5;
3824
#Insert permissible NULLs
3825
INSERT IGNORE INTO t5 VALUES(96,null);
3826
INSERT INTO t6 VALUES(null,null);
3827
# Now select using various table access methods (full table scan, range scan, index scan etc.)
3828
## Full table scan ##
3830
SELECT HEX(c1),HEX(c2) FROM t5;
3832
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
3834
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
3835
## Forward index scan, covering ##
3837
SELECT bin(c1) FROM t5;
3838
## Backward index scan, covering ##
3839
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
3840
## Forward index scan, non-covering ##
3841
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
3842
## Backward index scan, non-covering ##
3843
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
3845
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
3846
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
3847
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
3848
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
3849
## Range access, ordered ##
3850
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
3851
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
3852
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
3853
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
3854
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
3855
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
3856
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
3857
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
3858
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
3859
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
3860
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
3861
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
3862
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
3863
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
3864
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
3865
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
3866
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
3867
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
3868
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
3869
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
3870
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
3871
## Range access, backwards scan ##
3872
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
3873
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
3874
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
3875
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
3876
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
3877
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
3878
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
3879
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
3880
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
3881
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
3882
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
3883
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
3884
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
3885
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
3886
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
3887
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
3888
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
3889
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
3890
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
3891
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
3892
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
3893
#Inserting different charachers
3894
CREATE TABLE t7(c1 BIT(16));
3895
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
3898
############# UPDATE ###########
3900
# Update order by limit
3901
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3904
# Update with arithmetic operations
3905
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
3907
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
3910
# Update with NULL ( NULL to number & number to NULL)
3911
UPDATE t6 SET c2=NULL WHERE c1=23;
3913
UPDATE t6 SET c2=10 WHERE c2=NULL;
3916
# Update range values
3917
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
3919
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
3921
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
3924
# Update outside range would be clipped to closest endpoints
3925
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
3927
UPDATE t6 SET c2=-1 WHERE c1=94;
3930
# Update ignore on bad null error
3932
SELECT hex(c1) FROM t5 WHERE c1<>0;
3933
SET SQL_MODE=STRICT_ALL_TABLES;
3934
--error ER_BAD_NULL_ERROR
3935
UPDATE t5 SET c1=NULL WHERE c1<>0;
3936
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
3938
SELECT hex(c1),hex(c2) FROM t5;
3939
SET SQL_MODE=DEFAULT;
3943
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
3946
SELECT hex(c1),hex(c2) FROM t5;
3949
# Update using various access methods
3952
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3953
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
3955
# Update using Const
3956
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
3957
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
3959
SELECT hex(c1),hex(c2) FROM t5;
3961
# Update using range
3962
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
3963
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
3965
SELECT hex(c1),hex(c2) FROM t5;
3966
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
3968
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
3971
SELECT hex(c1),hex(c2) FROM t5;
3973
# Update using eq_ref
3974
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3975
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
3977
############# DELETE ###########
3982
#Borrowed from suite/ndb/t/ndb_bitfield.test
3983
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
3984
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
3986
# Delete by order by limit
3987
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
3990
# Delete rows with NULL column
3991
DELETE FROM t6 WHERE c2=NULL;
3994
# Delete with range values
3995
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
3997
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
3999
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
4003
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
4005
SELECT hex(c1),hex(c2) FROM t5;
4008
# Delete using various access methods
4011
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4012
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4014
# Update using Const
4015
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4016
DELETE FROM t5 WHERE c1=6 AND c2=6;
4018
SELECT hex(c1),hex(c2) FROM t5;
4020
# Update using range
4021
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4022
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
4024
SELECT hex(c1),hex(c2) FROM t5;
4025
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4026
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4028
SELECT hex(c1),hex(c2) FROM t5;
4030
# Update using eq_ref
4031
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4032
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4034
# Droping the tables
4035
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
4037
####Checking the bit values####
4040
######### INSERT/SELECT#########
4042
#### Insert and select 32 bit data into the table####
4043
CREATE TABLE t1(c1 BIT(32));
4044
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
4050
set @v3=repeat('1',@v1);
4051
let $STR0= query_get_value(select @v3 as I,I,1);
4052
eval INSERT INTO t1 VALUES (b'$STR0');
4053
set @v3=repeat('0',@v1);
4054
let $STR1= query_get_value(select @v3 as I,I,1);
4055
eval INSERT INTO t1 VALUES (b'$STR1');
4056
set @v3=repeat('01',@v2);
4057
let $STR2= query_get_value(select @v3 as I,I,1);
4058
eval INSERT INTO t1 VALUES (b'$STR2');
4059
set @v3=repeat('10',@v2);
4060
let $STR3= query_get_value(select @v3 as I,I,1);
4061
eval INSERT INTO t1 VALUES (b'$STR3');
4062
set @v3=repeat('1',@v1);
4063
set @v4=repeat('01',@v2);
4064
set @v5=repeat('10',@v2);
4065
let $STR0= query_get_value(select @v3 as I,I,1);
4066
let $STR2= query_get_value(select @v4 as I,I,1);
4067
let $STR3= query_get_value(select @v5 as I,I,1);
4068
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
4071
INSERT INTO t1 VALUES (b'1');
4072
INSERT INTO t2 VALUES (b'1', b'1', b'1');
4074
SELECT HEX(c1) FROM t1;
4076
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
4078
SELECT OCT(c1) FROM t1;
4080
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
4082
SELECT BIN(c1) FROM t1;
4084
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
4086
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
4088
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
4090
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
4092
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
4094
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
4096
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
4098
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
4100
CREATE TABLE t3 (c1 BIT(65));
4101
# Checking for bug #9571
4102
CREATE TABLE t4(i INT, b BIT NOT NULL);
4103
ALTER TABLE t4 ADD PRIMARY KEY (i);
4104
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
4105
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
4106
#Borrowed from suite/ndb/t/ndb_bitfield.test
4107
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4108
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4110
SELECT HEX(c1),HEX(c2) FROM t5;
4112
#Insert permissible NULLs
4113
INSERT IGNORE INTO t5 VALUES(96,null);
4114
INSERT INTO t6 VALUES(null,null);
4115
# Now select using various table access methods (full table scan, range scan, index scan etc.)
4116
## Full table scan ##
4118
SELECT HEX(c1),HEX(c2) FROM t5;
4120
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
4122
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
4123
## Forward index scan, covering ##
4125
SELECT bin(c1) FROM t5;
4126
## Backward index scan, covering ##
4127
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
4128
## Forward index scan, non-covering ##
4129
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
4130
## Backward index scan, non-covering ##
4131
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
4133
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
4134
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
4135
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
4136
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
4137
## Range access, ordered ##
4138
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
4139
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
4140
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
4141
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
4142
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
4143
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
4144
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
4145
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
4146
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
4147
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
4148
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
4149
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
4150
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
4151
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
4152
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
4153
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
4154
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
4155
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
4156
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
4157
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
4158
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
4159
## Range access, backwards scan ##
4160
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
4161
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
4162
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
4163
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
4164
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
4165
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
4166
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
4167
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
4168
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
4169
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
4170
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
4171
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
4172
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
4173
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
4174
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
4175
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
4176
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
4177
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
4178
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
4179
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
4180
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
4181
#Inserting different charachers
4182
CREATE TABLE t7(c1 BIT(32));
4183
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
4186
############# UPDATE ###########
4188
# Update order by limit
4189
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4192
# Update with arithmetic operations
4193
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
4195
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
4198
# Update with NULL ( NULL to number & number to NULL)
4199
UPDATE t6 SET c2=NULL WHERE c1=23;
4201
UPDATE t6 SET c2=10 WHERE c2=NULL;
4204
# Update range values
4205
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
4207
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
4209
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
4212
# Update outside range would be clipped to closest endpoints
4213
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
4215
UPDATE t6 SET c2=-1 WHERE c1=94;
4218
# Update ignore on bad null error
4220
SELECT hex(c1) FROM t5 WHERE c1<>0;
4221
SET SQL_MODE=STRICT_ALL_TABLES;
4222
--error ER_BAD_NULL_ERROR
4223
UPDATE t5 SET c1=NULL WHERE c1<>0;
4224
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
4226
SELECT hex(c1),hex(c2) FROM t5;
4227
SET SQL_MODE=DEFAULT;
4231
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
4234
SELECT hex(c1),hex(c2) FROM t5;
4237
# Update using various access methods
4240
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4241
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4243
# Update using Const
4244
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4245
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
4247
SELECT hex(c1),hex(c2) FROM t5;
4249
# Update using range
4250
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4251
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
4253
SELECT hex(c1),hex(c2) FROM t5;
4254
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4256
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
4259
SELECT hex(c1),hex(c2) FROM t5;
4261
# Update using eq_ref
4262
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4263
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4265
############# DELETE ###########
4270
#Borrowed from suite/ndb/t/ndb_bitfield.test
4271
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4272
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
4274
# Delete by order by limit
4275
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4278
# Delete rows with NULL column
4279
DELETE FROM t6 WHERE c2=NULL;
4282
# Delete with range values
4283
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
4285
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
4287
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
4291
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
4293
SELECT hex(c1),hex(c2) FROM t5;
4296
# Delete using various access methods
4299
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4300
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4302
# Update using Const
4303
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4304
DELETE FROM t5 WHERE c1=6 AND c2=6;
4306
SELECT hex(c1),hex(c2) FROM t5;
4308
# Update using range
4309
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4310
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
4312
SELECT hex(c1),hex(c2) FROM t5;
4313
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4314
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4316
SELECT hex(c1),hex(c2) FROM t5;
4318
# Update using eq_ref
4319
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4320
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4322
# Droping the tables
4323
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
4325
####Checking the bit values####
4328
######### INSERT/SELECT#########
4330
#### Insert and select 64 bit data into the table####
4331
CREATE TABLE t1(c1 BIT(64));
4332
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
4338
set @v3=repeat('1',@v1);
4339
let $STR0= query_get_value(select @v3 as I,I,1);
4340
eval INSERT INTO t1 VALUES (b'$STR0');
4341
set @v3=repeat('0',@v1);
4342
let $STR1= query_get_value(select @v3 as I,I,1);
4343
eval INSERT INTO t1 VALUES (b'$STR1');
4344
set @v3=repeat('01',@v2);
4345
let $STR2= query_get_value(select @v3 as I,I,1);
4346
eval INSERT INTO t1 VALUES (b'$STR2');
4347
set @v3=repeat('10',@v2);
4348
let $STR3= query_get_value(select @v3 as I,I,1);
4349
eval INSERT INTO t1 VALUES (b'$STR3');
4350
set @v3=repeat('1',@v1);
4351
set @v4=repeat('01',@v2);
4352
set @v5=repeat('10',@v2);
4353
let $STR0= query_get_value(select @v3 as I,I,1);
4354
let $STR2= query_get_value(select @v4 as I,I,1);
4355
let $STR3= query_get_value(select @v5 as I,I,1);
4356
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
4359
INSERT INTO t1 VALUES (b'1');
4360
INSERT INTO t2 VALUES (b'1', b'1', b'1');
4362
SELECT HEX(c1) FROM t1;
4364
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
4366
SELECT OCT(c1) FROM t1;
4368
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
4370
SELECT BIN(c1) FROM t1;
4372
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
4374
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
4376
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
4378
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
4380
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
4382
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
4384
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
4386
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
4388
CREATE TABLE t3 (c1 BIT(65));
4389
# Checking for bug #9571
4390
CREATE TABLE t4(i INT, b BIT NOT NULL);
4391
ALTER TABLE t4 ADD PRIMARY KEY (i);
4392
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
4393
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
4394
#Borrowed from suite/ndb/t/ndb_bitfield.test
4395
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4396
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4398
SELECT HEX(c1),HEX(c2) FROM t5;
4400
#Insert permissible NULLs
4401
INSERT IGNORE INTO t5 VALUES(96,null);
4402
INSERT INTO t6 VALUES(null,null);
4403
# Now select using various table access methods (full table scan, range scan, index scan etc.)
4404
## Full table scan ##
4406
SELECT HEX(c1),HEX(c2) FROM t5;
4408
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
4410
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
4411
## Forward index scan, covering ##
4413
SELECT bin(c1) FROM t5;
4414
## Backward index scan, covering ##
4415
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
4416
## Forward index scan, non-covering ##
4417
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
4418
## Backward index scan, non-covering ##
4419
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
4421
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
4422
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
4423
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
4424
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
4425
## Range access, ordered ##
4426
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
4427
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
4428
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
4429
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
4430
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
4431
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
4432
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
4433
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
4434
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
4435
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
4436
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
4437
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
4438
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
4439
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
4440
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
4441
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
4442
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
4443
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
4444
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
4445
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
4446
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
4447
## Range access, backwards scan ##
4448
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
4449
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
4450
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
4451
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
4452
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
4453
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
4454
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
4455
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
4456
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
4457
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
4458
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
4459
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
4460
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
4461
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
4462
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
4463
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
4464
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
4465
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
4466
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
4467
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
4468
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
4469
#Inserting different charachers
4470
CREATE TABLE t7(c1 BIT(64));
4471
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
4474
############# UPDATE ###########
4476
# Update order by limit
4477
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4480
# Update with arithmetic operations
4481
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
4483
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
4486
# Update with NULL ( NULL to number & number to NULL)
4487
UPDATE t6 SET c2=NULL WHERE c1=23;
4489
UPDATE t6 SET c2=10 WHERE c2=NULL;
4492
# Update range values
4493
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
4495
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
4497
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
4500
# Update outside range would be clipped to closest endpoints
4501
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
4503
UPDATE t6 SET c2=-1 WHERE c1=94;
4506
# Update ignore on bad null error
4508
SELECT hex(c1) FROM t5 WHERE c1<>0;
4509
SET SQL_MODE=STRICT_ALL_TABLES;
4510
--error ER_BAD_NULL_ERROR
4511
UPDATE t5 SET c1=NULL WHERE c1<>0;
4512
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
4514
SELECT hex(c1),hex(c2) FROM t5;
4515
SET SQL_MODE=DEFAULT;
4519
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
4522
SELECT hex(c1),hex(c2) FROM t5;
4525
# Update using various access methods
4528
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4529
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4531
# Update using Const
4532
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4533
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
4535
SELECT hex(c1),hex(c2) FROM t5;
4537
# Update using range
4538
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4539
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
4541
SELECT hex(c1),hex(c2) FROM t5;
4542
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4544
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
4547
SELECT hex(c1),hex(c2) FROM t5;
4549
# Update using eq_ref
4550
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4551
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4553
############# DELETE ###########
4558
#Borrowed from suite/ndb/t/ndb_bitfield.test
4559
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4560
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
4562
# Delete by order by limit
4563
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4566
# Delete rows with NULL column
4567
DELETE FROM t6 WHERE c2=NULL;
4570
# Delete with range values
4571
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
4573
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
4575
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
4579
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
4581
SELECT hex(c1),hex(c2) FROM t5;
4584
# Delete using various access methods
4587
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4588
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4590
# Update using Const
4591
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4592
DELETE FROM t5 WHERE c1=6 AND c2=6;
4594
SELECT hex(c1),hex(c2) FROM t5;
4596
# Update using range
4597
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4598
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
4600
SELECT hex(c1),hex(c2) FROM t5;
4601
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4602
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4604
SELECT hex(c1),hex(c2) FROM t5;
4606
# Update using eq_ref
4607
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4608
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4610
# Droping the tables
4611
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
4613
####Checking the bit values####
4616
######### INSERT/SELECT#########
4618
#### Insert and select 0 bit data into the table####
4619
CREATE TABLE t1(c1 BIT(0));
4620
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
4626
set @v3=repeat('1',@v1);
4627
let $STR0= query_get_value(select @v3 as I,I,1);
4628
eval INSERT INTO t1 VALUES (b'$STR0');
4629
set @v3=repeat('0',@v1);
4630
let $STR1= query_get_value(select @v3 as I,I,1);
4631
eval INSERT INTO t1 VALUES (b'$STR1');
4632
set @v3=repeat('01',@v2);
4633
let $STR2= query_get_value(select @v3 as I,I,1);
4634
eval INSERT INTO t1 VALUES (b'$STR2');
4635
set @v3=repeat('10',@v2);
4636
let $STR3= query_get_value(select @v3 as I,I,1);
4637
eval INSERT INTO t1 VALUES (b'$STR3');
4638
set @v3=repeat('1',@v1);
4639
set @v4=repeat('01',@v2);
4640
set @v5=repeat('10',@v2);
4641
let $STR0= query_get_value(select @v3 as I,I,1);
4642
let $STR2= query_get_value(select @v4 as I,I,1);
4643
let $STR3= query_get_value(select @v5 as I,I,1);
4644
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
4647
INSERT INTO t1 VALUES (b'10');
4648
INSERT INTO t2 VALUES (b'10', b'10', b'10');
4650
SELECT HEX(c1) FROM t1;
4652
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
4654
SELECT OCT(c1) FROM t1;
4656
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
4658
SELECT BIN(c1) FROM t1;
4660
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
4662
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
4664
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
4666
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
4668
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
4670
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
4672
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
4674
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
4676
CREATE TABLE t3 (c1 BIT(65));
4677
# Checking for bug #9571
4678
CREATE TABLE t4(i INT, b BIT NOT NULL);
4679
ALTER TABLE t4 ADD PRIMARY KEY (i);
4680
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
4681
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
4682
#Borrowed from suite/ndb/t/ndb_bitfield.test
4683
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4684
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4686
SELECT HEX(c1),HEX(c2) FROM t5;
4688
#Insert permissible NULLs
4689
INSERT IGNORE INTO t5 VALUES(96,null);
4690
INSERT INTO t6 VALUES(null,null);
4691
# Now select using various table access methods (full table scan, range scan, index scan etc.)
4692
## Full table scan ##
4694
SELECT HEX(c1),HEX(c2) FROM t5;
4696
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
4698
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
4699
## Forward index scan, covering ##
4701
SELECT bin(c1) FROM t5;
4702
## Backward index scan, covering ##
4703
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
4704
## Forward index scan, non-covering ##
4705
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
4706
## Backward index scan, non-covering ##
4707
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
4709
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
4710
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
4711
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
4712
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
4713
## Range access, ordered ##
4714
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
4715
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
4716
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
4717
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
4718
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
4719
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
4720
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
4721
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
4722
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
4723
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
4724
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
4725
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
4726
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
4727
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
4728
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
4729
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
4730
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
4731
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
4732
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
4733
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
4734
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
4735
## Range access, backwards scan ##
4736
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
4737
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
4738
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
4739
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
4740
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
4741
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
4742
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
4743
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
4744
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
4745
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
4746
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
4747
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
4748
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
4749
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
4750
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
4751
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
4752
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
4753
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
4754
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
4755
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
4756
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
4757
#Inserting different charachers
4758
CREATE TABLE t7(c1 BIT(0));
4759
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
4762
############# UPDATE ###########
4764
# Update order by limit
4765
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4768
# Update with arithmetic operations
4769
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
4771
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
4774
# Update with NULL ( NULL to number & number to NULL)
4775
UPDATE t6 SET c2=NULL WHERE c1=23;
4777
UPDATE t6 SET c2=10 WHERE c2=NULL;
4780
# Update range values
4781
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
4783
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
4785
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
4788
# Update outside range would be clipped to closest endpoints
4789
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
4791
UPDATE t6 SET c2=-1 WHERE c1=94;
4794
# Update ignore on bad null error
4796
SELECT hex(c1) FROM t5 WHERE c1<>0;
4797
SET SQL_MODE=STRICT_ALL_TABLES;
4798
--error ER_BAD_NULL_ERROR
4799
UPDATE t5 SET c1=NULL WHERE c1<>0;
4800
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
4802
SELECT hex(c1),hex(c2) FROM t5;
4803
SET SQL_MODE=DEFAULT;
4807
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
4810
SELECT hex(c1),hex(c2) FROM t5;
4813
# Update using various access methods
4816
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4817
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4819
# Update using Const
4820
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4821
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
4823
SELECT hex(c1),hex(c2) FROM t5;
4825
# Update using range
4826
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4827
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
4829
SELECT hex(c1),hex(c2) FROM t5;
4830
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4832
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
4835
SELECT hex(c1),hex(c2) FROM t5;
4837
# Update using eq_ref
4838
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4839
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4841
############# DELETE ###########
4846
#Borrowed from suite/ndb/t/ndb_bitfield.test
4847
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4848
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
4850
# Delete by order by limit
4851
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
4854
# Delete rows with NULL column
4855
DELETE FROM t6 WHERE c2=NULL;
4858
# Delete with range values
4859
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
4861
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
4863
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
4867
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
4869
SELECT hex(c1),hex(c2) FROM t5;
4872
# Delete using various access methods
4875
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4876
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
4878
# Update using Const
4879
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
4880
DELETE FROM t5 WHERE c1=6 AND c2=6;
4882
SELECT hex(c1),hex(c2) FROM t5;
4884
# Update using range
4885
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
4886
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
4888
SELECT hex(c1),hex(c2) FROM t5;
4889
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4890
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
4892
SELECT hex(c1),hex(c2) FROM t5;
4894
# Update using eq_ref
4895
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4896
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
4898
# Droping the tables
4899
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
4901
####Checking the bit values####
4904
######### INSERT/SELECT#########
4906
#### Insert and select 1 bit data into the table####
4907
CREATE TABLE t1(c1 BIT(1));
4908
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
4914
set @v3=repeat('1',@v1);
4915
let $STR0= query_get_value(select @v3 as I,I,1);
4916
eval INSERT INTO t1 VALUES (b'$STR0');
4917
set @v3=repeat('0',@v1);
4918
let $STR1= query_get_value(select @v3 as I,I,1);
4919
eval INSERT INTO t1 VALUES (b'$STR1');
4920
set @v3=repeat('01',@v2);
4921
let $STR2= query_get_value(select @v3 as I,I,1);
4922
eval INSERT INTO t1 VALUES (b'$STR2');
4923
set @v3=repeat('10',@v2);
4924
let $STR3= query_get_value(select @v3 as I,I,1);
4925
eval INSERT INTO t1 VALUES (b'$STR3');
4926
set @v3=repeat('1',@v1);
4927
set @v4=repeat('01',@v2);
4928
set @v5=repeat('10',@v2);
4929
let $STR0= query_get_value(select @v3 as I,I,1);
4930
let $STR2= query_get_value(select @v4 as I,I,1);
4931
let $STR3= query_get_value(select @v5 as I,I,1);
4932
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
4935
INSERT INTO t1 VALUES (b'10');
4936
INSERT INTO t2 VALUES (b'10', b'10', b'10');
4938
SELECT HEX(c1) FROM t1;
4940
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
4942
SELECT OCT(c1) FROM t1;
4944
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
4946
SELECT BIN(c1) FROM t1;
4948
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
4950
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
4952
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
4954
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
4956
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
4958
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
4960
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
4962
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
4964
CREATE TABLE t3 (c1 BIT(65));
4965
# Checking for bug #9571
4966
CREATE TABLE t4(i INT, b BIT NOT NULL);
4967
ALTER TABLE t4 ADD PRIMARY KEY (i);
4968
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
4969
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
4970
#Borrowed from suite/ndb/t/ndb_bitfield.test
4971
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4972
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
4974
SELECT HEX(c1),HEX(c2) FROM t5;
4976
#Insert permissible NULLs
4977
INSERT IGNORE INTO t5 VALUES(96,null);
4978
INSERT INTO t6 VALUES(null,null);
4979
# Now select using various table access methods (full table scan, range scan, index scan etc.)
4980
## Full table scan ##
4982
SELECT HEX(c1),HEX(c2) FROM t5;
4984
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
4986
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
4987
## Forward index scan, covering ##
4989
SELECT bin(c1) FROM t5;
4990
## Backward index scan, covering ##
4991
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
4992
## Forward index scan, non-covering ##
4993
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
4994
## Backward index scan, non-covering ##
4995
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
4997
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
4998
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
4999
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
5000
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
5001
## Range access, ordered ##
5002
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
5003
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
5004
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
5005
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
5006
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
5007
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
5008
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
5009
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
5010
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
5011
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
5012
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
5013
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
5014
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
5015
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
5016
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
5017
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
5018
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
5019
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
5020
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
5021
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
5022
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
5023
## Range access, backwards scan ##
5024
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
5025
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
5026
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
5027
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
5028
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
5029
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
5030
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
5031
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
5032
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
5033
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
5034
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
5035
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
5036
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
5037
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
5038
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
5039
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
5040
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
5041
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
5042
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
5043
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
5044
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
5045
#Inserting different charachers
5046
CREATE TABLE t7(c1 BIT(1));
5047
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
5050
############# UPDATE ###########
5052
# Update order by limit
5053
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5056
# Update with arithmetic operations
5057
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
5059
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
5062
# Update with NULL ( NULL to number & number to NULL)
5063
UPDATE t6 SET c2=NULL WHERE c1=23;
5065
UPDATE t6 SET c2=10 WHERE c2=NULL;
5068
# Update range values
5069
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
5071
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
5073
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
5076
# Update outside range would be clipped to closest endpoints
5077
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
5079
UPDATE t6 SET c2=-1 WHERE c1=94;
5082
# Update ignore on bad null error
5084
SELECT hex(c1) FROM t5 WHERE c1<>0;
5085
SET SQL_MODE=STRICT_ALL_TABLES;
5086
--error ER_BAD_NULL_ERROR
5087
UPDATE t5 SET c1=NULL WHERE c1<>0;
5088
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
5090
SELECT hex(c1),hex(c2) FROM t5;
5091
SET SQL_MODE=DEFAULT;
5095
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
5098
SELECT hex(c1),hex(c2) FROM t5;
5101
# Update using various access methods
5104
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5105
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5107
# Update using Const
5108
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5109
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
5111
SELECT hex(c1),hex(c2) FROM t5;
5113
# Update using range
5114
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5115
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
5117
SELECT hex(c1),hex(c2) FROM t5;
5118
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5120
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
5123
SELECT hex(c1),hex(c2) FROM t5;
5125
# Update using eq_ref
5126
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5127
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5129
############# DELETE ###########
5134
#Borrowed from suite/ndb/t/ndb_bitfield.test
5135
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5136
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
5138
# Delete by order by limit
5139
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5142
# Delete rows with NULL column
5143
DELETE FROM t6 WHERE c2=NULL;
5146
# Delete with range values
5147
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
5149
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
5151
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
5155
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
5157
SELECT hex(c1),hex(c2) FROM t5;
5160
# Delete using various access methods
5163
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5164
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5166
# Update using Const
5167
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5168
DELETE FROM t5 WHERE c1=6 AND c2=6;
5170
SELECT hex(c1),hex(c2) FROM t5;
5172
# Update using range
5173
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5174
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
5176
SELECT hex(c1),hex(c2) FROM t5;
5177
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5178
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5180
SELECT hex(c1),hex(c2) FROM t5;
5182
# Update using eq_ref
5183
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5184
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5186
# Droping the tables
5187
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
5189
####Checking the bit values####
5192
######### INSERT/SELECT#########
5194
#### Insert and select 2 bit data into the table####
5195
CREATE TABLE t1(c1 BIT(2));
5196
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
5202
set @v3=repeat('1',@v1);
5203
let $STR0= query_get_value(select @v3 as I,I,1);
5204
eval INSERT INTO t1 VALUES (b'$STR0');
5205
set @v3=repeat('0',@v1);
5206
let $STR1= query_get_value(select @v3 as I,I,1);
5207
eval INSERT INTO t1 VALUES (b'$STR1');
5208
set @v3=repeat('01',@v2);
5209
let $STR2= query_get_value(select @v3 as I,I,1);
5210
eval INSERT INTO t1 VALUES (b'$STR2');
5211
set @v3=repeat('10',@v2);
5212
let $STR3= query_get_value(select @v3 as I,I,1);
5213
eval INSERT INTO t1 VALUES (b'$STR3');
5214
set @v3=repeat('1',@v1);
5215
set @v4=repeat('01',@v2);
5216
set @v5=repeat('10',@v2);
5217
let $STR0= query_get_value(select @v3 as I,I,1);
5218
let $STR2= query_get_value(select @v4 as I,I,1);
5219
let $STR3= query_get_value(select @v5 as I,I,1);
5220
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
5223
INSERT INTO t1 VALUES (b'10');
5224
INSERT INTO t2 VALUES (b'10', b'10', b'10');
5226
SELECT HEX(c1) FROM t1;
5228
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
5230
SELECT OCT(c1) FROM t1;
5232
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
5234
SELECT BIN(c1) FROM t1;
5236
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
5238
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
5240
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
5242
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
5244
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
5246
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
5248
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
5250
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
5252
CREATE TABLE t3 (c1 BIT(65));
5253
# Checking for bug #9571
5254
CREATE TABLE t4(i INT, b BIT NOT NULL);
5255
ALTER TABLE t4 ADD PRIMARY KEY (i);
5256
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
5257
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
5258
#Borrowed from suite/ndb/t/ndb_bitfield.test
5259
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5260
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5262
SELECT HEX(c1),HEX(c2) FROM t5;
5264
#Insert permissible NULLs
5265
INSERT IGNORE INTO t5 VALUES(96,null);
5266
INSERT INTO t6 VALUES(null,null);
5267
# Now select using various table access methods (full table scan, range scan, index scan etc.)
5268
## Full table scan ##
5270
SELECT HEX(c1),HEX(c2) FROM t5;
5272
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
5274
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
5275
## Forward index scan, covering ##
5277
SELECT bin(c1) FROM t5;
5278
## Backward index scan, covering ##
5279
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
5280
## Forward index scan, non-covering ##
5281
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
5282
## Backward index scan, non-covering ##
5283
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
5285
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
5286
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
5287
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
5288
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
5289
## Range access, ordered ##
5290
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
5291
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
5292
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
5293
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
5294
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
5295
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
5296
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
5297
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
5298
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
5299
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
5300
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
5301
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
5302
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
5303
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
5304
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
5305
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
5306
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
5307
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
5308
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
5309
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
5310
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
5311
## Range access, backwards scan ##
5312
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
5313
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
5314
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
5315
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
5316
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
5317
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
5318
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
5319
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
5320
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
5321
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
5322
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
5323
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
5324
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
5325
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
5326
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
5327
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
5328
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
5329
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
5330
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
5331
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
5332
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
5333
#Inserting different charachers
5334
CREATE TABLE t7(c1 BIT(2));
5335
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
5338
############# UPDATE ###########
5340
# Update order by limit
5341
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5344
# Update with arithmetic operations
5345
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
5347
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
5350
# Update with NULL ( NULL to number & number to NULL)
5351
UPDATE t6 SET c2=NULL WHERE c1=23;
5353
UPDATE t6 SET c2=10 WHERE c2=NULL;
5356
# Update range values
5357
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
5359
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
5361
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
5364
# Update outside range would be clipped to closest endpoints
5365
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
5367
UPDATE t6 SET c2=-1 WHERE c1=94;
5370
# Update ignore on bad null error
5372
SELECT hex(c1) FROM t5 WHERE c1<>0;
5373
SET SQL_MODE=STRICT_ALL_TABLES;
5374
--error ER_BAD_NULL_ERROR
5375
UPDATE t5 SET c1=NULL WHERE c1<>0;
5376
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
5378
SELECT hex(c1),hex(c2) FROM t5;
5379
SET SQL_MODE=DEFAULT;
5383
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
5386
SELECT hex(c1),hex(c2) FROM t5;
5389
# Update using various access methods
5392
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5393
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5395
# Update using Const
5396
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5397
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
5399
SELECT hex(c1),hex(c2) FROM t5;
5401
# Update using range
5402
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5403
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
5405
SELECT hex(c1),hex(c2) FROM t5;
5406
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5408
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
5411
SELECT hex(c1),hex(c2) FROM t5;
5413
# Update using eq_ref
5414
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5415
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5417
############# DELETE ###########
5422
#Borrowed from suite/ndb/t/ndb_bitfield.test
5423
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5424
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
5426
# Delete by order by limit
5427
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5430
# Delete rows with NULL column
5431
DELETE FROM t6 WHERE c2=NULL;
5434
# Delete with range values
5435
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
5437
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
5439
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
5443
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
5445
SELECT hex(c1),hex(c2) FROM t5;
5448
# Delete using various access methods
5451
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5452
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5454
# Update using Const
5455
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5456
DELETE FROM t5 WHERE c1=6 AND c2=6;
5458
SELECT hex(c1),hex(c2) FROM t5;
5460
# Update using range
5461
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5462
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
5464
SELECT hex(c1),hex(c2) FROM t5;
5465
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5466
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5468
SELECT hex(c1),hex(c2) FROM t5;
5470
# Update using eq_ref
5471
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5472
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5474
# Droping the tables
5475
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
5477
####Checking the bit values####
5480
######### INSERT/SELECT#########
5482
#### Insert and select 4 bit data into the table####
5483
CREATE TABLE t1(c1 BIT(4));
5484
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
5490
set @v3=repeat('1',@v1);
5491
let $STR0= query_get_value(select @v3 as I,I,1);
5492
eval INSERT INTO t1 VALUES (b'$STR0');
5493
set @v3=repeat('0',@v1);
5494
let $STR1= query_get_value(select @v3 as I,I,1);
5495
eval INSERT INTO t1 VALUES (b'$STR1');
5496
set @v3=repeat('01',@v2);
5497
let $STR2= query_get_value(select @v3 as I,I,1);
5498
eval INSERT INTO t1 VALUES (b'$STR2');
5499
set @v3=repeat('10',@v2);
5500
let $STR3= query_get_value(select @v3 as I,I,1);
5501
eval INSERT INTO t1 VALUES (b'$STR3');
5502
set @v3=repeat('1',@v1);
5503
set @v4=repeat('01',@v2);
5504
set @v5=repeat('10',@v2);
5505
let $STR0= query_get_value(select @v3 as I,I,1);
5506
let $STR2= query_get_value(select @v4 as I,I,1);
5507
let $STR3= query_get_value(select @v5 as I,I,1);
5508
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
5511
INSERT INTO t1 VALUES (b'10');
5512
INSERT INTO t2 VALUES (b'10', b'10', b'10');
5514
SELECT HEX(c1) FROM t1;
5516
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
5518
SELECT OCT(c1) FROM t1;
5520
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
5522
SELECT BIN(c1) FROM t1;
5524
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
5526
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
5528
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
5530
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
5532
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
5534
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
5536
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
5538
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
5540
CREATE TABLE t3 (c1 BIT(65));
5541
# Checking for bug #9571
5542
CREATE TABLE t4(i INT, b BIT NOT NULL);
5543
ALTER TABLE t4 ADD PRIMARY KEY (i);
5544
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
5545
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
5546
#Borrowed from suite/ndb/t/ndb_bitfield.test
5547
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5548
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5550
SELECT HEX(c1),HEX(c2) FROM t5;
5552
#Insert permissible NULLs
5553
INSERT IGNORE INTO t5 VALUES(96,null);
5554
INSERT INTO t6 VALUES(null,null);
5555
# Now select using various table access methods (full table scan, range scan, index scan etc.)
5556
## Full table scan ##
5558
SELECT HEX(c1),HEX(c2) FROM t5;
5560
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
5562
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
5563
## Forward index scan, covering ##
5565
SELECT bin(c1) FROM t5;
5566
## Backward index scan, covering ##
5567
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
5568
## Forward index scan, non-covering ##
5569
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
5570
## Backward index scan, non-covering ##
5571
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
5573
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
5574
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
5575
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
5576
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
5577
## Range access, ordered ##
5578
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
5579
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
5580
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
5581
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
5582
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
5583
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
5584
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
5585
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
5586
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
5587
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
5588
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
5589
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
5590
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
5591
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
5592
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
5593
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
5594
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
5595
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
5596
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
5597
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
5598
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
5599
## Range access, backwards scan ##
5600
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
5601
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
5602
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
5603
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
5604
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
5605
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
5606
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
5607
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
5608
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
5609
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
5610
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
5611
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
5612
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
5613
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
5614
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
5615
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
5616
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
5617
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
5618
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
5619
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
5620
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
5621
#Inserting different charachers
5622
CREATE TABLE t7(c1 BIT(4));
5623
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
5626
############# UPDATE ###########
5628
# Update order by limit
5629
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5632
# Update with arithmetic operations
5633
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
5635
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
5638
# Update with NULL ( NULL to number & number to NULL)
5639
UPDATE t6 SET c2=NULL WHERE c1=23;
5641
UPDATE t6 SET c2=10 WHERE c2=NULL;
5644
# Update range values
5645
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
5647
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
5649
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
5652
# Update outside range would be clipped to closest endpoints
5653
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
5655
UPDATE t6 SET c2=-1 WHERE c1=94;
5658
# Update ignore on bad null error
5660
SELECT hex(c1) FROM t5 WHERE c1<>0;
5661
SET SQL_MODE=STRICT_ALL_TABLES;
5662
--error ER_BAD_NULL_ERROR
5663
UPDATE t5 SET c1=NULL WHERE c1<>0;
5664
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
5666
SELECT hex(c1),hex(c2) FROM t5;
5667
SET SQL_MODE=DEFAULT;
5671
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
5674
SELECT hex(c1),hex(c2) FROM t5;
5677
# Update using various access methods
5680
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5681
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5683
# Update using Const
5684
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5685
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
5687
SELECT hex(c1),hex(c2) FROM t5;
5689
# Update using range
5690
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5691
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
5693
SELECT hex(c1),hex(c2) FROM t5;
5694
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5696
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
5699
SELECT hex(c1),hex(c2) FROM t5;
5701
# Update using eq_ref
5702
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5703
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5705
############# DELETE ###########
5710
#Borrowed from suite/ndb/t/ndb_bitfield.test
5711
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5712
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
5714
# Delete by order by limit
5715
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5718
# Delete rows with NULL column
5719
DELETE FROM t6 WHERE c2=NULL;
5722
# Delete with range values
5723
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
5725
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
5727
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
5731
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
5733
SELECT hex(c1),hex(c2) FROM t5;
5736
# Delete using various access methods
5739
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5740
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5742
# Update using Const
5743
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5744
DELETE FROM t5 WHERE c1=6 AND c2=6;
5746
SELECT hex(c1),hex(c2) FROM t5;
5748
# Update using range
5749
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5750
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
5752
SELECT hex(c1),hex(c2) FROM t5;
5753
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5754
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5756
SELECT hex(c1),hex(c2) FROM t5;
5758
# Update using eq_ref
5759
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5760
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5762
# Droping the tables
5763
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
5765
####Checking the bit values####
5768
######### INSERT/SELECT#########
5770
#### Insert and select 8 bit data into the table####
5771
CREATE TABLE t1(c1 BIT(8));
5772
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
5778
set @v3=repeat('1',@v1);
5779
let $STR0= query_get_value(select @v3 as I,I,1);
5780
eval INSERT INTO t1 VALUES (b'$STR0');
5781
set @v3=repeat('0',@v1);
5782
let $STR1= query_get_value(select @v3 as I,I,1);
5783
eval INSERT INTO t1 VALUES (b'$STR1');
5784
set @v3=repeat('01',@v2);
5785
let $STR2= query_get_value(select @v3 as I,I,1);
5786
eval INSERT INTO t1 VALUES (b'$STR2');
5787
set @v3=repeat('10',@v2);
5788
let $STR3= query_get_value(select @v3 as I,I,1);
5789
eval INSERT INTO t1 VALUES (b'$STR3');
5790
set @v3=repeat('1',@v1);
5791
set @v4=repeat('01',@v2);
5792
set @v5=repeat('10',@v2);
5793
let $STR0= query_get_value(select @v3 as I,I,1);
5794
let $STR2= query_get_value(select @v4 as I,I,1);
5795
let $STR3= query_get_value(select @v5 as I,I,1);
5796
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
5799
INSERT INTO t1 VALUES (b'10');
5800
INSERT INTO t2 VALUES (b'10', b'10', b'10');
5802
SELECT HEX(c1) FROM t1;
5804
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
5806
SELECT OCT(c1) FROM t1;
5808
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
5810
SELECT BIN(c1) FROM t1;
5812
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
5814
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
5816
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
5818
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
5820
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
5822
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
5824
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
5826
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
5828
CREATE TABLE t3 (c1 BIT(65));
5829
# Checking for bug #9571
5830
CREATE TABLE t4(i INT, b BIT NOT NULL);
5831
ALTER TABLE t4 ADD PRIMARY KEY (i);
5832
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
5833
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
5834
#Borrowed from suite/ndb/t/ndb_bitfield.test
5835
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5836
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
5838
SELECT HEX(c1),HEX(c2) FROM t5;
5840
#Insert permissible NULLs
5841
INSERT IGNORE INTO t5 VALUES(96,null);
5842
INSERT INTO t6 VALUES(null,null);
5843
# Now select using various table access methods (full table scan, range scan, index scan etc.)
5844
## Full table scan ##
5846
SELECT HEX(c1),HEX(c2) FROM t5;
5848
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
5850
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
5851
## Forward index scan, covering ##
5853
SELECT bin(c1) FROM t5;
5854
## Backward index scan, covering ##
5855
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
5856
## Forward index scan, non-covering ##
5857
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
5858
## Backward index scan, non-covering ##
5859
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
5861
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
5862
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
5863
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
5864
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
5865
## Range access, ordered ##
5866
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
5868
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
5870
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
5871
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
5872
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
5873
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
5874
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
5875
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
5876
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
5878
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
5879
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
5880
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
5881
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
5882
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
5883
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
5884
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
5885
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
5886
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
5887
## Range access, backwards scan ##
5888
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
5889
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
5891
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
5893
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
5894
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
5895
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
5896
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
5897
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
5898
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
5899
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
5901
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
5902
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
5903
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
5904
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
5905
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
5906
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
5907
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
5908
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
5909
#Inserting different charachers
5910
CREATE TABLE t7(c1 BIT(8));
5911
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
5914
############# UPDATE ###########
5916
# Update order by limit
5917
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
5920
# Update with arithmetic operations
5921
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
5923
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
5926
# Update with NULL ( NULL to number & number to NULL)
5927
UPDATE t6 SET c2=NULL WHERE c1=23;
5929
UPDATE t6 SET c2=10 WHERE c2=NULL;
5932
# Update range values
5933
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
5935
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
5937
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
5940
# Update outside range would be clipped to closest endpoints
5941
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
5943
UPDATE t6 SET c2=-1 WHERE c1=94;
5946
# Update ignore on bad null error
5948
SELECT hex(c1) FROM t5 WHERE c1<>0;
5949
SET SQL_MODE=STRICT_ALL_TABLES;
5950
--error ER_BAD_NULL_ERROR
5951
UPDATE t5 SET c1=NULL WHERE c1<>0;
5952
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
5954
SELECT hex(c1),hex(c2) FROM t5;
5955
SET SQL_MODE=DEFAULT;
5959
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
5962
SELECT hex(c1),hex(c2) FROM t5;
5965
# Update using various access methods
5968
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5969
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
5971
# Update using Const
5972
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
5973
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
5975
SELECT hex(c1),hex(c2) FROM t5;
5977
# Update using range
5978
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
5979
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
5981
SELECT hex(c1),hex(c2) FROM t5;
5982
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
5984
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
5987
SELECT hex(c1),hex(c2) FROM t5;
5989
# Update using eq_ref
5990
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5991
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
5993
############# DELETE ###########
5998
#Borrowed from suite/ndb/t/ndb_bitfield.test
5999
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6000
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
6002
# Delete by order by limit
6003
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6006
# Delete rows with NULL column
6007
DELETE FROM t6 WHERE c2=NULL;
6010
# Delete with range values
6011
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
6013
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
6015
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
6019
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
6021
SELECT hex(c1),hex(c2) FROM t5;
6024
# Delete using various access methods
6027
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6028
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6030
# Update using Const
6031
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6032
DELETE FROM t5 WHERE c1=6 AND c2=6;
6034
SELECT hex(c1),hex(c2) FROM t5;
6036
# Update using range
6037
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6038
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
6040
SELECT hex(c1),hex(c2) FROM t5;
6041
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6042
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6044
SELECT hex(c1),hex(c2) FROM t5;
6046
# Update using eq_ref
6047
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6048
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6050
# Droping the tables
6051
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
6053
####Checking the bit values####
6055
SELECT 0 + (10<<16);
6056
######### INSERT/SELECT#########
6058
#### Insert and select 16 bit data into the table####
6059
CREATE TABLE t1(c1 BIT(16));
6060
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
6066
set @v3=repeat('1',@v1);
6067
let $STR0= query_get_value(select @v3 as I,I,1);
6068
eval INSERT INTO t1 VALUES (b'$STR0');
6069
set @v3=repeat('0',@v1);
6070
let $STR1= query_get_value(select @v3 as I,I,1);
6071
eval INSERT INTO t1 VALUES (b'$STR1');
6072
set @v3=repeat('01',@v2);
6073
let $STR2= query_get_value(select @v3 as I,I,1);
6074
eval INSERT INTO t1 VALUES (b'$STR2');
6075
set @v3=repeat('10',@v2);
6076
let $STR3= query_get_value(select @v3 as I,I,1);
6077
eval INSERT INTO t1 VALUES (b'$STR3');
6078
set @v3=repeat('1',@v1);
6079
set @v4=repeat('01',@v2);
6080
set @v5=repeat('10',@v2);
6081
let $STR0= query_get_value(select @v3 as I,I,1);
6082
let $STR2= query_get_value(select @v4 as I,I,1);
6083
let $STR3= query_get_value(select @v5 as I,I,1);
6084
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
6087
INSERT INTO t1 VALUES (b'10');
6088
INSERT INTO t2 VALUES (b'10', b'10', b'10');
6090
SELECT HEX(c1) FROM t1;
6092
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
6094
SELECT OCT(c1) FROM t1;
6096
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
6098
SELECT BIN(c1) FROM t1;
6100
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
6102
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
6104
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
6106
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
6108
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
6110
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
6112
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
6114
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
6116
CREATE TABLE t3 (c1 BIT(65));
6117
# Checking for bug #9571
6118
CREATE TABLE t4(i INT, b BIT NOT NULL);
6119
ALTER TABLE t4 ADD PRIMARY KEY (i);
6120
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
6121
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
6122
#Borrowed from suite/ndb/t/ndb_bitfield.test
6123
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6124
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6126
SELECT HEX(c1),HEX(c2) FROM t5;
6128
#Insert permissible NULLs
6129
INSERT IGNORE INTO t5 VALUES(96,null);
6130
INSERT INTO t6 VALUES(null,null);
6131
# Now select using various table access methods (full table scan, range scan, index scan etc.)
6132
## Full table scan ##
6134
SELECT HEX(c1),HEX(c2) FROM t5;
6136
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
6138
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
6139
## Forward index scan, covering ##
6141
SELECT bin(c1) FROM t5;
6142
## Backward index scan, covering ##
6143
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
6144
## Forward index scan, non-covering ##
6145
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
6146
## Backward index scan, non-covering ##
6147
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
6149
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
6150
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
6151
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
6152
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
6153
## Range access, ordered ##
6154
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
6155
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
6156
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
6157
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
6158
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
6159
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
6160
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
6161
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
6162
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
6163
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
6164
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
6165
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
6166
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
6167
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
6168
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
6169
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
6170
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
6171
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
6172
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
6173
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
6174
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
6175
## Range access, backwards scan ##
6176
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
6177
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
6178
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
6179
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
6180
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
6181
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
6182
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
6183
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
6184
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
6185
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
6186
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
6187
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
6188
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
6189
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
6190
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
6191
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
6192
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
6193
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
6194
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
6195
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
6196
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
6197
#Inserting different charachers
6198
CREATE TABLE t7(c1 BIT(16));
6199
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
6202
############# UPDATE ###########
6204
# Update order by limit
6205
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6208
# Update with arithmetic operations
6209
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
6211
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
6214
# Update with NULL ( NULL to number & number to NULL)
6215
UPDATE t6 SET c2=NULL WHERE c1=23;
6217
UPDATE t6 SET c2=10 WHERE c2=NULL;
6220
# Update range values
6221
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
6223
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
6225
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
6228
# Update outside range would be clipped to closest endpoints
6229
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
6231
UPDATE t6 SET c2=-1 WHERE c1=94;
6234
# Update ignore on bad null error
6236
SELECT hex(c1) FROM t5 WHERE c1<>0;
6237
SET SQL_MODE=STRICT_ALL_TABLES;
6238
--error ER_BAD_NULL_ERROR
6239
UPDATE t5 SET c1=NULL WHERE c1<>0;
6240
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
6242
SELECT hex(c1),hex(c2) FROM t5;
6243
SET SQL_MODE=DEFAULT;
6247
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
6250
SELECT hex(c1),hex(c2) FROM t5;
6253
# Update using various access methods
6256
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6257
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6259
# Update using Const
6260
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6261
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
6263
SELECT hex(c1),hex(c2) FROM t5;
6265
# Update using range
6266
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6267
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
6269
SELECT hex(c1),hex(c2) FROM t5;
6270
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6272
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
6275
SELECT hex(c1),hex(c2) FROM t5;
6277
# Update using eq_ref
6278
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6279
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6281
############# DELETE ###########
6286
#Borrowed from suite/ndb/t/ndb_bitfield.test
6287
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6288
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
6290
# Delete by order by limit
6291
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6294
# Delete rows with NULL column
6295
DELETE FROM t6 WHERE c2=NULL;
6298
# Delete with range values
6299
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
6301
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
6303
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
6307
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
6309
SELECT hex(c1),hex(c2) FROM t5;
6312
# Delete using various access methods
6315
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6316
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6318
# Update using Const
6319
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6320
DELETE FROM t5 WHERE c1=6 AND c2=6;
6322
SELECT hex(c1),hex(c2) FROM t5;
6324
# Update using range
6325
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6326
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
6328
SELECT hex(c1),hex(c2) FROM t5;
6329
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6330
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6332
SELECT hex(c1),hex(c2) FROM t5;
6334
# Update using eq_ref
6335
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6336
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6338
# Droping the tables
6339
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
6341
####Checking the bit values####
6343
SELECT 0 + (10<<32);
6344
######### INSERT/SELECT#########
6346
#### Insert and select 32 bit data into the table####
6347
CREATE TABLE t1(c1 BIT(32));
6348
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
6354
set @v3=repeat('1',@v1);
6355
let $STR0= query_get_value(select @v3 as I,I,1);
6356
eval INSERT INTO t1 VALUES (b'$STR0');
6357
set @v3=repeat('0',@v1);
6358
let $STR1= query_get_value(select @v3 as I,I,1);
6359
eval INSERT INTO t1 VALUES (b'$STR1');
6360
set @v3=repeat('01',@v2);
6361
let $STR2= query_get_value(select @v3 as I,I,1);
6362
eval INSERT INTO t1 VALUES (b'$STR2');
6363
set @v3=repeat('10',@v2);
6364
let $STR3= query_get_value(select @v3 as I,I,1);
6365
eval INSERT INTO t1 VALUES (b'$STR3');
6366
set @v3=repeat('1',@v1);
6367
set @v4=repeat('01',@v2);
6368
set @v5=repeat('10',@v2);
6369
let $STR0= query_get_value(select @v3 as I,I,1);
6370
let $STR2= query_get_value(select @v4 as I,I,1);
6371
let $STR3= query_get_value(select @v5 as I,I,1);
6372
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
6375
INSERT INTO t1 VALUES (b'10');
6376
INSERT INTO t2 VALUES (b'10', b'10', b'10');
6378
SELECT HEX(c1) FROM t1;
6380
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
6382
SELECT OCT(c1) FROM t1;
6384
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
6386
SELECT BIN(c1) FROM t1;
6388
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
6390
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
6392
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
6394
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
6396
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
6398
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
6400
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
6402
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
6404
CREATE TABLE t3 (c1 BIT(65));
6405
# Checking for bug #9571
6406
CREATE TABLE t4(i INT, b BIT NOT NULL);
6407
ALTER TABLE t4 ADD PRIMARY KEY (i);
6408
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
6409
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
6410
#Borrowed from suite/ndb/t/ndb_bitfield.test
6411
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6412
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6414
SELECT HEX(c1),HEX(c2) FROM t5;
6416
#Insert permissible NULLs
6417
INSERT IGNORE INTO t5 VALUES(96,null);
6418
INSERT INTO t6 VALUES(null,null);
6419
# Now select using various table access methods (full table scan, range scan, index scan etc.)
6420
## Full table scan ##
6422
SELECT HEX(c1),HEX(c2) FROM t5;
6424
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
6426
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
6427
## Forward index scan, covering ##
6429
SELECT bin(c1) FROM t5;
6430
## Backward index scan, covering ##
6431
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
6432
## Forward index scan, non-covering ##
6433
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
6434
## Backward index scan, non-covering ##
6435
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
6437
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
6438
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
6439
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
6440
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
6441
## Range access, ordered ##
6442
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
6443
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
6444
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
6445
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
6446
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
6447
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
6448
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
6449
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
6450
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
6451
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
6452
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
6453
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
6454
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
6455
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
6456
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
6457
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
6458
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
6459
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
6460
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
6461
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
6462
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
6463
## Range access, backwards scan ##
6464
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
6465
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
6466
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
6467
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
6468
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
6469
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
6470
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
6471
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
6472
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
6473
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
6474
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
6475
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
6476
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
6477
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
6478
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
6479
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
6480
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
6481
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
6482
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
6483
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
6484
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
6485
#Inserting different charachers
6486
CREATE TABLE t7(c1 BIT(32));
6487
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
6490
############# UPDATE ###########
6492
# Update order by limit
6493
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6496
# Update with arithmetic operations
6497
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
6499
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
6502
# Update with NULL ( NULL to number & number to NULL)
6503
UPDATE t6 SET c2=NULL WHERE c1=23;
6505
UPDATE t6 SET c2=10 WHERE c2=NULL;
6508
# Update range values
6509
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
6511
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
6513
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
6516
# Update outside range would be clipped to closest endpoints
6517
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
6519
UPDATE t6 SET c2=-1 WHERE c1=94;
6522
# Update ignore on bad null error
6524
SELECT hex(c1) FROM t5 WHERE c1<>0;
6525
SET SQL_MODE=STRICT_ALL_TABLES;
6526
--error ER_BAD_NULL_ERROR
6527
UPDATE t5 SET c1=NULL WHERE c1<>0;
6528
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
6530
SELECT hex(c1),hex(c2) FROM t5;
6531
SET SQL_MODE=DEFAULT;
6535
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
6538
SELECT hex(c1),hex(c2) FROM t5;
6541
# Update using various access methods
6544
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6545
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6547
# Update using Const
6548
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6549
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
6551
SELECT hex(c1),hex(c2) FROM t5;
6553
# Update using range
6554
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6555
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
6557
SELECT hex(c1),hex(c2) FROM t5;
6558
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6560
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
6563
SELECT hex(c1),hex(c2) FROM t5;
6565
# Update using eq_ref
6566
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6567
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6569
############# DELETE ###########
6574
#Borrowed from suite/ndb/t/ndb_bitfield.test
6575
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6576
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
6578
# Delete by order by limit
6579
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6582
# Delete rows with NULL column
6583
DELETE FROM t6 WHERE c2=NULL;
6586
# Delete with range values
6587
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
6589
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
6591
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
6595
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
6597
SELECT hex(c1),hex(c2) FROM t5;
6600
# Delete using various access methods
6603
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6604
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6606
# Update using Const
6607
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6608
DELETE FROM t5 WHERE c1=6 AND c2=6;
6610
SELECT hex(c1),hex(c2) FROM t5;
6612
# Update using range
6613
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6614
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
6616
SELECT hex(c1),hex(c2) FROM t5;
6617
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6618
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6620
SELECT hex(c1),hex(c2) FROM t5;
6622
# Update using eq_ref
6623
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6624
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6626
# Droping the tables
6627
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
6629
####Checking the bit values####
6631
SELECT 0 + (10<<64);
6632
######### INSERT/SELECT#########
6634
#### Insert and select 64 bit data into the table####
6635
CREATE TABLE t1(c1 BIT(64));
6636
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
6642
set @v3=repeat('1',@v1);
6643
let $STR0= query_get_value(select @v3 as I,I,1);
6644
eval INSERT INTO t1 VALUES (b'$STR0');
6645
set @v3=repeat('0',@v1);
6646
let $STR1= query_get_value(select @v3 as I,I,1);
6647
eval INSERT INTO t1 VALUES (b'$STR1');
6648
set @v3=repeat('01',@v2);
6649
let $STR2= query_get_value(select @v3 as I,I,1);
6650
eval INSERT INTO t1 VALUES (b'$STR2');
6651
set @v3=repeat('10',@v2);
6652
let $STR3= query_get_value(select @v3 as I,I,1);
6653
eval INSERT INTO t1 VALUES (b'$STR3');
6654
set @v3=repeat('1',@v1);
6655
set @v4=repeat('01',@v2);
6656
set @v5=repeat('10',@v2);
6657
let $STR0= query_get_value(select @v3 as I,I,1);
6658
let $STR2= query_get_value(select @v4 as I,I,1);
6659
let $STR3= query_get_value(select @v5 as I,I,1);
6660
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
6663
INSERT INTO t1 VALUES (b'10');
6664
INSERT INTO t2 VALUES (b'10', b'10', b'10');
6666
SELECT HEX(c1) FROM t1;
6668
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
6670
SELECT OCT(c1) FROM t1;
6672
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
6674
SELECT BIN(c1) FROM t1;
6676
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
6678
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
6680
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
6682
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
6684
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
6686
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
6688
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
6690
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
6692
CREATE TABLE t3 (c1 BIT(65));
6693
# Checking for bug #9571
6694
CREATE TABLE t4(i INT, b BIT NOT NULL);
6695
ALTER TABLE t4 ADD PRIMARY KEY (i);
6696
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
6697
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
6698
#Borrowed from suite/ndb/t/ndb_bitfield.test
6699
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6700
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6702
SELECT HEX(c1),HEX(c2) FROM t5;
6704
#Insert permissible NULLs
6705
INSERT IGNORE INTO t5 VALUES(96,null);
6706
INSERT INTO t6 VALUES(null,null);
6707
# Now select using various table access methods (full table scan, range scan, index scan etc.)
6708
## Full table scan ##
6710
SELECT HEX(c1),HEX(c2) FROM t5;
6712
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
6714
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
6715
## Forward index scan, covering ##
6717
SELECT bin(c1) FROM t5;
6718
## Backward index scan, covering ##
6719
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
6720
## Forward index scan, non-covering ##
6721
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
6722
## Backward index scan, non-covering ##
6723
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
6725
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
6726
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
6727
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
6728
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
6729
## Range access, ordered ##
6730
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
6731
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
6732
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
6733
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
6734
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
6735
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
6736
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
6737
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
6738
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
6739
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
6740
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
6741
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
6742
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
6743
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
6744
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
6745
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
6746
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
6747
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
6748
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
6749
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
6750
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
6751
## Range access, backwards scan ##
6752
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
6753
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
6754
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
6755
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
6756
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
6757
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
6758
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
6759
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
6760
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
6761
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
6762
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
6763
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
6764
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
6765
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
6766
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
6767
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
6768
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
6769
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
6770
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
6771
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
6772
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
6773
#Inserting different charachers
6774
CREATE TABLE t7(c1 BIT(64));
6775
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
6778
############# UPDATE ###########
6780
# Update order by limit
6781
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6784
# Update with arithmetic operations
6785
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
6787
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
6790
# Update with NULL ( NULL to number & number to NULL)
6791
UPDATE t6 SET c2=NULL WHERE c1=23;
6793
UPDATE t6 SET c2=10 WHERE c2=NULL;
6796
# Update range values
6797
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
6799
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
6801
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
6804
# Update outside range would be clipped to closest endpoints
6805
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
6807
UPDATE t6 SET c2=-1 WHERE c1=94;
6810
# Update ignore on bad null error
6812
SELECT hex(c1) FROM t5 WHERE c1<>0;
6813
SET SQL_MODE=STRICT_ALL_TABLES;
6814
--error ER_BAD_NULL_ERROR
6815
UPDATE t5 SET c1=NULL WHERE c1<>0;
6816
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
6818
SELECT hex(c1),hex(c2) FROM t5;
6819
SET SQL_MODE=DEFAULT;
6823
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
6826
SELECT hex(c1),hex(c2) FROM t5;
6829
# Update using various access methods
6832
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6833
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6835
# Update using Const
6836
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6837
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
6839
SELECT hex(c1),hex(c2) FROM t5;
6841
# Update using range
6842
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6843
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
6845
SELECT hex(c1),hex(c2) FROM t5;
6846
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6848
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
6851
SELECT hex(c1),hex(c2) FROM t5;
6853
# Update using eq_ref
6854
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6855
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6857
############# DELETE ###########
6862
#Borrowed from suite/ndb/t/ndb_bitfield.test
6863
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6864
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
6866
# Delete by order by limit
6867
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
6870
# Delete rows with NULL column
6871
DELETE FROM t6 WHERE c2=NULL;
6874
# Delete with range values
6875
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
6877
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
6879
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
6883
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
6885
SELECT hex(c1),hex(c2) FROM t5;
6888
# Delete using various access methods
6891
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6892
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
6894
# Update using Const
6895
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
6896
DELETE FROM t5 WHERE c1=6 AND c2=6;
6898
SELECT hex(c1),hex(c2) FROM t5;
6900
# Update using range
6901
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
6902
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
6904
SELECT hex(c1),hex(c2) FROM t5;
6905
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6906
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
6908
SELECT hex(c1),hex(c2) FROM t5;
6910
# Update using eq_ref
6911
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6912
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
6914
# Droping the tables
6915
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
6917
####Checking the bit values####
6919
SELECT 0 + (1010<<0);
6920
######### INSERT/SELECT#########
6922
#### Insert and select 0 bit data into the table####
6923
CREATE TABLE t1(c1 BIT(0));
6924
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
6930
set @v3=repeat('1',@v1);
6931
let $STR0= query_get_value(select @v3 as I,I,1);
6932
eval INSERT INTO t1 VALUES (b'$STR0');
6933
set @v3=repeat('0',@v1);
6934
let $STR1= query_get_value(select @v3 as I,I,1);
6935
eval INSERT INTO t1 VALUES (b'$STR1');
6936
set @v3=repeat('01',@v2);
6937
let $STR2= query_get_value(select @v3 as I,I,1);
6938
eval INSERT INTO t1 VALUES (b'$STR2');
6939
set @v3=repeat('10',@v2);
6940
let $STR3= query_get_value(select @v3 as I,I,1);
6941
eval INSERT INTO t1 VALUES (b'$STR3');
6942
set @v3=repeat('1',@v1);
6943
set @v4=repeat('01',@v2);
6944
set @v5=repeat('10',@v2);
6945
let $STR0= query_get_value(select @v3 as I,I,1);
6946
let $STR2= query_get_value(select @v4 as I,I,1);
6947
let $STR3= query_get_value(select @v5 as I,I,1);
6948
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
6951
INSERT INTO t1 VALUES (b'1010');
6952
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
6954
SELECT HEX(c1) FROM t1;
6956
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
6958
SELECT OCT(c1) FROM t1;
6960
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
6962
SELECT BIN(c1) FROM t1;
6964
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
6966
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
6968
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
6970
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
6972
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
6974
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
6976
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
6978
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
6980
CREATE TABLE t3 (c1 BIT(65));
6981
# Checking for bug #9571
6982
CREATE TABLE t4(i INT, b BIT NOT NULL);
6983
ALTER TABLE t4 ADD PRIMARY KEY (i);
6984
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
6985
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
6986
#Borrowed from suite/ndb/t/ndb_bitfield.test
6987
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6988
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
6990
SELECT HEX(c1),HEX(c2) FROM t5;
6992
#Insert permissible NULLs
6993
INSERT IGNORE INTO t5 VALUES(96,null);
6994
INSERT INTO t6 VALUES(null,null);
6995
# Now select using various table access methods (full table scan, range scan, index scan etc.)
6996
## Full table scan ##
6998
SELECT HEX(c1),HEX(c2) FROM t5;
7000
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
7002
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
7003
## Forward index scan, covering ##
7005
SELECT bin(c1) FROM t5;
7006
## Backward index scan, covering ##
7007
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
7008
## Forward index scan, non-covering ##
7009
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
7010
## Backward index scan, non-covering ##
7011
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
7013
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
7014
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
7015
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
7016
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
7017
## Range access, ordered ##
7018
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
7019
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
7020
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
7021
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
7022
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
7023
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
7024
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
7025
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
7026
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
7027
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
7028
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
7029
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
7030
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
7031
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
7032
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
7033
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
7034
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
7035
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
7036
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
7037
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
7038
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
7039
## Range access, backwards scan ##
7040
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
7041
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
7042
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
7043
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
7044
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
7045
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
7046
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
7047
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
7048
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
7049
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
7050
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
7051
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
7052
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
7053
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
7054
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
7055
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
7056
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
7057
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
7058
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
7059
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
7060
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
7061
#Inserting different charachers
7062
CREATE TABLE t7(c1 BIT(0));
7063
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
7066
############# UPDATE ###########
7068
# Update order by limit
7069
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7072
# Update with arithmetic operations
7073
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
7075
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
7078
# Update with NULL ( NULL to number & number to NULL)
7079
UPDATE t6 SET c2=NULL WHERE c1=23;
7081
UPDATE t6 SET c2=10 WHERE c2=NULL;
7084
# Update range values
7085
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
7087
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
7089
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
7092
# Update outside range would be clipped to closest endpoints
7093
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
7095
UPDATE t6 SET c2=-1 WHERE c1=94;
7098
# Update ignore on bad null error
7100
SELECT hex(c1) FROM t5 WHERE c1<>0;
7101
SET SQL_MODE=STRICT_ALL_TABLES;
7102
--error ER_BAD_NULL_ERROR
7103
UPDATE t5 SET c1=NULL WHERE c1<>0;
7104
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
7106
SELECT hex(c1),hex(c2) FROM t5;
7107
SET SQL_MODE=DEFAULT;
7111
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
7114
SELECT hex(c1),hex(c2) FROM t5;
7117
# Update using various access methods
7120
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7121
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7123
# Update using Const
7124
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7125
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
7127
SELECT hex(c1),hex(c2) FROM t5;
7129
# Update using range
7130
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7131
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
7133
SELECT hex(c1),hex(c2) FROM t5;
7134
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7136
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
7139
SELECT hex(c1),hex(c2) FROM t5;
7141
# Update using eq_ref
7142
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7143
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7145
############# DELETE ###########
7150
#Borrowed from suite/ndb/t/ndb_bitfield.test
7151
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7152
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
7154
# Delete by order by limit
7155
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7158
# Delete rows with NULL column
7159
DELETE FROM t6 WHERE c2=NULL;
7162
# Delete with range values
7163
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
7165
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
7167
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
7171
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
7173
SELECT hex(c1),hex(c2) FROM t5;
7176
# Delete using various access methods
7179
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7180
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7182
# Update using Const
7183
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7184
DELETE FROM t5 WHERE c1=6 AND c2=6;
7186
SELECT hex(c1),hex(c2) FROM t5;
7188
# Update using range
7189
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7190
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
7192
SELECT hex(c1),hex(c2) FROM t5;
7193
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7194
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7196
SELECT hex(c1),hex(c2) FROM t5;
7198
# Update using eq_ref
7199
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7200
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7202
# Droping the tables
7203
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
7205
####Checking the bit values####
7207
SELECT 0 + (1010<<1);
7208
######### INSERT/SELECT#########
7210
#### Insert and select 1 bit data into the table####
7211
CREATE TABLE t1(c1 BIT(1));
7212
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
7218
set @v3=repeat('1',@v1);
7219
let $STR0= query_get_value(select @v3 as I,I,1);
7220
eval INSERT INTO t1 VALUES (b'$STR0');
7221
set @v3=repeat('0',@v1);
7222
let $STR1= query_get_value(select @v3 as I,I,1);
7223
eval INSERT INTO t1 VALUES (b'$STR1');
7224
set @v3=repeat('01',@v2);
7225
let $STR2= query_get_value(select @v3 as I,I,1);
7226
eval INSERT INTO t1 VALUES (b'$STR2');
7227
set @v3=repeat('10',@v2);
7228
let $STR3= query_get_value(select @v3 as I,I,1);
7229
eval INSERT INTO t1 VALUES (b'$STR3');
7230
set @v3=repeat('1',@v1);
7231
set @v4=repeat('01',@v2);
7232
set @v5=repeat('10',@v2);
7233
let $STR0= query_get_value(select @v3 as I,I,1);
7234
let $STR2= query_get_value(select @v4 as I,I,1);
7235
let $STR3= query_get_value(select @v5 as I,I,1);
7236
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
7239
INSERT INTO t1 VALUES (b'1010');
7240
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
7242
SELECT HEX(c1) FROM t1;
7244
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
7246
SELECT OCT(c1) FROM t1;
7248
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
7250
SELECT BIN(c1) FROM t1;
7252
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
7254
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
7256
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
7258
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
7260
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
7262
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
7264
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
7266
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
7268
CREATE TABLE t3 (c1 BIT(65));
7269
# Checking for bug #9571
7270
CREATE TABLE t4(i INT, b BIT NOT NULL);
7271
ALTER TABLE t4 ADD PRIMARY KEY (i);
7272
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
7273
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
7274
#Borrowed from suite/ndb/t/ndb_bitfield.test
7275
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7276
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7278
SELECT HEX(c1),HEX(c2) FROM t5;
7280
#Insert permissible NULLs
7281
INSERT IGNORE INTO t5 VALUES(96,null);
7282
INSERT INTO t6 VALUES(null,null);
7283
# Now select using various table access methods (full table scan, range scan, index scan etc.)
7284
## Full table scan ##
7286
SELECT HEX(c1),HEX(c2) FROM t5;
7288
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
7290
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
7291
## Forward index scan, covering ##
7293
SELECT bin(c1) FROM t5;
7294
## Backward index scan, covering ##
7295
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
7296
## Forward index scan, non-covering ##
7297
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
7298
## Backward index scan, non-covering ##
7299
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
7301
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
7302
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
7303
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
7304
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
7305
## Range access, ordered ##
7306
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
7307
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
7308
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
7309
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
7310
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
7311
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
7312
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
7313
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
7314
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
7315
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
7316
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
7317
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
7318
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
7319
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
7320
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
7321
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
7322
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
7323
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
7324
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
7325
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
7326
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
7327
## Range access, backwards scan ##
7328
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
7329
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
7330
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
7331
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
7332
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
7333
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
7334
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
7335
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
7336
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
7337
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
7338
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
7339
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
7340
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
7341
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
7342
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
7343
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
7344
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
7345
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
7346
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
7347
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
7348
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
7349
#Inserting different charachers
7350
CREATE TABLE t7(c1 BIT(1));
7351
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
7354
############# UPDATE ###########
7356
# Update order by limit
7357
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7360
# Update with arithmetic operations
7361
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
7363
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
7366
# Update with NULL ( NULL to number & number to NULL)
7367
UPDATE t6 SET c2=NULL WHERE c1=23;
7369
UPDATE t6 SET c2=10 WHERE c2=NULL;
7372
# Update range values
7373
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
7375
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
7377
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
7380
# Update outside range would be clipped to closest endpoints
7381
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
7383
UPDATE t6 SET c2=-1 WHERE c1=94;
7386
# Update ignore on bad null error
7388
SELECT hex(c1) FROM t5 WHERE c1<>0;
7389
SET SQL_MODE=STRICT_ALL_TABLES;
7390
--error ER_BAD_NULL_ERROR
7391
UPDATE t5 SET c1=NULL WHERE c1<>0;
7392
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
7394
SELECT hex(c1),hex(c2) FROM t5;
7395
SET SQL_MODE=DEFAULT;
7399
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
7402
SELECT hex(c1),hex(c2) FROM t5;
7405
# Update using various access methods
7408
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7409
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7411
# Update using Const
7412
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7413
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
7415
SELECT hex(c1),hex(c2) FROM t5;
7417
# Update using range
7418
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7419
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
7421
SELECT hex(c1),hex(c2) FROM t5;
7422
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7424
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
7427
SELECT hex(c1),hex(c2) FROM t5;
7429
# Update using eq_ref
7430
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7431
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7433
############# DELETE ###########
7438
#Borrowed from suite/ndb/t/ndb_bitfield.test
7439
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7440
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
7442
# Delete by order by limit
7443
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7446
# Delete rows with NULL column
7447
DELETE FROM t6 WHERE c2=NULL;
7450
# Delete with range values
7451
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
7453
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
7455
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
7459
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
7461
SELECT hex(c1),hex(c2) FROM t5;
7464
# Delete using various access methods
7467
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7468
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7470
# Update using Const
7471
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7472
DELETE FROM t5 WHERE c1=6 AND c2=6;
7474
SELECT hex(c1),hex(c2) FROM t5;
7476
# Update using range
7477
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7478
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
7480
SELECT hex(c1),hex(c2) FROM t5;
7481
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7482
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7484
SELECT hex(c1),hex(c2) FROM t5;
7486
# Update using eq_ref
7487
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7488
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7490
# Droping the tables
7491
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
7493
####Checking the bit values####
7495
SELECT 0 + (1010<<2);
7496
######### INSERT/SELECT#########
7498
#### Insert and select 2 bit data into the table####
7499
CREATE TABLE t1(c1 BIT(2));
7500
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
7506
set @v3=repeat('1',@v1);
7507
let $STR0= query_get_value(select @v3 as I,I,1);
7508
eval INSERT INTO t1 VALUES (b'$STR0');
7509
set @v3=repeat('0',@v1);
7510
let $STR1= query_get_value(select @v3 as I,I,1);
7511
eval INSERT INTO t1 VALUES (b'$STR1');
7512
set @v3=repeat('01',@v2);
7513
let $STR2= query_get_value(select @v3 as I,I,1);
7514
eval INSERT INTO t1 VALUES (b'$STR2');
7515
set @v3=repeat('10',@v2);
7516
let $STR3= query_get_value(select @v3 as I,I,1);
7517
eval INSERT INTO t1 VALUES (b'$STR3');
7518
set @v3=repeat('1',@v1);
7519
set @v4=repeat('01',@v2);
7520
set @v5=repeat('10',@v2);
7521
let $STR0= query_get_value(select @v3 as I,I,1);
7522
let $STR2= query_get_value(select @v4 as I,I,1);
7523
let $STR3= query_get_value(select @v5 as I,I,1);
7524
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
7527
INSERT INTO t1 VALUES (b'1010');
7528
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
7530
SELECT HEX(c1) FROM t1;
7532
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
7534
SELECT OCT(c1) FROM t1;
7536
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
7538
SELECT BIN(c1) FROM t1;
7540
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
7542
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
7544
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
7546
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
7548
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
7550
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
7552
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
7554
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
7556
CREATE TABLE t3 (c1 BIT(65));
7557
# Checking for bug #9571
7558
CREATE TABLE t4(i INT, b BIT NOT NULL);
7559
ALTER TABLE t4 ADD PRIMARY KEY (i);
7560
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
7561
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
7562
#Borrowed from suite/ndb/t/ndb_bitfield.test
7563
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7564
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7566
SELECT HEX(c1),HEX(c2) FROM t5;
7568
#Insert permissible NULLs
7569
INSERT IGNORE INTO t5 VALUES(96,null);
7570
INSERT INTO t6 VALUES(null,null);
7571
# Now select using various table access methods (full table scan, range scan, index scan etc.)
7572
## Full table scan ##
7574
SELECT HEX(c1),HEX(c2) FROM t5;
7576
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
7578
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
7579
## Forward index scan, covering ##
7581
SELECT bin(c1) FROM t5;
7582
## Backward index scan, covering ##
7583
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
7584
## Forward index scan, non-covering ##
7585
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
7586
## Backward index scan, non-covering ##
7587
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
7589
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
7590
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
7591
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
7592
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
7593
## Range access, ordered ##
7594
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
7595
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
7596
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
7597
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
7598
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
7599
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
7600
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
7601
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
7602
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
7603
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
7604
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
7605
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
7606
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
7607
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
7608
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
7609
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
7610
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
7611
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
7612
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
7613
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
7614
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
7615
## Range access, backwards scan ##
7616
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
7617
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
7618
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
7619
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
7620
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
7621
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
7622
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
7623
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
7624
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
7625
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
7626
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
7627
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
7628
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
7629
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
7630
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
7631
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
7632
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
7633
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
7634
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
7635
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
7636
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
7637
#Inserting different charachers
7638
CREATE TABLE t7(c1 BIT(2));
7639
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
7642
############# UPDATE ###########
7644
# Update order by limit
7645
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7648
# Update with arithmetic operations
7649
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
7651
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
7654
# Update with NULL ( NULL to number & number to NULL)
7655
UPDATE t6 SET c2=NULL WHERE c1=23;
7657
UPDATE t6 SET c2=10 WHERE c2=NULL;
7660
# Update range values
7661
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
7663
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
7665
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
7668
# Update outside range would be clipped to closest endpoints
7669
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
7671
UPDATE t6 SET c2=-1 WHERE c1=94;
7674
# Update ignore on bad null error
7676
SELECT hex(c1) FROM t5 WHERE c1<>0;
7677
SET SQL_MODE=STRICT_ALL_TABLES;
7678
--error ER_BAD_NULL_ERROR
7679
UPDATE t5 SET c1=NULL WHERE c1<>0;
7680
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
7682
SELECT hex(c1),hex(c2) FROM t5;
7683
SET SQL_MODE=DEFAULT;
7687
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
7690
SELECT hex(c1),hex(c2) FROM t5;
7693
# Update using various access methods
7696
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7697
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7699
# Update using Const
7700
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7701
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
7703
SELECT hex(c1),hex(c2) FROM t5;
7705
# Update using range
7706
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7707
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
7709
SELECT hex(c1),hex(c2) FROM t5;
7710
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7712
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
7715
SELECT hex(c1),hex(c2) FROM t5;
7717
# Update using eq_ref
7718
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7719
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7721
############# DELETE ###########
7726
#Borrowed from suite/ndb/t/ndb_bitfield.test
7727
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7728
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
7730
# Delete by order by limit
7731
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7734
# Delete rows with NULL column
7735
DELETE FROM t6 WHERE c2=NULL;
7738
# Delete with range values
7739
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
7741
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
7743
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
7747
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
7749
SELECT hex(c1),hex(c2) FROM t5;
7752
# Delete using various access methods
7755
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7756
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7758
# Update using Const
7759
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7760
DELETE FROM t5 WHERE c1=6 AND c2=6;
7762
SELECT hex(c1),hex(c2) FROM t5;
7764
# Update using range
7765
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7766
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
7768
SELECT hex(c1),hex(c2) FROM t5;
7769
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7770
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
7772
SELECT hex(c1),hex(c2) FROM t5;
7774
# Update using eq_ref
7775
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7776
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
7778
# Droping the tables
7779
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
7781
####Checking the bit values####
7783
SELECT 0 + (1010<<4);
7784
######### INSERT/SELECT#########
7786
#### Insert and select 4 bit data into the table####
7787
CREATE TABLE t1(c1 BIT(4));
7788
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
7794
set @v3=repeat('1',@v1);
7795
let $STR0= query_get_value(select @v3 as I,I,1);
7796
eval INSERT INTO t1 VALUES (b'$STR0');
7797
set @v3=repeat('0',@v1);
7798
let $STR1= query_get_value(select @v3 as I,I,1);
7799
eval INSERT INTO t1 VALUES (b'$STR1');
7800
set @v3=repeat('01',@v2);
7801
let $STR2= query_get_value(select @v3 as I,I,1);
7802
eval INSERT INTO t1 VALUES (b'$STR2');
7803
set @v3=repeat('10',@v2);
7804
let $STR3= query_get_value(select @v3 as I,I,1);
7805
eval INSERT INTO t1 VALUES (b'$STR3');
7806
set @v3=repeat('1',@v1);
7807
set @v4=repeat('01',@v2);
7808
set @v5=repeat('10',@v2);
7809
let $STR0= query_get_value(select @v3 as I,I,1);
7810
let $STR2= query_get_value(select @v4 as I,I,1);
7811
let $STR3= query_get_value(select @v5 as I,I,1);
7812
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
7815
INSERT INTO t1 VALUES (b'1010');
7816
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
7818
SELECT HEX(c1) FROM t1;
7820
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
7822
SELECT OCT(c1) FROM t1;
7824
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
7826
SELECT BIN(c1) FROM t1;
7828
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
7830
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
7832
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
7834
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
7836
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
7838
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
7840
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
7842
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
7844
CREATE TABLE t3 (c1 BIT(65));
7845
# Checking for bug #9571
7846
CREATE TABLE t4(i INT, b BIT NOT NULL);
7847
ALTER TABLE t4 ADD PRIMARY KEY (i);
7848
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
7849
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
7850
#Borrowed from suite/ndb/t/ndb_bitfield.test
7851
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7852
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
7854
SELECT HEX(c1),HEX(c2) FROM t5;
7856
#Insert permissible NULLs
7857
INSERT IGNORE INTO t5 VALUES(96,null);
7858
INSERT INTO t6 VALUES(null,null);
7859
# Now select using various table access methods (full table scan, range scan, index scan etc.)
7860
## Full table scan ##
7862
SELECT HEX(c1),HEX(c2) FROM t5;
7864
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
7866
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
7867
## Forward index scan, covering ##
7869
SELECT bin(c1) FROM t5;
7870
## Backward index scan, covering ##
7871
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
7872
## Forward index scan, non-covering ##
7873
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
7874
## Backward index scan, non-covering ##
7875
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
7877
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
7878
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
7879
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
7880
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
7881
## Range access, ordered ##
7882
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
7883
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
7884
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
7885
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
7886
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
7887
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
7888
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
7889
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
7890
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
7891
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
7892
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
7893
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
7894
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
7895
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
7896
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
7897
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
7898
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
7899
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
7900
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
7901
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
7902
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
7903
## Range access, backwards scan ##
7904
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
7905
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
7906
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
7907
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
7908
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
7909
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
7910
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
7911
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
7912
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
7913
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
7914
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
7915
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
7916
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
7917
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
7918
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
7919
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
7920
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
7921
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
7922
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
7923
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
7924
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
7925
#Inserting different charachers
7926
CREATE TABLE t7(c1 BIT(4));
7927
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
7930
############# UPDATE ###########
7932
# Update order by limit
7933
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
7936
# Update with arithmetic operations
7937
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
7939
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
7942
# Update with NULL ( NULL to number & number to NULL)
7943
UPDATE t6 SET c2=NULL WHERE c1=23;
7945
UPDATE t6 SET c2=10 WHERE c2=NULL;
7948
# Update range values
7949
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
7951
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
7953
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
7956
# Update outside range would be clipped to closest endpoints
7957
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
7959
UPDATE t6 SET c2=-1 WHERE c1=94;
7962
# Update ignore on bad null error
7964
SELECT hex(c1) FROM t5 WHERE c1<>0;
7965
SET SQL_MODE=STRICT_ALL_TABLES;
7966
--error ER_BAD_NULL_ERROR
7967
UPDATE t5 SET c1=NULL WHERE c1<>0;
7968
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
7970
SELECT hex(c1),hex(c2) FROM t5;
7971
SET SQL_MODE=DEFAULT;
7975
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
7978
SELECT hex(c1),hex(c2) FROM t5;
7981
# Update using various access methods
7984
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7985
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
7987
# Update using Const
7988
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
7989
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
7991
SELECT hex(c1),hex(c2) FROM t5;
7993
# Update using range
7994
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
7995
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
7997
SELECT hex(c1),hex(c2) FROM t5;
7998
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8000
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
8003
SELECT hex(c1),hex(c2) FROM t5;
8005
# Update using eq_ref
8006
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8007
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8009
############# DELETE ###########
8014
#Borrowed from suite/ndb/t/ndb_bitfield.test
8015
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8016
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
8018
# Delete by order by limit
8019
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8022
# Delete rows with NULL column
8023
DELETE FROM t6 WHERE c2=NULL;
8026
# Delete with range values
8027
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
8029
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
8031
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
8035
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
8037
SELECT hex(c1),hex(c2) FROM t5;
8040
# Delete using various access methods
8043
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8044
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8046
# Update using Const
8047
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8048
DELETE FROM t5 WHERE c1=6 AND c2=6;
8050
SELECT hex(c1),hex(c2) FROM t5;
8052
# Update using range
8053
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8054
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
8056
SELECT hex(c1),hex(c2) FROM t5;
8057
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8058
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8060
SELECT hex(c1),hex(c2) FROM t5;
8062
# Update using eq_ref
8063
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8064
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8066
# Droping the tables
8067
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
8069
####Checking the bit values####
8071
SELECT 0 + (1010<<8);
8072
######### INSERT/SELECT#########
8074
#### Insert and select 8 bit data into the table####
8075
CREATE TABLE t1(c1 BIT(8));
8076
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
8082
set @v3=repeat('1',@v1);
8083
let $STR0= query_get_value(select @v3 as I,I,1);
8084
eval INSERT INTO t1 VALUES (b'$STR0');
8085
set @v3=repeat('0',@v1);
8086
let $STR1= query_get_value(select @v3 as I,I,1);
8087
eval INSERT INTO t1 VALUES (b'$STR1');
8088
set @v3=repeat('01',@v2);
8089
let $STR2= query_get_value(select @v3 as I,I,1);
8090
eval INSERT INTO t1 VALUES (b'$STR2');
8091
set @v3=repeat('10',@v2);
8092
let $STR3= query_get_value(select @v3 as I,I,1);
8093
eval INSERT INTO t1 VALUES (b'$STR3');
8094
set @v3=repeat('1',@v1);
8095
set @v4=repeat('01',@v2);
8096
set @v5=repeat('10',@v2);
8097
let $STR0= query_get_value(select @v3 as I,I,1);
8098
let $STR2= query_get_value(select @v4 as I,I,1);
8099
let $STR3= query_get_value(select @v5 as I,I,1);
8100
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
8103
INSERT INTO t1 VALUES (b'1010');
8104
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
8106
SELECT HEX(c1) FROM t1;
8108
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
8110
SELECT OCT(c1) FROM t1;
8112
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
8114
SELECT BIN(c1) FROM t1;
8116
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
8118
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
8120
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
8122
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
8124
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
8126
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
8128
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
8130
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
8132
CREATE TABLE t3 (c1 BIT(65));
8133
# Checking for bug #9571
8134
CREATE TABLE t4(i INT, b BIT NOT NULL);
8135
ALTER TABLE t4 ADD PRIMARY KEY (i);
8136
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
8137
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
8138
#Borrowed from suite/ndb/t/ndb_bitfield.test
8139
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8140
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8142
SELECT HEX(c1),HEX(c2) FROM t5;
8144
#Insert permissible NULLs
8145
INSERT IGNORE INTO t5 VALUES(96,null);
8146
INSERT INTO t6 VALUES(null,null);
8147
# Now select using various table access methods (full table scan, range scan, index scan etc.)
8148
## Full table scan ##
8150
SELECT HEX(c1),HEX(c2) FROM t5;
8152
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
8154
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
8155
## Forward index scan, covering ##
8157
SELECT bin(c1) FROM t5;
8158
## Backward index scan, covering ##
8159
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
8160
## Forward index scan, non-covering ##
8161
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
8162
## Backward index scan, non-covering ##
8163
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
8165
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
8166
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
8167
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
8168
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
8169
## Range access, ordered ##
8170
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
8172
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
8174
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
8175
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
8176
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
8177
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
8178
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
8179
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
8180
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
8182
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
8183
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
8184
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
8185
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
8186
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
8187
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
8188
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
8189
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
8190
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
8191
## Range access, backwards scan ##
8192
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
8193
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
8195
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
8197
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
8198
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
8199
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
8200
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
8201
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
8202
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
8203
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
8205
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
8206
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
8207
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
8208
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
8209
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
8210
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
8211
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
8212
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
8213
#Inserting different charachers
8214
CREATE TABLE t7(c1 BIT(8));
8215
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
8218
############# UPDATE ###########
8220
# Update order by limit
8221
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8224
# Update with arithmetic operations
8225
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
8227
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
8230
# Update with NULL ( NULL to number & number to NULL)
8231
UPDATE t6 SET c2=NULL WHERE c1=23;
8233
UPDATE t6 SET c2=10 WHERE c2=NULL;
8236
# Update range values
8237
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
8239
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
8241
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
8244
# Update outside range would be clipped to closest endpoints
8245
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
8247
UPDATE t6 SET c2=-1 WHERE c1=94;
8250
# Update ignore on bad null error
8252
SELECT hex(c1) FROM t5 WHERE c1<>0;
8253
SET SQL_MODE=STRICT_ALL_TABLES;
8254
--error ER_BAD_NULL_ERROR
8255
UPDATE t5 SET c1=NULL WHERE c1<>0;
8256
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
8258
SELECT hex(c1),hex(c2) FROM t5;
8259
SET SQL_MODE=DEFAULT;
8263
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
8266
SELECT hex(c1),hex(c2) FROM t5;
8269
# Update using various access methods
8272
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8273
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8275
# Update using Const
8276
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8277
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
8279
SELECT hex(c1),hex(c2) FROM t5;
8281
# Update using range
8282
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8283
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
8285
SELECT hex(c1),hex(c2) FROM t5;
8286
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8288
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
8291
SELECT hex(c1),hex(c2) FROM t5;
8293
# Update using eq_ref
8294
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8295
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8297
############# DELETE ###########
8302
#Borrowed from suite/ndb/t/ndb_bitfield.test
8303
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8304
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
8306
# Delete by order by limit
8307
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8310
# Delete rows with NULL column
8311
DELETE FROM t6 WHERE c2=NULL;
8314
# Delete with range values
8315
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
8317
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
8319
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
8323
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
8325
SELECT hex(c1),hex(c2) FROM t5;
8328
# Delete using various access methods
8331
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8332
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8334
# Update using Const
8335
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8336
DELETE FROM t5 WHERE c1=6 AND c2=6;
8338
SELECT hex(c1),hex(c2) FROM t5;
8340
# Update using range
8341
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8342
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
8344
SELECT hex(c1),hex(c2) FROM t5;
8345
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8346
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8348
SELECT hex(c1),hex(c2) FROM t5;
8350
# Update using eq_ref
8351
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8352
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8354
# Droping the tables
8355
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
8357
####Checking the bit values####
8359
SELECT 0 + (1010<<16);
8360
######### INSERT/SELECT#########
8362
#### Insert and select 16 bit data into the table####
8363
CREATE TABLE t1(c1 BIT(16));
8364
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
8370
set @v3=repeat('1',@v1);
8371
let $STR0= query_get_value(select @v3 as I,I,1);
8372
eval INSERT INTO t1 VALUES (b'$STR0');
8373
set @v3=repeat('0',@v1);
8374
let $STR1= query_get_value(select @v3 as I,I,1);
8375
eval INSERT INTO t1 VALUES (b'$STR1');
8376
set @v3=repeat('01',@v2);
8377
let $STR2= query_get_value(select @v3 as I,I,1);
8378
eval INSERT INTO t1 VALUES (b'$STR2');
8379
set @v3=repeat('10',@v2);
8380
let $STR3= query_get_value(select @v3 as I,I,1);
8381
eval INSERT INTO t1 VALUES (b'$STR3');
8382
set @v3=repeat('1',@v1);
8383
set @v4=repeat('01',@v2);
8384
set @v5=repeat('10',@v2);
8385
let $STR0= query_get_value(select @v3 as I,I,1);
8386
let $STR2= query_get_value(select @v4 as I,I,1);
8387
let $STR3= query_get_value(select @v5 as I,I,1);
8388
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
8391
INSERT INTO t1 VALUES (b'1010');
8392
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
8394
SELECT HEX(c1) FROM t1;
8396
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
8398
SELECT OCT(c1) FROM t1;
8400
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
8402
SELECT BIN(c1) FROM t1;
8404
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
8406
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
8408
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
8410
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
8412
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
8414
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
8416
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
8418
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
8420
CREATE TABLE t3 (c1 BIT(65));
8421
# Checking for bug #9571
8422
CREATE TABLE t4(i INT, b BIT NOT NULL);
8423
ALTER TABLE t4 ADD PRIMARY KEY (i);
8424
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
8425
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
8426
#Borrowed from suite/ndb/t/ndb_bitfield.test
8427
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8428
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8430
SELECT HEX(c1),HEX(c2) FROM t5;
8432
#Insert permissible NULLs
8433
INSERT IGNORE INTO t5 VALUES(96,null);
8434
INSERT INTO t6 VALUES(null,null);
8435
# Now select using various table access methods (full table scan, range scan, index scan etc.)
8436
## Full table scan ##
8438
SELECT HEX(c1),HEX(c2) FROM t5;
8440
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
8442
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
8443
## Forward index scan, covering ##
8445
SELECT bin(c1) FROM t5;
8446
## Backward index scan, covering ##
8447
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
8448
## Forward index scan, non-covering ##
8449
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
8450
## Backward index scan, non-covering ##
8451
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
8453
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
8454
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
8455
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
8456
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
8457
## Range access, ordered ##
8458
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
8459
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
8460
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
8461
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
8462
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
8463
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
8464
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
8465
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
8466
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
8467
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
8468
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
8469
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
8470
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
8471
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
8472
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
8473
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
8474
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
8475
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
8476
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
8477
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
8478
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
8479
## Range access, backwards scan ##
8480
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
8481
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
8482
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
8483
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
8484
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
8485
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
8486
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
8487
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
8488
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
8489
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
8490
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
8491
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
8492
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
8493
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
8494
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
8495
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
8496
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
8497
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
8498
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
8499
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
8500
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
8501
#Inserting different charachers
8502
CREATE TABLE t7(c1 BIT(16));
8503
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
8506
############# UPDATE ###########
8508
# Update order by limit
8509
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8512
# Update with arithmetic operations
8513
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
8515
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
8518
# Update with NULL ( NULL to number & number to NULL)
8519
UPDATE t6 SET c2=NULL WHERE c1=23;
8521
UPDATE t6 SET c2=10 WHERE c2=NULL;
8524
# Update range values
8525
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
8527
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
8529
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
8532
# Update outside range would be clipped to closest endpoints
8533
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
8535
UPDATE t6 SET c2=-1 WHERE c1=94;
8538
# Update ignore on bad null error
8540
SELECT hex(c1) FROM t5 WHERE c1<>0;
8541
SET SQL_MODE=STRICT_ALL_TABLES;
8542
--error ER_BAD_NULL_ERROR
8543
UPDATE t5 SET c1=NULL WHERE c1<>0;
8544
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
8546
SELECT hex(c1),hex(c2) FROM t5;
8547
SET SQL_MODE=DEFAULT;
8551
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
8554
SELECT hex(c1),hex(c2) FROM t5;
8557
# Update using various access methods
8560
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8561
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8563
# Update using Const
8564
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8565
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
8567
SELECT hex(c1),hex(c2) FROM t5;
8569
# Update using range
8570
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8571
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
8573
SELECT hex(c1),hex(c2) FROM t5;
8574
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8576
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
8579
SELECT hex(c1),hex(c2) FROM t5;
8581
# Update using eq_ref
8582
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8583
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8585
############# DELETE ###########
8590
#Borrowed from suite/ndb/t/ndb_bitfield.test
8591
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8592
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
8594
# Delete by order by limit
8595
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8598
# Delete rows with NULL column
8599
DELETE FROM t6 WHERE c2=NULL;
8602
# Delete with range values
8603
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
8605
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
8607
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
8611
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
8613
SELECT hex(c1),hex(c2) FROM t5;
8616
# Delete using various access methods
8619
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8620
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8622
# Update using Const
8623
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8624
DELETE FROM t5 WHERE c1=6 AND c2=6;
8626
SELECT hex(c1),hex(c2) FROM t5;
8628
# Update using range
8629
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8630
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
8632
SELECT hex(c1),hex(c2) FROM t5;
8633
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8634
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8636
SELECT hex(c1),hex(c2) FROM t5;
8638
# Update using eq_ref
8639
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8640
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8642
# Droping the tables
8643
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
8645
####Checking the bit values####
8647
SELECT 0 + (1010<<32);
8648
######### INSERT/SELECT#########
8650
#### Insert and select 32 bit data into the table####
8651
CREATE TABLE t1(c1 BIT(32));
8652
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
8658
set @v3=repeat('1',@v1);
8659
let $STR0= query_get_value(select @v3 as I,I,1);
8660
eval INSERT INTO t1 VALUES (b'$STR0');
8661
set @v3=repeat('0',@v1);
8662
let $STR1= query_get_value(select @v3 as I,I,1);
8663
eval INSERT INTO t1 VALUES (b'$STR1');
8664
set @v3=repeat('01',@v2);
8665
let $STR2= query_get_value(select @v3 as I,I,1);
8666
eval INSERT INTO t1 VALUES (b'$STR2');
8667
set @v3=repeat('10',@v2);
8668
let $STR3= query_get_value(select @v3 as I,I,1);
8669
eval INSERT INTO t1 VALUES (b'$STR3');
8670
set @v3=repeat('1',@v1);
8671
set @v4=repeat('01',@v2);
8672
set @v5=repeat('10',@v2);
8673
let $STR0= query_get_value(select @v3 as I,I,1);
8674
let $STR2= query_get_value(select @v4 as I,I,1);
8675
let $STR3= query_get_value(select @v5 as I,I,1);
8676
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
8679
INSERT INTO t1 VALUES (b'1010');
8680
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
8682
SELECT HEX(c1) FROM t1;
8684
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
8686
SELECT OCT(c1) FROM t1;
8688
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
8690
SELECT BIN(c1) FROM t1;
8692
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
8694
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
8696
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
8698
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
8700
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
8702
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
8704
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
8706
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
8708
CREATE TABLE t3 (c1 BIT(65));
8709
# Checking for bug #9571
8710
CREATE TABLE t4(i INT, b BIT NOT NULL);
8711
ALTER TABLE t4 ADD PRIMARY KEY (i);
8712
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
8713
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
8714
#Borrowed from suite/ndb/t/ndb_bitfield.test
8715
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8716
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8718
SELECT HEX(c1),HEX(c2) FROM t5;
8720
#Insert permissible NULLs
8721
INSERT IGNORE INTO t5 VALUES(96,null);
8722
INSERT INTO t6 VALUES(null,null);
8723
# Now select using various table access methods (full table scan, range scan, index scan etc.)
8724
## Full table scan ##
8726
SELECT HEX(c1),HEX(c2) FROM t5;
8728
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
8730
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
8731
## Forward index scan, covering ##
8733
SELECT bin(c1) FROM t5;
8734
## Backward index scan, covering ##
8735
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
8736
## Forward index scan, non-covering ##
8737
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
8738
## Backward index scan, non-covering ##
8739
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
8741
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
8742
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
8743
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
8744
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
8745
## Range access, ordered ##
8746
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
8747
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
8748
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
8749
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
8750
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
8751
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
8752
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
8753
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
8754
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
8755
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
8756
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
8757
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
8758
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
8759
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
8760
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
8761
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
8762
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
8763
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
8764
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
8765
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
8766
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
8767
## Range access, backwards scan ##
8768
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
8769
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
8770
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
8771
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
8772
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
8773
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
8774
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
8775
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
8776
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
8777
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
8778
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
8779
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
8780
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
8781
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
8782
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
8783
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
8784
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
8785
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
8786
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
8787
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
8788
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
8789
#Inserting different charachers
8790
CREATE TABLE t7(c1 BIT(32));
8791
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
8794
############# UPDATE ###########
8796
# Update order by limit
8797
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8800
# Update with arithmetic operations
8801
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
8803
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
8806
# Update with NULL ( NULL to number & number to NULL)
8807
UPDATE t6 SET c2=NULL WHERE c1=23;
8809
UPDATE t6 SET c2=10 WHERE c2=NULL;
8812
# Update range values
8813
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
8815
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
8817
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
8820
# Update outside range would be clipped to closest endpoints
8821
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
8823
UPDATE t6 SET c2=-1 WHERE c1=94;
8826
# Update ignore on bad null error
8828
SELECT hex(c1) FROM t5 WHERE c1<>0;
8829
SET SQL_MODE=STRICT_ALL_TABLES;
8830
--error ER_BAD_NULL_ERROR
8831
UPDATE t5 SET c1=NULL WHERE c1<>0;
8832
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
8834
SELECT hex(c1),hex(c2) FROM t5;
8835
SET SQL_MODE=DEFAULT;
8839
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
8842
SELECT hex(c1),hex(c2) FROM t5;
8845
# Update using various access methods
8848
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8849
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8851
# Update using Const
8852
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8853
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
8855
SELECT hex(c1),hex(c2) FROM t5;
8857
# Update using range
8858
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8859
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
8861
SELECT hex(c1),hex(c2) FROM t5;
8862
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8864
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
8867
SELECT hex(c1),hex(c2) FROM t5;
8869
# Update using eq_ref
8870
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8871
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8873
############# DELETE ###########
8878
#Borrowed from suite/ndb/t/ndb_bitfield.test
8879
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
8880
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
8882
# Delete by order by limit
8883
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
8886
# Delete rows with NULL column
8887
DELETE FROM t6 WHERE c2=NULL;
8890
# Delete with range values
8891
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
8893
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
8895
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
8899
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
8901
SELECT hex(c1),hex(c2) FROM t5;
8904
# Delete using various access methods
8907
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8908
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
8910
# Update using Const
8911
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
8912
DELETE FROM t5 WHERE c1=6 AND c2=6;
8914
SELECT hex(c1),hex(c2) FROM t5;
8916
# Update using range
8917
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
8918
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
8920
SELECT hex(c1),hex(c2) FROM t5;
8921
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8922
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
8924
SELECT hex(c1),hex(c2) FROM t5;
8926
# Update using eq_ref
8927
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8928
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
8930
# Droping the tables
8931
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
8933
####Checking the bit values####
8935
SELECT 0 + (1010<<64);
8936
######### INSERT/SELECT#########
8938
#### Insert and select 64 bit data into the table####
8939
CREATE TABLE t1(c1 BIT(64));
8940
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
8946
set @v3=repeat('1',@v1);
8947
let $STR0= query_get_value(select @v3 as I,I,1);
8948
eval INSERT INTO t1 VALUES (b'$STR0');
8949
set @v3=repeat('0',@v1);
8950
let $STR1= query_get_value(select @v3 as I,I,1);
8951
eval INSERT INTO t1 VALUES (b'$STR1');
8952
set @v3=repeat('01',@v2);
8953
let $STR2= query_get_value(select @v3 as I,I,1);
8954
eval INSERT INTO t1 VALUES (b'$STR2');
8955
set @v3=repeat('10',@v2);
8956
let $STR3= query_get_value(select @v3 as I,I,1);
8957
eval INSERT INTO t1 VALUES (b'$STR3');
8958
set @v3=repeat('1',@v1);
8959
set @v4=repeat('01',@v2);
8960
set @v5=repeat('10',@v2);
8961
let $STR0= query_get_value(select @v3 as I,I,1);
8962
let $STR2= query_get_value(select @v4 as I,I,1);
8963
let $STR3= query_get_value(select @v5 as I,I,1);
8964
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
8967
INSERT INTO t1 VALUES (b'1010');
8968
INSERT INTO t2 VALUES (b'1010', b'1010', b'1010');
8970
SELECT HEX(c1) FROM t1;
8972
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
8974
SELECT OCT(c1) FROM t1;
8976
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
8978
SELECT BIN(c1) FROM t1;
8980
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
8982
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
8984
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
8986
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
8988
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
8990
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
8992
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
8994
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
8996
CREATE TABLE t3 (c1 BIT(65));
8997
# Checking for bug #9571
8998
CREATE TABLE t4(i INT, b BIT NOT NULL);
8999
ALTER TABLE t4 ADD PRIMARY KEY (i);
9000
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
9001
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
9002
#Borrowed from suite/ndb/t/ndb_bitfield.test
9003
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9004
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9006
SELECT HEX(c1),HEX(c2) FROM t5;
9008
#Insert permissible NULLs
9009
INSERT IGNORE INTO t5 VALUES(96,null);
9010
INSERT INTO t6 VALUES(null,null);
9011
# Now select using various table access methods (full table scan, range scan, index scan etc.)
9012
## Full table scan ##
9014
SELECT HEX(c1),HEX(c2) FROM t5;
9016
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
9018
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
9019
## Forward index scan, covering ##
9021
SELECT bin(c1) FROM t5;
9022
## Backward index scan, covering ##
9023
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
9024
## Forward index scan, non-covering ##
9025
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
9026
## Backward index scan, non-covering ##
9027
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
9029
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
9030
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
9031
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
9032
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
9033
## Range access, ordered ##
9034
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
9035
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
9036
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
9037
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
9038
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
9039
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
9040
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
9041
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
9042
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
9043
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
9044
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
9045
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
9046
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
9047
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
9048
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
9049
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
9050
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
9051
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
9052
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
9053
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
9054
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
9055
## Range access, backwards scan ##
9056
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
9057
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
9058
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
9059
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
9060
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
9061
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
9062
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
9063
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
9064
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
9065
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
9066
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
9067
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
9068
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
9069
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
9070
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
9071
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
9072
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
9073
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
9074
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
9075
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
9076
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
9077
#Inserting different charachers
9078
CREATE TABLE t7(c1 BIT(64));
9079
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
9082
############# UPDATE ###########
9084
# Update order by limit
9085
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9088
# Update with arithmetic operations
9089
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
9091
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
9094
# Update with NULL ( NULL to number & number to NULL)
9095
UPDATE t6 SET c2=NULL WHERE c1=23;
9097
UPDATE t6 SET c2=10 WHERE c2=NULL;
9100
# Update range values
9101
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
9103
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
9105
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
9108
# Update outside range would be clipped to closest endpoints
9109
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
9111
UPDATE t6 SET c2=-1 WHERE c1=94;
9114
# Update ignore on bad null error
9116
SELECT hex(c1) FROM t5 WHERE c1<>0;
9117
SET SQL_MODE=STRICT_ALL_TABLES;
9118
--error ER_BAD_NULL_ERROR
9119
UPDATE t5 SET c1=NULL WHERE c1<>0;
9120
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
9122
SELECT hex(c1),hex(c2) FROM t5;
9123
SET SQL_MODE=DEFAULT;
9127
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
9130
SELECT hex(c1),hex(c2) FROM t5;
9133
# Update using various access methods
9136
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9137
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9139
# Update using Const
9140
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9141
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
9143
SELECT hex(c1),hex(c2) FROM t5;
9145
# Update using range
9146
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9147
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
9149
SELECT hex(c1),hex(c2) FROM t5;
9150
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9152
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
9155
SELECT hex(c1),hex(c2) FROM t5;
9157
# Update using eq_ref
9158
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9159
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9161
############# DELETE ###########
9166
#Borrowed from suite/ndb/t/ndb_bitfield.test
9167
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9168
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
9170
# Delete by order by limit
9171
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9174
# Delete rows with NULL column
9175
DELETE FROM t6 WHERE c2=NULL;
9178
# Delete with range values
9179
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
9181
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
9183
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
9187
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
9189
SELECT hex(c1),hex(c2) FROM t5;
9192
# Delete using various access methods
9195
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9196
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9198
# Update using Const
9199
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9200
DELETE FROM t5 WHERE c1=6 AND c2=6;
9202
SELECT hex(c1),hex(c2) FROM t5;
9204
# Update using range
9205
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9206
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
9208
SELECT hex(c1),hex(c2) FROM t5;
9209
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9210
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9212
SELECT hex(c1),hex(c2) FROM t5;
9214
# Update using eq_ref
9215
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9216
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9218
# Droping the tables
9219
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
9221
####Checking the bit values####
9222
SELECT 0 + b'1010101010101010';
9223
SELECT 0 + (1010101010101010<<0);
9224
######### INSERT/SELECT#########
9226
#### Insert and select 0 bit data into the table####
9227
CREATE TABLE t1(c1 BIT(0));
9228
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
9234
set @v3=repeat('1',@v1);
9235
let $STR0= query_get_value(select @v3 as I,I,1);
9236
eval INSERT INTO t1 VALUES (b'$STR0');
9237
set @v3=repeat('0',@v1);
9238
let $STR1= query_get_value(select @v3 as I,I,1);
9239
eval INSERT INTO t1 VALUES (b'$STR1');
9240
set @v3=repeat('01',@v2);
9241
let $STR2= query_get_value(select @v3 as I,I,1);
9242
eval INSERT INTO t1 VALUES (b'$STR2');
9243
set @v3=repeat('10',@v2);
9244
let $STR3= query_get_value(select @v3 as I,I,1);
9245
eval INSERT INTO t1 VALUES (b'$STR3');
9246
set @v3=repeat('1',@v1);
9247
set @v4=repeat('01',@v2);
9248
set @v5=repeat('10',@v2);
9249
let $STR0= query_get_value(select @v3 as I,I,1);
9250
let $STR2= query_get_value(select @v4 as I,I,1);
9251
let $STR3= query_get_value(select @v5 as I,I,1);
9252
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
9255
INSERT INTO t1 VALUES (b'1010101010101010');
9256
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
9258
SELECT HEX(c1) FROM t1;
9260
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
9262
SELECT OCT(c1) FROM t1;
9264
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
9266
SELECT BIN(c1) FROM t1;
9268
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
9270
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
9272
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
9274
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
9276
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
9278
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
9280
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
9282
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
9284
CREATE TABLE t3 (c1 BIT(65));
9285
# Checking for bug #9571
9286
CREATE TABLE t4(i INT, b BIT NOT NULL);
9287
ALTER TABLE t4 ADD PRIMARY KEY (i);
9288
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
9289
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
9290
#Borrowed from suite/ndb/t/ndb_bitfield.test
9291
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9292
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9294
SELECT HEX(c1),HEX(c2) FROM t5;
9296
#Insert permissible NULLs
9297
INSERT IGNORE INTO t5 VALUES(96,null);
9298
INSERT INTO t6 VALUES(null,null);
9299
# Now select using various table access methods (full table scan, range scan, index scan etc.)
9300
## Full table scan ##
9302
SELECT HEX(c1),HEX(c2) FROM t5;
9304
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
9306
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
9307
## Forward index scan, covering ##
9309
SELECT bin(c1) FROM t5;
9310
## Backward index scan, covering ##
9311
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
9312
## Forward index scan, non-covering ##
9313
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
9314
## Backward index scan, non-covering ##
9315
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
9317
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
9318
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
9319
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
9320
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
9321
## Range access, ordered ##
9322
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
9323
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
9324
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
9325
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
9326
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
9327
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
9328
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
9329
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
9330
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
9331
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
9332
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
9333
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
9334
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
9335
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
9336
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
9337
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
9338
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
9339
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
9340
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
9341
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
9342
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
9343
## Range access, backwards scan ##
9344
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
9345
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
9346
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
9347
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
9348
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
9349
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
9350
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
9351
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
9352
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
9353
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
9354
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
9355
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
9356
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
9357
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
9358
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
9359
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
9360
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
9361
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
9362
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
9363
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
9364
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
9365
#Inserting different charachers
9366
CREATE TABLE t7(c1 BIT(0));
9367
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
9370
############# UPDATE ###########
9372
# Update order by limit
9373
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9376
# Update with arithmetic operations
9377
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
9379
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
9382
# Update with NULL ( NULL to number & number to NULL)
9383
UPDATE t6 SET c2=NULL WHERE c1=23;
9385
UPDATE t6 SET c2=10 WHERE c2=NULL;
9388
# Update range values
9389
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
9391
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
9393
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
9396
# Update outside range would be clipped to closest endpoints
9397
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
9399
UPDATE t6 SET c2=-1 WHERE c1=94;
9402
# Update ignore on bad null error
9404
SELECT hex(c1) FROM t5 WHERE c1<>0;
9405
SET SQL_MODE=STRICT_ALL_TABLES;
9406
--error ER_BAD_NULL_ERROR
9407
UPDATE t5 SET c1=NULL WHERE c1<>0;
9408
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
9410
SELECT hex(c1),hex(c2) FROM t5;
9411
SET SQL_MODE=DEFAULT;
9415
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
9418
SELECT hex(c1),hex(c2) FROM t5;
9421
# Update using various access methods
9424
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9425
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9427
# Update using Const
9428
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9429
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
9431
SELECT hex(c1),hex(c2) FROM t5;
9433
# Update using range
9434
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9435
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
9437
SELECT hex(c1),hex(c2) FROM t5;
9438
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9440
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
9443
SELECT hex(c1),hex(c2) FROM t5;
9445
# Update using eq_ref
9446
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9447
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9449
############# DELETE ###########
9454
#Borrowed from suite/ndb/t/ndb_bitfield.test
9455
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9456
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
9458
# Delete by order by limit
9459
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9462
# Delete rows with NULL column
9463
DELETE FROM t6 WHERE c2=NULL;
9466
# Delete with range values
9467
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
9469
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
9471
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
9475
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
9477
SELECT hex(c1),hex(c2) FROM t5;
9480
# Delete using various access methods
9483
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9484
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9486
# Update using Const
9487
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9488
DELETE FROM t5 WHERE c1=6 AND c2=6;
9490
SELECT hex(c1),hex(c2) FROM t5;
9492
# Update using range
9493
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9494
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
9496
SELECT hex(c1),hex(c2) FROM t5;
9497
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9498
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9500
SELECT hex(c1),hex(c2) FROM t5;
9502
# Update using eq_ref
9503
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9504
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9506
# Droping the tables
9507
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
9509
####Checking the bit values####
9510
SELECT 0 + b'1010101010101010';
9511
SELECT 0 + (1010101010101010<<1);
9512
######### INSERT/SELECT#########
9514
#### Insert and select 1 bit data into the table####
9515
CREATE TABLE t1(c1 BIT(1));
9516
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
9522
set @v3=repeat('1',@v1);
9523
let $STR0= query_get_value(select @v3 as I,I,1);
9524
eval INSERT INTO t1 VALUES (b'$STR0');
9525
set @v3=repeat('0',@v1);
9526
let $STR1= query_get_value(select @v3 as I,I,1);
9527
eval INSERT INTO t1 VALUES (b'$STR1');
9528
set @v3=repeat('01',@v2);
9529
let $STR2= query_get_value(select @v3 as I,I,1);
9530
eval INSERT INTO t1 VALUES (b'$STR2');
9531
set @v3=repeat('10',@v2);
9532
let $STR3= query_get_value(select @v3 as I,I,1);
9533
eval INSERT INTO t1 VALUES (b'$STR3');
9534
set @v3=repeat('1',@v1);
9535
set @v4=repeat('01',@v2);
9536
set @v5=repeat('10',@v2);
9537
let $STR0= query_get_value(select @v3 as I,I,1);
9538
let $STR2= query_get_value(select @v4 as I,I,1);
9539
let $STR3= query_get_value(select @v5 as I,I,1);
9540
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
9543
INSERT INTO t1 VALUES (b'1010101010101010');
9544
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
9546
SELECT HEX(c1) FROM t1;
9548
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
9550
SELECT OCT(c1) FROM t1;
9552
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
9554
SELECT BIN(c1) FROM t1;
9556
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
9558
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
9560
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
9562
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
9564
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
9566
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
9568
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
9570
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
9572
CREATE TABLE t3 (c1 BIT(65));
9573
# Checking for bug #9571
9574
CREATE TABLE t4(i INT, b BIT NOT NULL);
9575
ALTER TABLE t4 ADD PRIMARY KEY (i);
9576
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
9577
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
9578
#Borrowed from suite/ndb/t/ndb_bitfield.test
9579
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9580
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9582
SELECT HEX(c1),HEX(c2) FROM t5;
9584
#Insert permissible NULLs
9585
INSERT IGNORE INTO t5 VALUES(96,null);
9586
INSERT INTO t6 VALUES(null,null);
9587
# Now select using various table access methods (full table scan, range scan, index scan etc.)
9588
## Full table scan ##
9590
SELECT HEX(c1),HEX(c2) FROM t5;
9592
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
9594
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
9595
## Forward index scan, covering ##
9597
SELECT bin(c1) FROM t5;
9598
## Backward index scan, covering ##
9599
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
9600
## Forward index scan, non-covering ##
9601
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
9602
## Backward index scan, non-covering ##
9603
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
9605
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
9606
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
9607
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
9608
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
9609
## Range access, ordered ##
9610
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
9611
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
9612
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
9613
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
9614
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
9615
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
9616
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
9617
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
9618
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
9619
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
9620
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
9621
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
9622
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
9623
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
9624
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
9625
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
9626
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
9627
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
9628
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
9629
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
9630
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
9631
## Range access, backwards scan ##
9632
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
9633
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
9634
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
9635
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
9636
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
9637
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
9638
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
9639
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
9640
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
9641
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
9642
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
9643
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
9644
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
9645
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
9646
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
9647
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
9648
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
9649
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
9650
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
9651
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
9652
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
9653
#Inserting different charachers
9654
CREATE TABLE t7(c1 BIT(1));
9655
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
9658
############# UPDATE ###########
9660
# Update order by limit
9661
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9664
# Update with arithmetic operations
9665
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
9667
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
9670
# Update with NULL ( NULL to number & number to NULL)
9671
UPDATE t6 SET c2=NULL WHERE c1=23;
9673
UPDATE t6 SET c2=10 WHERE c2=NULL;
9676
# Update range values
9677
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
9679
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
9681
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
9684
# Update outside range would be clipped to closest endpoints
9685
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
9687
UPDATE t6 SET c2=-1 WHERE c1=94;
9690
# Update ignore on bad null error
9692
SELECT hex(c1) FROM t5 WHERE c1<>0;
9693
SET SQL_MODE=STRICT_ALL_TABLES;
9694
--error ER_BAD_NULL_ERROR
9695
UPDATE t5 SET c1=NULL WHERE c1<>0;
9696
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
9698
SELECT hex(c1),hex(c2) FROM t5;
9699
SET SQL_MODE=DEFAULT;
9703
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
9706
SELECT hex(c1),hex(c2) FROM t5;
9709
# Update using various access methods
9712
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9713
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9715
# Update using Const
9716
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9717
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
9719
SELECT hex(c1),hex(c2) FROM t5;
9721
# Update using range
9722
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9723
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
9725
SELECT hex(c1),hex(c2) FROM t5;
9726
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9728
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
9731
SELECT hex(c1),hex(c2) FROM t5;
9733
# Update using eq_ref
9734
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9735
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9737
############# DELETE ###########
9742
#Borrowed from suite/ndb/t/ndb_bitfield.test
9743
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9744
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
9746
# Delete by order by limit
9747
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9750
# Delete rows with NULL column
9751
DELETE FROM t6 WHERE c2=NULL;
9754
# Delete with range values
9755
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
9757
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
9759
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
9763
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
9765
SELECT hex(c1),hex(c2) FROM t5;
9768
# Delete using various access methods
9771
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9772
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
9774
# Update using Const
9775
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
9776
DELETE FROM t5 WHERE c1=6 AND c2=6;
9778
SELECT hex(c1),hex(c2) FROM t5;
9780
# Update using range
9781
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
9782
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
9784
SELECT hex(c1),hex(c2) FROM t5;
9785
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9786
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
9788
SELECT hex(c1),hex(c2) FROM t5;
9790
# Update using eq_ref
9791
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9792
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
9794
# Droping the tables
9795
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
9797
####Checking the bit values####
9798
SELECT 0 + b'1010101010101010';
9799
SELECT 0 + (1010101010101010<<2);
9800
######### INSERT/SELECT#########
9802
#### Insert and select 2 bit data into the table####
9803
CREATE TABLE t1(c1 BIT(2));
9804
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
9810
set @v3=repeat('1',@v1);
9811
let $STR0= query_get_value(select @v3 as I,I,1);
9812
eval INSERT INTO t1 VALUES (b'$STR0');
9813
set @v3=repeat('0',@v1);
9814
let $STR1= query_get_value(select @v3 as I,I,1);
9815
eval INSERT INTO t1 VALUES (b'$STR1');
9816
set @v3=repeat('01',@v2);
9817
let $STR2= query_get_value(select @v3 as I,I,1);
9818
eval INSERT INTO t1 VALUES (b'$STR2');
9819
set @v3=repeat('10',@v2);
9820
let $STR3= query_get_value(select @v3 as I,I,1);
9821
eval INSERT INTO t1 VALUES (b'$STR3');
9822
set @v3=repeat('1',@v1);
9823
set @v4=repeat('01',@v2);
9824
set @v5=repeat('10',@v2);
9825
let $STR0= query_get_value(select @v3 as I,I,1);
9826
let $STR2= query_get_value(select @v4 as I,I,1);
9827
let $STR3= query_get_value(select @v5 as I,I,1);
9828
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
9831
INSERT INTO t1 VALUES (b'1010101010101010');
9832
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
9834
SELECT HEX(c1) FROM t1;
9836
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
9838
SELECT OCT(c1) FROM t1;
9840
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
9842
SELECT BIN(c1) FROM t1;
9844
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
9846
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
9848
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
9850
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
9852
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
9854
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
9856
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
9858
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
9860
CREATE TABLE t3 (c1 BIT(65));
9861
# Checking for bug #9571
9862
CREATE TABLE t4(i INT, b BIT NOT NULL);
9863
ALTER TABLE t4 ADD PRIMARY KEY (i);
9864
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
9865
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
9866
#Borrowed from suite/ndb/t/ndb_bitfield.test
9867
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9868
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
9870
SELECT HEX(c1),HEX(c2) FROM t5;
9872
#Insert permissible NULLs
9873
INSERT IGNORE INTO t5 VALUES(96,null);
9874
INSERT INTO t6 VALUES(null,null);
9875
# Now select using various table access methods (full table scan, range scan, index scan etc.)
9876
## Full table scan ##
9878
SELECT HEX(c1),HEX(c2) FROM t5;
9880
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
9882
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
9883
## Forward index scan, covering ##
9885
SELECT bin(c1) FROM t5;
9886
## Backward index scan, covering ##
9887
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
9888
## Forward index scan, non-covering ##
9889
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
9890
## Backward index scan, non-covering ##
9891
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
9893
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
9894
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
9895
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
9896
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
9897
## Range access, ordered ##
9898
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
9899
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
9900
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
9901
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
9902
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
9903
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
9904
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
9905
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
9906
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
9907
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
9908
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
9909
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
9910
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
9911
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
9912
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
9913
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
9914
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
9915
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
9916
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
9917
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
9918
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
9919
## Range access, backwards scan ##
9920
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
9921
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
9922
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
9923
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
9924
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
9925
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
9926
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
9927
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
9928
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
9929
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
9930
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
9931
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
9932
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
9933
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
9934
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
9935
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
9936
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
9937
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
9938
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
9939
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
9940
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
9941
#Inserting different charachers
9942
CREATE TABLE t7(c1 BIT(2));
9943
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
9946
############# UPDATE ###########
9948
# Update order by limit
9949
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
9952
# Update with arithmetic operations
9953
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
9955
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
9958
# Update with NULL ( NULL to number & number to NULL)
9959
UPDATE t6 SET c2=NULL WHERE c1=23;
9961
UPDATE t6 SET c2=10 WHERE c2=NULL;
9964
# Update range values
9965
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
9967
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
9969
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
9972
# Update outside range would be clipped to closest endpoints
9973
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
9975
UPDATE t6 SET c2=-1 WHERE c1=94;
9978
# Update ignore on bad null error
9980
SELECT hex(c1) FROM t5 WHERE c1<>0;
9981
SET SQL_MODE=STRICT_ALL_TABLES;
9982
--error ER_BAD_NULL_ERROR
9983
UPDATE t5 SET c1=NULL WHERE c1<>0;
9984
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
9986
SELECT hex(c1),hex(c2) FROM t5;
9987
SET SQL_MODE=DEFAULT;
9991
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
9994
SELECT hex(c1),hex(c2) FROM t5;
9997
# Update using various access methods
10000
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10001
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10003
# Update using Const
10004
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10005
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
10007
SELECT hex(c1),hex(c2) FROM t5;
10009
# Update using range
10010
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10011
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
10013
SELECT hex(c1),hex(c2) FROM t5;
10014
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10016
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
10019
SELECT hex(c1),hex(c2) FROM t5;
10021
# Update using eq_ref
10022
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10023
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10025
############# DELETE ###########
10030
#Borrowed from suite/ndb/t/ndb_bitfield.test
10031
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10032
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
10034
# Delete by order by limit
10035
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10038
# Delete rows with NULL column
10039
DELETE FROM t6 WHERE c2=NULL;
10042
# Delete with range values
10043
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
10045
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
10047
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
10050
#Multi table delete
10051
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
10053
SELECT hex(c1),hex(c2) FROM t5;
10056
# Delete using various access methods
10059
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10060
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10062
# Update using Const
10063
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10064
DELETE FROM t5 WHERE c1=6 AND c2=6;
10066
SELECT hex(c1),hex(c2) FROM t5;
10068
# Update using range
10069
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10070
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
10072
SELECT hex(c1),hex(c2) FROM t5;
10073
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10074
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10076
SELECT hex(c1),hex(c2) FROM t5;
10078
# Update using eq_ref
10079
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10080
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10082
# Droping the tables
10083
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
10085
####Checking the bit values####
10086
SELECT 0 + b'1010101010101010';
10087
SELECT 0 + (1010101010101010<<4);
10088
######### INSERT/SELECT#########
10090
#### Insert and select 4 bit data into the table####
10091
CREATE TABLE t1(c1 BIT(4));
10092
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
10098
set @v3=repeat('1',@v1);
10099
let $STR0= query_get_value(select @v3 as I,I,1);
10100
eval INSERT INTO t1 VALUES (b'$STR0');
10101
set @v3=repeat('0',@v1);
10102
let $STR1= query_get_value(select @v3 as I,I,1);
10103
eval INSERT INTO t1 VALUES (b'$STR1');
10104
set @v3=repeat('01',@v2);
10105
let $STR2= query_get_value(select @v3 as I,I,1);
10106
eval INSERT INTO t1 VALUES (b'$STR2');
10107
set @v3=repeat('10',@v2);
10108
let $STR3= query_get_value(select @v3 as I,I,1);
10109
eval INSERT INTO t1 VALUES (b'$STR3');
10110
set @v3=repeat('1',@v1);
10111
set @v4=repeat('01',@v2);
10112
set @v5=repeat('10',@v2);
10113
let $STR0= query_get_value(select @v3 as I,I,1);
10114
let $STR2= query_get_value(select @v4 as I,I,1);
10115
let $STR3= query_get_value(select @v5 as I,I,1);
10116
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
10119
INSERT INTO t1 VALUES (b'1010101010101010');
10120
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
10122
SELECT HEX(c1) FROM t1;
10124
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
10126
SELECT OCT(c1) FROM t1;
10128
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
10130
SELECT BIN(c1) FROM t1;
10132
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
10134
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
10136
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
10138
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
10140
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
10142
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
10144
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
10146
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
10148
CREATE TABLE t3 (c1 BIT(65));
10149
# Checking for bug #9571
10150
CREATE TABLE t4(i INT, b BIT NOT NULL);
10151
ALTER TABLE t4 ADD PRIMARY KEY (i);
10152
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
10153
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
10154
#Borrowed from suite/ndb/t/ndb_bitfield.test
10155
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10156
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10158
SELECT HEX(c1),HEX(c2) FROM t5;
10160
#Insert permissible NULLs
10161
INSERT IGNORE INTO t5 VALUES(96,null);
10162
INSERT INTO t6 VALUES(null,null);
10163
# Now select using various table access methods (full table scan, range scan, index scan etc.)
10164
## Full table scan ##
10166
SELECT HEX(c1),HEX(c2) FROM t5;
10168
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
10170
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
10171
## Forward index scan, covering ##
10173
SELECT bin(c1) FROM t5;
10174
## Backward index scan, covering ##
10175
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
10176
## Forward index scan, non-covering ##
10177
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
10178
## Backward index scan, non-covering ##
10179
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
10181
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
10182
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
10183
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
10184
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
10185
## Range access, ordered ##
10186
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
10187
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
10188
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
10189
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
10190
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
10191
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
10192
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
10193
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
10194
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
10195
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
10196
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
10197
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
10198
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
10199
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
10200
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
10201
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
10202
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
10203
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
10204
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
10205
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
10206
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
10207
## Range access, backwards scan ##
10208
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
10209
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
10210
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
10211
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
10212
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
10213
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
10214
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
10215
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
10216
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
10217
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
10218
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
10219
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
10220
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
10221
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
10222
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
10223
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
10224
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
10225
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
10226
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
10227
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
10228
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
10229
#Inserting different charachers
10230
CREATE TABLE t7(c1 BIT(4));
10231
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
10234
############# UPDATE ###########
10236
# Update order by limit
10237
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10240
# Update with arithmetic operations
10241
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
10243
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
10246
# Update with NULL ( NULL to number & number to NULL)
10247
UPDATE t6 SET c2=NULL WHERE c1=23;
10249
UPDATE t6 SET c2=10 WHERE c2=NULL;
10252
# Update range values
10253
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
10255
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
10257
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
10260
# Update outside range would be clipped to closest endpoints
10261
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
10263
UPDATE t6 SET c2=-1 WHERE c1=94;
10266
# Update ignore on bad null error
10268
SELECT hex(c1) FROM t5 WHERE c1<>0;
10269
SET SQL_MODE=STRICT_ALL_TABLES;
10270
--error ER_BAD_NULL_ERROR
10271
UPDATE t5 SET c1=NULL WHERE c1<>0;
10272
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
10274
SELECT hex(c1),hex(c2) FROM t5;
10275
SET SQL_MODE=DEFAULT;
10277
#Multi table update
10279
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
10282
SELECT hex(c1),hex(c2) FROM t5;
10285
# Update using various access methods
10288
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10289
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10291
# Update using Const
10292
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10293
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
10295
SELECT hex(c1),hex(c2) FROM t5;
10297
# Update using range
10298
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10299
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
10301
SELECT hex(c1),hex(c2) FROM t5;
10302
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10304
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
10307
SELECT hex(c1),hex(c2) FROM t5;
10309
# Update using eq_ref
10310
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10311
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10313
############# DELETE ###########
10318
#Borrowed from suite/ndb/t/ndb_bitfield.test
10319
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10320
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
10322
# Delete by order by limit
10323
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10326
# Delete rows with NULL column
10327
DELETE FROM t6 WHERE c2=NULL;
10330
# Delete with range values
10331
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
10333
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
10335
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
10338
#Multi table delete
10339
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
10341
SELECT hex(c1),hex(c2) FROM t5;
10344
# Delete using various access methods
10347
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10348
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10350
# Update using Const
10351
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10352
DELETE FROM t5 WHERE c1=6 AND c2=6;
10354
SELECT hex(c1),hex(c2) FROM t5;
10356
# Update using range
10357
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10358
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
10360
SELECT hex(c1),hex(c2) FROM t5;
10361
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10362
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10364
SELECT hex(c1),hex(c2) FROM t5;
10366
# Update using eq_ref
10367
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10368
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10370
# Droping the tables
10371
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
10373
####Checking the bit values####
10374
SELECT 0 + b'1010101010101010';
10375
SELECT 0 + (1010101010101010<<8);
10376
######### INSERT/SELECT#########
10378
#### Insert and select 8 bit data into the table####
10379
CREATE TABLE t1(c1 BIT(8));
10380
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
10386
set @v3=repeat('1',@v1);
10387
let $STR0= query_get_value(select @v3 as I,I,1);
10388
eval INSERT INTO t1 VALUES (b'$STR0');
10389
set @v3=repeat('0',@v1);
10390
let $STR1= query_get_value(select @v3 as I,I,1);
10391
eval INSERT INTO t1 VALUES (b'$STR1');
10392
set @v3=repeat('01',@v2);
10393
let $STR2= query_get_value(select @v3 as I,I,1);
10394
eval INSERT INTO t1 VALUES (b'$STR2');
10395
set @v3=repeat('10',@v2);
10396
let $STR3= query_get_value(select @v3 as I,I,1);
10397
eval INSERT INTO t1 VALUES (b'$STR3');
10398
set @v3=repeat('1',@v1);
10399
set @v4=repeat('01',@v2);
10400
set @v5=repeat('10',@v2);
10401
let $STR0= query_get_value(select @v3 as I,I,1);
10402
let $STR2= query_get_value(select @v4 as I,I,1);
10403
let $STR3= query_get_value(select @v5 as I,I,1);
10404
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
10407
INSERT INTO t1 VALUES (b'1010101010101010');
10408
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
10410
SELECT HEX(c1) FROM t1;
10412
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
10414
SELECT OCT(c1) FROM t1;
10416
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
10418
SELECT BIN(c1) FROM t1;
10420
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
10422
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
10424
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
10426
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
10428
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
10430
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
10432
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
10434
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
10436
CREATE TABLE t3 (c1 BIT(65));
10437
# Checking for bug #9571
10438
CREATE TABLE t4(i INT, b BIT NOT NULL);
10439
ALTER TABLE t4 ADD PRIMARY KEY (i);
10440
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
10441
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
10442
#Borrowed from suite/ndb/t/ndb_bitfield.test
10443
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10444
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10446
SELECT HEX(c1),HEX(c2) FROM t5;
10448
#Insert permissible NULLs
10449
INSERT IGNORE INTO t5 VALUES(96,null);
10450
INSERT INTO t6 VALUES(null,null);
10451
# Now select using various table access methods (full table scan, range scan, index scan etc.)
10452
## Full table scan ##
10454
SELECT HEX(c1),HEX(c2) FROM t5;
10456
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
10458
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
10459
## Forward index scan, covering ##
10461
SELECT bin(c1) FROM t5;
10462
## Backward index scan, covering ##
10463
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
10464
## Forward index scan, non-covering ##
10465
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
10466
## Backward index scan, non-covering ##
10467
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
10469
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
10470
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
10471
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
10472
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
10473
## Range access, ordered ##
10474
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
10476
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
10478
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
10479
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
10480
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
10481
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
10482
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
10483
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
10484
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
10486
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
10487
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
10488
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
10489
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
10490
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
10491
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
10492
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
10493
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
10494
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
10495
## Range access, backwards scan ##
10496
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
10497
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
10499
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
10501
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
10502
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
10503
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
10504
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
10505
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
10506
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
10507
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
10509
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
10510
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
10511
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
10512
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
10513
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
10514
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
10515
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
10516
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
10517
#Inserting different charachers
10518
CREATE TABLE t7(c1 BIT(8));
10519
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
10522
############# UPDATE ###########
10524
# Update order by limit
10525
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10528
# Update with arithmetic operations
10529
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
10531
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
10534
# Update with NULL ( NULL to number & number to NULL)
10535
UPDATE t6 SET c2=NULL WHERE c1=23;
10537
UPDATE t6 SET c2=10 WHERE c2=NULL;
10540
# Update range values
10541
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
10543
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
10545
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
10548
# Update outside range would be clipped to closest endpoints
10549
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
10551
UPDATE t6 SET c2=-1 WHERE c1=94;
10554
# Update ignore on bad null error
10556
SELECT hex(c1) FROM t5 WHERE c1<>0;
10557
SET SQL_MODE=STRICT_ALL_TABLES;
10558
--error ER_BAD_NULL_ERROR
10559
UPDATE t5 SET c1=NULL WHERE c1<>0;
10560
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
10562
SELECT hex(c1),hex(c2) FROM t5;
10563
SET SQL_MODE=DEFAULT;
10565
#Multi table update
10567
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
10570
SELECT hex(c1),hex(c2) FROM t5;
10573
# Update using various access methods
10576
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10577
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10579
# Update using Const
10580
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10581
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
10583
SELECT hex(c1),hex(c2) FROM t5;
10585
# Update using range
10586
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10587
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
10589
SELECT hex(c1),hex(c2) FROM t5;
10590
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10592
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
10595
SELECT hex(c1),hex(c2) FROM t5;
10597
# Update using eq_ref
10598
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10599
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10601
############# DELETE ###########
10606
#Borrowed from suite/ndb/t/ndb_bitfield.test
10607
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10608
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
10610
# Delete by order by limit
10611
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10614
# Delete rows with NULL column
10615
DELETE FROM t6 WHERE c2=NULL;
10618
# Delete with range values
10619
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
10621
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
10623
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
10626
#Multi table delete
10627
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
10629
SELECT hex(c1),hex(c2) FROM t5;
10632
# Delete using various access methods
10635
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10636
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10638
# Update using Const
10639
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10640
DELETE FROM t5 WHERE c1=6 AND c2=6;
10642
SELECT hex(c1),hex(c2) FROM t5;
10644
# Update using range
10645
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10646
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
10648
SELECT hex(c1),hex(c2) FROM t5;
10649
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10650
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10652
SELECT hex(c1),hex(c2) FROM t5;
10654
# Update using eq_ref
10655
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10656
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10658
# Droping the tables
10659
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
10661
####Checking the bit values####
10662
SELECT 0 + b'1010101010101010';
10663
SELECT 0 + (1010101010101010<<16);
10664
######### INSERT/SELECT#########
10666
#### Insert and select 16 bit data into the table####
10667
CREATE TABLE t1(c1 BIT(16));
10668
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
10674
set @v3=repeat('1',@v1);
10675
let $STR0= query_get_value(select @v3 as I,I,1);
10676
eval INSERT INTO t1 VALUES (b'$STR0');
10677
set @v3=repeat('0',@v1);
10678
let $STR1= query_get_value(select @v3 as I,I,1);
10679
eval INSERT INTO t1 VALUES (b'$STR1');
10680
set @v3=repeat('01',@v2);
10681
let $STR2= query_get_value(select @v3 as I,I,1);
10682
eval INSERT INTO t1 VALUES (b'$STR2');
10683
set @v3=repeat('10',@v2);
10684
let $STR3= query_get_value(select @v3 as I,I,1);
10685
eval INSERT INTO t1 VALUES (b'$STR3');
10686
set @v3=repeat('1',@v1);
10687
set @v4=repeat('01',@v2);
10688
set @v5=repeat('10',@v2);
10689
let $STR0= query_get_value(select @v3 as I,I,1);
10690
let $STR2= query_get_value(select @v4 as I,I,1);
10691
let $STR3= query_get_value(select @v5 as I,I,1);
10692
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
10695
INSERT INTO t1 VALUES (b'1010101010101010');
10696
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
10698
SELECT HEX(c1) FROM t1;
10700
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
10702
SELECT OCT(c1) FROM t1;
10704
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
10706
SELECT BIN(c1) FROM t1;
10708
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
10710
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
10712
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
10714
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
10716
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
10718
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
10720
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
10722
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
10724
CREATE TABLE t3 (c1 BIT(65));
10725
# Checking for bug #9571
10726
CREATE TABLE t4(i INT, b BIT NOT NULL);
10727
ALTER TABLE t4 ADD PRIMARY KEY (i);
10728
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
10729
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
10730
#Borrowed from suite/ndb/t/ndb_bitfield.test
10731
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10732
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10734
SELECT HEX(c1),HEX(c2) FROM t5;
10736
#Insert permissible NULLs
10737
INSERT IGNORE INTO t5 VALUES(96,null);
10738
INSERT INTO t6 VALUES(null,null);
10739
# Now select using various table access methods (full table scan, range scan, index scan etc.)
10740
## Full table scan ##
10742
SELECT HEX(c1),HEX(c2) FROM t5;
10744
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
10746
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
10747
## Forward index scan, covering ##
10749
SELECT bin(c1) FROM t5;
10750
## Backward index scan, covering ##
10751
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
10752
## Forward index scan, non-covering ##
10753
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
10754
## Backward index scan, non-covering ##
10755
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
10757
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
10758
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
10759
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
10760
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
10761
## Range access, ordered ##
10762
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
10763
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
10764
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
10765
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
10766
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
10767
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
10768
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
10769
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
10770
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
10771
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
10772
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
10773
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
10774
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
10775
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
10776
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
10777
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
10778
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
10779
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
10780
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
10781
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
10782
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
10783
## Range access, backwards scan ##
10784
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
10785
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
10786
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
10787
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
10788
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
10789
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
10790
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
10791
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
10792
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
10793
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
10794
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
10795
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
10796
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
10797
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
10798
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
10799
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
10800
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
10801
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
10802
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
10803
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
10804
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
10805
#Inserting different charachers
10806
CREATE TABLE t7(c1 BIT(16));
10807
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
10810
############# UPDATE ###########
10812
# Update order by limit
10813
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10816
# Update with arithmetic operations
10817
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
10819
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
10822
# Update with NULL ( NULL to number & number to NULL)
10823
UPDATE t6 SET c2=NULL WHERE c1=23;
10825
UPDATE t6 SET c2=10 WHERE c2=NULL;
10828
# Update range values
10829
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
10831
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
10833
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
10836
# Update outside range would be clipped to closest endpoints
10837
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
10839
UPDATE t6 SET c2=-1 WHERE c1=94;
10842
# Update ignore on bad null error
10844
SELECT hex(c1) FROM t5 WHERE c1<>0;
10845
SET SQL_MODE=STRICT_ALL_TABLES;
10846
--error ER_BAD_NULL_ERROR
10847
UPDATE t5 SET c1=NULL WHERE c1<>0;
10848
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
10850
SELECT hex(c1),hex(c2) FROM t5;
10851
SET SQL_MODE=DEFAULT;
10853
#Multi table update
10855
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
10858
SELECT hex(c1),hex(c2) FROM t5;
10861
# Update using various access methods
10864
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10865
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10867
# Update using Const
10868
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10869
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
10871
SELECT hex(c1),hex(c2) FROM t5;
10873
# Update using range
10874
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10875
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
10877
SELECT hex(c1),hex(c2) FROM t5;
10878
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10880
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
10883
SELECT hex(c1),hex(c2) FROM t5;
10885
# Update using eq_ref
10886
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10887
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10889
############# DELETE ###########
10894
#Borrowed from suite/ndb/t/ndb_bitfield.test
10895
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
10896
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
10898
# Delete by order by limit
10899
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
10902
# Delete rows with NULL column
10903
DELETE FROM t6 WHERE c2=NULL;
10906
# Delete with range values
10907
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
10909
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
10911
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
10914
#Multi table delete
10915
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
10917
SELECT hex(c1),hex(c2) FROM t5;
10920
# Delete using various access methods
10923
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10924
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
10926
# Update using Const
10927
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
10928
DELETE FROM t5 WHERE c1=6 AND c2=6;
10930
SELECT hex(c1),hex(c2) FROM t5;
10932
# Update using range
10933
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
10934
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
10936
SELECT hex(c1),hex(c2) FROM t5;
10937
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10938
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
10940
SELECT hex(c1),hex(c2) FROM t5;
10942
# Update using eq_ref
10943
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10944
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
10946
# Droping the tables
10947
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
10949
####Checking the bit values####
10950
SELECT 0 + b'1010101010101010';
10951
SELECT 0 + (1010101010101010<<32);
10952
######### INSERT/SELECT#########
10954
#### Insert and select 32 bit data into the table####
10955
CREATE TABLE t1(c1 BIT(32));
10956
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
10962
set @v3=repeat('1',@v1);
10963
let $STR0= query_get_value(select @v3 as I,I,1);
10964
eval INSERT INTO t1 VALUES (b'$STR0');
10965
set @v3=repeat('0',@v1);
10966
let $STR1= query_get_value(select @v3 as I,I,1);
10967
eval INSERT INTO t1 VALUES (b'$STR1');
10968
set @v3=repeat('01',@v2);
10969
let $STR2= query_get_value(select @v3 as I,I,1);
10970
eval INSERT INTO t1 VALUES (b'$STR2');
10971
set @v3=repeat('10',@v2);
10972
let $STR3= query_get_value(select @v3 as I,I,1);
10973
eval INSERT INTO t1 VALUES (b'$STR3');
10974
set @v3=repeat('1',@v1);
10975
set @v4=repeat('01',@v2);
10976
set @v5=repeat('10',@v2);
10977
let $STR0= query_get_value(select @v3 as I,I,1);
10978
let $STR2= query_get_value(select @v4 as I,I,1);
10979
let $STR3= query_get_value(select @v5 as I,I,1);
10980
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
10983
INSERT INTO t1 VALUES (b'1010101010101010');
10984
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
10986
SELECT HEX(c1) FROM t1;
10988
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
10990
SELECT OCT(c1) FROM t1;
10992
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
10994
SELECT BIN(c1) FROM t1;
10996
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
10998
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
11000
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
11002
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
11004
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
11006
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
11008
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
11010
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
11012
CREATE TABLE t3 (c1 BIT(65));
11013
# Checking for bug #9571
11014
CREATE TABLE t4(i INT, b BIT NOT NULL);
11015
ALTER TABLE t4 ADD PRIMARY KEY (i);
11016
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
11017
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
11018
#Borrowed from suite/ndb/t/ndb_bitfield.test
11019
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11020
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11022
SELECT HEX(c1),HEX(c2) FROM t5;
11024
#Insert permissible NULLs
11025
INSERT IGNORE INTO t5 VALUES(96,null);
11026
INSERT INTO t6 VALUES(null,null);
11027
# Now select using various table access methods (full table scan, range scan, index scan etc.)
11028
## Full table scan ##
11030
SELECT HEX(c1),HEX(c2) FROM t5;
11032
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
11034
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
11035
## Forward index scan, covering ##
11037
SELECT bin(c1) FROM t5;
11038
## Backward index scan, covering ##
11039
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
11040
## Forward index scan, non-covering ##
11041
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
11042
## Backward index scan, non-covering ##
11043
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
11045
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
11046
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
11047
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
11048
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
11049
## Range access, ordered ##
11050
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
11051
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
11052
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
11053
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
11054
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
11055
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
11056
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
11057
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
11058
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
11059
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
11060
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
11061
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
11062
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
11063
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
11064
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
11065
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
11066
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
11067
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
11068
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
11069
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
11070
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
11071
## Range access, backwards scan ##
11072
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
11073
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
11074
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
11075
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
11076
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
11077
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
11078
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
11079
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
11080
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
11081
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
11082
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
11083
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
11084
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
11085
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
11086
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
11087
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
11088
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
11089
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
11090
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
11091
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
11092
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
11093
#Inserting different charachers
11094
CREATE TABLE t7(c1 BIT(32));
11095
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
11098
############# UPDATE ###########
11100
# Update order by limit
11101
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11104
# Update with arithmetic operations
11105
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
11107
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
11110
# Update with NULL ( NULL to number & number to NULL)
11111
UPDATE t6 SET c2=NULL WHERE c1=23;
11113
UPDATE t6 SET c2=10 WHERE c2=NULL;
11116
# Update range values
11117
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
11119
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
11121
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
11124
# Update outside range would be clipped to closest endpoints
11125
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
11127
UPDATE t6 SET c2=-1 WHERE c1=94;
11130
# Update ignore on bad null error
11132
SELECT hex(c1) FROM t5 WHERE c1<>0;
11133
SET SQL_MODE=STRICT_ALL_TABLES;
11134
--error ER_BAD_NULL_ERROR
11135
UPDATE t5 SET c1=NULL WHERE c1<>0;
11136
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
11138
SELECT hex(c1),hex(c2) FROM t5;
11139
SET SQL_MODE=DEFAULT;
11141
#Multi table update
11143
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
11146
SELECT hex(c1),hex(c2) FROM t5;
11149
# Update using various access methods
11152
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11153
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11155
# Update using Const
11156
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11157
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
11159
SELECT hex(c1),hex(c2) FROM t5;
11161
# Update using range
11162
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11163
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
11165
SELECT hex(c1),hex(c2) FROM t5;
11166
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11168
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
11171
SELECT hex(c1),hex(c2) FROM t5;
11173
# Update using eq_ref
11174
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11175
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11177
############# DELETE ###########
11182
#Borrowed from suite/ndb/t/ndb_bitfield.test
11183
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11184
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
11186
# Delete by order by limit
11187
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11190
# Delete rows with NULL column
11191
DELETE FROM t6 WHERE c2=NULL;
11194
# Delete with range values
11195
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
11197
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
11199
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
11202
#Multi table delete
11203
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
11205
SELECT hex(c1),hex(c2) FROM t5;
11208
# Delete using various access methods
11211
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11212
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11214
# Update using Const
11215
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11216
DELETE FROM t5 WHERE c1=6 AND c2=6;
11218
SELECT hex(c1),hex(c2) FROM t5;
11220
# Update using range
11221
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11222
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
11224
SELECT hex(c1),hex(c2) FROM t5;
11225
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11226
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11228
SELECT hex(c1),hex(c2) FROM t5;
11230
# Update using eq_ref
11231
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11232
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11234
# Droping the tables
11235
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
11237
####Checking the bit values####
11238
SELECT 0 + b'1010101010101010';
11239
SELECT 0 + (1010101010101010<<64);
11240
######### INSERT/SELECT#########
11242
#### Insert and select 64 bit data into the table####
11243
CREATE TABLE t1(c1 BIT(64));
11244
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
11250
set @v3=repeat('1',@v1);
11251
let $STR0= query_get_value(select @v3 as I,I,1);
11252
eval INSERT INTO t1 VALUES (b'$STR0');
11253
set @v3=repeat('0',@v1);
11254
let $STR1= query_get_value(select @v3 as I,I,1);
11255
eval INSERT INTO t1 VALUES (b'$STR1');
11256
set @v3=repeat('01',@v2);
11257
let $STR2= query_get_value(select @v3 as I,I,1);
11258
eval INSERT INTO t1 VALUES (b'$STR2');
11259
set @v3=repeat('10',@v2);
11260
let $STR3= query_get_value(select @v3 as I,I,1);
11261
eval INSERT INTO t1 VALUES (b'$STR3');
11262
set @v3=repeat('1',@v1);
11263
set @v4=repeat('01',@v2);
11264
set @v5=repeat('10',@v2);
11265
let $STR0= query_get_value(select @v3 as I,I,1);
11266
let $STR2= query_get_value(select @v4 as I,I,1);
11267
let $STR3= query_get_value(select @v5 as I,I,1);
11268
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
11271
INSERT INTO t1 VALUES (b'1010101010101010');
11272
INSERT INTO t2 VALUES (b'1010101010101010', b'1010101010101010', b'1010101010101010');
11274
SELECT HEX(c1) FROM t1;
11276
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
11278
SELECT OCT(c1) FROM t1;
11280
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
11282
SELECT BIN(c1) FROM t1;
11284
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
11286
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
11288
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
11290
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
11292
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
11294
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
11296
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
11298
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
11300
CREATE TABLE t3 (c1 BIT(65));
11301
# Checking for bug #9571
11302
CREATE TABLE t4(i INT, b BIT NOT NULL);
11303
ALTER TABLE t4 ADD PRIMARY KEY (i);
11304
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
11305
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
11306
#Borrowed from suite/ndb/t/ndb_bitfield.test
11307
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11308
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11310
SELECT HEX(c1),HEX(c2) FROM t5;
11312
#Insert permissible NULLs
11313
INSERT IGNORE INTO t5 VALUES(96,null);
11314
INSERT INTO t6 VALUES(null,null);
11315
# Now select using various table access methods (full table scan, range scan, index scan etc.)
11316
## Full table scan ##
11318
SELECT HEX(c1),HEX(c2) FROM t5;
11320
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
11322
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
11323
## Forward index scan, covering ##
11325
SELECT bin(c1) FROM t5;
11326
## Backward index scan, covering ##
11327
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
11328
## Forward index scan, non-covering ##
11329
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
11330
## Backward index scan, non-covering ##
11331
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
11333
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
11334
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
11335
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
11336
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
11337
## Range access, ordered ##
11338
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
11339
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
11340
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
11341
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
11342
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
11343
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
11344
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
11345
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
11346
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
11347
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
11348
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
11349
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
11350
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
11351
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
11352
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
11353
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
11354
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
11355
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
11356
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
11357
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
11358
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
11359
## Range access, backwards scan ##
11360
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
11361
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
11362
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
11363
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
11364
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
11365
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
11366
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
11367
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
11368
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
11369
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
11370
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
11371
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
11372
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
11373
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
11374
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
11375
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
11376
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
11377
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
11378
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
11379
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
11380
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
11381
#Inserting different charachers
11382
CREATE TABLE t7(c1 BIT(64));
11383
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
11386
############# UPDATE ###########
11388
# Update order by limit
11389
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11392
# Update with arithmetic operations
11393
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
11395
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
11398
# Update with NULL ( NULL to number & number to NULL)
11399
UPDATE t6 SET c2=NULL WHERE c1=23;
11401
UPDATE t6 SET c2=10 WHERE c2=NULL;
11404
# Update range values
11405
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
11407
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
11409
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
11412
# Update outside range would be clipped to closest endpoints
11413
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
11415
UPDATE t6 SET c2=-1 WHERE c1=94;
11418
# Update ignore on bad null error
11420
SELECT hex(c1) FROM t5 WHERE c1<>0;
11421
SET SQL_MODE=STRICT_ALL_TABLES;
11422
--error ER_BAD_NULL_ERROR
11423
UPDATE t5 SET c1=NULL WHERE c1<>0;
11424
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
11426
SELECT hex(c1),hex(c2) FROM t5;
11427
SET SQL_MODE=DEFAULT;
11429
#Multi table update
11431
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
11434
SELECT hex(c1),hex(c2) FROM t5;
11437
# Update using various access methods
11440
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11441
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11443
# Update using Const
11444
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11445
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
11447
SELECT hex(c1),hex(c2) FROM t5;
11449
# Update using range
11450
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11451
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
11453
SELECT hex(c1),hex(c2) FROM t5;
11454
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11456
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
11459
SELECT hex(c1),hex(c2) FROM t5;
11461
# Update using eq_ref
11462
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11463
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11465
############# DELETE ###########
11470
#Borrowed from suite/ndb/t/ndb_bitfield.test
11471
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11472
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
11474
# Delete by order by limit
11475
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11478
# Delete rows with NULL column
11479
DELETE FROM t6 WHERE c2=NULL;
11482
# Delete with range values
11483
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
11485
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
11487
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
11490
#Multi table delete
11491
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
11493
SELECT hex(c1),hex(c2) FROM t5;
11496
# Delete using various access methods
11499
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11500
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11502
# Update using Const
11503
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11504
DELETE FROM t5 WHERE c1=6 AND c2=6;
11506
SELECT hex(c1),hex(c2) FROM t5;
11508
# Update using range
11509
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11510
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
11512
SELECT hex(c1),hex(c2) FROM t5;
11513
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11514
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11516
SELECT hex(c1),hex(c2) FROM t5;
11518
# Update using eq_ref
11519
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11520
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11522
# Droping the tables
11523
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
11525
####Checking the bit values####
11526
SELECT 0 + b'101010101010101010101010101010';
11527
SELECT 0 + (101010101010101010101010101010<<0);
11528
######### INSERT/SELECT#########
11530
#### Insert and select 0 bit data into the table####
11531
CREATE TABLE t1(c1 BIT(0));
11532
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
11538
set @v3=repeat('1',@v1);
11539
let $STR0= query_get_value(select @v3 as I,I,1);
11540
eval INSERT INTO t1 VALUES (b'$STR0');
11541
set @v3=repeat('0',@v1);
11542
let $STR1= query_get_value(select @v3 as I,I,1);
11543
eval INSERT INTO t1 VALUES (b'$STR1');
11544
set @v3=repeat('01',@v2);
11545
let $STR2= query_get_value(select @v3 as I,I,1);
11546
eval INSERT INTO t1 VALUES (b'$STR2');
11547
set @v3=repeat('10',@v2);
11548
let $STR3= query_get_value(select @v3 as I,I,1);
11549
eval INSERT INTO t1 VALUES (b'$STR3');
11550
set @v3=repeat('1',@v1);
11551
set @v4=repeat('01',@v2);
11552
set @v5=repeat('10',@v2);
11553
let $STR0= query_get_value(select @v3 as I,I,1);
11554
let $STR2= query_get_value(select @v4 as I,I,1);
11555
let $STR3= query_get_value(select @v5 as I,I,1);
11556
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
11559
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
11560
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
11562
SELECT HEX(c1) FROM t1;
11564
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
11566
SELECT OCT(c1) FROM t1;
11568
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
11570
SELECT BIN(c1) FROM t1;
11572
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
11574
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
11576
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
11578
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
11580
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
11582
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
11584
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
11586
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
11588
CREATE TABLE t3 (c1 BIT(65));
11589
# Checking for bug #9571
11590
CREATE TABLE t4(i INT, b BIT NOT NULL);
11591
ALTER TABLE t4 ADD PRIMARY KEY (i);
11592
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
11593
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
11594
#Borrowed from suite/ndb/t/ndb_bitfield.test
11595
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11596
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11598
SELECT HEX(c1),HEX(c2) FROM t5;
11600
#Insert permissible NULLs
11601
INSERT IGNORE INTO t5 VALUES(96,null);
11602
INSERT INTO t6 VALUES(null,null);
11603
# Now select using various table access methods (full table scan, range scan, index scan etc.)
11604
## Full table scan ##
11606
SELECT HEX(c1),HEX(c2) FROM t5;
11608
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
11610
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
11611
## Forward index scan, covering ##
11613
SELECT bin(c1) FROM t5;
11614
## Backward index scan, covering ##
11615
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
11616
## Forward index scan, non-covering ##
11617
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
11618
## Backward index scan, non-covering ##
11619
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
11621
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
11622
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
11623
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
11624
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
11625
## Range access, ordered ##
11626
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
11627
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
11628
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
11629
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
11630
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
11631
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
11632
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
11633
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
11634
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
11635
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
11636
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
11637
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
11638
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
11639
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
11640
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
11641
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
11642
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
11643
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
11644
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
11645
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
11646
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
11647
## Range access, backwards scan ##
11648
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
11649
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
11650
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
11651
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
11652
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
11653
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
11654
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
11655
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
11656
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
11657
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
11658
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
11659
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
11660
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
11661
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
11662
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
11663
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
11664
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
11665
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
11666
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
11667
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
11668
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
11669
#Inserting different charachers
11670
CREATE TABLE t7(c1 BIT(0));
11671
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
11674
############# UPDATE ###########
11676
# Update order by limit
11677
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11680
# Update with arithmetic operations
11681
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
11683
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
11686
# Update with NULL ( NULL to number & number to NULL)
11687
UPDATE t6 SET c2=NULL WHERE c1=23;
11689
UPDATE t6 SET c2=10 WHERE c2=NULL;
11692
# Update range values
11693
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
11695
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
11697
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
11700
# Update outside range would be clipped to closest endpoints
11701
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
11703
UPDATE t6 SET c2=-1 WHERE c1=94;
11706
# Update ignore on bad null error
11708
SELECT hex(c1) FROM t5 WHERE c1<>0;
11709
SET SQL_MODE=STRICT_ALL_TABLES;
11710
--error ER_BAD_NULL_ERROR
11711
UPDATE t5 SET c1=NULL WHERE c1<>0;
11712
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
11714
SELECT hex(c1),hex(c2) FROM t5;
11715
SET SQL_MODE=DEFAULT;
11717
#Multi table update
11719
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
11722
SELECT hex(c1),hex(c2) FROM t5;
11725
# Update using various access methods
11728
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11729
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11731
# Update using Const
11732
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11733
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
11735
SELECT hex(c1),hex(c2) FROM t5;
11737
# Update using range
11738
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11739
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
11741
SELECT hex(c1),hex(c2) FROM t5;
11742
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11744
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
11747
SELECT hex(c1),hex(c2) FROM t5;
11749
# Update using eq_ref
11750
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11751
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11753
############# DELETE ###########
11758
#Borrowed from suite/ndb/t/ndb_bitfield.test
11759
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11760
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
11762
# Delete by order by limit
11763
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11766
# Delete rows with NULL column
11767
DELETE FROM t6 WHERE c2=NULL;
11770
# Delete with range values
11771
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
11773
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
11775
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
11778
#Multi table delete
11779
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
11781
SELECT hex(c1),hex(c2) FROM t5;
11784
# Delete using various access methods
11787
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11788
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
11790
# Update using Const
11791
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
11792
DELETE FROM t5 WHERE c1=6 AND c2=6;
11794
SELECT hex(c1),hex(c2) FROM t5;
11796
# Update using range
11797
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
11798
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
11800
SELECT hex(c1),hex(c2) FROM t5;
11801
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11802
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
11804
SELECT hex(c1),hex(c2) FROM t5;
11806
# Update using eq_ref
11807
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11808
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
11810
# Droping the tables
11811
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
11813
####Checking the bit values####
11814
SELECT 0 + b'101010101010101010101010101010';
11815
SELECT 0 + (101010101010101010101010101010<<1);
11816
######### INSERT/SELECT#########
11818
#### Insert and select 1 bit data into the table####
11819
CREATE TABLE t1(c1 BIT(1));
11820
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
11826
set @v3=repeat('1',@v1);
11827
let $STR0= query_get_value(select @v3 as I,I,1);
11828
eval INSERT INTO t1 VALUES (b'$STR0');
11829
set @v3=repeat('0',@v1);
11830
let $STR1= query_get_value(select @v3 as I,I,1);
11831
eval INSERT INTO t1 VALUES (b'$STR1');
11832
set @v3=repeat('01',@v2);
11833
let $STR2= query_get_value(select @v3 as I,I,1);
11834
eval INSERT INTO t1 VALUES (b'$STR2');
11835
set @v3=repeat('10',@v2);
11836
let $STR3= query_get_value(select @v3 as I,I,1);
11837
eval INSERT INTO t1 VALUES (b'$STR3');
11838
set @v3=repeat('1',@v1);
11839
set @v4=repeat('01',@v2);
11840
set @v5=repeat('10',@v2);
11841
let $STR0= query_get_value(select @v3 as I,I,1);
11842
let $STR2= query_get_value(select @v4 as I,I,1);
11843
let $STR3= query_get_value(select @v5 as I,I,1);
11844
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
11847
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
11848
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
11850
SELECT HEX(c1) FROM t1;
11852
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
11854
SELECT OCT(c1) FROM t1;
11856
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
11858
SELECT BIN(c1) FROM t1;
11860
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
11862
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
11864
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
11866
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
11868
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
11870
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
11872
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
11874
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
11876
CREATE TABLE t3 (c1 BIT(65));
11877
# Checking for bug #9571
11878
CREATE TABLE t4(i INT, b BIT NOT NULL);
11879
ALTER TABLE t4 ADD PRIMARY KEY (i);
11880
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
11881
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
11882
#Borrowed from suite/ndb/t/ndb_bitfield.test
11883
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11884
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
11886
SELECT HEX(c1),HEX(c2) FROM t5;
11888
#Insert permissible NULLs
11889
INSERT IGNORE INTO t5 VALUES(96,null);
11890
INSERT INTO t6 VALUES(null,null);
11891
# Now select using various table access methods (full table scan, range scan, index scan etc.)
11892
## Full table scan ##
11894
SELECT HEX(c1),HEX(c2) FROM t5;
11896
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
11898
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
11899
## Forward index scan, covering ##
11901
SELECT bin(c1) FROM t5;
11902
## Backward index scan, covering ##
11903
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
11904
## Forward index scan, non-covering ##
11905
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
11906
## Backward index scan, non-covering ##
11907
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
11909
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
11910
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
11911
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
11912
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
11913
## Range access, ordered ##
11914
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
11915
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
11916
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
11917
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
11918
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
11919
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
11920
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
11921
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
11922
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
11923
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
11924
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
11925
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
11926
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
11927
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
11928
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
11929
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
11930
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
11931
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
11932
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
11933
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
11934
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
11935
## Range access, backwards scan ##
11936
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
11937
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
11938
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
11939
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
11940
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
11941
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
11942
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
11943
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
11944
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
11945
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
11946
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
11947
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
11948
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
11949
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
11950
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
11951
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
11952
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
11953
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
11954
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
11955
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
11956
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
11957
#Inserting different charachers
11958
CREATE TABLE t7(c1 BIT(1));
11959
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
11962
############# UPDATE ###########
11964
# Update order by limit
11965
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
11968
# Update with arithmetic operations
11969
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
11971
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
11974
# Update with NULL ( NULL to number & number to NULL)
11975
UPDATE t6 SET c2=NULL WHERE c1=23;
11977
UPDATE t6 SET c2=10 WHERE c2=NULL;
11980
# Update range values
11981
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
11983
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
11985
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
11988
# Update outside range would be clipped to closest endpoints
11989
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
11991
UPDATE t6 SET c2=-1 WHERE c1=94;
11994
# Update ignore on bad null error
11996
SELECT hex(c1) FROM t5 WHERE c1<>0;
11997
SET SQL_MODE=STRICT_ALL_TABLES;
11998
--error ER_BAD_NULL_ERROR
11999
UPDATE t5 SET c1=NULL WHERE c1<>0;
12000
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
12002
SELECT hex(c1),hex(c2) FROM t5;
12003
SET SQL_MODE=DEFAULT;
12005
#Multi table update
12007
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
12010
SELECT hex(c1),hex(c2) FROM t5;
12013
# Update using various access methods
12016
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12017
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12019
# Update using Const
12020
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12021
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
12023
SELECT hex(c1),hex(c2) FROM t5;
12025
# Update using range
12026
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12027
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
12029
SELECT hex(c1),hex(c2) FROM t5;
12030
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12032
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
12035
SELECT hex(c1),hex(c2) FROM t5;
12037
# Update using eq_ref
12038
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12039
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12041
############# DELETE ###########
12046
#Borrowed from suite/ndb/t/ndb_bitfield.test
12047
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12048
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
12050
# Delete by order by limit
12051
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12054
# Delete rows with NULL column
12055
DELETE FROM t6 WHERE c2=NULL;
12058
# Delete with range values
12059
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
12061
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
12063
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
12066
#Multi table delete
12067
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
12069
SELECT hex(c1),hex(c2) FROM t5;
12072
# Delete using various access methods
12075
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12076
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12078
# Update using Const
12079
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12080
DELETE FROM t5 WHERE c1=6 AND c2=6;
12082
SELECT hex(c1),hex(c2) FROM t5;
12084
# Update using range
12085
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12086
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
12088
SELECT hex(c1),hex(c2) FROM t5;
12089
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12090
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12092
SELECT hex(c1),hex(c2) FROM t5;
12094
# Update using eq_ref
12095
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12096
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12098
# Droping the tables
12099
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
12101
####Checking the bit values####
12102
SELECT 0 + b'101010101010101010101010101010';
12103
SELECT 0 + (101010101010101010101010101010<<2);
12104
######### INSERT/SELECT#########
12106
#### Insert and select 2 bit data into the table####
12107
CREATE TABLE t1(c1 BIT(2));
12108
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
12114
set @v3=repeat('1',@v1);
12115
let $STR0= query_get_value(select @v3 as I,I,1);
12116
eval INSERT INTO t1 VALUES (b'$STR0');
12117
set @v3=repeat('0',@v1);
12118
let $STR1= query_get_value(select @v3 as I,I,1);
12119
eval INSERT INTO t1 VALUES (b'$STR1');
12120
set @v3=repeat('01',@v2);
12121
let $STR2= query_get_value(select @v3 as I,I,1);
12122
eval INSERT INTO t1 VALUES (b'$STR2');
12123
set @v3=repeat('10',@v2);
12124
let $STR3= query_get_value(select @v3 as I,I,1);
12125
eval INSERT INTO t1 VALUES (b'$STR3');
12126
set @v3=repeat('1',@v1);
12127
set @v4=repeat('01',@v2);
12128
set @v5=repeat('10',@v2);
12129
let $STR0= query_get_value(select @v3 as I,I,1);
12130
let $STR2= query_get_value(select @v4 as I,I,1);
12131
let $STR3= query_get_value(select @v5 as I,I,1);
12132
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
12135
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
12136
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
12138
SELECT HEX(c1) FROM t1;
12140
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
12142
SELECT OCT(c1) FROM t1;
12144
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
12146
SELECT BIN(c1) FROM t1;
12148
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
12150
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
12152
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
12154
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
12156
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
12158
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
12160
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
12162
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
12164
CREATE TABLE t3 (c1 BIT(65));
12165
# Checking for bug #9571
12166
CREATE TABLE t4(i INT, b BIT NOT NULL);
12167
ALTER TABLE t4 ADD PRIMARY KEY (i);
12168
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
12169
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
12170
#Borrowed from suite/ndb/t/ndb_bitfield.test
12171
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12172
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12174
SELECT HEX(c1),HEX(c2) FROM t5;
12176
#Insert permissible NULLs
12177
INSERT IGNORE INTO t5 VALUES(96,null);
12178
INSERT INTO t6 VALUES(null,null);
12179
# Now select using various table access methods (full table scan, range scan, index scan etc.)
12180
## Full table scan ##
12182
SELECT HEX(c1),HEX(c2) FROM t5;
12184
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
12186
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
12187
## Forward index scan, covering ##
12189
SELECT bin(c1) FROM t5;
12190
## Backward index scan, covering ##
12191
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
12192
## Forward index scan, non-covering ##
12193
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
12194
## Backward index scan, non-covering ##
12195
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
12197
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
12198
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
12199
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
12200
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
12201
## Range access, ordered ##
12202
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
12203
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
12204
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
12205
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
12206
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
12207
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
12208
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
12209
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
12210
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
12211
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
12212
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
12213
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
12214
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
12215
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
12216
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
12217
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
12218
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
12219
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
12220
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
12221
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
12222
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
12223
## Range access, backwards scan ##
12224
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
12225
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
12226
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
12227
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
12228
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
12229
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
12230
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
12231
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
12232
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
12233
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
12234
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
12235
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
12236
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
12237
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
12238
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
12239
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
12240
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
12241
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
12242
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
12243
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
12244
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
12245
#Inserting different charachers
12246
CREATE TABLE t7(c1 BIT(2));
12247
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
12250
############# UPDATE ###########
12252
# Update order by limit
12253
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12256
# Update with arithmetic operations
12257
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
12259
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
12262
# Update with NULL ( NULL to number & number to NULL)
12263
UPDATE t6 SET c2=NULL WHERE c1=23;
12265
UPDATE t6 SET c2=10 WHERE c2=NULL;
12268
# Update range values
12269
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
12271
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
12273
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
12276
# Update outside range would be clipped to closest endpoints
12277
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
12279
UPDATE t6 SET c2=-1 WHERE c1=94;
12282
# Update ignore on bad null error
12284
SELECT hex(c1) FROM t5 WHERE c1<>0;
12285
SET SQL_MODE=STRICT_ALL_TABLES;
12286
--error ER_BAD_NULL_ERROR
12287
UPDATE t5 SET c1=NULL WHERE c1<>0;
12288
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
12290
SELECT hex(c1),hex(c2) FROM t5;
12291
SET SQL_MODE=DEFAULT;
12293
#Multi table update
12295
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
12298
SELECT hex(c1),hex(c2) FROM t5;
12301
# Update using various access methods
12304
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12305
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12307
# Update using Const
12308
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12309
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
12311
SELECT hex(c1),hex(c2) FROM t5;
12313
# Update using range
12314
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12315
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
12317
SELECT hex(c1),hex(c2) FROM t5;
12318
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12320
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
12323
SELECT hex(c1),hex(c2) FROM t5;
12325
# Update using eq_ref
12326
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12327
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12329
############# DELETE ###########
12334
#Borrowed from suite/ndb/t/ndb_bitfield.test
12335
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12336
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
12338
# Delete by order by limit
12339
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12342
# Delete rows with NULL column
12343
DELETE FROM t6 WHERE c2=NULL;
12346
# Delete with range values
12347
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
12349
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
12351
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
12354
#Multi table delete
12355
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
12357
SELECT hex(c1),hex(c2) FROM t5;
12360
# Delete using various access methods
12363
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12364
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12366
# Update using Const
12367
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12368
DELETE FROM t5 WHERE c1=6 AND c2=6;
12370
SELECT hex(c1),hex(c2) FROM t5;
12372
# Update using range
12373
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12374
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
12376
SELECT hex(c1),hex(c2) FROM t5;
12377
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12378
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12380
SELECT hex(c1),hex(c2) FROM t5;
12382
# Update using eq_ref
12383
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12384
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12386
# Droping the tables
12387
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
12389
####Checking the bit values####
12390
SELECT 0 + b'101010101010101010101010101010';
12391
SELECT 0 + (101010101010101010101010101010<<4);
12392
######### INSERT/SELECT#########
12394
#### Insert and select 4 bit data into the table####
12395
CREATE TABLE t1(c1 BIT(4));
12396
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
12402
set @v3=repeat('1',@v1);
12403
let $STR0= query_get_value(select @v3 as I,I,1);
12404
eval INSERT INTO t1 VALUES (b'$STR0');
12405
set @v3=repeat('0',@v1);
12406
let $STR1= query_get_value(select @v3 as I,I,1);
12407
eval INSERT INTO t1 VALUES (b'$STR1');
12408
set @v3=repeat('01',@v2);
12409
let $STR2= query_get_value(select @v3 as I,I,1);
12410
eval INSERT INTO t1 VALUES (b'$STR2');
12411
set @v3=repeat('10',@v2);
12412
let $STR3= query_get_value(select @v3 as I,I,1);
12413
eval INSERT INTO t1 VALUES (b'$STR3');
12414
set @v3=repeat('1',@v1);
12415
set @v4=repeat('01',@v2);
12416
set @v5=repeat('10',@v2);
12417
let $STR0= query_get_value(select @v3 as I,I,1);
12418
let $STR2= query_get_value(select @v4 as I,I,1);
12419
let $STR3= query_get_value(select @v5 as I,I,1);
12420
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
12423
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
12424
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
12426
SELECT HEX(c1) FROM t1;
12428
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
12430
SELECT OCT(c1) FROM t1;
12432
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
12434
SELECT BIN(c1) FROM t1;
12436
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
12438
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
12440
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
12442
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
12444
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
12446
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
12448
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
12450
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
12452
CREATE TABLE t3 (c1 BIT(65));
12453
# Checking for bug #9571
12454
CREATE TABLE t4(i INT, b BIT NOT NULL);
12455
ALTER TABLE t4 ADD PRIMARY KEY (i);
12456
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
12457
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
12458
#Borrowed from suite/ndb/t/ndb_bitfield.test
12459
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12460
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12462
SELECT HEX(c1),HEX(c2) FROM t5;
12464
#Insert permissible NULLs
12465
INSERT IGNORE INTO t5 VALUES(96,null);
12466
INSERT INTO t6 VALUES(null,null);
12467
# Now select using various table access methods (full table scan, range scan, index scan etc.)
12468
## Full table scan ##
12470
SELECT HEX(c1),HEX(c2) FROM t5;
12472
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
12474
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
12475
## Forward index scan, covering ##
12477
SELECT bin(c1) FROM t5;
12478
## Backward index scan, covering ##
12479
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
12480
## Forward index scan, non-covering ##
12481
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
12482
## Backward index scan, non-covering ##
12483
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
12485
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
12486
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
12487
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
12488
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
12489
## Range access, ordered ##
12490
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
12491
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
12492
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
12493
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
12494
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
12495
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
12496
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
12497
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
12498
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
12499
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
12500
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
12501
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
12502
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
12503
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
12504
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
12505
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
12506
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
12507
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
12508
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
12509
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
12510
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
12511
## Range access, backwards scan ##
12512
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
12513
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
12514
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
12515
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
12516
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
12517
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
12518
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
12519
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
12520
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
12521
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
12522
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
12523
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
12524
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
12525
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
12526
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
12527
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
12528
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
12529
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
12530
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
12531
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
12532
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
12533
#Inserting different charachers
12534
CREATE TABLE t7(c1 BIT(4));
12535
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
12538
############# UPDATE ###########
12540
# Update order by limit
12541
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12544
# Update with arithmetic operations
12545
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
12547
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
12550
# Update with NULL ( NULL to number & number to NULL)
12551
UPDATE t6 SET c2=NULL WHERE c1=23;
12553
UPDATE t6 SET c2=10 WHERE c2=NULL;
12556
# Update range values
12557
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
12559
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
12561
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
12564
# Update outside range would be clipped to closest endpoints
12565
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
12567
UPDATE t6 SET c2=-1 WHERE c1=94;
12570
# Update ignore on bad null error
12572
SELECT hex(c1) FROM t5 WHERE c1<>0;
12573
SET SQL_MODE=STRICT_ALL_TABLES;
12574
--error ER_BAD_NULL_ERROR
12575
UPDATE t5 SET c1=NULL WHERE c1<>0;
12576
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
12578
SELECT hex(c1),hex(c2) FROM t5;
12579
SET SQL_MODE=DEFAULT;
12581
#Multi table update
12583
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
12586
SELECT hex(c1),hex(c2) FROM t5;
12589
# Update using various access methods
12592
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12593
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12595
# Update using Const
12596
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12597
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
12599
SELECT hex(c1),hex(c2) FROM t5;
12601
# Update using range
12602
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12603
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
12605
SELECT hex(c1),hex(c2) FROM t5;
12606
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12608
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
12611
SELECT hex(c1),hex(c2) FROM t5;
12613
# Update using eq_ref
12614
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12615
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12617
############# DELETE ###########
12622
#Borrowed from suite/ndb/t/ndb_bitfield.test
12623
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12624
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
12626
# Delete by order by limit
12627
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12630
# Delete rows with NULL column
12631
DELETE FROM t6 WHERE c2=NULL;
12634
# Delete with range values
12635
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
12637
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
12639
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
12642
#Multi table delete
12643
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
12645
SELECT hex(c1),hex(c2) FROM t5;
12648
# Delete using various access methods
12651
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12652
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12654
# Update using Const
12655
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12656
DELETE FROM t5 WHERE c1=6 AND c2=6;
12658
SELECT hex(c1),hex(c2) FROM t5;
12660
# Update using range
12661
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12662
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
12664
SELECT hex(c1),hex(c2) FROM t5;
12665
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12666
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12668
SELECT hex(c1),hex(c2) FROM t5;
12670
# Update using eq_ref
12671
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12672
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12674
# Droping the tables
12675
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
12677
####Checking the bit values####
12678
SELECT 0 + b'101010101010101010101010101010';
12679
SELECT 0 + (101010101010101010101010101010<<8);
12680
######### INSERT/SELECT#########
12682
#### Insert and select 8 bit data into the table####
12683
CREATE TABLE t1(c1 BIT(8));
12684
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
12690
set @v3=repeat('1',@v1);
12691
let $STR0= query_get_value(select @v3 as I,I,1);
12692
eval INSERT INTO t1 VALUES (b'$STR0');
12693
set @v3=repeat('0',@v1);
12694
let $STR1= query_get_value(select @v3 as I,I,1);
12695
eval INSERT INTO t1 VALUES (b'$STR1');
12696
set @v3=repeat('01',@v2);
12697
let $STR2= query_get_value(select @v3 as I,I,1);
12698
eval INSERT INTO t1 VALUES (b'$STR2');
12699
set @v3=repeat('10',@v2);
12700
let $STR3= query_get_value(select @v3 as I,I,1);
12701
eval INSERT INTO t1 VALUES (b'$STR3');
12702
set @v3=repeat('1',@v1);
12703
set @v4=repeat('01',@v2);
12704
set @v5=repeat('10',@v2);
12705
let $STR0= query_get_value(select @v3 as I,I,1);
12706
let $STR2= query_get_value(select @v4 as I,I,1);
12707
let $STR3= query_get_value(select @v5 as I,I,1);
12708
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
12711
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
12712
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
12714
SELECT HEX(c1) FROM t1;
12716
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
12718
SELECT OCT(c1) FROM t1;
12720
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
12722
SELECT BIN(c1) FROM t1;
12724
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
12726
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
12728
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
12730
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
12732
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
12734
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
12736
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
12738
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
12740
CREATE TABLE t3 (c1 BIT(65));
12741
# Checking for bug #9571
12742
CREATE TABLE t4(i INT, b BIT NOT NULL);
12743
ALTER TABLE t4 ADD PRIMARY KEY (i);
12744
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
12745
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
12746
#Borrowed from suite/ndb/t/ndb_bitfield.test
12747
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12748
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12750
SELECT HEX(c1),HEX(c2) FROM t5;
12752
#Insert permissible NULLs
12753
INSERT IGNORE INTO t5 VALUES(96,null);
12754
INSERT INTO t6 VALUES(null,null);
12755
# Now select using various table access methods (full table scan, range scan, index scan etc.)
12756
## Full table scan ##
12758
SELECT HEX(c1),HEX(c2) FROM t5;
12760
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
12762
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
12763
## Forward index scan, covering ##
12765
SELECT bin(c1) FROM t5;
12766
## Backward index scan, covering ##
12767
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
12768
## Forward index scan, non-covering ##
12769
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
12770
## Backward index scan, non-covering ##
12771
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
12773
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
12774
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
12775
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
12776
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
12777
## Range access, ordered ##
12778
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
12780
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
12782
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
12783
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
12784
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
12785
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
12786
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
12787
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
12788
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
12790
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
12791
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
12792
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
12793
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
12794
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
12795
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
12796
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
12797
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
12798
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
12799
## Range access, backwards scan ##
12800
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
12801
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
12803
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
12805
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
12806
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
12807
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
12808
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
12809
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
12810
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
12811
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
12813
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
12814
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
12815
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
12816
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
12817
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
12818
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
12819
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
12820
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
12821
#Inserting different charachers
12822
CREATE TABLE t7(c1 BIT(8));
12823
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
12826
############# UPDATE ###########
12828
# Update order by limit
12829
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12832
# Update with arithmetic operations
12833
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
12835
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
12838
# Update with NULL ( NULL to number & number to NULL)
12839
UPDATE t6 SET c2=NULL WHERE c1=23;
12841
UPDATE t6 SET c2=10 WHERE c2=NULL;
12844
# Update range values
12845
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
12847
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
12849
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
12852
# Update outside range would be clipped to closest endpoints
12853
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
12855
UPDATE t6 SET c2=-1 WHERE c1=94;
12858
# Update ignore on bad null error
12860
SELECT hex(c1) FROM t5 WHERE c1<>0;
12861
SET SQL_MODE=STRICT_ALL_TABLES;
12862
--error ER_BAD_NULL_ERROR
12863
UPDATE t5 SET c1=NULL WHERE c1<>0;
12864
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
12866
SELECT hex(c1),hex(c2) FROM t5;
12867
SET SQL_MODE=DEFAULT;
12869
#Multi table update
12871
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
12874
SELECT hex(c1),hex(c2) FROM t5;
12877
# Update using various access methods
12880
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12881
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12883
# Update using Const
12884
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12885
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
12887
SELECT hex(c1),hex(c2) FROM t5;
12889
# Update using range
12890
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12891
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
12893
SELECT hex(c1),hex(c2) FROM t5;
12894
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12896
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
12899
SELECT hex(c1),hex(c2) FROM t5;
12901
# Update using eq_ref
12902
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12903
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12905
############# DELETE ###########
12910
#Borrowed from suite/ndb/t/ndb_bitfield.test
12911
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
12912
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
12914
# Delete by order by limit
12915
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
12918
# Delete rows with NULL column
12919
DELETE FROM t6 WHERE c2=NULL;
12922
# Delete with range values
12923
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
12925
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
12927
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
12930
#Multi table delete
12931
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
12933
SELECT hex(c1),hex(c2) FROM t5;
12936
# Delete using various access methods
12939
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12940
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
12942
# Update using Const
12943
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
12944
DELETE FROM t5 WHERE c1=6 AND c2=6;
12946
SELECT hex(c1),hex(c2) FROM t5;
12948
# Update using range
12949
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
12950
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
12952
SELECT hex(c1),hex(c2) FROM t5;
12953
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12954
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
12956
SELECT hex(c1),hex(c2) FROM t5;
12958
# Update using eq_ref
12959
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12960
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
12962
# Droping the tables
12963
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
12965
####Checking the bit values####
12966
SELECT 0 + b'101010101010101010101010101010';
12967
SELECT 0 + (101010101010101010101010101010<<16);
12968
######### INSERT/SELECT#########
12970
#### Insert and select 16 bit data into the table####
12971
CREATE TABLE t1(c1 BIT(16));
12972
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
12978
set @v3=repeat('1',@v1);
12979
let $STR0= query_get_value(select @v3 as I,I,1);
12980
eval INSERT INTO t1 VALUES (b'$STR0');
12981
set @v3=repeat('0',@v1);
12982
let $STR1= query_get_value(select @v3 as I,I,1);
12983
eval INSERT INTO t1 VALUES (b'$STR1');
12984
set @v3=repeat('01',@v2);
12985
let $STR2= query_get_value(select @v3 as I,I,1);
12986
eval INSERT INTO t1 VALUES (b'$STR2');
12987
set @v3=repeat('10',@v2);
12988
let $STR3= query_get_value(select @v3 as I,I,1);
12989
eval INSERT INTO t1 VALUES (b'$STR3');
12990
set @v3=repeat('1',@v1);
12991
set @v4=repeat('01',@v2);
12992
set @v5=repeat('10',@v2);
12993
let $STR0= query_get_value(select @v3 as I,I,1);
12994
let $STR2= query_get_value(select @v4 as I,I,1);
12995
let $STR3= query_get_value(select @v5 as I,I,1);
12996
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
12999
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
13000
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
13002
SELECT HEX(c1) FROM t1;
13004
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
13006
SELECT OCT(c1) FROM t1;
13008
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
13010
SELECT BIN(c1) FROM t1;
13012
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
13014
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
13016
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
13018
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
13020
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
13022
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
13024
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
13026
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
13028
CREATE TABLE t3 (c1 BIT(65));
13029
# Checking for bug #9571
13030
CREATE TABLE t4(i INT, b BIT NOT NULL);
13031
ALTER TABLE t4 ADD PRIMARY KEY (i);
13032
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
13033
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
13034
#Borrowed from suite/ndb/t/ndb_bitfield.test
13035
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13036
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13038
SELECT HEX(c1),HEX(c2) FROM t5;
13040
#Insert permissible NULLs
13041
INSERT IGNORE INTO t5 VALUES(96,null);
13042
INSERT INTO t6 VALUES(null,null);
13043
# Now select using various table access methods (full table scan, range scan, index scan etc.)
13044
## Full table scan ##
13046
SELECT HEX(c1),HEX(c2) FROM t5;
13048
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
13050
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
13051
## Forward index scan, covering ##
13053
SELECT bin(c1) FROM t5;
13054
## Backward index scan, covering ##
13055
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
13056
## Forward index scan, non-covering ##
13057
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
13058
## Backward index scan, non-covering ##
13059
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
13061
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
13062
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
13063
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
13064
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
13065
## Range access, ordered ##
13066
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
13067
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
13068
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
13069
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
13070
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
13071
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
13072
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
13073
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
13074
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
13075
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
13076
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
13077
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
13078
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
13079
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
13080
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
13081
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
13082
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
13083
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
13084
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
13085
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
13086
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
13087
## Range access, backwards scan ##
13088
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
13089
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
13090
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
13091
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
13092
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
13093
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
13094
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
13095
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
13096
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
13097
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
13098
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
13099
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
13100
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
13101
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
13102
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
13103
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
13104
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
13105
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
13106
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
13107
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
13108
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
13109
#Inserting different charachers
13110
CREATE TABLE t7(c1 BIT(16));
13111
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
13114
############# UPDATE ###########
13116
# Update order by limit
13117
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13120
# Update with arithmetic operations
13121
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
13123
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
13126
# Update with NULL ( NULL to number & number to NULL)
13127
UPDATE t6 SET c2=NULL WHERE c1=23;
13129
UPDATE t6 SET c2=10 WHERE c2=NULL;
13132
# Update range values
13133
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
13135
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
13137
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
13140
# Update outside range would be clipped to closest endpoints
13141
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
13143
UPDATE t6 SET c2=-1 WHERE c1=94;
13146
# Update ignore on bad null error
13148
SELECT hex(c1) FROM t5 WHERE c1<>0;
13149
SET SQL_MODE=STRICT_ALL_TABLES;
13150
--error ER_BAD_NULL_ERROR
13151
UPDATE t5 SET c1=NULL WHERE c1<>0;
13152
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
13154
SELECT hex(c1),hex(c2) FROM t5;
13155
SET SQL_MODE=DEFAULT;
13157
#Multi table update
13159
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
13162
SELECT hex(c1),hex(c2) FROM t5;
13165
# Update using various access methods
13168
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13169
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13171
# Update using Const
13172
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13173
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
13175
SELECT hex(c1),hex(c2) FROM t5;
13177
# Update using range
13178
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13179
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
13181
SELECT hex(c1),hex(c2) FROM t5;
13182
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13184
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
13187
SELECT hex(c1),hex(c2) FROM t5;
13189
# Update using eq_ref
13190
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13191
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13193
############# DELETE ###########
13198
#Borrowed from suite/ndb/t/ndb_bitfield.test
13199
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13200
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
13202
# Delete by order by limit
13203
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13206
# Delete rows with NULL column
13207
DELETE FROM t6 WHERE c2=NULL;
13210
# Delete with range values
13211
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
13213
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
13215
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
13218
#Multi table delete
13219
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
13221
SELECT hex(c1),hex(c2) FROM t5;
13224
# Delete using various access methods
13227
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13228
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13230
# Update using Const
13231
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13232
DELETE FROM t5 WHERE c1=6 AND c2=6;
13234
SELECT hex(c1),hex(c2) FROM t5;
13236
# Update using range
13237
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13238
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
13240
SELECT hex(c1),hex(c2) FROM t5;
13241
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13242
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13244
SELECT hex(c1),hex(c2) FROM t5;
13246
# Update using eq_ref
13247
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13248
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13250
# Droping the tables
13251
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
13253
####Checking the bit values####
13254
SELECT 0 + b'101010101010101010101010101010';
13255
SELECT 0 + (101010101010101010101010101010<<32);
13256
######### INSERT/SELECT#########
13258
#### Insert and select 32 bit data into the table####
13259
CREATE TABLE t1(c1 BIT(32));
13260
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
13266
set @v3=repeat('1',@v1);
13267
let $STR0= query_get_value(select @v3 as I,I,1);
13268
eval INSERT INTO t1 VALUES (b'$STR0');
13269
set @v3=repeat('0',@v1);
13270
let $STR1= query_get_value(select @v3 as I,I,1);
13271
eval INSERT INTO t1 VALUES (b'$STR1');
13272
set @v3=repeat('01',@v2);
13273
let $STR2= query_get_value(select @v3 as I,I,1);
13274
eval INSERT INTO t1 VALUES (b'$STR2');
13275
set @v3=repeat('10',@v2);
13276
let $STR3= query_get_value(select @v3 as I,I,1);
13277
eval INSERT INTO t1 VALUES (b'$STR3');
13278
set @v3=repeat('1',@v1);
13279
set @v4=repeat('01',@v2);
13280
set @v5=repeat('10',@v2);
13281
let $STR0= query_get_value(select @v3 as I,I,1);
13282
let $STR2= query_get_value(select @v4 as I,I,1);
13283
let $STR3= query_get_value(select @v5 as I,I,1);
13284
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
13287
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
13288
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
13290
SELECT HEX(c1) FROM t1;
13292
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
13294
SELECT OCT(c1) FROM t1;
13296
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
13298
SELECT BIN(c1) FROM t1;
13300
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
13302
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
13304
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
13306
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
13308
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
13310
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
13312
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
13314
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
13316
CREATE TABLE t3 (c1 BIT(65));
13317
# Checking for bug #9571
13318
CREATE TABLE t4(i INT, b BIT NOT NULL);
13319
ALTER TABLE t4 ADD PRIMARY KEY (i);
13320
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
13321
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
13322
#Borrowed from suite/ndb/t/ndb_bitfield.test
13323
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13324
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13326
SELECT HEX(c1),HEX(c2) FROM t5;
13328
#Insert permissible NULLs
13329
INSERT IGNORE INTO t5 VALUES(96,null);
13330
INSERT INTO t6 VALUES(null,null);
13331
# Now select using various table access methods (full table scan, range scan, index scan etc.)
13332
## Full table scan ##
13334
SELECT HEX(c1),HEX(c2) FROM t5;
13336
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
13338
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
13339
## Forward index scan, covering ##
13341
SELECT bin(c1) FROM t5;
13342
## Backward index scan, covering ##
13343
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
13344
## Forward index scan, non-covering ##
13345
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
13346
## Backward index scan, non-covering ##
13347
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
13349
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
13350
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
13351
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
13352
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
13353
## Range access, ordered ##
13354
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
13355
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
13356
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
13357
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
13358
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
13359
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
13360
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
13361
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
13362
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
13363
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
13364
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
13365
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
13366
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
13367
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
13368
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
13369
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
13370
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
13371
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
13372
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
13373
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
13374
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
13375
## Range access, backwards scan ##
13376
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
13377
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
13378
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
13379
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
13380
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
13381
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
13382
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
13383
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
13384
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
13385
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
13386
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
13387
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
13388
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
13389
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
13390
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
13391
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
13392
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
13393
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
13394
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
13395
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
13396
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
13397
#Inserting different charachers
13398
CREATE TABLE t7(c1 BIT(32));
13399
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
13402
############# UPDATE ###########
13404
# Update order by limit
13405
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13408
# Update with arithmetic operations
13409
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
13411
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
13414
# Update with NULL ( NULL to number & number to NULL)
13415
UPDATE t6 SET c2=NULL WHERE c1=23;
13417
UPDATE t6 SET c2=10 WHERE c2=NULL;
13420
# Update range values
13421
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
13423
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
13425
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
13428
# Update outside range would be clipped to closest endpoints
13429
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
13431
UPDATE t6 SET c2=-1 WHERE c1=94;
13434
# Update ignore on bad null error
13436
SELECT hex(c1) FROM t5 WHERE c1<>0;
13437
SET SQL_MODE=STRICT_ALL_TABLES;
13438
--error ER_BAD_NULL_ERROR
13439
UPDATE t5 SET c1=NULL WHERE c1<>0;
13440
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
13442
SELECT hex(c1),hex(c2) FROM t5;
13443
SET SQL_MODE=DEFAULT;
13445
#Multi table update
13447
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
13450
SELECT hex(c1),hex(c2) FROM t5;
13453
# Update using various access methods
13456
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13457
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13459
# Update using Const
13460
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13461
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
13463
SELECT hex(c1),hex(c2) FROM t5;
13465
# Update using range
13466
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13467
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
13469
SELECT hex(c1),hex(c2) FROM t5;
13470
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13472
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
13475
SELECT hex(c1),hex(c2) FROM t5;
13477
# Update using eq_ref
13478
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13479
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13481
############# DELETE ###########
13486
#Borrowed from suite/ndb/t/ndb_bitfield.test
13487
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13488
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
13490
# Delete by order by limit
13491
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13494
# Delete rows with NULL column
13495
DELETE FROM t6 WHERE c2=NULL;
13498
# Delete with range values
13499
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
13501
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
13503
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
13506
#Multi table delete
13507
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
13509
SELECT hex(c1),hex(c2) FROM t5;
13512
# Delete using various access methods
13515
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13516
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13518
# Update using Const
13519
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13520
DELETE FROM t5 WHERE c1=6 AND c2=6;
13522
SELECT hex(c1),hex(c2) FROM t5;
13524
# Update using range
13525
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13526
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
13528
SELECT hex(c1),hex(c2) FROM t5;
13529
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13530
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13532
SELECT hex(c1),hex(c2) FROM t5;
13534
# Update using eq_ref
13535
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13536
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13538
# Droping the tables
13539
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
13541
####Checking the bit values####
13542
SELECT 0 + b'101010101010101010101010101010';
13543
SELECT 0 + (101010101010101010101010101010<<64);
13544
######### INSERT/SELECT#########
13546
#### Insert and select 64 bit data into the table####
13547
CREATE TABLE t1(c1 BIT(64));
13548
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
13554
set @v3=repeat('1',@v1);
13555
let $STR0= query_get_value(select @v3 as I,I,1);
13556
eval INSERT INTO t1 VALUES (b'$STR0');
13557
set @v3=repeat('0',@v1);
13558
let $STR1= query_get_value(select @v3 as I,I,1);
13559
eval INSERT INTO t1 VALUES (b'$STR1');
13560
set @v3=repeat('01',@v2);
13561
let $STR2= query_get_value(select @v3 as I,I,1);
13562
eval INSERT INTO t1 VALUES (b'$STR2');
13563
set @v3=repeat('10',@v2);
13564
let $STR3= query_get_value(select @v3 as I,I,1);
13565
eval INSERT INTO t1 VALUES (b'$STR3');
13566
set @v3=repeat('1',@v1);
13567
set @v4=repeat('01',@v2);
13568
set @v5=repeat('10',@v2);
13569
let $STR0= query_get_value(select @v3 as I,I,1);
13570
let $STR2= query_get_value(select @v4 as I,I,1);
13571
let $STR3= query_get_value(select @v5 as I,I,1);
13572
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
13575
INSERT INTO t1 VALUES (b'101010101010101010101010101010');
13576
INSERT INTO t2 VALUES (b'101010101010101010101010101010', b'101010101010101010101010101010', b'101010101010101010101010101010');
13578
SELECT HEX(c1) FROM t1;
13580
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
13582
SELECT OCT(c1) FROM t1;
13584
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
13586
SELECT BIN(c1) FROM t1;
13588
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
13590
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
13592
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
13594
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
13596
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
13598
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
13600
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
13602
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
13604
CREATE TABLE t3 (c1 BIT(65));
13605
# Checking for bug #9571
13606
CREATE TABLE t4(i INT, b BIT NOT NULL);
13607
ALTER TABLE t4 ADD PRIMARY KEY (i);
13608
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
13609
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
13610
#Borrowed from suite/ndb/t/ndb_bitfield.test
13611
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13612
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13614
SELECT HEX(c1),HEX(c2) FROM t5;
13616
#Insert permissible NULLs
13617
INSERT IGNORE INTO t5 VALUES(96,null);
13618
INSERT INTO t6 VALUES(null,null);
13619
# Now select using various table access methods (full table scan, range scan, index scan etc.)
13620
## Full table scan ##
13622
SELECT HEX(c1),HEX(c2) FROM t5;
13624
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
13626
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
13627
## Forward index scan, covering ##
13629
SELECT bin(c1) FROM t5;
13630
## Backward index scan, covering ##
13631
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
13632
## Forward index scan, non-covering ##
13633
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
13634
## Backward index scan, non-covering ##
13635
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
13637
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
13638
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
13639
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
13640
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
13641
## Range access, ordered ##
13642
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
13643
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
13644
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
13645
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
13646
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
13647
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
13648
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
13649
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
13650
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
13651
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
13652
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
13653
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
13654
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
13655
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
13656
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
13657
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
13658
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
13659
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
13660
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
13661
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
13662
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
13663
## Range access, backwards scan ##
13664
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
13665
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
13666
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
13667
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
13668
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
13669
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
13670
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
13671
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
13672
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
13673
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
13674
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
13675
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
13676
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
13677
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
13678
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
13679
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
13680
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
13681
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
13682
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
13683
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
13684
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
13685
#Inserting different charachers
13686
CREATE TABLE t7(c1 BIT(64));
13687
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
13690
############# UPDATE ###########
13692
# Update order by limit
13693
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13696
# Update with arithmetic operations
13697
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
13699
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
13702
# Update with NULL ( NULL to number & number to NULL)
13703
UPDATE t6 SET c2=NULL WHERE c1=23;
13705
UPDATE t6 SET c2=10 WHERE c2=NULL;
13708
# Update range values
13709
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
13711
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
13713
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
13716
# Update outside range would be clipped to closest endpoints
13717
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
13719
UPDATE t6 SET c2=-1 WHERE c1=94;
13722
# Update ignore on bad null error
13724
SELECT hex(c1) FROM t5 WHERE c1<>0;
13725
SET SQL_MODE=STRICT_ALL_TABLES;
13726
--error ER_BAD_NULL_ERROR
13727
UPDATE t5 SET c1=NULL WHERE c1<>0;
13728
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
13730
SELECT hex(c1),hex(c2) FROM t5;
13731
SET SQL_MODE=DEFAULT;
13733
#Multi table update
13735
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
13738
SELECT hex(c1),hex(c2) FROM t5;
13741
# Update using various access methods
13744
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13745
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13747
# Update using Const
13748
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13749
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
13751
SELECT hex(c1),hex(c2) FROM t5;
13753
# Update using range
13754
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13755
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
13757
SELECT hex(c1),hex(c2) FROM t5;
13758
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13760
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
13763
SELECT hex(c1),hex(c2) FROM t5;
13765
# Update using eq_ref
13766
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13767
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13769
############# DELETE ###########
13774
#Borrowed from suite/ndb/t/ndb_bitfield.test
13775
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13776
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
13778
# Delete by order by limit
13779
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13782
# Delete rows with NULL column
13783
DELETE FROM t6 WHERE c2=NULL;
13786
# Delete with range values
13787
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
13789
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
13791
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
13794
#Multi table delete
13795
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
13797
SELECT hex(c1),hex(c2) FROM t5;
13800
# Delete using various access methods
13803
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13804
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
13806
# Update using Const
13807
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
13808
DELETE FROM t5 WHERE c1=6 AND c2=6;
13810
SELECT hex(c1),hex(c2) FROM t5;
13812
# Update using range
13813
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
13814
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
13816
SELECT hex(c1),hex(c2) FROM t5;
13817
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13818
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
13820
SELECT hex(c1),hex(c2) FROM t5;
13822
# Update using eq_ref
13823
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13824
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
13826
# Droping the tables
13827
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
13829
####Checking the bit values####
13830
# Produces different output on different platforms
13831
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
13832
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<0);
13833
######### INSERT/SELECT#########
13835
#### Insert and select 0 bit data into the table####
13836
CREATE TABLE t1(c1 BIT(0));
13837
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
13843
set @v3=repeat('1',@v1);
13844
let $STR0= query_get_value(select @v3 as I,I,1);
13845
eval INSERT INTO t1 VALUES (b'$STR0');
13846
set @v3=repeat('0',@v1);
13847
let $STR1= query_get_value(select @v3 as I,I,1);
13848
eval INSERT INTO t1 VALUES (b'$STR1');
13849
set @v3=repeat('01',@v2);
13850
let $STR2= query_get_value(select @v3 as I,I,1);
13851
eval INSERT INTO t1 VALUES (b'$STR2');
13852
set @v3=repeat('10',@v2);
13853
let $STR3= query_get_value(select @v3 as I,I,1);
13854
eval INSERT INTO t1 VALUES (b'$STR3');
13855
set @v3=repeat('1',@v1);
13856
set @v4=repeat('01',@v2);
13857
set @v5=repeat('10',@v2);
13858
let $STR0= query_get_value(select @v3 as I,I,1);
13859
let $STR2= query_get_value(select @v4 as I,I,1);
13860
let $STR3= query_get_value(select @v5 as I,I,1);
13861
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
13864
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
13865
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
13867
SELECT HEX(c1) FROM t1;
13869
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
13871
SELECT OCT(c1) FROM t1;
13873
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
13875
SELECT BIN(c1) FROM t1;
13877
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
13879
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
13881
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
13883
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
13885
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
13887
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
13889
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
13891
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
13893
CREATE TABLE t3 (c1 BIT(65));
13894
# Checking for bug #9571
13895
CREATE TABLE t4(i INT, b BIT NOT NULL);
13896
ALTER TABLE t4 ADD PRIMARY KEY (i);
13897
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
13898
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
13899
#Borrowed from suite/ndb/t/ndb_bitfield.test
13900
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13901
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
13903
SELECT HEX(c1),HEX(c2) FROM t5;
13905
#Insert permissible NULLs
13906
INSERT IGNORE INTO t5 VALUES(96,null);
13907
INSERT INTO t6 VALUES(null,null);
13908
# Now select using various table access methods (full table scan, range scan, index scan etc.)
13909
## Full table scan ##
13911
SELECT HEX(c1),HEX(c2) FROM t5;
13913
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
13915
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
13916
## Forward index scan, covering ##
13918
SELECT bin(c1) FROM t5;
13919
## Backward index scan, covering ##
13920
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
13921
## Forward index scan, non-covering ##
13922
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
13923
## Backward index scan, non-covering ##
13924
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
13926
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
13927
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
13928
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
13929
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
13930
## Range access, ordered ##
13931
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
13932
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
13933
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
13934
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
13935
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
13936
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
13937
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
13938
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
13939
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
13940
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
13941
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
13942
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
13943
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
13944
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
13945
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
13946
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
13947
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
13948
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
13949
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
13950
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
13951
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
13952
## Range access, backwards scan ##
13953
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
13954
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
13955
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
13956
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
13957
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
13958
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
13959
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
13960
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
13961
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
13962
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
13963
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
13964
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
13965
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
13966
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
13967
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
13968
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
13969
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
13970
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
13971
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
13972
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
13973
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
13974
#Inserting different charachers
13975
CREATE TABLE t7(c1 BIT(0));
13976
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
13979
############# UPDATE ###########
13981
# Update order by limit
13982
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
13985
# Update with arithmetic operations
13986
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
13988
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
13991
# Update with NULL ( NULL to number & number to NULL)
13992
UPDATE t6 SET c2=NULL WHERE c1=23;
13994
UPDATE t6 SET c2=10 WHERE c2=NULL;
13997
# Update range values
13998
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
14000
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
14002
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
14005
# Update outside range would be clipped to closest endpoints
14006
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
14008
UPDATE t6 SET c2=-1 WHERE c1=94;
14011
# Update ignore on bad null error
14013
SELECT hex(c1) FROM t5 WHERE c1<>0;
14014
SET SQL_MODE=STRICT_ALL_TABLES;
14015
--error ER_BAD_NULL_ERROR
14016
UPDATE t5 SET c1=NULL WHERE c1<>0;
14017
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
14019
SELECT hex(c1),hex(c2) FROM t5;
14020
SET SQL_MODE=DEFAULT;
14022
#Multi table update
14024
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
14027
SELECT hex(c1),hex(c2) FROM t5;
14030
# Update using various access methods
14033
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14034
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14036
# Update using Const
14037
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14038
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
14040
SELECT hex(c1),hex(c2) FROM t5;
14042
# Update using range
14043
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14044
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
14046
SELECT hex(c1),hex(c2) FROM t5;
14047
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14049
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
14052
SELECT hex(c1),hex(c2) FROM t5;
14054
# Update using eq_ref
14055
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14056
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14058
############# DELETE ###########
14063
#Borrowed from suite/ndb/t/ndb_bitfield.test
14064
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14065
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
14067
# Delete by order by limit
14068
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14071
# Delete rows with NULL column
14072
DELETE FROM t6 WHERE c2=NULL;
14075
# Delete with range values
14076
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
14078
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
14080
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
14083
#Multi table delete
14084
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
14086
SELECT hex(c1),hex(c2) FROM t5;
14089
# Delete using various access methods
14092
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14093
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14095
# Update using Const
14096
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14097
DELETE FROM t5 WHERE c1=6 AND c2=6;
14099
SELECT hex(c1),hex(c2) FROM t5;
14101
# Update using range
14102
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14103
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
14105
SELECT hex(c1),hex(c2) FROM t5;
14106
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14107
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14109
SELECT hex(c1),hex(c2) FROM t5;
14111
# Update using eq_ref
14112
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14113
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14115
# Droping the tables
14116
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
14118
####Checking the bit values####
14119
# Produces different output on different platforms
14120
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
14121
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<1);
14122
######### INSERT/SELECT#########
14124
#### Insert and select 1 bit data into the table####
14125
CREATE TABLE t1(c1 BIT(1));
14126
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
14132
set @v3=repeat('1',@v1);
14133
let $STR0= query_get_value(select @v3 as I,I,1);
14134
eval INSERT INTO t1 VALUES (b'$STR0');
14135
set @v3=repeat('0',@v1);
14136
let $STR1= query_get_value(select @v3 as I,I,1);
14137
eval INSERT INTO t1 VALUES (b'$STR1');
14138
set @v3=repeat('01',@v2);
14139
let $STR2= query_get_value(select @v3 as I,I,1);
14140
eval INSERT INTO t1 VALUES (b'$STR2');
14141
set @v3=repeat('10',@v2);
14142
let $STR3= query_get_value(select @v3 as I,I,1);
14143
eval INSERT INTO t1 VALUES (b'$STR3');
14144
set @v3=repeat('1',@v1);
14145
set @v4=repeat('01',@v2);
14146
set @v5=repeat('10',@v2);
14147
let $STR0= query_get_value(select @v3 as I,I,1);
14148
let $STR2= query_get_value(select @v4 as I,I,1);
14149
let $STR3= query_get_value(select @v5 as I,I,1);
14150
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
14153
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
14154
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
14156
SELECT HEX(c1) FROM t1;
14158
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
14160
SELECT OCT(c1) FROM t1;
14162
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
14164
SELECT BIN(c1) FROM t1;
14166
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
14168
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
14170
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
14172
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
14174
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
14176
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
14178
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
14180
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
14182
CREATE TABLE t3 (c1 BIT(65));
14183
# Checking for bug #9571
14184
CREATE TABLE t4(i INT, b BIT NOT NULL);
14185
ALTER TABLE t4 ADD PRIMARY KEY (i);
14186
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
14187
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
14188
#Borrowed from suite/ndb/t/ndb_bitfield.test
14189
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14190
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14192
SELECT HEX(c1),HEX(c2) FROM t5;
14194
#Insert permissible NULLs
14195
INSERT IGNORE INTO t5 VALUES(96,null);
14196
INSERT INTO t6 VALUES(null,null);
14197
# Now select using various table access methods (full table scan, range scan, index scan etc.)
14198
## Full table scan ##
14200
SELECT HEX(c1),HEX(c2) FROM t5;
14202
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
14204
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
14205
## Forward index scan, covering ##
14207
SELECT bin(c1) FROM t5;
14208
## Backward index scan, covering ##
14209
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
14210
## Forward index scan, non-covering ##
14211
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
14212
## Backward index scan, non-covering ##
14213
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
14215
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
14216
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
14217
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
14218
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
14219
## Range access, ordered ##
14220
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
14221
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
14222
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
14223
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
14224
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
14225
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
14226
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
14227
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
14228
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
14229
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
14230
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
14231
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
14232
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
14233
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
14234
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
14235
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
14236
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
14237
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
14238
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
14239
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
14240
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
14241
## Range access, backwards scan ##
14242
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
14243
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
14244
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
14245
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
14246
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
14247
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
14248
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
14249
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
14250
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
14251
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
14252
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
14253
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
14254
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
14255
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
14256
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
14257
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
14258
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
14259
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
14260
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
14261
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
14262
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
14263
#Inserting different charachers
14264
CREATE TABLE t7(c1 BIT(1));
14265
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
14268
############# UPDATE ###########
14270
# Update order by limit
14271
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14274
# Update with arithmetic operations
14275
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
14277
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
14280
# Update with NULL ( NULL to number & number to NULL)
14281
UPDATE t6 SET c2=NULL WHERE c1=23;
14283
UPDATE t6 SET c2=10 WHERE c2=NULL;
14286
# Update range values
14287
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
14289
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
14291
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
14294
# Update outside range would be clipped to closest endpoints
14295
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
14297
UPDATE t6 SET c2=-1 WHERE c1=94;
14300
# Update ignore on bad null error
14302
SELECT hex(c1) FROM t5 WHERE c1<>0;
14303
SET SQL_MODE=STRICT_ALL_TABLES;
14304
--error ER_BAD_NULL_ERROR
14305
UPDATE t5 SET c1=NULL WHERE c1<>0;
14306
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
14308
SELECT hex(c1),hex(c2) FROM t5;
14309
SET SQL_MODE=DEFAULT;
14311
#Multi table update
14313
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
14316
SELECT hex(c1),hex(c2) FROM t5;
14319
# Update using various access methods
14322
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14323
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14325
# Update using Const
14326
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14327
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
14329
SELECT hex(c1),hex(c2) FROM t5;
14331
# Update using range
14332
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14333
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
14335
SELECT hex(c1),hex(c2) FROM t5;
14336
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14338
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
14341
SELECT hex(c1),hex(c2) FROM t5;
14343
# Update using eq_ref
14344
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14345
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14347
############# DELETE ###########
14352
#Borrowed from suite/ndb/t/ndb_bitfield.test
14353
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14354
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
14356
# Delete by order by limit
14357
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14360
# Delete rows with NULL column
14361
DELETE FROM t6 WHERE c2=NULL;
14364
# Delete with range values
14365
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
14367
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
14369
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
14372
#Multi table delete
14373
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
14375
SELECT hex(c1),hex(c2) FROM t5;
14378
# Delete using various access methods
14381
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14382
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14384
# Update using Const
14385
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14386
DELETE FROM t5 WHERE c1=6 AND c2=6;
14388
SELECT hex(c1),hex(c2) FROM t5;
14390
# Update using range
14391
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14392
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
14394
SELECT hex(c1),hex(c2) FROM t5;
14395
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14396
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14398
SELECT hex(c1),hex(c2) FROM t5;
14400
# Update using eq_ref
14401
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14402
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14404
# Droping the tables
14405
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
14407
####Checking the bit values####
14408
# Produces different output on different platforms
14409
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
14410
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<2);
14411
######### INSERT/SELECT#########
14413
#### Insert and select 2 bit data into the table####
14414
CREATE TABLE t1(c1 BIT(2));
14415
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
14421
set @v3=repeat('1',@v1);
14422
let $STR0= query_get_value(select @v3 as I,I,1);
14423
eval INSERT INTO t1 VALUES (b'$STR0');
14424
set @v3=repeat('0',@v1);
14425
let $STR1= query_get_value(select @v3 as I,I,1);
14426
eval INSERT INTO t1 VALUES (b'$STR1');
14427
set @v3=repeat('01',@v2);
14428
let $STR2= query_get_value(select @v3 as I,I,1);
14429
eval INSERT INTO t1 VALUES (b'$STR2');
14430
set @v3=repeat('10',@v2);
14431
let $STR3= query_get_value(select @v3 as I,I,1);
14432
eval INSERT INTO t1 VALUES (b'$STR3');
14433
set @v3=repeat('1',@v1);
14434
set @v4=repeat('01',@v2);
14435
set @v5=repeat('10',@v2);
14436
let $STR0= query_get_value(select @v3 as I,I,1);
14437
let $STR2= query_get_value(select @v4 as I,I,1);
14438
let $STR3= query_get_value(select @v5 as I,I,1);
14439
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
14442
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
14443
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
14445
SELECT HEX(c1) FROM t1;
14447
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
14449
SELECT OCT(c1) FROM t1;
14451
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
14453
SELECT BIN(c1) FROM t1;
14455
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
14457
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
14459
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
14461
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
14463
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
14465
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
14467
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
14469
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
14471
CREATE TABLE t3 (c1 BIT(65));
14472
# Checking for bug #9571
14473
CREATE TABLE t4(i INT, b BIT NOT NULL);
14474
ALTER TABLE t4 ADD PRIMARY KEY (i);
14475
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
14476
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
14477
#Borrowed from suite/ndb/t/ndb_bitfield.test
14478
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14479
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14481
SELECT HEX(c1),HEX(c2) FROM t5;
14483
#Insert permissible NULLs
14484
INSERT IGNORE INTO t5 VALUES(96,null);
14485
INSERT INTO t6 VALUES(null,null);
14486
# Now select using various table access methods (full table scan, range scan, index scan etc.)
14487
## Full table scan ##
14489
SELECT HEX(c1),HEX(c2) FROM t5;
14491
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
14493
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
14494
## Forward index scan, covering ##
14496
SELECT bin(c1) FROM t5;
14497
## Backward index scan, covering ##
14498
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
14499
## Forward index scan, non-covering ##
14500
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
14501
## Backward index scan, non-covering ##
14502
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
14504
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
14505
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
14506
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
14507
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
14508
## Range access, ordered ##
14509
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
14510
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
14511
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
14512
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
14513
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
14514
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
14515
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
14516
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
14517
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
14518
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
14519
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
14520
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
14521
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
14522
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
14523
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
14524
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
14525
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
14526
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
14527
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
14528
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
14529
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
14530
## Range access, backwards scan ##
14531
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
14532
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
14533
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
14534
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
14535
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
14536
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
14537
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
14538
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
14539
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
14540
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
14541
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
14542
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
14543
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
14544
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
14545
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
14546
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
14547
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
14548
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
14549
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
14550
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
14551
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
14552
#Inserting different charachers
14553
CREATE TABLE t7(c1 BIT(2));
14554
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
14557
############# UPDATE ###########
14559
# Update order by limit
14560
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14563
# Update with arithmetic operations
14564
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
14566
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
14569
# Update with NULL ( NULL to number & number to NULL)
14570
UPDATE t6 SET c2=NULL WHERE c1=23;
14572
UPDATE t6 SET c2=10 WHERE c2=NULL;
14575
# Update range values
14576
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
14578
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
14580
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
14583
# Update outside range would be clipped to closest endpoints
14584
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
14586
UPDATE t6 SET c2=-1 WHERE c1=94;
14589
# Update ignore on bad null error
14591
SELECT hex(c1) FROM t5 WHERE c1<>0;
14592
SET SQL_MODE=STRICT_ALL_TABLES;
14593
--error ER_BAD_NULL_ERROR
14594
UPDATE t5 SET c1=NULL WHERE c1<>0;
14595
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
14597
SELECT hex(c1),hex(c2) FROM t5;
14598
SET SQL_MODE=DEFAULT;
14600
#Multi table update
14602
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
14605
SELECT hex(c1),hex(c2) FROM t5;
14608
# Update using various access methods
14611
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14612
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14614
# Update using Const
14615
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14616
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
14618
SELECT hex(c1),hex(c2) FROM t5;
14620
# Update using range
14621
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14622
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
14624
SELECT hex(c1),hex(c2) FROM t5;
14625
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14627
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
14630
SELECT hex(c1),hex(c2) FROM t5;
14632
# Update using eq_ref
14633
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14634
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14636
############# DELETE ###########
14641
#Borrowed from suite/ndb/t/ndb_bitfield.test
14642
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14643
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
14645
# Delete by order by limit
14646
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14649
# Delete rows with NULL column
14650
DELETE FROM t6 WHERE c2=NULL;
14653
# Delete with range values
14654
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
14656
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
14658
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
14661
#Multi table delete
14662
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
14664
SELECT hex(c1),hex(c2) FROM t5;
14667
# Delete using various access methods
14670
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14671
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14673
# Update using Const
14674
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14675
DELETE FROM t5 WHERE c1=6 AND c2=6;
14677
SELECT hex(c1),hex(c2) FROM t5;
14679
# Update using range
14680
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14681
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
14683
SELECT hex(c1),hex(c2) FROM t5;
14684
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14685
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14687
SELECT hex(c1),hex(c2) FROM t5;
14689
# Update using eq_ref
14690
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14691
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14693
# Droping the tables
14694
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
14696
####Checking the bit values####
14697
# Produces different output on different platforms
14698
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
14699
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<4);
14700
######### INSERT/SELECT#########
14702
#### Insert and select 4 bit data into the table####
14703
CREATE TABLE t1(c1 BIT(4));
14704
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
14710
set @v3=repeat('1',@v1);
14711
let $STR0= query_get_value(select @v3 as I,I,1);
14712
eval INSERT INTO t1 VALUES (b'$STR0');
14713
set @v3=repeat('0',@v1);
14714
let $STR1= query_get_value(select @v3 as I,I,1);
14715
eval INSERT INTO t1 VALUES (b'$STR1');
14716
set @v3=repeat('01',@v2);
14717
let $STR2= query_get_value(select @v3 as I,I,1);
14718
eval INSERT INTO t1 VALUES (b'$STR2');
14719
set @v3=repeat('10',@v2);
14720
let $STR3= query_get_value(select @v3 as I,I,1);
14721
eval INSERT INTO t1 VALUES (b'$STR3');
14722
set @v3=repeat('1',@v1);
14723
set @v4=repeat('01',@v2);
14724
set @v5=repeat('10',@v2);
14725
let $STR0= query_get_value(select @v3 as I,I,1);
14726
let $STR2= query_get_value(select @v4 as I,I,1);
14727
let $STR3= query_get_value(select @v5 as I,I,1);
14728
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
14731
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
14732
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
14734
SELECT HEX(c1) FROM t1;
14736
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
14738
SELECT OCT(c1) FROM t1;
14740
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
14742
SELECT BIN(c1) FROM t1;
14744
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
14746
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
14748
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
14750
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
14752
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
14754
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
14756
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
14758
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
14760
CREATE TABLE t3 (c1 BIT(65));
14761
# Checking for bug #9571
14762
CREATE TABLE t4(i INT, b BIT NOT NULL);
14763
ALTER TABLE t4 ADD PRIMARY KEY (i);
14764
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
14765
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
14766
#Borrowed from suite/ndb/t/ndb_bitfield.test
14767
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14768
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14770
SELECT HEX(c1),HEX(c2) FROM t5;
14772
#Insert permissible NULLs
14773
INSERT IGNORE INTO t5 VALUES(96,null);
14774
INSERT INTO t6 VALUES(null,null);
14775
# Now select using various table access methods (full table scan, range scan, index scan etc.)
14776
## Full table scan ##
14778
SELECT HEX(c1),HEX(c2) FROM t5;
14780
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
14782
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
14783
## Forward index scan, covering ##
14785
SELECT bin(c1) FROM t5;
14786
## Backward index scan, covering ##
14787
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
14788
## Forward index scan, non-covering ##
14789
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
14790
## Backward index scan, non-covering ##
14791
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
14793
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
14794
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
14795
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
14796
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
14797
## Range access, ordered ##
14798
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
14799
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
14800
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
14801
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
14802
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
14803
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
14804
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
14805
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
14806
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
14807
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
14808
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
14809
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
14810
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
14811
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
14812
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
14813
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
14814
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
14815
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
14816
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
14817
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
14818
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
14819
## Range access, backwards scan ##
14820
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
14821
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
14822
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
14823
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
14824
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
14825
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
14826
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
14827
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
14828
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
14829
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
14830
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
14831
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
14832
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
14833
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
14834
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
14835
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
14836
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
14837
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
14838
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
14839
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
14840
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
14841
#Inserting different charachers
14842
CREATE TABLE t7(c1 BIT(4));
14843
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
14846
############# UPDATE ###########
14848
# Update order by limit
14849
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14852
# Update with arithmetic operations
14853
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
14855
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
14858
# Update with NULL ( NULL to number & number to NULL)
14859
UPDATE t6 SET c2=NULL WHERE c1=23;
14861
UPDATE t6 SET c2=10 WHERE c2=NULL;
14864
# Update range values
14865
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
14867
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
14869
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
14872
# Update outside range would be clipped to closest endpoints
14873
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
14875
UPDATE t6 SET c2=-1 WHERE c1=94;
14878
# Update ignore on bad null error
14880
SELECT hex(c1) FROM t5 WHERE c1<>0;
14881
SET SQL_MODE=STRICT_ALL_TABLES;
14882
--error ER_BAD_NULL_ERROR
14883
UPDATE t5 SET c1=NULL WHERE c1<>0;
14884
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
14886
SELECT hex(c1),hex(c2) FROM t5;
14887
SET SQL_MODE=DEFAULT;
14889
#Multi table update
14891
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
14894
SELECT hex(c1),hex(c2) FROM t5;
14897
# Update using various access methods
14900
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14901
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14903
# Update using Const
14904
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14905
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
14907
SELECT hex(c1),hex(c2) FROM t5;
14909
# Update using range
14910
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14911
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
14913
SELECT hex(c1),hex(c2) FROM t5;
14914
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14916
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
14919
SELECT hex(c1),hex(c2) FROM t5;
14921
# Update using eq_ref
14922
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14923
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14925
############# DELETE ###########
14930
#Borrowed from suite/ndb/t/ndb_bitfield.test
14931
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
14932
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
14934
# Delete by order by limit
14935
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
14938
# Delete rows with NULL column
14939
DELETE FROM t6 WHERE c2=NULL;
14942
# Delete with range values
14943
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
14945
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
14947
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
14950
#Multi table delete
14951
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
14953
SELECT hex(c1),hex(c2) FROM t5;
14956
# Delete using various access methods
14959
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14960
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
14962
# Update using Const
14963
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
14964
DELETE FROM t5 WHERE c1=6 AND c2=6;
14966
SELECT hex(c1),hex(c2) FROM t5;
14968
# Update using range
14969
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
14970
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
14972
SELECT hex(c1),hex(c2) FROM t5;
14973
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14974
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
14976
SELECT hex(c1),hex(c2) FROM t5;
14978
# Update using eq_ref
14979
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14980
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
14982
# Droping the tables
14983
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
14985
####Checking the bit values####
14986
# Produces different output on different platforms
14987
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
14988
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<8);
14989
######### INSERT/SELECT#########
14991
#### Insert and select 8 bit data into the table####
14992
CREATE TABLE t1(c1 BIT(8));
14993
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
14999
set @v3=repeat('1',@v1);
15000
let $STR0= query_get_value(select @v3 as I,I,1);
15001
eval INSERT INTO t1 VALUES (b'$STR0');
15002
set @v3=repeat('0',@v1);
15003
let $STR1= query_get_value(select @v3 as I,I,1);
15004
eval INSERT INTO t1 VALUES (b'$STR1');
15005
set @v3=repeat('01',@v2);
15006
let $STR2= query_get_value(select @v3 as I,I,1);
15007
eval INSERT INTO t1 VALUES (b'$STR2');
15008
set @v3=repeat('10',@v2);
15009
let $STR3= query_get_value(select @v3 as I,I,1);
15010
eval INSERT INTO t1 VALUES (b'$STR3');
15011
set @v3=repeat('1',@v1);
15012
set @v4=repeat('01',@v2);
15013
set @v5=repeat('10',@v2);
15014
let $STR0= query_get_value(select @v3 as I,I,1);
15015
let $STR2= query_get_value(select @v4 as I,I,1);
15016
let $STR3= query_get_value(select @v5 as I,I,1);
15017
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
15020
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
15021
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
15023
SELECT HEX(c1) FROM t1;
15025
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
15027
SELECT OCT(c1) FROM t1;
15029
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
15031
SELECT BIN(c1) FROM t1;
15033
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
15035
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
15037
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
15039
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
15041
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
15043
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
15045
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
15047
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
15049
CREATE TABLE t3 (c1 BIT(65));
15050
# Checking for bug #9571
15051
CREATE TABLE t4(i INT, b BIT NOT NULL);
15052
ALTER TABLE t4 ADD PRIMARY KEY (i);
15053
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
15054
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
15055
#Borrowed from suite/ndb/t/ndb_bitfield.test
15056
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15057
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15059
SELECT HEX(c1),HEX(c2) FROM t5;
15061
#Insert permissible NULLs
15062
INSERT IGNORE INTO t5 VALUES(96,null);
15063
INSERT INTO t6 VALUES(null,null);
15064
# Now select using various table access methods (full table scan, range scan, index scan etc.)
15065
## Full table scan ##
15067
SELECT HEX(c1),HEX(c2) FROM t5;
15069
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
15071
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
15072
## Forward index scan, covering ##
15074
SELECT bin(c1) FROM t5;
15075
## Backward index scan, covering ##
15076
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
15077
## Forward index scan, non-covering ##
15078
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
15079
## Backward index scan, non-covering ##
15080
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
15082
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
15083
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
15084
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
15085
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
15086
## Range access, ordered ##
15087
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
15089
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
15091
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
15092
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
15093
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
15094
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
15095
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
15096
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
15097
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
15099
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
15100
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
15101
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
15102
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
15103
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
15104
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
15105
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
15106
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
15107
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
15108
## Range access, backwards scan ##
15109
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
15110
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
15112
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
15114
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
15115
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
15116
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
15117
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
15118
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
15119
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
15120
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
15122
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
15123
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
15124
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
15125
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
15126
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
15127
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
15128
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
15129
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
15130
#Inserting different charachers
15131
CREATE TABLE t7(c1 BIT(8));
15132
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
15135
############# UPDATE ###########
15137
# Update order by limit
15138
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15141
# Update with arithmetic operations
15142
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
15144
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
15147
# Update with NULL ( NULL to number & number to NULL)
15148
UPDATE t6 SET c2=NULL WHERE c1=23;
15150
UPDATE t6 SET c2=10 WHERE c2=NULL;
15153
# Update range values
15154
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
15156
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
15158
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
15161
# Update outside range would be clipped to closest endpoints
15162
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
15164
UPDATE t6 SET c2=-1 WHERE c1=94;
15167
# Update ignore on bad null error
15169
SELECT hex(c1) FROM t5 WHERE c1<>0;
15170
SET SQL_MODE=STRICT_ALL_TABLES;
15171
--error ER_BAD_NULL_ERROR
15172
UPDATE t5 SET c1=NULL WHERE c1<>0;
15173
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
15175
SELECT hex(c1),hex(c2) FROM t5;
15176
SET SQL_MODE=DEFAULT;
15178
#Multi table update
15180
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
15183
SELECT hex(c1),hex(c2) FROM t5;
15186
# Update using various access methods
15189
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15190
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15192
# Update using Const
15193
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15194
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
15196
SELECT hex(c1),hex(c2) FROM t5;
15198
# Update using range
15199
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15200
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
15202
SELECT hex(c1),hex(c2) FROM t5;
15203
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15205
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
15208
SELECT hex(c1),hex(c2) FROM t5;
15210
# Update using eq_ref
15211
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15212
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15214
############# DELETE ###########
15219
#Borrowed from suite/ndb/t/ndb_bitfield.test
15220
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15221
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
15223
# Delete by order by limit
15224
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15227
# Delete rows with NULL column
15228
DELETE FROM t6 WHERE c2=NULL;
15231
# Delete with range values
15232
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
15234
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
15236
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
15239
#Multi table delete
15240
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
15242
SELECT hex(c1),hex(c2) FROM t5;
15245
# Delete using various access methods
15248
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15249
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15251
# Update using Const
15252
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15253
DELETE FROM t5 WHERE c1=6 AND c2=6;
15255
SELECT hex(c1),hex(c2) FROM t5;
15257
# Update using range
15258
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15259
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
15261
SELECT hex(c1),hex(c2) FROM t5;
15262
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15263
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15265
SELECT hex(c1),hex(c2) FROM t5;
15267
# Update using eq_ref
15268
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15269
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15271
# Droping the tables
15272
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
15274
####Checking the bit values####
15275
# Produces different output on different platforms
15276
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
15277
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<16);
15278
######### INSERT/SELECT#########
15280
#### Insert and select 16 bit data into the table####
15281
CREATE TABLE t1(c1 BIT(16));
15282
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
15288
set @v3=repeat('1',@v1);
15289
let $STR0= query_get_value(select @v3 as I,I,1);
15290
eval INSERT INTO t1 VALUES (b'$STR0');
15291
set @v3=repeat('0',@v1);
15292
let $STR1= query_get_value(select @v3 as I,I,1);
15293
eval INSERT INTO t1 VALUES (b'$STR1');
15294
set @v3=repeat('01',@v2);
15295
let $STR2= query_get_value(select @v3 as I,I,1);
15296
eval INSERT INTO t1 VALUES (b'$STR2');
15297
set @v3=repeat('10',@v2);
15298
let $STR3= query_get_value(select @v3 as I,I,1);
15299
eval INSERT INTO t1 VALUES (b'$STR3');
15300
set @v3=repeat('1',@v1);
15301
set @v4=repeat('01',@v2);
15302
set @v5=repeat('10',@v2);
15303
let $STR0= query_get_value(select @v3 as I,I,1);
15304
let $STR2= query_get_value(select @v4 as I,I,1);
15305
let $STR3= query_get_value(select @v5 as I,I,1);
15306
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
15309
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
15310
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
15312
SELECT HEX(c1) FROM t1;
15314
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
15316
SELECT OCT(c1) FROM t1;
15318
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
15320
SELECT BIN(c1) FROM t1;
15322
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
15324
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
15326
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
15328
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
15330
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
15332
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
15334
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
15336
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
15338
CREATE TABLE t3 (c1 BIT(65));
15339
# Checking for bug #9571
15340
CREATE TABLE t4(i INT, b BIT NOT NULL);
15341
ALTER TABLE t4 ADD PRIMARY KEY (i);
15342
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
15343
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
15344
#Borrowed from suite/ndb/t/ndb_bitfield.test
15345
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15346
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15348
SELECT HEX(c1),HEX(c2) FROM t5;
15350
#Insert permissible NULLs
15351
INSERT IGNORE INTO t5 VALUES(96,null);
15352
INSERT INTO t6 VALUES(null,null);
15353
# Now select using various table access methods (full table scan, range scan, index scan etc.)
15354
## Full table scan ##
15356
SELECT HEX(c1),HEX(c2) FROM t5;
15358
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
15360
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
15361
## Forward index scan, covering ##
15363
SELECT bin(c1) FROM t5;
15364
## Backward index scan, covering ##
15365
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
15366
## Forward index scan, non-covering ##
15367
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
15368
## Backward index scan, non-covering ##
15369
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
15371
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
15372
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
15373
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
15374
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
15375
## Range access, ordered ##
15376
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
15377
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
15378
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
15379
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
15380
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
15381
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
15382
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
15383
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
15384
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
15385
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
15386
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
15387
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
15388
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
15389
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
15390
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
15391
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
15392
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
15393
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
15394
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
15395
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
15396
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
15397
## Range access, backwards scan ##
15398
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
15399
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
15400
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
15401
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
15402
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
15403
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
15404
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
15405
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
15406
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
15407
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
15408
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
15409
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
15410
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
15411
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
15412
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
15413
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
15414
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
15415
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
15416
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
15417
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
15418
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
15419
#Inserting different charachers
15420
CREATE TABLE t7(c1 BIT(16));
15421
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
15424
############# UPDATE ###########
15426
# Update order by limit
15427
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15430
# Update with arithmetic operations
15431
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
15433
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
15436
# Update with NULL ( NULL to number & number to NULL)
15437
UPDATE t6 SET c2=NULL WHERE c1=23;
15439
UPDATE t6 SET c2=10 WHERE c2=NULL;
15442
# Update range values
15443
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
15445
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
15447
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
15450
# Update outside range would be clipped to closest endpoints
15451
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
15453
UPDATE t6 SET c2=-1 WHERE c1=94;
15456
# Update ignore on bad null error
15458
SELECT hex(c1) FROM t5 WHERE c1<>0;
15459
SET SQL_MODE=STRICT_ALL_TABLES;
15460
--error ER_BAD_NULL_ERROR
15461
UPDATE t5 SET c1=NULL WHERE c1<>0;
15462
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
15464
SELECT hex(c1),hex(c2) FROM t5;
15465
SET SQL_MODE=DEFAULT;
15467
#Multi table update
15469
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
15472
SELECT hex(c1),hex(c2) FROM t5;
15475
# Update using various access methods
15478
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15479
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15481
# Update using Const
15482
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15483
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
15485
SELECT hex(c1),hex(c2) FROM t5;
15487
# Update using range
15488
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15489
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
15491
SELECT hex(c1),hex(c2) FROM t5;
15492
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15494
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
15497
SELECT hex(c1),hex(c2) FROM t5;
15499
# Update using eq_ref
15500
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15501
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15503
############# DELETE ###########
15508
#Borrowed from suite/ndb/t/ndb_bitfield.test
15509
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15510
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
15512
# Delete by order by limit
15513
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15516
# Delete rows with NULL column
15517
DELETE FROM t6 WHERE c2=NULL;
15520
# Delete with range values
15521
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
15523
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
15525
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
15528
#Multi table delete
15529
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
15531
SELECT hex(c1),hex(c2) FROM t5;
15534
# Delete using various access methods
15537
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15538
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15540
# Update using Const
15541
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15542
DELETE FROM t5 WHERE c1=6 AND c2=6;
15544
SELECT hex(c1),hex(c2) FROM t5;
15546
# Update using range
15547
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15548
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
15550
SELECT hex(c1),hex(c2) FROM t5;
15551
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15552
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15554
SELECT hex(c1),hex(c2) FROM t5;
15556
# Update using eq_ref
15557
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15558
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15560
# Droping the tables
15561
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
15563
####Checking the bit values####
15564
# Produces different output on different platforms
15565
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
15566
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<32);
15567
######### INSERT/SELECT#########
15569
#### Insert and select 32 bit data into the table####
15570
CREATE TABLE t1(c1 BIT(32));
15571
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
15577
set @v3=repeat('1',@v1);
15578
let $STR0= query_get_value(select @v3 as I,I,1);
15579
eval INSERT INTO t1 VALUES (b'$STR0');
15580
set @v3=repeat('0',@v1);
15581
let $STR1= query_get_value(select @v3 as I,I,1);
15582
eval INSERT INTO t1 VALUES (b'$STR1');
15583
set @v3=repeat('01',@v2);
15584
let $STR2= query_get_value(select @v3 as I,I,1);
15585
eval INSERT INTO t1 VALUES (b'$STR2');
15586
set @v3=repeat('10',@v2);
15587
let $STR3= query_get_value(select @v3 as I,I,1);
15588
eval INSERT INTO t1 VALUES (b'$STR3');
15589
set @v3=repeat('1',@v1);
15590
set @v4=repeat('01',@v2);
15591
set @v5=repeat('10',@v2);
15592
let $STR0= query_get_value(select @v3 as I,I,1);
15593
let $STR2= query_get_value(select @v4 as I,I,1);
15594
let $STR3= query_get_value(select @v5 as I,I,1);
15595
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
15598
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
15599
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
15601
SELECT HEX(c1) FROM t1;
15603
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
15605
SELECT OCT(c1) FROM t1;
15607
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
15609
SELECT BIN(c1) FROM t1;
15611
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
15613
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
15615
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
15617
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
15619
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
15621
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
15623
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
15625
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
15627
CREATE TABLE t3 (c1 BIT(65));
15628
# Checking for bug #9571
15629
CREATE TABLE t4(i INT, b BIT NOT NULL);
15630
ALTER TABLE t4 ADD PRIMARY KEY (i);
15631
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
15632
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
15633
#Borrowed from suite/ndb/t/ndb_bitfield.test
15634
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15635
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15637
SELECT HEX(c1),HEX(c2) FROM t5;
15639
#Insert permissible NULLs
15640
INSERT IGNORE INTO t5 VALUES(96,null);
15641
INSERT INTO t6 VALUES(null,null);
15642
# Now select using various table access methods (full table scan, range scan, index scan etc.)
15643
## Full table scan ##
15645
SELECT HEX(c1),HEX(c2) FROM t5;
15647
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
15649
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
15650
## Forward index scan, covering ##
15652
SELECT bin(c1) FROM t5;
15653
## Backward index scan, covering ##
15654
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
15655
## Forward index scan, non-covering ##
15656
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
15657
## Backward index scan, non-covering ##
15658
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
15660
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
15661
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
15662
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
15663
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
15664
## Range access, ordered ##
15665
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
15666
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
15667
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
15668
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
15669
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
15670
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
15671
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
15672
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
15673
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
15674
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
15675
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
15676
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
15677
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
15678
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
15679
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
15680
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
15681
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
15682
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
15683
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
15684
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
15685
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
15686
## Range access, backwards scan ##
15687
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
15688
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
15689
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
15690
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
15691
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
15692
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
15693
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
15694
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
15695
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
15696
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
15697
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
15698
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
15699
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
15700
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
15701
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
15702
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
15703
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
15704
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
15705
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
15706
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
15707
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
15708
#Inserting different charachers
15709
CREATE TABLE t7(c1 BIT(32));
15710
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
15713
############# UPDATE ###########
15715
# Update order by limit
15716
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15719
# Update with arithmetic operations
15720
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
15722
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
15725
# Update with NULL ( NULL to number & number to NULL)
15726
UPDATE t6 SET c2=NULL WHERE c1=23;
15728
UPDATE t6 SET c2=10 WHERE c2=NULL;
15731
# Update range values
15732
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
15734
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
15736
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
15739
# Update outside range would be clipped to closest endpoints
15740
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
15742
UPDATE t6 SET c2=-1 WHERE c1=94;
15745
# Update ignore on bad null error
15747
SELECT hex(c1) FROM t5 WHERE c1<>0;
15748
SET SQL_MODE=STRICT_ALL_TABLES;
15749
--error ER_BAD_NULL_ERROR
15750
UPDATE t5 SET c1=NULL WHERE c1<>0;
15751
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
15753
SELECT hex(c1),hex(c2) FROM t5;
15754
SET SQL_MODE=DEFAULT;
15756
#Multi table update
15758
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
15761
SELECT hex(c1),hex(c2) FROM t5;
15764
# Update using various access methods
15767
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15768
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15770
# Update using Const
15771
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15772
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
15774
SELECT hex(c1),hex(c2) FROM t5;
15776
# Update using range
15777
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15778
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
15780
SELECT hex(c1),hex(c2) FROM t5;
15781
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15783
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
15786
SELECT hex(c1),hex(c2) FROM t5;
15788
# Update using eq_ref
15789
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15790
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15792
############# DELETE ###########
15797
#Borrowed from suite/ndb/t/ndb_bitfield.test
15798
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15799
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
15801
# Delete by order by limit
15802
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
15805
# Delete rows with NULL column
15806
DELETE FROM t6 WHERE c2=NULL;
15809
# Delete with range values
15810
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
15812
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
15814
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
15817
#Multi table delete
15818
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
15820
SELECT hex(c1),hex(c2) FROM t5;
15823
# Delete using various access methods
15826
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15827
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
15829
# Update using Const
15830
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
15831
DELETE FROM t5 WHERE c1=6 AND c2=6;
15833
SELECT hex(c1),hex(c2) FROM t5;
15835
# Update using range
15836
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
15837
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
15839
SELECT hex(c1),hex(c2) FROM t5;
15840
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15841
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
15843
SELECT hex(c1),hex(c2) FROM t5;
15845
# Update using eq_ref
15846
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15847
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
15849
# Droping the tables
15850
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
15852
####Checking the bit values####
15853
# Produces different output on different platforms
15854
#SELECT 0 + b'1010101010101010101010101010101010101010101010101010101010101010';
15855
SELECT 0 + (1010101010101010101010101010101010101010101010101010101010101010<<64);
15856
######### INSERT/SELECT#########
15858
#### Insert and select 64 bit data into the table####
15859
CREATE TABLE t1(c1 BIT(64));
15860
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
15866
set @v3=repeat('1',@v1);
15867
let $STR0= query_get_value(select @v3 as I,I,1);
15868
eval INSERT INTO t1 VALUES (b'$STR0');
15869
set @v3=repeat('0',@v1);
15870
let $STR1= query_get_value(select @v3 as I,I,1);
15871
eval INSERT INTO t1 VALUES (b'$STR1');
15872
set @v3=repeat('01',@v2);
15873
let $STR2= query_get_value(select @v3 as I,I,1);
15874
eval INSERT INTO t1 VALUES (b'$STR2');
15875
set @v3=repeat('10',@v2);
15876
let $STR3= query_get_value(select @v3 as I,I,1);
15877
eval INSERT INTO t1 VALUES (b'$STR3');
15878
set @v3=repeat('1',@v1);
15879
set @v4=repeat('01',@v2);
15880
set @v5=repeat('10',@v2);
15881
let $STR0= query_get_value(select @v3 as I,I,1);
15882
let $STR2= query_get_value(select @v4 as I,I,1);
15883
let $STR3= query_get_value(select @v5 as I,I,1);
15884
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
15887
INSERT INTO t1 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010');
15888
INSERT INTO t2 VALUES (b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010', b'1010101010101010101010101010101010101010101010101010101010101010');
15890
SELECT HEX(c1) FROM t1;
15892
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
15894
SELECT OCT(c1) FROM t1;
15896
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
15898
SELECT BIN(c1) FROM t1;
15900
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
15902
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
15904
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
15906
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
15908
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
15910
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
15912
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
15914
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
15916
CREATE TABLE t3 (c1 BIT(65));
15917
# Checking for bug #9571
15918
CREATE TABLE t4(i INT, b BIT NOT NULL);
15919
ALTER TABLE t4 ADD PRIMARY KEY (i);
15920
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
15921
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
15922
#Borrowed from suite/ndb/t/ndb_bitfield.test
15923
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15924
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
15926
SELECT HEX(c1),HEX(c2) FROM t5;
15928
#Insert permissible NULLs
15929
INSERT IGNORE INTO t5 VALUES(96,null);
15930
INSERT INTO t6 VALUES(null,null);
15931
# Now select using various table access methods (full table scan, range scan, index scan etc.)
15932
## Full table scan ##
15934
SELECT HEX(c1),HEX(c2) FROM t5;
15936
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
15938
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
15939
## Forward index scan, covering ##
15941
SELECT bin(c1) FROM t5;
15942
## Backward index scan, covering ##
15943
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
15944
## Forward index scan, non-covering ##
15945
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
15946
## Backward index scan, non-covering ##
15947
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
15949
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
15950
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
15951
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
15952
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
15953
## Range access, ordered ##
15954
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
15955
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
15956
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
15957
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
15958
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
15959
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
15960
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
15961
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
15962
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
15963
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
15964
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
15965
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
15966
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
15967
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
15968
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
15969
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
15970
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
15971
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
15972
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
15973
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
15974
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
15975
## Range access, backwards scan ##
15976
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
15977
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
15978
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
15979
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
15980
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
15981
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
15982
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
15983
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
15984
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
15985
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
15986
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
15987
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
15988
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
15989
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
15990
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
15991
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
15992
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
15993
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
15994
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
15995
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
15996
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
15997
#Inserting different charachers
15998
CREATE TABLE t7(c1 BIT(64));
15999
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
16002
############# UPDATE ###########
16004
# Update order by limit
16005
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16008
# Update with arithmetic operations
16009
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
16011
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
16014
# Update with NULL ( NULL to number & number to NULL)
16015
UPDATE t6 SET c2=NULL WHERE c1=23;
16017
UPDATE t6 SET c2=10 WHERE c2=NULL;
16020
# Update range values
16021
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
16023
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
16025
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
16028
# Update outside range would be clipped to closest endpoints
16029
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
16031
UPDATE t6 SET c2=-1 WHERE c1=94;
16034
# Update ignore on bad null error
16036
SELECT hex(c1) FROM t5 WHERE c1<>0;
16037
SET SQL_MODE=STRICT_ALL_TABLES;
16038
--error ER_BAD_NULL_ERROR
16039
UPDATE t5 SET c1=NULL WHERE c1<>0;
16040
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
16042
SELECT hex(c1),hex(c2) FROM t5;
16043
SET SQL_MODE=DEFAULT;
16045
#Multi table update
16047
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
16050
SELECT hex(c1),hex(c2) FROM t5;
16053
# Update using various access methods
16056
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16057
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16059
# Update using Const
16060
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16061
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
16063
SELECT hex(c1),hex(c2) FROM t5;
16065
# Update using range
16066
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16067
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
16069
SELECT hex(c1),hex(c2) FROM t5;
16070
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16072
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
16075
SELECT hex(c1),hex(c2) FROM t5;
16077
# Update using eq_ref
16078
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16079
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16081
############# DELETE ###########
16086
#Borrowed from suite/ndb/t/ndb_bitfield.test
16087
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16088
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
16090
# Delete by order by limit
16091
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16094
# Delete rows with NULL column
16095
DELETE FROM t6 WHERE c2=NULL;
16098
# Delete with range values
16099
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
16101
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
16103
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
16106
#Multi table delete
16107
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
16109
SELECT hex(c1),hex(c2) FROM t5;
16112
# Delete using various access methods
16115
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16116
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16118
# Update using Const
16119
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16120
DELETE FROM t5 WHERE c1=6 AND c2=6;
16122
SELECT hex(c1),hex(c2) FROM t5;
16124
# Update using range
16125
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16126
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
16128
SELECT hex(c1),hex(c2) FROM t5;
16129
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16130
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16132
SELECT hex(c1),hex(c2) FROM t5;
16134
# Update using eq_ref
16135
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16136
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16138
# Droping the tables
16139
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
16141
####Checking the bit values####
16142
# Produces different output for different platform
16143
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
16144
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<0);
16145
######### INSERT/SELECT#########
16147
#### Insert and select 0 bit data into the table####
16148
CREATE TABLE t1(c1 BIT(0));
16149
CREATE TABLE t2(c1 BIT(0), c2 BIT(0), c3 BIT(0));
16155
set @v3=repeat('1',@v1);
16156
let $STR0= query_get_value(select @v3 as I,I,1);
16157
eval INSERT INTO t1 VALUES (b'$STR0');
16158
set @v3=repeat('0',@v1);
16159
let $STR1= query_get_value(select @v3 as I,I,1);
16160
eval INSERT INTO t1 VALUES (b'$STR1');
16161
set @v3=repeat('01',@v2);
16162
let $STR2= query_get_value(select @v3 as I,I,1);
16163
eval INSERT INTO t1 VALUES (b'$STR2');
16164
set @v3=repeat('10',@v2);
16165
let $STR3= query_get_value(select @v3 as I,I,1);
16166
eval INSERT INTO t1 VALUES (b'$STR3');
16167
set @v3=repeat('1',@v1);
16168
set @v4=repeat('01',@v2);
16169
set @v5=repeat('10',@v2);
16170
let $STR0= query_get_value(select @v3 as I,I,1);
16171
let $STR2= query_get_value(select @v4 as I,I,1);
16172
let $STR3= query_get_value(select @v5 as I,I,1);
16173
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
16176
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
16177
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
16179
SELECT HEX(c1) FROM t1;
16181
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
16183
SELECT OCT(c1) FROM t1;
16185
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
16187
SELECT BIN(c1) FROM t1;
16189
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
16191
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
16193
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
16195
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
16197
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
16199
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
16201
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
16203
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
16205
CREATE TABLE t3 (c1 BIT(65));
16206
# Checking for bug #9571
16207
CREATE TABLE t4(i INT, b BIT NOT NULL);
16208
ALTER TABLE t4 ADD PRIMARY KEY (i);
16209
CREATE TABLE t5(c1 BIT(0) NOT NULL PRIMARY KEY, c2 BIT(0));
16210
CREATE TABLE t6(c1 BIT(0), c2 BIT(0));
16211
#Borrowed from suite/ndb/t/ndb_bitfield.test
16212
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16213
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16215
SELECT HEX(c1),HEX(c2) FROM t5;
16217
#Insert permissible NULLs
16218
INSERT IGNORE INTO t5 VALUES(96,null);
16219
INSERT INTO t6 VALUES(null,null);
16220
# Now select using various table access methods (full table scan, range scan, index scan etc.)
16221
## Full table scan ##
16223
SELECT HEX(c1),HEX(c2) FROM t5;
16225
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
16227
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
16228
## Forward index scan, covering ##
16230
SELECT bin(c1) FROM t5;
16231
## Backward index scan, covering ##
16232
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
16233
## Forward index scan, non-covering ##
16234
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
16235
## Backward index scan, non-covering ##
16236
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
16238
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1;
16239
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 LIMIT 2;
16240
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC ;
16241
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '0' ORDER BY c1 DESC LIMIT 2 ;
16242
## Range access, ordered ##
16243
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 ;
16244
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 ;
16245
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 LIMIT 2 ;
16246
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 ;
16247
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 LIMIT 2 ;
16248
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1;
16249
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 LIMIT 2 ;
16250
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
16251
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 LIMIT 2 ;
16252
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1;
16253
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 LIMIT 2 ;
16254
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1;
16255
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 LIMIT 2 ;
16256
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1;
16257
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 LIMIT 2 ;
16258
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 ;
16259
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 LIMIT 2 ;
16260
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
16261
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
16262
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
16263
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
16264
## Range access, backwards scan ##
16265
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC;
16266
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '0' ORDER BY c1 DESC LIMIT 2 ;
16267
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC;
16268
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '0' ORDER BY c1 DESC LIMIT 2 ;
16269
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC ;
16270
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' ORDER BY c1 DESC LIMIT 2 ;
16271
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC;
16272
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '0' ORDER BY c1 DESC LIMIT 2 ;
16273
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC ;
16274
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '0' ORDER BY c1 DESC LIMIT 2 ;
16275
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC ;
16276
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'0' ORDER BY c1 DESC LIMIT 2 ;
16277
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC;
16278
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '0' AND '64' ORDER BY c1 DESC LIMIT 2 ;
16279
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC ;
16280
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '0' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
16281
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '0' AND c1 < '64' AND c2 = '0' ORDER BY c1 DESC LIMIT 2 ;
16282
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
16283
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
16284
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
16285
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
16286
#Inserting different charachers
16287
CREATE TABLE t7(c1 BIT(0));
16288
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
16291
############# UPDATE ###########
16293
# Update order by limit
16294
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16297
# Update with arithmetic operations
16298
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
16300
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
16303
# Update with NULL ( NULL to number & number to NULL)
16304
UPDATE t6 SET c2=NULL WHERE c1=23;
16306
UPDATE t6 SET c2=10 WHERE c2=NULL;
16309
# Update range values
16310
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
16312
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
16314
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
16317
# Update outside range would be clipped to closest endpoints
16318
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
16320
UPDATE t6 SET c2=-1 WHERE c1=94;
16323
# Update ignore on bad null error
16325
SELECT hex(c1) FROM t5 WHERE c1<>0;
16326
SET SQL_MODE=STRICT_ALL_TABLES;
16327
--error ER_BAD_NULL_ERROR
16328
UPDATE t5 SET c1=NULL WHERE c1<>0;
16329
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
16331
SELECT hex(c1),hex(c2) FROM t5;
16332
SET SQL_MODE=DEFAULT;
16334
#Multi table update
16336
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
16339
SELECT hex(c1),hex(c2) FROM t5;
16342
# Update using various access methods
16345
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16346
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16348
# Update using Const
16349
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16350
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
16352
SELECT hex(c1),hex(c2) FROM t5;
16354
# Update using range
16355
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16356
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
16358
SELECT hex(c1),hex(c2) FROM t5;
16359
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16361
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
16364
SELECT hex(c1),hex(c2) FROM t5;
16366
# Update using eq_ref
16367
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16368
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16370
############# DELETE ###########
16375
#Borrowed from suite/ndb/t/ndb_bitfield.test
16376
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16377
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
16379
# Delete by order by limit
16380
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16383
# Delete rows with NULL column
16384
DELETE FROM t6 WHERE c2=NULL;
16387
# Delete with range values
16388
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
16390
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
16392
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
16395
#Multi table delete
16396
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
16398
SELECT hex(c1),hex(c2) FROM t5;
16401
# Delete using various access methods
16404
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16405
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16407
# Update using Const
16408
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16409
DELETE FROM t5 WHERE c1=6 AND c2=6;
16411
SELECT hex(c1),hex(c2) FROM t5;
16413
# Update using range
16414
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16415
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
16417
SELECT hex(c1),hex(c2) FROM t5;
16418
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16419
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16421
SELECT hex(c1),hex(c2) FROM t5;
16423
# Update using eq_ref
16424
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16425
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16427
# Droping the tables
16428
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
16430
####Checking the bit values####
16431
# Produces different output for different platform
16432
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
16433
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<1);
16434
######### INSERT/SELECT#########
16436
#### Insert and select 1 bit data into the table####
16437
CREATE TABLE t1(c1 BIT(1));
16438
CREATE TABLE t2(c1 BIT(1), c2 BIT(1), c3 BIT(1));
16444
set @v3=repeat('1',@v1);
16445
let $STR0= query_get_value(select @v3 as I,I,1);
16446
eval INSERT INTO t1 VALUES (b'$STR0');
16447
set @v3=repeat('0',@v1);
16448
let $STR1= query_get_value(select @v3 as I,I,1);
16449
eval INSERT INTO t1 VALUES (b'$STR1');
16450
set @v3=repeat('01',@v2);
16451
let $STR2= query_get_value(select @v3 as I,I,1);
16452
eval INSERT INTO t1 VALUES (b'$STR2');
16453
set @v3=repeat('10',@v2);
16454
let $STR3= query_get_value(select @v3 as I,I,1);
16455
eval INSERT INTO t1 VALUES (b'$STR3');
16456
set @v3=repeat('1',@v1);
16457
set @v4=repeat('01',@v2);
16458
set @v5=repeat('10',@v2);
16459
let $STR0= query_get_value(select @v3 as I,I,1);
16460
let $STR2= query_get_value(select @v4 as I,I,1);
16461
let $STR3= query_get_value(select @v5 as I,I,1);
16462
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
16465
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
16466
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
16468
SELECT HEX(c1) FROM t1;
16470
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
16472
SELECT OCT(c1) FROM t1;
16474
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
16476
SELECT BIN(c1) FROM t1;
16478
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
16480
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
16482
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
16484
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
16486
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
16488
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
16490
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
16492
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
16494
CREATE TABLE t3 (c1 BIT(65));
16495
# Checking for bug #9571
16496
CREATE TABLE t4(i INT, b BIT NOT NULL);
16497
ALTER TABLE t4 ADD PRIMARY KEY (i);
16498
CREATE TABLE t5(c1 BIT(1) NOT NULL PRIMARY KEY, c2 BIT(1));
16499
CREATE TABLE t6(c1 BIT(1), c2 BIT(1));
16500
#Borrowed from suite/ndb/t/ndb_bitfield.test
16501
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16502
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16504
SELECT HEX(c1),HEX(c2) FROM t5;
16506
#Insert permissible NULLs
16507
INSERT IGNORE INTO t5 VALUES(96,null);
16508
INSERT INTO t6 VALUES(null,null);
16509
# Now select using various table access methods (full table scan, range scan, index scan etc.)
16510
## Full table scan ##
16512
SELECT HEX(c1),HEX(c2) FROM t5;
16514
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
16516
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
16517
## Forward index scan, covering ##
16519
SELECT bin(c1) FROM t5;
16520
## Backward index scan, covering ##
16521
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
16522
## Forward index scan, non-covering ##
16523
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
16524
## Backward index scan, non-covering ##
16525
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
16527
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1;
16528
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 LIMIT 2;
16529
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC ;
16530
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '1' ORDER BY c1 DESC LIMIT 2 ;
16531
## Range access, ordered ##
16532
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 ;
16533
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 ;
16534
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 LIMIT 2 ;
16535
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 ;
16536
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 LIMIT 2 ;
16537
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1;
16538
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 LIMIT 2 ;
16539
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
16540
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 LIMIT 2 ;
16541
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1;
16542
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 LIMIT 2 ;
16543
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1;
16544
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 LIMIT 2 ;
16545
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1;
16546
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 LIMIT 2 ;
16547
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 ;
16548
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 LIMIT 2 ;
16549
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
16550
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
16551
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
16552
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
16553
## Range access, backwards scan ##
16554
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC;
16555
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '1' ORDER BY c1 DESC LIMIT 2 ;
16556
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC;
16557
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '1' ORDER BY c1 DESC LIMIT 2 ;
16558
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC ;
16559
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' ORDER BY c1 DESC LIMIT 2 ;
16560
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC;
16561
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '1' ORDER BY c1 DESC LIMIT 2 ;
16562
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC ;
16563
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '1' ORDER BY c1 DESC LIMIT 2 ;
16564
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC ;
16565
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'1' ORDER BY c1 DESC LIMIT 2 ;
16566
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC;
16567
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '1' AND '64' ORDER BY c1 DESC LIMIT 2 ;
16568
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC ;
16569
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '1' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
16570
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '1' AND c1 < '64' AND c2 = '1' ORDER BY c1 DESC LIMIT 2 ;
16571
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
16572
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
16573
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
16574
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
16575
#Inserting different charachers
16576
CREATE TABLE t7(c1 BIT(1));
16577
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
16580
############# UPDATE ###########
16582
# Update order by limit
16583
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16586
# Update with arithmetic operations
16587
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
16589
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
16592
# Update with NULL ( NULL to number & number to NULL)
16593
UPDATE t6 SET c2=NULL WHERE c1=23;
16595
UPDATE t6 SET c2=10 WHERE c2=NULL;
16598
# Update range values
16599
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
16601
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
16603
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
16606
# Update outside range would be clipped to closest endpoints
16607
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
16609
UPDATE t6 SET c2=-1 WHERE c1=94;
16612
# Update ignore on bad null error
16614
SELECT hex(c1) FROM t5 WHERE c1<>0;
16615
SET SQL_MODE=STRICT_ALL_TABLES;
16616
--error ER_BAD_NULL_ERROR
16617
UPDATE t5 SET c1=NULL WHERE c1<>0;
16618
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
16620
SELECT hex(c1),hex(c2) FROM t5;
16621
SET SQL_MODE=DEFAULT;
16623
#Multi table update
16625
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
16628
SELECT hex(c1),hex(c2) FROM t5;
16631
# Update using various access methods
16634
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16635
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16637
# Update using Const
16638
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16639
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
16641
SELECT hex(c1),hex(c2) FROM t5;
16643
# Update using range
16644
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16645
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
16647
SELECT hex(c1),hex(c2) FROM t5;
16648
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16650
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
16653
SELECT hex(c1),hex(c2) FROM t5;
16655
# Update using eq_ref
16656
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16657
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16659
############# DELETE ###########
16664
#Borrowed from suite/ndb/t/ndb_bitfield.test
16665
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16666
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
16668
# Delete by order by limit
16669
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16672
# Delete rows with NULL column
16673
DELETE FROM t6 WHERE c2=NULL;
16676
# Delete with range values
16677
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
16679
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
16681
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
16684
#Multi table delete
16685
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
16687
SELECT hex(c1),hex(c2) FROM t5;
16690
# Delete using various access methods
16693
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16694
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16696
# Update using Const
16697
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16698
DELETE FROM t5 WHERE c1=6 AND c2=6;
16700
SELECT hex(c1),hex(c2) FROM t5;
16702
# Update using range
16703
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16704
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
16706
SELECT hex(c1),hex(c2) FROM t5;
16707
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16708
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16710
SELECT hex(c1),hex(c2) FROM t5;
16712
# Update using eq_ref
16713
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16714
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16716
# Droping the tables
16717
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
16719
####Checking the bit values####
16720
# Produces different output for different platform
16721
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
16722
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<2);
16723
######### INSERT/SELECT#########
16725
#### Insert and select 2 bit data into the table####
16726
CREATE TABLE t1(c1 BIT(2));
16727
CREATE TABLE t2(c1 BIT(2), c2 BIT(2), c3 BIT(2));
16733
set @v3=repeat('1',@v1);
16734
let $STR0= query_get_value(select @v3 as I,I,1);
16735
eval INSERT INTO t1 VALUES (b'$STR0');
16736
set @v3=repeat('0',@v1);
16737
let $STR1= query_get_value(select @v3 as I,I,1);
16738
eval INSERT INTO t1 VALUES (b'$STR1');
16739
set @v3=repeat('01',@v2);
16740
let $STR2= query_get_value(select @v3 as I,I,1);
16741
eval INSERT INTO t1 VALUES (b'$STR2');
16742
set @v3=repeat('10',@v2);
16743
let $STR3= query_get_value(select @v3 as I,I,1);
16744
eval INSERT INTO t1 VALUES (b'$STR3');
16745
set @v3=repeat('1',@v1);
16746
set @v4=repeat('01',@v2);
16747
set @v5=repeat('10',@v2);
16748
let $STR0= query_get_value(select @v3 as I,I,1);
16749
let $STR2= query_get_value(select @v4 as I,I,1);
16750
let $STR3= query_get_value(select @v5 as I,I,1);
16751
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
16754
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
16755
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
16757
SELECT HEX(c1) FROM t1;
16759
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
16761
SELECT OCT(c1) FROM t1;
16763
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
16765
SELECT BIN(c1) FROM t1;
16767
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
16769
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
16771
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
16773
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
16775
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
16777
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
16779
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
16781
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
16783
CREATE TABLE t3 (c1 BIT(65));
16784
# Checking for bug #9571
16785
CREATE TABLE t4(i INT, b BIT NOT NULL);
16786
ALTER TABLE t4 ADD PRIMARY KEY (i);
16787
CREATE TABLE t5(c1 BIT(2) NOT NULL PRIMARY KEY, c2 BIT(2));
16788
CREATE TABLE t6(c1 BIT(2), c2 BIT(2));
16789
#Borrowed from suite/ndb/t/ndb_bitfield.test
16790
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16791
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16793
SELECT HEX(c1),HEX(c2) FROM t5;
16795
#Insert permissible NULLs
16796
INSERT IGNORE INTO t5 VALUES(96,null);
16797
INSERT INTO t6 VALUES(null,null);
16798
# Now select using various table access methods (full table scan, range scan, index scan etc.)
16799
## Full table scan ##
16801
SELECT HEX(c1),HEX(c2) FROM t5;
16803
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
16805
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
16806
## Forward index scan, covering ##
16808
SELECT bin(c1) FROM t5;
16809
## Backward index scan, covering ##
16810
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
16811
## Forward index scan, non-covering ##
16812
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
16813
## Backward index scan, non-covering ##
16814
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
16816
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1;
16817
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 LIMIT 2;
16818
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC ;
16819
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '2' ORDER BY c1 DESC LIMIT 2 ;
16820
## Range access, ordered ##
16821
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 ;
16822
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 ;
16823
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 LIMIT 2 ;
16824
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 ;
16825
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 LIMIT 2 ;
16826
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1;
16827
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 LIMIT 2 ;
16828
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
16829
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 LIMIT 2 ;
16830
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1;
16831
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 LIMIT 2 ;
16832
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1;
16833
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 LIMIT 2 ;
16834
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1;
16835
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 LIMIT 2 ;
16836
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 ;
16837
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 LIMIT 2 ;
16838
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
16839
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
16840
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
16841
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
16842
## Range access, backwards scan ##
16843
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC;
16844
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '2' ORDER BY c1 DESC LIMIT 2 ;
16845
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC;
16846
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '2' ORDER BY c1 DESC LIMIT 2 ;
16847
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC ;
16848
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' ORDER BY c1 DESC LIMIT 2 ;
16849
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC;
16850
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '2' ORDER BY c1 DESC LIMIT 2 ;
16851
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC ;
16852
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '2' ORDER BY c1 DESC LIMIT 2 ;
16853
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC ;
16854
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'2' ORDER BY c1 DESC LIMIT 2 ;
16855
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC;
16856
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '2' AND '64' ORDER BY c1 DESC LIMIT 2 ;
16857
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC ;
16858
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '2' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
16859
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '2' AND c1 < '64' AND c2 = '2' ORDER BY c1 DESC LIMIT 2 ;
16860
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
16861
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
16862
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
16863
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
16864
#Inserting different charachers
16865
CREATE TABLE t7(c1 BIT(2));
16866
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
16869
############# UPDATE ###########
16871
# Update order by limit
16872
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16875
# Update with arithmetic operations
16876
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
16878
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
16881
# Update with NULL ( NULL to number & number to NULL)
16882
UPDATE t6 SET c2=NULL WHERE c1=23;
16884
UPDATE t6 SET c2=10 WHERE c2=NULL;
16887
# Update range values
16888
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
16890
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
16892
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
16895
# Update outside range would be clipped to closest endpoints
16896
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
16898
UPDATE t6 SET c2=-1 WHERE c1=94;
16901
# Update ignore on bad null error
16903
SELECT hex(c1) FROM t5 WHERE c1<>0;
16904
SET SQL_MODE=STRICT_ALL_TABLES;
16905
--error ER_BAD_NULL_ERROR
16906
UPDATE t5 SET c1=NULL WHERE c1<>0;
16907
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
16909
SELECT hex(c1),hex(c2) FROM t5;
16910
SET SQL_MODE=DEFAULT;
16912
#Multi table update
16914
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
16917
SELECT hex(c1),hex(c2) FROM t5;
16920
# Update using various access methods
16923
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16924
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16926
# Update using Const
16927
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16928
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
16930
SELECT hex(c1),hex(c2) FROM t5;
16932
# Update using range
16933
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16934
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
16936
SELECT hex(c1),hex(c2) FROM t5;
16937
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16939
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
16942
SELECT hex(c1),hex(c2) FROM t5;
16944
# Update using eq_ref
16945
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16946
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
16948
############# DELETE ###########
16953
#Borrowed from suite/ndb/t/ndb_bitfield.test
16954
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
16955
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
16957
# Delete by order by limit
16958
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
16961
# Delete rows with NULL column
16962
DELETE FROM t6 WHERE c2=NULL;
16965
# Delete with range values
16966
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
16968
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
16970
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
16973
#Multi table delete
16974
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
16976
SELECT hex(c1),hex(c2) FROM t5;
16979
# Delete using various access methods
16982
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16983
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
16985
# Update using Const
16986
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
16987
DELETE FROM t5 WHERE c1=6 AND c2=6;
16989
SELECT hex(c1),hex(c2) FROM t5;
16991
# Update using range
16992
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
16993
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
16995
SELECT hex(c1),hex(c2) FROM t5;
16996
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16997
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
16999
SELECT hex(c1),hex(c2) FROM t5;
17001
# Update using eq_ref
17002
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17003
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17005
# Droping the tables
17006
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
17008
####Checking the bit values####
17009
# Produces different output for different platform
17010
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
17011
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<4);
17012
######### INSERT/SELECT#########
17014
#### Insert and select 4 bit data into the table####
17015
CREATE TABLE t1(c1 BIT(4));
17016
CREATE TABLE t2(c1 BIT(4), c2 BIT(4), c3 BIT(4));
17022
set @v3=repeat('1',@v1);
17023
let $STR0= query_get_value(select @v3 as I,I,1);
17024
eval INSERT INTO t1 VALUES (b'$STR0');
17025
set @v3=repeat('0',@v1);
17026
let $STR1= query_get_value(select @v3 as I,I,1);
17027
eval INSERT INTO t1 VALUES (b'$STR1');
17028
set @v3=repeat('01',@v2);
17029
let $STR2= query_get_value(select @v3 as I,I,1);
17030
eval INSERT INTO t1 VALUES (b'$STR2');
17031
set @v3=repeat('10',@v2);
17032
let $STR3= query_get_value(select @v3 as I,I,1);
17033
eval INSERT INTO t1 VALUES (b'$STR3');
17034
set @v3=repeat('1',@v1);
17035
set @v4=repeat('01',@v2);
17036
set @v5=repeat('10',@v2);
17037
let $STR0= query_get_value(select @v3 as I,I,1);
17038
let $STR2= query_get_value(select @v4 as I,I,1);
17039
let $STR3= query_get_value(select @v5 as I,I,1);
17040
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
17043
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
17044
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
17046
SELECT HEX(c1) FROM t1;
17048
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
17050
SELECT OCT(c1) FROM t1;
17052
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
17054
SELECT BIN(c1) FROM t1;
17056
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
17058
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
17060
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
17062
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
17064
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
17066
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
17068
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
17070
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
17072
CREATE TABLE t3 (c1 BIT(65));
17073
# Checking for bug #9571
17074
CREATE TABLE t4(i INT, b BIT NOT NULL);
17075
ALTER TABLE t4 ADD PRIMARY KEY (i);
17076
CREATE TABLE t5(c1 BIT(4) NOT NULL PRIMARY KEY, c2 BIT(4));
17077
CREATE TABLE t6(c1 BIT(4), c2 BIT(4));
17078
#Borrowed from suite/ndb/t/ndb_bitfield.test
17079
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17080
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17082
SELECT HEX(c1),HEX(c2) FROM t5;
17084
#Insert permissible NULLs
17085
INSERT IGNORE INTO t5 VALUES(96,null);
17086
INSERT INTO t6 VALUES(null,null);
17087
# Now select using various table access methods (full table scan, range scan, index scan etc.)
17088
## Full table scan ##
17090
SELECT HEX(c1),HEX(c2) FROM t5;
17092
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
17094
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
17095
## Forward index scan, covering ##
17097
SELECT bin(c1) FROM t5;
17098
## Backward index scan, covering ##
17099
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
17100
## Forward index scan, non-covering ##
17101
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
17102
## Backward index scan, non-covering ##
17103
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
17105
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1;
17106
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 LIMIT 2;
17107
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC ;
17108
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '4' ORDER BY c1 DESC LIMIT 2 ;
17109
## Range access, ordered ##
17110
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 ;
17111
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 ;
17112
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 LIMIT 2 ;
17113
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 ;
17114
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 LIMIT 2 ;
17115
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1;
17116
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 LIMIT 2 ;
17117
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
17118
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 LIMIT 2 ;
17119
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1;
17120
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 LIMIT 2 ;
17121
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1;
17122
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 LIMIT 2 ;
17123
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1;
17124
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 LIMIT 2 ;
17125
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 ;
17126
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 LIMIT 2 ;
17127
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
17128
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
17129
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
17130
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
17131
## Range access, backwards scan ##
17132
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC;
17133
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '4' ORDER BY c1 DESC LIMIT 2 ;
17134
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC;
17135
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '4' ORDER BY c1 DESC LIMIT 2 ;
17136
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC ;
17137
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' ORDER BY c1 DESC LIMIT 2 ;
17138
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC;
17139
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '4' ORDER BY c1 DESC LIMIT 2 ;
17140
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC ;
17141
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '4' ORDER BY c1 DESC LIMIT 2 ;
17142
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC ;
17143
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'4' ORDER BY c1 DESC LIMIT 2 ;
17144
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC;
17145
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '4' AND '64' ORDER BY c1 DESC LIMIT 2 ;
17146
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC ;
17147
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '4' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
17148
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '4' AND c1 < '64' AND c2 = '4' ORDER BY c1 DESC LIMIT 2 ;
17149
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
17150
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
17151
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
17152
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
17153
#Inserting different charachers
17154
CREATE TABLE t7(c1 BIT(4));
17155
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
17158
############# UPDATE ###########
17160
# Update order by limit
17161
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17164
# Update with arithmetic operations
17165
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
17167
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
17170
# Update with NULL ( NULL to number & number to NULL)
17171
UPDATE t6 SET c2=NULL WHERE c1=23;
17173
UPDATE t6 SET c2=10 WHERE c2=NULL;
17176
# Update range values
17177
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
17179
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
17181
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
17184
# Update outside range would be clipped to closest endpoints
17185
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
17187
UPDATE t6 SET c2=-1 WHERE c1=94;
17190
# Update ignore on bad null error
17192
SELECT hex(c1) FROM t5 WHERE c1<>0;
17193
SET SQL_MODE=STRICT_ALL_TABLES;
17194
--error ER_BAD_NULL_ERROR
17195
UPDATE t5 SET c1=NULL WHERE c1<>0;
17196
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
17198
SELECT hex(c1),hex(c2) FROM t5;
17199
SET SQL_MODE=DEFAULT;
17201
#Multi table update
17203
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
17206
SELECT hex(c1),hex(c2) FROM t5;
17209
# Update using various access methods
17212
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17213
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17215
# Update using Const
17216
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17217
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
17219
SELECT hex(c1),hex(c2) FROM t5;
17221
# Update using range
17222
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17223
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
17225
SELECT hex(c1),hex(c2) FROM t5;
17226
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17228
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
17231
SELECT hex(c1),hex(c2) FROM t5;
17233
# Update using eq_ref
17234
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17235
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17237
############# DELETE ###########
17242
#Borrowed from suite/ndb/t/ndb_bitfield.test
17243
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17244
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
17246
# Delete by order by limit
17247
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17250
# Delete rows with NULL column
17251
DELETE FROM t6 WHERE c2=NULL;
17254
# Delete with range values
17255
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
17257
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
17259
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
17262
#Multi table delete
17263
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
17265
SELECT hex(c1),hex(c2) FROM t5;
17268
# Delete using various access methods
17271
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17272
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17274
# Update using Const
17275
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17276
DELETE FROM t5 WHERE c1=6 AND c2=6;
17278
SELECT hex(c1),hex(c2) FROM t5;
17280
# Update using range
17281
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17282
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
17284
SELECT hex(c1),hex(c2) FROM t5;
17285
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17286
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17288
SELECT hex(c1),hex(c2) FROM t5;
17290
# Update using eq_ref
17291
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17292
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17294
# Droping the tables
17295
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
17297
####Checking the bit values####
17298
# Produces different output for different platform
17299
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
17300
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<8);
17301
######### INSERT/SELECT#########
17303
#### Insert and select 8 bit data into the table####
17304
CREATE TABLE t1(c1 BIT(8));
17305
CREATE TABLE t2(c1 BIT(8), c2 BIT(8), c3 BIT(8));
17311
set @v3=repeat('1',@v1);
17312
let $STR0= query_get_value(select @v3 as I,I,1);
17313
eval INSERT INTO t1 VALUES (b'$STR0');
17314
set @v3=repeat('0',@v1);
17315
let $STR1= query_get_value(select @v3 as I,I,1);
17316
eval INSERT INTO t1 VALUES (b'$STR1');
17317
set @v3=repeat('01',@v2);
17318
let $STR2= query_get_value(select @v3 as I,I,1);
17319
eval INSERT INTO t1 VALUES (b'$STR2');
17320
set @v3=repeat('10',@v2);
17321
let $STR3= query_get_value(select @v3 as I,I,1);
17322
eval INSERT INTO t1 VALUES (b'$STR3');
17323
set @v3=repeat('1',@v1);
17324
set @v4=repeat('01',@v2);
17325
set @v5=repeat('10',@v2);
17326
let $STR0= query_get_value(select @v3 as I,I,1);
17327
let $STR2= query_get_value(select @v4 as I,I,1);
17328
let $STR3= query_get_value(select @v5 as I,I,1);
17329
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
17332
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
17333
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
17335
SELECT HEX(c1) FROM t1;
17337
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
17339
SELECT OCT(c1) FROM t1;
17341
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
17343
SELECT BIN(c1) FROM t1;
17345
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
17347
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
17349
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
17351
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
17353
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
17355
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
17357
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
17359
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
17361
CREATE TABLE t3 (c1 BIT(65));
17362
# Checking for bug #9571
17363
CREATE TABLE t4(i INT, b BIT NOT NULL);
17364
ALTER TABLE t4 ADD PRIMARY KEY (i);
17365
CREATE TABLE t5(c1 BIT(8) NOT NULL PRIMARY KEY, c2 BIT(8));
17366
CREATE TABLE t6(c1 BIT(8), c2 BIT(8));
17367
#Borrowed from suite/ndb/t/ndb_bitfield.test
17368
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17369
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17371
SELECT HEX(c1),HEX(c2) FROM t5;
17373
#Insert permissible NULLs
17374
INSERT IGNORE INTO t5 VALUES(96,null);
17375
INSERT INTO t6 VALUES(null,null);
17376
# Now select using various table access methods (full table scan, range scan, index scan etc.)
17377
## Full table scan ##
17379
SELECT HEX(c1),HEX(c2) FROM t5;
17381
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
17383
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
17384
## Forward index scan, covering ##
17386
SELECT bin(c1) FROM t5;
17387
## Backward index scan, covering ##
17388
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
17389
## Forward index scan, non-covering ##
17390
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
17391
## Backward index scan, non-covering ##
17392
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
17394
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1;
17395
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 LIMIT 2;
17396
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC ;
17397
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '8' ORDER BY c1 DESC LIMIT 2 ;
17398
## Range access, ordered ##
17399
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 ;
17401
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 LIMIT 2 ;
17403
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 LIMIT 2 ;
17404
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1;
17405
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 LIMIT 2 ;
17406
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
17407
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 LIMIT 2 ;
17408
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1;
17409
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 LIMIT 2 ;
17411
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 LIMIT 2 ;
17412
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1;
17413
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 LIMIT 2 ;
17414
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 ;
17415
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 LIMIT 2 ;
17416
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
17417
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
17418
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
17419
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
17420
## Range access, backwards scan ##
17421
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC;
17422
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '8' ORDER BY c1 DESC LIMIT 2 ;
17424
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '8' ORDER BY c1 DESC LIMIT 2 ;
17426
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' ORDER BY c1 DESC LIMIT 2 ;
17427
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC;
17428
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '8' ORDER BY c1 DESC LIMIT 2 ;
17429
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC ;
17430
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '8' ORDER BY c1 DESC LIMIT 2 ;
17431
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC ;
17432
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'8' ORDER BY c1 DESC LIMIT 2 ;
17434
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '8' AND '64' ORDER BY c1 DESC LIMIT 2 ;
17435
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC ;
17436
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '8' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
17437
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '8' AND c1 < '64' AND c2 = '8' ORDER BY c1 DESC LIMIT 2 ;
17438
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
17439
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
17440
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
17441
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
17442
#Inserting different charachers
17443
CREATE TABLE t7(c1 BIT(8));
17444
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
17447
############# UPDATE ###########
17449
# Update order by limit
17450
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17453
# Update with arithmetic operations
17454
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
17456
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
17459
# Update with NULL ( NULL to number & number to NULL)
17460
UPDATE t6 SET c2=NULL WHERE c1=23;
17462
UPDATE t6 SET c2=10 WHERE c2=NULL;
17465
# Update range values
17466
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
17468
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
17470
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
17473
# Update outside range would be clipped to closest endpoints
17474
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
17476
UPDATE t6 SET c2=-1 WHERE c1=94;
17479
# Update ignore on bad null error
17481
SELECT hex(c1) FROM t5 WHERE c1<>0;
17482
SET SQL_MODE=STRICT_ALL_TABLES;
17483
--error ER_BAD_NULL_ERROR
17484
UPDATE t5 SET c1=NULL WHERE c1<>0;
17485
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
17487
SELECT hex(c1),hex(c2) FROM t5;
17488
SET SQL_MODE=DEFAULT;
17490
#Multi table update
17492
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
17495
SELECT hex(c1),hex(c2) FROM t5;
17498
# Update using various access methods
17501
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17502
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17504
# Update using Const
17505
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17506
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
17508
SELECT hex(c1),hex(c2) FROM t5;
17510
# Update using range
17511
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17512
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
17514
SELECT hex(c1),hex(c2) FROM t5;
17515
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17517
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
17520
SELECT hex(c1),hex(c2) FROM t5;
17522
# Update using eq_ref
17523
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17524
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17526
############# DELETE ###########
17531
#Borrowed from suite/ndb/t/ndb_bitfield.test
17532
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17533
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
17535
# Delete by order by limit
17536
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17539
# Delete rows with NULL column
17540
DELETE FROM t6 WHERE c2=NULL;
17543
# Delete with range values
17544
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
17546
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
17548
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
17551
#Multi table delete
17552
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
17554
SELECT hex(c1),hex(c2) FROM t5;
17557
# Delete using various access methods
17560
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17561
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17563
# Update using Const
17564
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17565
DELETE FROM t5 WHERE c1=6 AND c2=6;
17567
SELECT hex(c1),hex(c2) FROM t5;
17569
# Update using range
17570
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17571
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
17573
SELECT hex(c1),hex(c2) FROM t5;
17574
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17575
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17577
SELECT hex(c1),hex(c2) FROM t5;
17579
# Update using eq_ref
17580
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17581
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17583
# Droping the tables
17584
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
17586
####Checking the bit values####
17587
# Produces different output for different platform
17588
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
17589
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<16);
17590
######### INSERT/SELECT#########
17592
#### Insert and select 16 bit data into the table####
17593
CREATE TABLE t1(c1 BIT(16));
17594
CREATE TABLE t2(c1 BIT(16), c2 BIT(16), c3 BIT(16));
17600
set @v3=repeat('1',@v1);
17601
let $STR0= query_get_value(select @v3 as I,I,1);
17602
eval INSERT INTO t1 VALUES (b'$STR0');
17603
set @v3=repeat('0',@v1);
17604
let $STR1= query_get_value(select @v3 as I,I,1);
17605
eval INSERT INTO t1 VALUES (b'$STR1');
17606
set @v3=repeat('01',@v2);
17607
let $STR2= query_get_value(select @v3 as I,I,1);
17608
eval INSERT INTO t1 VALUES (b'$STR2');
17609
set @v3=repeat('10',@v2);
17610
let $STR3= query_get_value(select @v3 as I,I,1);
17611
eval INSERT INTO t1 VALUES (b'$STR3');
17612
set @v3=repeat('1',@v1);
17613
set @v4=repeat('01',@v2);
17614
set @v5=repeat('10',@v2);
17615
let $STR0= query_get_value(select @v3 as I,I,1);
17616
let $STR2= query_get_value(select @v4 as I,I,1);
17617
let $STR3= query_get_value(select @v5 as I,I,1);
17618
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
17621
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
17622
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
17624
SELECT HEX(c1) FROM t1;
17626
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
17628
SELECT OCT(c1) FROM t1;
17630
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
17632
SELECT BIN(c1) FROM t1;
17634
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
17636
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
17638
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
17640
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
17642
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
17644
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
17646
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
17648
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
17650
CREATE TABLE t3 (c1 BIT(65));
17651
# Checking for bug #9571
17652
CREATE TABLE t4(i INT, b BIT NOT NULL);
17653
ALTER TABLE t4 ADD PRIMARY KEY (i);
17654
CREATE TABLE t5(c1 BIT(16) NOT NULL PRIMARY KEY, c2 BIT(16));
17655
CREATE TABLE t6(c1 BIT(16), c2 BIT(16));
17656
#Borrowed from suite/ndb/t/ndb_bitfield.test
17657
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17658
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17660
SELECT HEX(c1),HEX(c2) FROM t5;
17662
#Insert permissible NULLs
17663
INSERT IGNORE INTO t5 VALUES(96,null);
17664
INSERT INTO t6 VALUES(null,null);
17665
# Now select using various table access methods (full table scan, range scan, index scan etc.)
17666
## Full table scan ##
17668
SELECT HEX(c1),HEX(c2) FROM t5;
17670
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
17672
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
17673
## Forward index scan, covering ##
17675
SELECT bin(c1) FROM t5;
17676
## Backward index scan, covering ##
17677
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
17678
## Forward index scan, non-covering ##
17679
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
17680
## Backward index scan, non-covering ##
17681
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
17683
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1;
17684
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 LIMIT 2;
17685
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC ;
17686
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '16' ORDER BY c1 DESC LIMIT 2 ;
17687
## Range access, ordered ##
17688
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 ;
17689
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 ;
17690
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 LIMIT 2 ;
17691
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 ;
17692
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 LIMIT 2 ;
17693
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1;
17694
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 LIMIT 2 ;
17695
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
17696
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 LIMIT 2 ;
17697
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1;
17698
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 LIMIT 2 ;
17699
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1;
17700
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 LIMIT 2 ;
17701
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1;
17702
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 LIMIT 2 ;
17703
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 ;
17704
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 LIMIT 2 ;
17705
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
17706
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
17707
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
17708
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
17709
## Range access, backwards scan ##
17710
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC;
17711
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '16' ORDER BY c1 DESC LIMIT 2 ;
17712
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC;
17713
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '16' ORDER BY c1 DESC LIMIT 2 ;
17714
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC ;
17715
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' ORDER BY c1 DESC LIMIT 2 ;
17716
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC;
17717
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '16' ORDER BY c1 DESC LIMIT 2 ;
17718
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC ;
17719
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '16' ORDER BY c1 DESC LIMIT 2 ;
17720
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC ;
17721
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'16' ORDER BY c1 DESC LIMIT 2 ;
17722
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC;
17723
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '16' AND '64' ORDER BY c1 DESC LIMIT 2 ;
17724
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC ;
17725
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '16' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
17726
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '16' AND c1 < '64' AND c2 = '16' ORDER BY c1 DESC LIMIT 2 ;
17727
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
17728
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
17729
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
17730
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
17731
#Inserting different charachers
17732
CREATE TABLE t7(c1 BIT(16));
17733
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
17736
############# UPDATE ###########
17738
# Update order by limit
17739
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17742
# Update with arithmetic operations
17743
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
17745
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
17748
# Update with NULL ( NULL to number & number to NULL)
17749
UPDATE t6 SET c2=NULL WHERE c1=23;
17751
UPDATE t6 SET c2=10 WHERE c2=NULL;
17754
# Update range values
17755
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
17757
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
17759
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
17762
# Update outside range would be clipped to closest endpoints
17763
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
17765
UPDATE t6 SET c2=-1 WHERE c1=94;
17768
# Update ignore on bad null error
17770
SELECT hex(c1) FROM t5 WHERE c1<>0;
17771
SET SQL_MODE=STRICT_ALL_TABLES;
17772
--error ER_BAD_NULL_ERROR
17773
UPDATE t5 SET c1=NULL WHERE c1<>0;
17774
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
17776
SELECT hex(c1),hex(c2) FROM t5;
17777
SET SQL_MODE=DEFAULT;
17779
#Multi table update
17781
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
17784
SELECT hex(c1),hex(c2) FROM t5;
17787
# Update using various access methods
17790
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17791
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17793
# Update using Const
17794
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17795
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
17797
SELECT hex(c1),hex(c2) FROM t5;
17799
# Update using range
17800
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17801
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
17803
SELECT hex(c1),hex(c2) FROM t5;
17804
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17806
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
17809
SELECT hex(c1),hex(c2) FROM t5;
17811
# Update using eq_ref
17812
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17813
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17815
############# DELETE ###########
17820
#Borrowed from suite/ndb/t/ndb_bitfield.test
17821
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17822
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
17824
# Delete by order by limit
17825
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
17828
# Delete rows with NULL column
17829
DELETE FROM t6 WHERE c2=NULL;
17832
# Delete with range values
17833
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
17835
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
17837
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
17840
#Multi table delete
17841
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
17843
SELECT hex(c1),hex(c2) FROM t5;
17846
# Delete using various access methods
17849
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17850
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
17852
# Update using Const
17853
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
17854
DELETE FROM t5 WHERE c1=6 AND c2=6;
17856
SELECT hex(c1),hex(c2) FROM t5;
17858
# Update using range
17859
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
17860
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
17862
SELECT hex(c1),hex(c2) FROM t5;
17863
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17864
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
17866
SELECT hex(c1),hex(c2) FROM t5;
17868
# Update using eq_ref
17869
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17870
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
17872
# Droping the tables
17873
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
17875
####Checking the bit values####
17876
# Produces different output for different platform
17877
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
17878
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<32);
17879
######### INSERT/SELECT#########
17881
#### Insert and select 32 bit data into the table####
17882
CREATE TABLE t1(c1 BIT(32));
17883
CREATE TABLE t2(c1 BIT(32), c2 BIT(32), c3 BIT(32));
17889
set @v3=repeat('1',@v1);
17890
let $STR0= query_get_value(select @v3 as I,I,1);
17891
eval INSERT INTO t1 VALUES (b'$STR0');
17892
set @v3=repeat('0',@v1);
17893
let $STR1= query_get_value(select @v3 as I,I,1);
17894
eval INSERT INTO t1 VALUES (b'$STR1');
17895
set @v3=repeat('01',@v2);
17896
let $STR2= query_get_value(select @v3 as I,I,1);
17897
eval INSERT INTO t1 VALUES (b'$STR2');
17898
set @v3=repeat('10',@v2);
17899
let $STR3= query_get_value(select @v3 as I,I,1);
17900
eval INSERT INTO t1 VALUES (b'$STR3');
17901
set @v3=repeat('1',@v1);
17902
set @v4=repeat('01',@v2);
17903
set @v5=repeat('10',@v2);
17904
let $STR0= query_get_value(select @v3 as I,I,1);
17905
let $STR2= query_get_value(select @v4 as I,I,1);
17906
let $STR3= query_get_value(select @v5 as I,I,1);
17907
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
17910
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
17911
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
17913
SELECT HEX(c1) FROM t1;
17915
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
17917
SELECT OCT(c1) FROM t1;
17919
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
17921
SELECT BIN(c1) FROM t1;
17923
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
17925
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
17927
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
17929
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
17931
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
17933
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
17935
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
17937
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
17939
CREATE TABLE t3 (c1 BIT(65));
17940
# Checking for bug #9571
17941
CREATE TABLE t4(i INT, b BIT NOT NULL);
17942
ALTER TABLE t4 ADD PRIMARY KEY (i);
17943
CREATE TABLE t5(c1 BIT(32) NOT NULL PRIMARY KEY, c2 BIT(32));
17944
CREATE TABLE t6(c1 BIT(32), c2 BIT(32));
17945
#Borrowed from suite/ndb/t/ndb_bitfield.test
17946
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17947
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
17949
SELECT HEX(c1),HEX(c2) FROM t5;
17951
#Insert permissible NULLs
17952
INSERT IGNORE INTO t5 VALUES(96,null);
17953
INSERT INTO t6 VALUES(null,null);
17954
# Now select using various table access methods (full table scan, range scan, index scan etc.)
17955
## Full table scan ##
17957
SELECT HEX(c1),HEX(c2) FROM t5;
17959
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
17961
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
17962
## Forward index scan, covering ##
17964
SELECT bin(c1) FROM t5;
17965
## Backward index scan, covering ##
17966
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
17967
## Forward index scan, non-covering ##
17968
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
17969
## Backward index scan, non-covering ##
17970
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
17972
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1;
17973
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 LIMIT 2;
17974
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC ;
17975
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '32' ORDER BY c1 DESC LIMIT 2 ;
17976
## Range access, ordered ##
17977
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 ;
17978
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 ;
17979
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 LIMIT 2 ;
17980
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 ;
17981
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 LIMIT 2 ;
17982
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1;
17983
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 LIMIT 2 ;
17984
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
17985
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 LIMIT 2 ;
17986
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1;
17987
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 LIMIT 2 ;
17988
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1;
17989
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 LIMIT 2 ;
17990
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1;
17991
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 LIMIT 2 ;
17992
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 ;
17993
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 LIMIT 2 ;
17994
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
17995
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
17996
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
17997
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
17998
## Range access, backwards scan ##
17999
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC;
18000
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '32' ORDER BY c1 DESC LIMIT 2 ;
18001
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC;
18002
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '32' ORDER BY c1 DESC LIMIT 2 ;
18003
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC ;
18004
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' ORDER BY c1 DESC LIMIT 2 ;
18005
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC;
18006
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '32' ORDER BY c1 DESC LIMIT 2 ;
18007
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC ;
18008
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '32' ORDER BY c1 DESC LIMIT 2 ;
18009
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC ;
18010
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'32' ORDER BY c1 DESC LIMIT 2 ;
18011
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC;
18012
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '32' AND '64' ORDER BY c1 DESC LIMIT 2 ;
18013
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC ;
18014
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '32' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
18015
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '32' AND c1 < '64' AND c2 = '32' ORDER BY c1 DESC LIMIT 2 ;
18016
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
18017
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
18018
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
18019
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
18020
#Inserting different charachers
18021
CREATE TABLE t7(c1 BIT(32));
18022
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
18025
############# UPDATE ###########
18027
# Update order by limit
18028
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
18031
# Update with arithmetic operations
18032
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
18034
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
18037
# Update with NULL ( NULL to number & number to NULL)
18038
UPDATE t6 SET c2=NULL WHERE c1=23;
18040
UPDATE t6 SET c2=10 WHERE c2=NULL;
18043
# Update range values
18044
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
18046
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
18048
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
18051
# Update outside range would be clipped to closest endpoints
18052
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
18054
UPDATE t6 SET c2=-1 WHERE c1=94;
18057
# Update ignore on bad null error
18059
SELECT hex(c1) FROM t5 WHERE c1<>0;
18060
SET SQL_MODE=STRICT_ALL_TABLES;
18061
--error ER_BAD_NULL_ERROR
18062
UPDATE t5 SET c1=NULL WHERE c1<>0;
18063
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
18065
SELECT hex(c1),hex(c2) FROM t5;
18066
SET SQL_MODE=DEFAULT;
18068
#Multi table update
18070
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
18073
SELECT hex(c1),hex(c2) FROM t5;
18076
# Update using various access methods
18079
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18080
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18082
# Update using Const
18083
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
18084
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
18086
SELECT hex(c1),hex(c2) FROM t5;
18088
# Update using range
18089
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
18090
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
18092
SELECT hex(c1),hex(c2) FROM t5;
18093
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18095
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
18098
SELECT hex(c1),hex(c2) FROM t5;
18100
# Update using eq_ref
18101
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18102
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18104
############# DELETE ###########
18109
#Borrowed from suite/ndb/t/ndb_bitfield.test
18110
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
18111
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
18113
# Delete by order by limit
18114
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
18117
# Delete rows with NULL column
18118
DELETE FROM t6 WHERE c2=NULL;
18121
# Delete with range values
18122
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
18124
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
18126
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
18129
#Multi table delete
18130
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
18132
SELECT hex(c1),hex(c2) FROM t5;
18135
# Delete using various access methods
18138
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18139
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18141
# Update using Const
18142
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
18143
DELETE FROM t5 WHERE c1=6 AND c2=6;
18145
SELECT hex(c1),hex(c2) FROM t5;
18147
# Update using range
18148
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
18149
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
18151
SELECT hex(c1),hex(c2) FROM t5;
18152
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18153
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18155
SELECT hex(c1),hex(c2) FROM t5;
18157
# Update using eq_ref
18158
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18159
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18161
# Droping the tables
18162
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
18164
####Checking the bit values####
18165
# Produces different output for different platform
18166
#SELECT 0 + b'10101010101010101010101010101010101010101010101010101010101010101';
18167
SELECT 0 + (10101010101010101010101010101010101010101010101010101010101010101<<64);
18168
######### INSERT/SELECT#########
18170
#### Insert and select 64 bit data into the table####
18171
CREATE TABLE t1(c1 BIT(64));
18172
CREATE TABLE t2(c1 BIT(64), c2 BIT(64), c3 BIT(64));
18178
set @v3=repeat('1',@v1);
18179
let $STR0= query_get_value(select @v3 as I,I,1);
18180
eval INSERT INTO t1 VALUES (b'$STR0');
18181
set @v3=repeat('0',@v1);
18182
let $STR1= query_get_value(select @v3 as I,I,1);
18183
eval INSERT INTO t1 VALUES (b'$STR1');
18184
set @v3=repeat('01',@v2);
18185
let $STR2= query_get_value(select @v3 as I,I,1);
18186
eval INSERT INTO t1 VALUES (b'$STR2');
18187
set @v3=repeat('10',@v2);
18188
let $STR3= query_get_value(select @v3 as I,I,1);
18189
eval INSERT INTO t1 VALUES (b'$STR3');
18190
set @v3=repeat('1',@v1);
18191
set @v4=repeat('01',@v2);
18192
set @v5=repeat('10',@v2);
18193
let $STR0= query_get_value(select @v3 as I,I,1);
18194
let $STR2= query_get_value(select @v4 as I,I,1);
18195
let $STR3= query_get_value(select @v5 as I,I,1);
18196
eval INSERT INTO t2 VALUES ("b'$STR0'","b'$STR2","b'$STR3'");
18199
INSERT INTO t1 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101');
18200
INSERT INTO t2 VALUES (b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101', b'10101010101010101010101010101010101010101010101010101010101010101');
18202
SELECT HEX(c1) FROM t1;
18204
SELECT HEX(c1),HEX(c2),HEX(c3) FROM t2;
18206
SELECT OCT(c1) FROM t1;
18208
SELECT OCT(c1),OCT(c2),OCT(c3) FROM t2;
18210
SELECT BIN(c1) FROM t1;
18212
SELECT BIN(c1),BIN(c2),BIN(c3) FROM t2;
18214
SELECT HEX(c1),OCT(c2),BIN(c3) FROM t2;
18216
SELECT HEX(c1+0),HEX(c2+1),HEX(c3+2) FROM t2;
18218
SELECT OCT(c1+0),OCT(c2+1),OCT(c3+2) FROM t2;
18220
SELECT BIN(c1+0),BIN(c2+1),BIN(c3+2) FROM t2;
18222
SELECT CONCAT(HEX(c1),HEX(c2),HEX(c3)) FROM t2;
18224
SELECT CONCAT(OCT(c1),OCT(c2),OCT(c3)) FROM t2;
18226
SELECT CONCAT(BIN(c1),BIN(c2),BIN(c3)) FROM t2;
18228
CREATE TABLE t3 (c1 BIT(65));
18229
# Checking for bug #9571
18230
CREATE TABLE t4(i INT, b BIT NOT NULL);
18231
ALTER TABLE t4 ADD PRIMARY KEY (i);
18232
CREATE TABLE t5(c1 BIT(64) NOT NULL PRIMARY KEY, c2 BIT(64));
18233
CREATE TABLE t6(c1 BIT(64), c2 BIT(64));
18234
#Borrowed from suite/ndb/t/ndb_bitfield.test
18235
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
18236
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
18238
SELECT HEX(c1),HEX(c2) FROM t5;
18240
#Insert permissible NULLs
18241
INSERT IGNORE INTO t5 VALUES(96,null);
18242
INSERT INTO t6 VALUES(null,null);
18243
# Now select using various table access methods (full table scan, range scan, index scan etc.)
18244
## Full table scan ##
18246
SELECT HEX(c1),HEX(c2) FROM t5;
18248
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t5;
18250
SELECT OCT(c2) FROM t5 WHERE c1 = 68;
18251
## Forward index scan, covering ##
18253
SELECT bin(c1) FROM t5;
18254
## Backward index scan, covering ##
18255
SELECT oct(c1) FROM t5 ORDER BY c1 DESC;
18256
## Forward index scan, non-covering ##
18257
SELECT hex(c1),hex(c2) FROM t5 ORDER BY c1 LIMIT 2 ;
18258
## Backward index scan, non-covering ##
18259
SELECT * FROM t5 ORDER BY c1 DESC LIMIT 2 /* comment7 */;
18261
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1;
18262
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 LIMIT 2;
18263
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC ;
18264
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 = '64' ORDER BY c1 DESC LIMIT 2 ;
18265
## Range access, ordered ##
18266
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 ;
18267
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 ;
18268
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 LIMIT 2 ;
18269
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 ;
18270
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 LIMIT 2 ;
18271
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1;
18272
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 LIMIT 2 ;
18273
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
18274
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 LIMIT 2 ;
18275
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1;
18276
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 LIMIT 2 ;
18277
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1;
18278
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 LIMIT 2 ;
18279
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1;
18280
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 LIMIT 2 ;
18281
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 ;
18282
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 LIMIT 2 ;
18283
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1;
18284
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 LIMIT 2 ;
18285
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 ;
18286
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2 ;
18287
## Range access, backwards scan ##
18288
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC;
18289
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <> '64' ORDER BY c1 DESC LIMIT 2 ;
18290
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC;
18291
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 > '64' ORDER BY c1 DESC LIMIT 2 ;
18292
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC ;
18293
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' ORDER BY c1 DESC LIMIT 2 ;
18294
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC;
18295
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 < '64' ORDER BY c1 DESC LIMIT 2 ;
18296
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC ;
18297
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <= '64' ORDER BY c1 DESC LIMIT 2 ;
18298
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC ;
18299
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 <=>'64' ORDER BY c1 DESC LIMIT 2 ;
18300
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC;
18301
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 BETWEEN '64' AND '64' ORDER BY c1 DESC LIMIT 2 ;
18302
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC ;
18303
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IN ( '64' , '64' ) ORDER BY c1 DESC LIMIT 2 ;
18304
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 >= '64' AND c1 < '64' AND c2 = '64' ORDER BY c1 DESC LIMIT 2 ;
18305
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC ;
18306
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2 ;
18307
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC ;
18308
SELECT hex(c1),hex(c2) FROM t5 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2 ;
18309
#Inserting different charachers
18310
CREATE TABLE t7(c1 BIT(64));
18311
INSERT INTO t7 VALUES('a'),('A'),('z'),('Z'),('!'),('`'),('@'),('#'),('~'),('$'),('%'),('^'),('&'),('*'),('('),(')'),('-'),('_'),('+'),('='),('1'),('9');
18314
############# UPDATE ###########
18316
# Update order by limit
18317
UPDATE t6 SET c1='10' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
18320
# Update with arithmetic operations
18321
UPDATE t6 SET c1=c2+c1 WHERE c2 < 100;
18323
UPDATE t6 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
18326
# Update with NULL ( NULL to number & number to NULL)
18327
UPDATE t6 SET c2=NULL WHERE c1=23;
18329
UPDATE t6 SET c2=10 WHERE c2=NULL;
18332
# Update range values
18333
UPDATE t6 SET c1=12 WHERE c1=b'101' AND c2=178;
18335
UPDATE t6 SET c1=c1+2,c2=c1+c2 WHERE c2=46 OR c2=b'1001';
18337
UPDATE t6 SET c2=123 WHERE c1 IN (30,b'101',88);
18340
# Update outside range would be clipped to closest endpoints
18341
UPDATE t6 SET c1=b'1111111111111111111111111111111111111111111111111111111111111111111' WHERE c2 < 10;
18343
UPDATE t6 SET c2=-1 WHERE c1=94;
18346
# Update ignore on bad null error
18348
SELECT hex(c1) FROM t5 WHERE c1<>0;
18349
SET SQL_MODE=STRICT_ALL_TABLES;
18350
--error ER_BAD_NULL_ERROR
18351
UPDATE t5 SET c1=NULL WHERE c1<>0;
18352
UPDATE IGNORE t5 SET c1=NULL WHERE c1>100;
18354
SELECT hex(c1),hex(c2) FROM t5;
18355
SET SQL_MODE=DEFAULT;
18357
#Multi table update
18359
UPDATE t5,t6 SET t5.c2=t6.c1+t5.c1, t6.c2=t5.c1+t6.c1 WHERE t5.c1 > 100 OR t6.c2 > 100;
18362
SELECT hex(c1),hex(c2) FROM t5;
18365
# Update using various access methods
18368
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18369
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18371
# Update using Const
18372
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
18373
UPDATE t5 SET c2='a' WHERE c1=6 AND c2=6;
18375
SELECT hex(c1),hex(c2) FROM t5;
18377
# Update using range
18378
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
18379
UPDATE t5 SET c2=13 where c1 BETWEEN 5 AND 9;
18381
SELECT hex(c1),hex(c2) FROM t5;
18382
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18384
UPDATE t5 SET c2=c2+10 WHERE c1 IN (b'001',b'101',b'111');
18387
SELECT hex(c1),hex(c2) FROM t5;
18389
# Update using eq_ref
18390
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18391
UPDATE t5,t6 SET t5.c2=t6.c1+t6.c2 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18393
############# DELETE ###########
18398
#Borrowed from suite/ndb/t/ndb_bitfield.test
18399
INSERT IGNORE INTO t5 VALUES (95, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (69, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135);
18400
INSERT INTO t6 VALUES (94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),(44, 307), (68, 454), (57, 135),(null,23),(1,null),(null,null);
18402
# Delete by order by limit
18403
DELETE FROM t6 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
18406
# Delete rows with NULL column
18407
DELETE FROM t6 WHERE c2=NULL;
18410
# Delete with range values
18411
DELETE FROM t6 WHERE c1=b'101' AND c2=178;
18413
DELETE FROM t6 WHERE c2=46 OR c2=b'1001';
18415
DELETE FROM t6 WHERE c1 IN (30,b'101',88);
18418
#Multi table delete
18419
DELETE t5,t6 FROM t5,t6 WHERE t5.c1 > 100 OR t6.c2 > 100;
18421
SELECT hex(c1),hex(c2) FROM t5;
18424
# Delete using various access methods
18427
INSERT IGNORE INTO t5 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18428
INSERT INTO t6 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10);
18430
# Update using Const
18431
# EXPLAIN SELECT * FROM t5 WHERE c1=6 AND c2=6;
18432
DELETE FROM t5 WHERE c1=6 AND c2=6;
18434
SELECT hex(c1),hex(c2) FROM t5;
18436
# Update using range
18437
# EXPLAIN SELECT * FROM t5 WHERE c1 BETWEEN 5 AND 9;
18438
DELETE FROM t5 WHERE c1 BETWEEN 5 AND 9;
18440
SELECT hex(c1),hex(c2) FROM t5;
18441
# EXPLAIN SELECT * FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18442
DELETE FROM t5 WHERE c1 IN (b'001',b'101',b'111');
18444
SELECT hex(c1),hex(c2) FROM t5;
18446
# Update using eq_ref
18447
# EXPLAIN SELECT * FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18448
DELETE t5,t6 FROM t5,t6 WHERE t5.c1=t6.c1 AND t5.c2=t6.c2;
18450
# Droping the tables
18451
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;