This commit is contained in:
root
2024-04-24 10:25:44 +08:00
parent 627bf43ee3
commit 248388a322
5271 changed files with 3753425 additions and 803 deletions

View File

@@ -0,0 +1,535 @@
DROP TABLE IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL, c4 INT, UNIQUE INDEX idx(c1,c4));
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
Note 1265 Data truncated for column 'c3' at row 1
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
Warnings:
Note 1265 Data truncated for column 'c1' at row 1
Note 1265 Data truncated for column 'c2' at row 1
Note 1265 Data truncated for column 'c3' at row 1
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Note 1265 Data truncated for column 'c3' at row 1
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
Note 1265 Data truncated for column 'c3' at row 1
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 0 8
0.00000 0.00000 0 6
1.00000 1.00000 1 7
100.00000 1001.00000 10000 4
100.05000 -100.05000 100119 1
10000.00000 0.00001 1000000000 10
11111.00009 -9999.99999 9999999 2
99999.99999 -99999.99999 9999999999 5
99999.99999 99999.99999 1000000000 3
99999.99999 99999.99999 111111111 9
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
SELECT c1,c2 FROM t1;
c1 c2
0.00000 -0.10000
0.00000 0.00000
1.00000 1.00000
100.05000 -100.05000
10000.00000 0.00001
11111.00009 -9999.99999
99999.99999 -99999.99999
99999.99999 99999.99999
99999.99999 99999.99999
DELETE FROM t1 WHERE c3=1 AND c4=7;
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 0 8
0.00000 0.00000 0 6
100.05000 -100.05000 100119 1
10000.00000 0.00001 1000000000 10
11111.00009 -9999.99999 9999999 2
99999.99999 -99999.99999 9999999999 5
99999.99999 99999.99999 1000000000 3
99999.99999 99999.99999 111111111 9
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
SELECT * FROM t1 WHERE c1=1.2e+2;
c1 c2 c3 c4
DELETE FROM t1 WHERE c4 IN (4,5,6);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 0 8
100.05000 -100.05000 100119 1
11111.00009 -9999.99999 9999999 2
99999.99999 99999.99999 1000000000 3
99999.99999 99999.99999 111111111 9
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
22222.22222 -22222.22222 2222222222 2
33333.33333 -33333.33333 3333333333 3
44444.44444 -44444.44444 4444444444 4
55555.55555 -55555.55555 5555555555 5
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
c1
22222.22222
33333.33333
44444.44444
55555.55555
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
SELECT * FROM t2;
c1 c2 c3
11111.11111 1111111111 1
22222.22222 2222222222 2
33333.33333 3333333333 3
SELECT * FROM t3;
c1 c2 c3
44444.44444 4444444444 4
55555.55555 5555555555 5
66666.66666 6666666666 6
SELECT * FROM t4;
c1 c2 c3
77777.77777 7777777777 7
88888.88888 8888888888 8
99999.99999 9999999999 9
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
SELECT * FROM t2;
c1 c2 c3
11111.11111 1111111111 1
33333.33333 3333333333 3
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
SELECT * FROM t2;
c1 c2 c3
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
SELECT * FROM t2;
c1 c2 c3
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT);
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t2;
c1 c2 c3
22222.22222 2222222222 2
33333.33333 3333333333 3
SELECT * FROM t3;
c1 c2 c3
55555.55555 5555555555 2
66666.66666 6666666666 3
SELECT * FROM t4;
c1 c2 c3
77777.77777 7777777777 7
88888.88888 8888888888 8
99999.99999 9999999999 9
DROP TABLES IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 FLOAT(10,5) UNSIGNED NOT NULL, c2 FLOAT(10,5) SIGNED NULL, c3 FLOAT, c4 INT, UNIQUE INDEX idx(c1,c4));
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
0.00000 0.00000 0 6
1.00000 1.00000 1 7
100.00000 1001.00000 10000 4
100.05000 -100.05000 100119 1
10000.00000 0.00001 1e+09 10
100000.00000 -100000.00000 1e+10 5
100000.00000 100000.00000 1.11111e+08 9
100000.00000 100000.00000 1e+09 3
11111.00000 -10000.00000 1e+07 2
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
SELECT c1,c2 FROM t1;
c1 c2
0.00000 -0.10000
0.00000 0.00000
1.00000 1.00000
100.05000 -100.05000
10000.00000 0.00001
100000.00000 -100000.00000
100000.00000 100000.00000
100000.00000 100000.00000
11111.00000 -10000.00000
DELETE FROM t1 WHERE c3=1 AND c4=7;
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
0.00000 0.00000 0 6
100.05000 -100.05000 100119 1
10000.00000 0.00001 1e+09 10
100000.00000 -100000.00000 1e+10 5
100000.00000 100000.00000 1.11111e+08 9
100000.00000 100000.00000 1e+09 3
11111.00000 -10000.00000 1e+07 2
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
SELECT * FROM t1 WHERE c1=1.2e+2;
c1 c2 c3 c4
DELETE FROM t1 WHERE c4 IN (4,5,6);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
100.05000 -100.05000 100119 1
10000.00000 0.00001 1e+09 10
100000.00000 100000.00000 1.11111e+08 9
100000.00000 100000.00000 1e+09 3
11111.00000 -10000.00000 1e+07 2
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
22222.22266 -22222.22266 2.22222e+09 2
33333.33203 -33333.33203 3.33333e+09 3
44444.44531 -44444.44531 4.44444e+09 4
55555.55469 -55555.55469 5.55556e+09 5
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
c1
22222.22266
33333.33203
44444.44531
55555.55469
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
SELECT * FROM t2;
c1 c2 c3
11111.11133 1.11111e+09 1
22222.22266 2.22222e+09 2
33333.33203 3.33333e+09 3
SELECT * FROM t3;
c1 c2 c3
44444.44531 4.44444e+09 4
55555.55469 5.55556e+09 5
66666.66406 6.66667e+09 6
SELECT * FROM t4;
c1 c2 c3
100000.00000 1e+10 9
77777.78125 7.77778e+09 7
88888.89062 8.88889e+09 8
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
SELECT * FROM t2;
c1 c2 c3
11111.11133 1.11111e+09 1
22222.22266 2.22222e+09 2
33333.33203 3.33333e+09 3
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
SELECT * FROM t2;
c1 c2 c3
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
SELECT * FROM t2;
c1 c2 c3
DROP TABLE t2,t3;
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT);
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
SELECT * FROM t1;
c1 c2 c3 c4
100000.00000 -100000.00000 1e+10 9
11111.11133 -11111.11133 1.11111e+09 1
66666.66406 -66666.66406 6.66667e+09 6
77777.78125 -77777.78125 7.77778e+09 7
88888.89062 -88888.89062 8.88889e+09 8
SELECT * FROM t2;
c1 c2 c3
22222.22266 2.22222e+09 2
33333.33203 3.33333e+09 3
SELECT * FROM t3;
c1 c2 c3
55555.55469 5.55556e+09 2
66666.66406 6.66667e+09 3
SELECT * FROM t4;
c1 c2 c3
100000.00000 1e+10 9
77777.78125 7.77778e+09 7
88888.89062 8.88889e+09 8
DROP TABLES IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 DOUBLE(10,5) UNSIGNED NOT NULL, c2 DOUBLE(10,5) SIGNED NULL, c3 DOUBLE, c4 INT, UNIQUE INDEX idx(c1,c4));
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
Warnings:
Warning 1264 Out of range value for column 'c1' at row 1
Warning 1264 Out of range value for column 'c2' at row 1
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
0.00000 0.00000 0 6
1.00000 1.00000 1 7
100.00000 1001.00000 9999.999999 4
100.05000 -100.05000 100119 1
10000.00000 0.00001 1000000000 10
11111.00009 -9999.99999 9999999 2
99999.99999 -99999.99999 9999999999 5
99999.99999 99999.99999 1000000000.0001 3
99999.99999 99999.99999 111111111.11 9
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
SELECT c1,c2 FROM t1;
c1 c2
0.00000 -0.10000
0.00000 0.00000
1.00000 1.00000
100.05000 -100.05000
10000.00000 0.00001
11111.00009 -9999.99999
99999.99999 -99999.99999
99999.99999 99999.99999
99999.99999 99999.99999
DELETE FROM t1 WHERE c3=1 AND c4=7;
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
0.00000 0.00000 0 6
100.05000 -100.05000 100119 1
10000.00000 0.00001 1000000000 10
11111.00009 -9999.99999 9999999 2
99999.99999 -99999.99999 9999999999 5
99999.99999 99999.99999 1000000000.0001 3
99999.99999 99999.99999 111111111.11 9
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
SELECT * FROM t1 WHERE c1=1.2e+2;
c1 c2 c3 c4
DELETE FROM t1 WHERE c4 IN (4,5,6);
SELECT * FROM t1;
c1 c2 c3 c4
0.00000 -0.10000 -0.1 8
100.05000 -100.05000 100119 1
11111.00009 -9999.99999 9999999 2
99999.99999 99999.99999 1000000000.0001 3
99999.99999 99999.99999 111111111.11 9
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
22222.22222 -22222.22222 2222222222 2
33333.33333 -33333.33333 3333333333 3
44444.44444 -44444.44444 4444444444 4
55555.55555 -55555.55555 5555555555 5
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
c1
22222.22222
33333.33333
44444.44444
55555.55555
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
SELECT * FROM t2;
c1 c2 c3
11111.11111 1111111111 1
22222.22222 2222222222 2
33333.33333 3333333333 3
SELECT * FROM t3;
c1 c2 c3
44444.44444 4444444444 4
55555.55555 5555555555 5
66666.66666 6666666666 6
SELECT * FROM t4;
c1 c2 c3
77777.77777 7777777777 7
88888.88888 8888888888 8
99999.99999 9999999999 9
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
SELECT * FROM t2;
c1 c2 c3
11111.11111 1111111111 1
33333.33333 3333333333 3
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
SELECT * FROM t2;
c1 c2 c3
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
SELECT * FROM t2;
c1 c2 c3
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT);
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
SELECT * FROM t1;
c1 c2 c3 c4
11111.11111 -11111.11111 1111111111 1
66666.66666 -66666.66666 6666666666 6
77777.77777 -77777.77777 7777777777 7
88888.88888 -88888.88888 8888888888 8
99999.99999 -99999.99999 9999999999 9
SELECT * FROM t2;
c1 c2 c3
22222.22222 2222222222 2
33333.33333 3333333333 3
SELECT * FROM t3;
c1 c2 c3
55555.55555 5555555555 2
66666.66666 6666666666 3
SELECT * FROM t4;
c1 c2 c3
77777.77777 7777777777 7
88888.88888 8888888888 8
99999.99999 9999999999 9
DROP TABLES IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1,739 @@
DROP TABLE IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1));
CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1,c2));
CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL);
INSERT INTO t1 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t2 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t3 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t4 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t1 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t2 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t3 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t4 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t1 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t2 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t3 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t4 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
SET TIMESTAMP=1233216687;
INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t1 VALUES('123456',null);
INSERT INTO t3 VALUES('123456',null);
INSERT INTO t4 VALUES('123456',null);
SELECT * FROM t1;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
SELECT * FROM t2;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
SELECT * FROM t3;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
SELECT * FROM t4;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
SELECT c1 FROM t1 WHERE c1='00:00:07';
c1
00:00:07
DELETE FROM t1 WHERE c1='00:00:07';
SELECT c1 FROM t1;
c1
-838:59:55
-838:59:59
00:00:00
00:00:01
00:00:04
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:04:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
12:34:56
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
SELECT c1 FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59';
c1
-838:59:59
DELETE FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59';
SELECT c1 FROM t2;
c1
-838:59:55
00:00:00
00:00:01
00:00:04
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:04:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
SELECT c2 FROM t3 WHERE c2=null;
c2
DELETE FROM t3 WHERE c2=null;
SELECT c2 FROM t3;
c2
-838:59:55
-838:59:59
00:00:00
00:00:01
00:00:04
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:04:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
NULL
SELECT c1 FROM t4 WHERE c1 < '000009';
c1
-838:59:55
-838:59:59
00:00:00
00:00:01
00:00:04
00:00:07
00:00:08
DELETE FROM t4 WHERE c1 < '000009' ORDER BY c1 LIMIT 3;
SELECT c1 FROM t4;
c1
00:00:01
00:00:04
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:04:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
12:34:56
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
DELETE FROM t1 WHERE c1='00:00:09' AND c1='01:01:01';
SELECT c2 FROM t1;
c2
-838:59:55
-838:59:59
00:00:00
00:00:01
00:00:04
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:04:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
NULL
DELETE FROM t2 WHERE c2=000400 OR c2= 000900;
SELECT c1 FROM t2;
c1
-838:59:55
00:00:00
00:00:01
00:00:04
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:09:09
00:13:13
00:51:51
00:54:54
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:11
11:11:27
125:00:00
125:05:00
12:12:12
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
DELETE FROM t2 WHERE c1 IN ('100:04:04',005454,'2:2:2',111111) ORDER BY c1 LIMIT 2;
SELECT c2 FROM t2;
c2
-838:59:55
00:00:00
00:00:01
00:00:04
00:00:07
00:00:08
00:00:09
00:00:10
00:00:11
00:00:12
00:00:14
00:00:50
00:00:53
00:00:59
00:03:00
00:09:09
00:13:13
00:51:51
01:01:01
02:02:02
03:03:00
08:08:08
100:04:04
11:11:27
125:00:00
125:05:00
12:12:12
150:00:00
838:00:00
838:56:00
838:58:00
838:59:51
838:59:52
838:59:55
838:59:57
838:59:58
838:59:59
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c1='00:13:13' AND t2.c1=080808 AND t4.c1='00:04:00' AND t3.c2=020202;
DELETE FROM t1 WHERE c1='00:09:09' AND c2='00:09:09';
SELECT * FROM t1;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
DELETE FROM t1 WHERE c1 BETWEEN 080000 AND 100000;
SELECT * FROM t1;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
DELETE FROM t1 WHERE c1 IN (222222,8385959,1500000);
SELECT * FROM t1;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
DELETE t1,t2 FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
SELECT * FROM t1;
c1 c2
-838:59:59 -838:59:59
00:04:00 00:04:00
00:54:54 00:54:54
11:11:11 11:11:11
12:34:56 NULL
SELECT * FROM t2;
c1 c2
00:00:07 00:00:07
00:09:09 00:09:09
00:13:13 00:13:13
150:00:00 150:00:00
838:59:59 838:59:59
SELECT * FROM t3;
c1 c2
-838:59:55 -838:59:55
-838:59:59 -838:59:59
00:00:00 00:00:00
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:04:00 00:04:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
SELECT * FROM t4;
c1 c2
00:00:01 00:00:01
00:00:04 00:00:04
00:00:07 00:00:07
00:00:08 00:00:08
00:00:09 00:00:09
00:00:10 00:00:10
00:00:11 00:00:11
00:00:12 00:00:12
00:00:14 00:00:14
00:00:50 00:00:50
00:00:53 00:00:53
00:00:59 00:00:59
00:03:00 00:03:00
00:09:09 00:09:09
00:13:13 00:13:13
00:51:51 00:51:51
00:54:54 00:54:54
01:01:01 01:01:01
02:02:02 02:02:02
03:03:00 03:03:00
08:08:08 08:08:08
100:04:04 100:04:04
11:11:11 11:11:11
11:11:27 11:11:27
125:00:00 125:00:00
125:05:00 125:05:00
12:12:12 12:12:12
12:34:56 NULL
150:00:00 150:00:00
838:00:00 838:00:00
838:56:00 838:56:00
838:58:00 838:58:00
838:59:51 838:59:51
838:59:52 838:59:52
838:59:55 838:59:55
838:59:57 838:59:57
838:59:58 838:59:58
838:59:59 838:59:59
DROP TABLE IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1,392 @@
DROP TABLE IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 YEAR NOT NULL,c2 YEAR, PRIMARY KEY(c1));
CREATE TABLE t2(c1 YEAR NOT NULL, c2 YEAR, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t3(c1 YEAR(2) NOT NULL,c2 YEAR(2), PRIMARY KEY(c1));
Warnings:
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
CREATE TABLE t4(c1 YEAR(2), c2 YEAR(2), UNIQUE INDEX idx(c1,c2));
Warnings:
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
INSERT INTO t1 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t2 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t3 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t4 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t1 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t2 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t3 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t4 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t1 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t2 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t3 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t4 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t1 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t2 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t3 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t4 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t1 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t2 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t3 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t4 VALUES ('09',null),('61',null),('79',null),('96',null);
SELECT * FROM t1;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 NULL
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2005 2005
2009 NULL
2061 NULL
2064 2064
2065 2065
2069 2069
2154 2154
2155 2155
SELECT * FROM t2;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 NULL
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2005 2005
2009 NULL
2061 NULL
2064 2064
2065 2065
2069 2069
2154 2154
2155 2155
SELECT * FROM t3;
c1 c2
00 00
01 01
01 01
02 02
04 04
05 05
09 NULL
54 54
55 55
61 NULL
64 64
65 65
69 69
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT * FROM t4;
c1 c2
00 00
01 01
01 01
02 02
04 04
05 05
09 NULL
54 54
55 55
61 NULL
64 64
65 65
69 69
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT c1 FROM t1 WHERE c1='2005';
c1
2005
DELETE FROM t1 WHERE c1='2005';
SELECT c1 FROM t1;
c1
1901
1902
1970
1971
1975
1979
1995
1996
1997
1998
1999
2000
2001
2004
2009
2061
2064
2065
2069
2154
2155
SELECT c2 FROM t2 WHERE c2=null;
c2
DELETE FROM t2 WHERE c2=null LIMIT 2;
SELECT c2 FROM t2;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2154
2155
NULL
NULL
NULL
NULL
SELECT c1 FROM t4 WHERE c1 < '55';
c1
00
01
01
02
04
05
09
DELETE FROM t4 WHERE c1 < '65' ORDER BY c1 LIMIT 5;
SELECT c1 FROM t4;
c1
05
09
54
55
61
64
65
69
70
71
75
79
95
96
97
98
99
DELETE FROM t2 WHERE c1=2009 AND c2=null;
SELECT c2 FROM t2;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2154
2155
NULL
NULL
NULL
NULL
DELETE FROM t1 WHERE c1=1979 OR c1=2154;
SELECT c2 FROM t1;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2064
2065
2069
2155
NULL
NULL
NULL
DELETE FROM t4 WHERE c2 IN (01,54,65,69,null) LIMIT 2;
SELECT c1 FROM t4;
c1
05
09
55
61
64
65
70
71
75
79
95
96
97
98
99
DELETE t3,t4 FROM t3,t4 WHERE t3.c1=61 AND t4.c2=4;
DELETE FROM t1 WHERE c1=2064 AND c2=2064;
SELECT * FROM t1;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2009 NULL
2061 NULL
2065 2065
2069 2069
2155 2155
DELETE FROM t1 WHERE c1 BETWEEN 2000 AND 2010 LIMIT 2;
SELECT * FROM t1;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2004 2004
2009 NULL
2061 NULL
2065 2065
2069 2069
2155 2155
DELETE FROM t1 WHERE c1 IN (2155,2009,1975) LIMIT 2;
SELECT * FROM t1;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2004 2004
2061 NULL
2065 2065
2069 2069
2155 2155
DELETE t1,t2 FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
SELECT * FROM t1;
c1 c2
1996 NULL
2061 NULL
SELECT * FROM t2;
c1 c2
1975 1975
1979 NULL
1996 NULL
2000 2000
2001 2001
2005 2005
2009 NULL
2061 NULL
2064 2064
2154 2154
SELECT * FROM t3;
c1 c2
00 00
01 01
01 01
02 02
04 04
05 05
09 NULL
54 54
55 55
61 NULL
64 64
65 65
69 69
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT * FROM t4;
c1 c2
05 05
09 NULL
55 55
61 NULL
64 64
65 65
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
DROP TABLE IF EXISTS t1,t2,t3,t4;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,957 @@
DROP TABLE IF EXISTS t1,t2,t3,t4;
CREATE TABLE t1(c1 YEAR NOT NULL,c2 YEAR, PRIMARY KEY(c1));
CREATE TABLE t2(c1 YEAR NOT NULL, c2 YEAR, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t3(c1 YEAR(2) NOT NULL,c2 YEAR(2), PRIMARY KEY(c1));
Warnings:
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
CREATE TABLE t4(c1 YEAR(2), c2 YEAR(2), UNIQUE INDEX idx(c1,c2));
Warnings:
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
INSERT INTO t1 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t2 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t3 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t4 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t1 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t2 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t3 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t4 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t1 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t2 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t3 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t4 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t1 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t2 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t3 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t4 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t1 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t2 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t3 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t4 VALUES ('09',null),('61',null),('79',null),('96',null);
SELECT * FROM t1;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 NULL
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2005 2005
2009 NULL
2061 NULL
2064 2064
2065 2065
2069 2069
2154 2154
2155 2155
SELECT * FROM t2;
c1 c2
1901 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 NULL
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2005 2005
2009 NULL
2061 NULL
2064 2064
2065 2065
2069 2069
2154 2154
2155 2155
SELECT * FROM t3;
c1 c2
00 00
01 01
01 01
02 02
04 04
05 05
09 NULL
54 54
55 55
61 NULL
64 64
65 65
69 69
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT * FROM t4;
c1 c2
00 00
01 01
01 01
02 02
04 04
05 05
09 NULL
54 54
55 55
61 NULL
64 64
65 65
69 69
70 70
71 71
75 75
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT c1 FROM t1 WHERE c1='2005';
c1
2005
UPDATE t1 SET c1='2003' WHERE c1='2005';
SELECT c1 FROM t1;
c1
1901
1902
1970
1971
1975
1979
1995
1996
1997
1998
1999
2000
2001
2003
2004
2009
2061
2064
2065
2069
2154
2155
SELECT c2 FROM t2 WHERE c2=null;
c2
UPDATE t2 SET c2='2070' WHERE c2=null AND c1='1996';
SELECT c2 FROM t2;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2154
2155
NULL
NULL
NULL
NULL
SELECT c2 FROM t3 WHERE c2 < '64';
c2
00
01
01
02
04
05
54
55
UPDATE t3 SET c2=null WHERE c2 < '64' ORDER BY c2 LIMIT 3;
SELECT c2 FROM t3;
c2
01
04
05
54
55
64
65
69
70
71
75
95
97
98
99
NULL
NULL
NULL
NULL
NULL
NULL
NULL
SELECT c1 FROM t4 WHERE c1 < '55';
c1
00
01
01
02
04
05
09
UPDATE t4 SET c1='00' WHERE c1 < '65' ORDER BY c1 LIMIT 5;
SELECT c1 FROM t4;
c1
00
00
00
00
00
05
09
54
55
61
64
65
69
70
71
75
79
95
96
97
98
99
SELECT c1 FROM t3 WHERE c1='05';
c1
05
UPDATE t3 SET c1=c1+c2 WHERE c1='05';
SELECT c1 FROM t3;
c1
00
01
01
02
04
09
10
54
55
61
64
65
69
70
71
75
79
95
96
97
98
99
SELECT c1 FROM t4 WHERE c2=4;
c1
00
UPDATE t4 SET c1=c1 + 04 WHERE c2=04;
SELECT c1 FROM t4;
c1
00
00
00
00
04
05
09
54
55
61
64
65
69
70
71
75
79
95
96
97
98
99
SELECT c2 FROM t3 WHERE c2=75;
c2
75
UPDATE t3 SET c2=c2 + 1902 WHERE c2='75';
SELECT c2 FROM t3;
c2
01
04
05
54
55
64
65
69
70
71
77
95
97
98
99
NULL
NULL
NULL
NULL
NULL
NULL
NULL
SELECT c1 FROM t4 WHERE c1=09;
c1
09
UPDATE t4 SET c1=c1 - c2 WHERE c1='09';
SELECT c1 FROM t4;
c1
00
00
00
00
04
05
54
55
61
64
65
69
70
71
75
79
95
96
97
98
99
NULL
SELECT c1 FROM t3 WHERE c1=75;
c1
75
UPDATE t3 SET c1=c1 - 01 WHERE c1='75';
SELECT c1 FROM t3;
c1
00
01
01
02
04
09
10
54
55
61
64
65
69
70
71
74
79
95
96
97
98
99
SELECT c1 FROM t4 WHERE c1=98;
c1
98
UPDATE t4 SET c1=c1 / 2 WHERE c1='98';
SELECT c1 FROM t4;
c1
00
00
00
00
04
05
49
54
55
61
64
65
69
70
71
75
79
95
96
97
99
NULL
SELECT c2 FROM t3 WHERE c2=03;
c2
UPDATE t3 SET c2=c2 * 03 WHERE c2='03';
SELECT c2 FROM t3;
c2
01
04
05
54
55
64
65
69
70
71
77
95
97
98
99
NULL
NULL
NULL
NULL
NULL
NULL
NULL
SELECT c1 FROM t1 WHERE c1 > 2060 AND c1 < 2070;
c1
2061
2064
2065
2069
UPDATE t1 SET c1=c1 + 10 WHERE c1 > 2060 AND c1 < 2070;
SELECT c1 FROM t1;
c1
1901
1902
1970
1971
1975
1979
1995
1996
1997
1998
1999
2000
2001
2003
2004
2009
2071
2074
2075
2079
2154
2155
SELECT c1 FROM t2 WHERE c1 > 1969 AND c1 < 1980;
c1
1970
1971
1975
1979
UPDATE t2 SET c1=c1 - 10 WHERE c1 > 1969 AND c1 < 1980 ORDER BY c1 LIMIT 2;
SELECT c1 FROM t2;
c1
1901
1902
1960
1961
1975
1979
1995
1996
1997
1998
1999
2000
2001
2004
2005
2009
2061
2064
2065
2069
2154
2155
UPDATE t2 SET c2=2009 WHERE c1=2009 AND c2=null;
SELECT c2 FROM t2;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2154
2155
NULL
NULL
NULL
NULL
UPDATE t1 SET c2=2155 WHERE c1=1979 OR c1=2154;
SELECT c2 FROM t1;
c2
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2155
2155
2155
NULL
NULL
NULL
UPDATE t4 SET c1=99 WHERE c2 IN (01,54,65,69,null);
SELECT c1 FROM t4;
c1
00
00
04
05
49
55
61
64
70
71
75
79
95
96
97
99
99
99
99
99
99
NULL
UPDATE t1 SET c2=-1 WHERE c1=2071;
Warnings:
Warning 1264 Out of range value for column 'c2' at row 1
SELECT c2 FROM t1;
c2
0000
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2005
2064
2065
2069
2155
2155
2155
NULL
NULL
UPDATE t1 SET c2=0 WHERE c1=2003;
SELECT c2 FROM t1;
c2
0000
0000
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2001
2004
2064
2065
2069
2155
2155
2155
NULL
NULL
UPDATE t1 SET c2=2156 WHERE c1=2001;
Warnings:
Warning 1264 Out of range value for column 'c2' at row 1
SELECT c2 FROM t1;
c2
0000
0000
0000
1901
1902
1970
1971
1975
1995
1997
1998
1999
2000
2004
2064
2065
2069
2155
2155
2155
NULL
NULL
UPDATE t4 SET c2=-1 WHERE c1=71;
Warnings:
Warning 1264 Out of range value for column 'c2' at row 1
SELECT c2 FROM t4;
c2
00
00
01
01
02
04
05
54
55
64
65
69
70
75
95
97
98
99
NULL
NULL
NULL
NULL
UPDATE t4 SET c2=0 WHERE c1=70;
SELECT c2 FROM t4;
c2
00
00
00
01
01
02
04
05
54
55
64
65
69
75
95
97
98
99
NULL
NULL
NULL
NULL
UPDATE t4 SET c2=100 WHERE c1=79;
Warnings:
Warning 1264 Out of range value for column 'c2' at row 1
SELECT c2 FROM t4;
c2
00
00
00
00
01
01
02
04
05
54
55
64
65
69
75
95
97
98
99
NULL
NULL
NULL
SELECT c1 FROM t1 WHERE c2 < 1975;
c1
1901
1902
1970
1971
2001
2003
2071
SET SQL_MODE=STRICT_ALL_TABLES;
UPDATE t1 SET c1=NULL WHERE c2 < 1975;
ERROR 23000: Column 'c1' cannot be null
UPDATE IGNORE t1 SET c1=NULL WHERE c2 < 1975;
Warnings:
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
Warning 1048 Column 'c1' cannot be null
SELECT c1 from t1 WHERE c2 < 1975;
c1
0000
1902
1970
1971
2001
2003
2071
SET SQL_MODE=DEFAULT
#Update with invalid values
#UPDATE t2 SET c1='def' WHERE c2=2064;
UPDATE t4 SET c1=-70 WHERE c2=75;
Warnings:
Warning 1264 Out of range value for column 'c1' at row 17
SELECT c1 FROM t4;
c1
00
00
00
04
05
49
55
61
64
70
71
79
95
96
97
99
99
99
99
99
99
NULL
UPDATE t1 SET c1=1971 WHERE c2=1995;
ERROR 23000: Duplicate entry '1971' for key 'PRIMARY'
UPDATE t1,t2,t3,t4 SET t3.c1=t4.c1+t4.c2 WHERE t3.c1=61 AND t4.c2=4;
UPDATE t1 SET t1.c1=2073 WHERE c1=2074 AND c2=2064;
SELECT * FROM t1;
c1 c2
0000 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 2155
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 0000
2003 0000
2004 2004
2009 NULL
2071 0000
2073 2064
2075 2065
2079 2069
2154 2155
2155 2155
UPDATE t1 SET t1.c2=0000 WHERE c1 BETWEEN 2000 AND 2010;
SELECT * FROM t1;
c1 c2
0000 1901
1902 1902
1970 1970
1971 1971
1975 1975
1979 2155
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 0000
2001 0000
2003 0000
2004 0000
2009 0000
2071 0000
2073 2064
2075 2065
2079 2069
2154 2155
2155 2155
UPDATE t1 SET c1=c1-1,c2=c2+1 WHERE c1 IN (2154,2009,1979);
Warnings:
Warning 1264 Out of range value for column 'c2' at row 1
Warning 1264 Out of range value for column 'c2' at row 3
SELECT * FROM t1;
c1 c2
0000 1901
1902 1902
1970 1970
1971 1971
1975 1975
1978 0000
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 0000
2001 0000
2003 0000
2004 0000
2008 2001
2071 0000
2073 2064
2075 2065
2079 2069
2153 0000
2155 2155
UPDATE t1,t2 SET t1.c2='2155' WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
SELECT * FROM t1;
SELECT * FROM t2;
c1 c2
1901 1901
1902 1902
1960 1970
1961 1971
1975 1975
1979 NULL
1995 1995
1996 NULL
1997 1997
1998 1998
1999 1999
2000 2000
2001 2001
2004 2004
2005 2005
2009 NULL
2061 NULL
2064 2064
2065 2065
2069 2069
2154 2154
2155 2155
SELECT * FROM t3;
c1 c2
00 NULL
01 01
01 NULL
02 NULL
04 04
08 NULL
09 NULL
10 05
54 54
55 55
64 64
65 65
69 69
70 70
71 71
74 77
79 NULL
95 95
96 NULL
97 97
98 98
99 99
SELECT * FROM t4;
c1 c2
00 00
00 02
00 75
04 04
05 05
49 98
55 55
61 NULL
64 64
70 00
71 00
79 00
95 95
96 NULL
97 97
99 01
99 01
99 54
99 65
99 69
99 99
NULL NULL
DROP TABLE IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1,383 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running DELETE tests for DECIMAL ########
# Create tables
CREATE TABLE t1(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# Deletion starts here
# Delete by order by limit
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Delete using range values
DELETE FROM t1 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
DELETE FROM t1 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--sorted_result
SELECT * FROM t1;
# Multi table delete
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
# Delete using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Delete using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Delete using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Delete using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT);
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running DELETE tests for FLOAT ########
# Create tables
CREATE TABLE t1(c1 FLOAT(10,5) UNSIGNED NOT NULL, c2 FLOAT(10,5) SIGNED NULL, c3 FLOAT, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# Deletion starts here
# Delete by order by limit
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Delete using range values
DELETE FROM t1 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
DELETE FROM t1 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
# Multi table delete
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t4;
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
# Delete using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Delete using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Delete using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Delete using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT);
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running DELETE tests for DOUBLE ########
# Create tables
CREATE TABLE t1(c1 DOUBLE(10,5) UNSIGNED NOT NULL, c2 DOUBLE(10,5) SIGNED NULL, c3 DOUBLE, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# Deletion starts here
# Delete by order by limit
DELETE FROM t1 WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Delete using range values
DELETE FROM t1 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
DELETE FROM t1 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
DELETE FROM t1 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
DELETE FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--sorted_result
SELECT * FROM t1;
# Multi table delete
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888';
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
# Delete using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Delete using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
DELETE FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Delete using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
DELETE FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
DELETE FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Delete using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT);
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
DELETE t2,t3 FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings

View File

@@ -0,0 +1,122 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
# Create tables
CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1));
CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1,c2));
CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL);
# As a string in 'D HH:MM:SS.fraction' format
INSERT INTO t1 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t2 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t3 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t4 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
#As a string with no delimiters in 'HHMMSS' format
INSERT INTO t1 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t2 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t3 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t4 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
#As a number in HHMMSS format
INSERT INTO t1 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t2 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t3 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t4 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
#As the result of a function that returns a value that is acceptable in a TIME context
SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME());
#Insert permissible NULLs
INSERT INTO t1 VALUES('123456',null);
#INSERT INTO t2 VALUES('123456',null);
INSERT INTO t3 VALUES('123456',null);
INSERT INTO t4 VALUES('123456',null);
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Deleting the table rows
--sorted_result
SELECT c1 FROM t1 WHERE c1='00:00:07';
DELETE FROM t1 WHERE c1='00:00:07';
--sorted_result
SELECT c1 FROM t1;
--sorted_result
SELECT c1 FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59';
DELETE FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59';
--sorted_result
SELECT c1 FROM t2;
#Deleting rowa with NULL attributes
--sorted_result
SELECT c2 FROM t3 WHERE c2=null;
DELETE FROM t3 WHERE c2=null;
--sorted_result
SELECT c2 FROM t3;
#Delete by order by limit
--sorted_result
SELECT c1 FROM t4 WHERE c1 < '000009';
DELETE FROM t4 WHERE c1 < '000009' ORDER BY c1 LIMIT 3;
--sorted_result
SELECT c1 FROM t4;
#Delete by range values
DELETE FROM t1 WHERE c1='00:00:09' AND c1='01:01:01';
--sorted_result
SELECT c2 FROM t1;
DELETE FROM t2 WHERE c2=000400 OR c2= 000900;
--sorted_result
SELECT c1 FROM t2;
DELETE FROM t2 WHERE c1 IN ('100:04:04',005454,'2:2:2',111111) ORDER BY c1 LIMIT 2;
--sorted_result
SELECT c2 FROM t2;
#Multi table delete
DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c1='00:13:13' AND t2.c1=080808 AND t4.c1='00:04:00' AND t3.c2=020202;
#Delete using various access methods
# Delete using Const
# EXPLAIN SELECT * FROM t1 WHERE c1='00:09:09' AND c2='00:09:09';
DELETE FROM t1 WHERE c1='00:09:09' AND c2='00:09:09';
--sorted_result
SELECT * FROM t1;
# Delete using range
# EXPLAIN SELECT * FROM t1 WHERE c1 BETWEEN 080000 AND 100000;
DELETE FROM t1 WHERE c1 BETWEEN 080000 AND 100000;
--sorted_result
SELECT * FROM t1;
# EXPLAIN SELECT * FROM t1 WHERE c1 IN (222222,8385959,1500000);
DELETE FROM t1 WHERE c1 IN (222222,8385959,1500000);
--sorted_result
SELECT * FROM t1;
# Delete using eq_ref
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
DELETE t1,t2 FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Drop tables;
DROP TABLE IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1,110 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
# Create tables
CREATE TABLE t1(c1 YEAR NOT NULL,c2 YEAR, PRIMARY KEY(c1));
CREATE TABLE t2(c1 YEAR NOT NULL, c2 YEAR, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t3(c1 YEAR(2) NOT NULL,c2 YEAR(2), PRIMARY KEY(c1));
CREATE TABLE t4(c1 YEAR(2), c2 YEAR(2), UNIQUE INDEX idx(c1,c2));
#Insert as 4-digit number format in the range '1901' to '2155'
INSERT INTO t1 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t2 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t3 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t4 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
#Insert as 4-digit string format in the range '1901' to '2155'
INSERT INTO t1 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t2 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t3 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t4 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
#Insert as 2-digit number format
INSERT INTO t1 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t2 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t3 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t4 VALUES (04,04),(64,64),(69,69),(97,97);
#Insert as 2-digit string format
INSERT INTO t1 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t2 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t3 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t4 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
#Insert permissible NULLs
INSERT INTO t1 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t2 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t3 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t4 VALUES ('09',null),('61',null),('79',null),('96',null);
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Deleting the specified rows
--sorted_result
SELECT c1 FROM t1 WHERE c1='2005';
DELETE FROM t1 WHERE c1='2005';
--sorted_result
SELECT c1 FROM t1;
# Delete rows with null attributes
--sorted_result
SELECT c2 FROM t2 WHERE c2=null;
DELETE FROM t2 WHERE c2=null LIMIT 2;
--sorted_result
SELECT c2 FROM t2;
#Delete order by limit
--sorted_result
SELECT c1 FROM t4 WHERE c1 < '55';
DELETE FROM t4 WHERE c1 < '65' ORDER BY c1 LIMIT 5;
--sorted_result
SELECT c1 FROM t4;
#Delete by range values
DELETE FROM t2 WHERE c1=2009 AND c2=null;
--sorted_result
SELECT c2 FROM t2;
DELETE FROM t1 WHERE c1=1979 OR c1=2154;
--sorted_result
SELECT c2 FROM t1;
DELETE FROM t4 WHERE c2 IN (01,54,65,69,null) LIMIT 2;
--sorted_result
SELECT c1 FROM t4;
#Multi table delete
DELETE t3,t4 FROM t3,t4 WHERE t3.c1=61 AND t4.c2=4;
# Delete using various access methods
# Delete using Const
# EXPLAIN SELECT * FROM t1 WHERE c1=2064 AND c2=2064;
DELETE FROM t1 WHERE c1=2064 AND c2=2064;
--sorted_result
SELECT * FROM t1;
# Delete using range
# EXPLAIN SELECT * FROM t1 WHERE c1 BETWEEN 2000 AND 2010;
DELETE FROM t1 WHERE c1 BETWEEN 2000 AND 2010 LIMIT 2;
--sorted_result
SELECT * FROM t1;
# EXPLAIN SELECT * FROM t1 WHERE c1 IN (2155,2009,1975);
DELETE FROM t1 WHERE c1 IN (2155,2009,1975) LIMIT 2;
--sorted_result
SELECT * FROM t1;
# Delete using eq_ref
# EXPLAIN SELECT * FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
DELETE t1,t2 FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Drop tables
DROP TABLE IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1 @@
insert_calendar : Bug #52283 Innodb reports extra warnings when SELECT/WHERE is performed using invalid value

View File

@@ -0,0 +1,50 @@
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.
यह हिन्दी में एक वाक्य है.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,969 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2;
--enable_warnings
######## Running INSERT tests for DECIMAL ########
# Create tables
CREATE TABLE t1(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL, c4 INT, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t2(c1 DECIMAL(10,0) SIGNED NOT NULL, c2 DECIMAL(10) UNSIGNED NULL, c3 DECIMAL, c4 INT);
# Test insert values, trailing zeroes are not stripped
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100.05000',1);
INSERT INTO t2 VALUES('-1000000000','1000000000','1000000000',2);
# Test no approximation
INSERT INTO t1(c1) VALUES('12345.000009');
# Test insert max values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','99999.99999',3);
INSERT INTO t2 VALUES('-9999999999','-9999999999','9999999999',4);
# Test insert outside max value, would be clipped to closest endpoint
--sorted_result
SELECT * FROM t1;
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
DELETE FROM t1 WHERE c1='99999.99999' AND c2='-99999.99999';
--sorted_result
SELECT * FROM t1;
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
INSERT INTO t2 VALUES('10000000000','-10000000000','10000000000',6);
# Test insert leading zero, +/- signs, overflow handling
insert into t1 values ("0.0","0.0","0.0",7),("01.0","01.0","01.0",10);
insert into t1 values ("-.1","-.1","-.1",13);
insert into t1 values ("+111111111.11","+111111111.11","+111111111.11",19);
insert into t2 values ("0.0","0.0","0.0",7),("-0.0","-0.0","-0.0",8),("+0.0","+0.0","+0.0",9),("01.0","01.0","01.0",10),("+01.0","+01.0","+01.0",11),("-01.0","-01.0","-01.0",12);
insert into t2 values ("-.1","-.1","-.1",13),("+.1","+.1","+.1",14),(".1",".1",".1",15);
insert into t2 values ("00000000000001","00000000000001","00000000000001",16),("+0000000000001","+0000000000001","+0000000000001",17),("-0000000000001","-0000000000001","-0000000000001",18);
insert into t2 values ("+111111111.11","+111111111.11","+111111111.11",19),("111111111.11","111111111.11","111111111.11",20),("-11111111.11","-11111111.11","-11111111.11",21);
insert into t2 values ("-111111111.11","-111111111.11","-111111111.11",22),("+1111111111.11","+1111111111.11","+1111111111.11",23),("1111111111.11","1111111111.11","1111111111.11",24);
insert into t2 values ("1e+1000","1e+1000","1e+1000",25),("1e-1000","1e-1000","1e-1000",26),("-1e+1000","-1e+1000","-1e+1000",27);
insert into t2 values ("1e+4294967296","1e+4294967296","1e+4294967296",28),("1e-4294967296","1e-4294967296","1e-4294967296",29);
insert into t2 values ("1e+18446744073709551615","1e+18446744073709551615","1e+18446744073709551615",30),("1e+18446744073709551616","1e+18446744073709551616","1e+18446744073709551616",31),("1e-9223372036854775807","1e-9223372036854775807","1e-9223372036854775807",32),("1e-9223372036854775809","1e-9223372036854775809","1e-9223372036854775809",33);
# Now Select
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t1;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t2;
# Select using various access methods
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
# Using index for group-by
--sorted_result
SELECT c1 FROM t1 GROUP BY c1;
--sorted_result
SELECT DISTINCT c1 FROM t1;
--sorted_result
SELECT c1,MIN(c2) FROM t1 GROUP BY c1;
# Test extremes
CREATE TABLE t5(c1 DECIMAL(65,0) UNSIGNED NOT NULL, c2 DECIMAL(65,0) SIGNED NULL, c3 DECIMAL, c4 INT, INDEX idx(c1,c2));
INSERT INTO t5 VALUES('1e+64','-1e+64','1e+64',1),('1e-64','-1e-64','1e-64',2);
INSERT INTO t5 VALUES('1.2e+65','-1.2e+65','1.2e+65',3),('1.2e-65','-1.2e-65','1.2e-65',4);
--sorted_result
SELECT * FROM t5;
DROP TABLE t5;
# Test encoding to various bytes
CREATE TABLE t5(c1 DECIMAL(18,9) UNSIGNED, c2 DECIMAL(18,9) SIGNED) /* requires 8 bytes */;
INSERT INTO t5 VALUES(123456789.123456789,-123456789.123456789);
--sorted_result
SELECT c1,c2 FROM t5;
ALTER TABLE t5 CHANGE c1 c1 DECIMAL(19,9) UNSIGNED, CHANGE c2 c2 DECIMAL(19,9) SIGNED /* requires 9 bytes */;
INSERT INTO t5 VALUES(1234567891.123456789,-1234567891.123456789);
--sorted_result
SELECT c1,c2 FROM t5;
ALTER TABLE t5 CHANGE c1 c1 DECIMAL(21,10) UNSIGNED, CHANGE c2 c2 DECIMAL(21,10) SIGNED /* requires 10 bytes */;
INSERT INTO t5 VALUES(12345678912.1234567891,-12345678912.1234567891);
--sorted_result
SELECT c1,c2 FROM t5;
ALTER TABLE t5 CHANGE c1 c1 DECIMAL(23,11) UNSIGNED, CHANGE c2 c2 DECIMAL(23,11) SIGNED /* requires 11 bytes */;
INSERT INTO t5 VALUES(123456789123.12345678912,-123456789123.12345678912);
--sorted_result
SELECT c1,c2 FROM t5;
ALTER TABLE t5 CHANGE c1 c1 DECIMAL(25,12) UNSIGNED, CHANGE c2 c2 DECIMAL(25,12) SIGNED /* requires 12 bytes */;
INSERT INTO t5 VALUES(1234567891234.123456789123,-1234567891234.123456789123);
--sorted_result
SELECT c1,c2 FROM t5;
SELECT SUM(c1),SUM(c2) FROM t5;
DROP TABLE t5;
# Test ROUND() and TRUNCATE()
CREATE TABLE t5(c1 DECIMAL(16,6), c2 tinyint);
INSERT INTO t5 VALUES(1.1325,3);
SELECT ROUND(c1,c2),TRUNCATE(c1,c2) FROM t5;
DROP TABLE t5;
# Test wrong decimal types
--error ER_TOO_BIG_PRECISION
CREATE TABLE t7(c1 DECIMAL(66,0));
--error ER_M_BIGGER_THAN_D
CREATE TABLE t7(c1 DECIMAL(5,10));
DROP TABLE t1,t2;
######## Running INSERT tests for FLOAT ########
# Create tables
CREATE TABLE t1(c1 FLOAT(10,5) UNSIGNED NOT NULL, c2 FLOAT(10,5) SIGNED NULL, c3 FLOAT, c4 INT, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t2(c1 FLOAT(10,0) SIGNED NOT NULL, c2 FLOAT(10,0) UNSIGNED NULL, c3 FLOAT, c4 INT);
# Test insert values, trailing zeroes are not stripped
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100.05000',1);
INSERT INTO t2 VALUES('-1000000000','1000000000','1000000000',2);
# Test approximation
INSERT INTO t1(c1) VALUES('12345.000009');
# Test insert max values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','99999.99999',3);
INSERT INTO t2 VALUES('-9999999999','-9999999999','9999999999',4);
# Test insert outside max value, would be clipped to closest endpoint
SELECT * FROM t1;
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
DELETE FROM t1 WHERE c1='100000.00000' AND c2='-100000.00000';
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
INSERT INTO t2 VALUES('10000000000','-10000000000','10000000000',6);
# Test insert leading zero, +/- signs, overflow handling
insert into t1 values ("0.0","0.0","0.0",7),("01.0","01.0","01.0",10);
insert into t1 values ("-.1","-.1","-.1",13);
insert into t1 values ("+111111111.11","+111111111.11","+111111111.11",19);
insert into t2 values ("0.0","0.0","0.0",7),("-0.0","-0.0","-0.0",8),("+0.0","+0.0","+0.0",9),("01.0","01.0","01.0",10),("+01.0","+01.0","+01.0",11),("-01.0","-01.0","-01.0",12);
insert into t2 values ("-.1","-.1","-.1",13),("+.1","+.1","+.1",14),(".1",".1",".1",15);
insert into t2 values ("00000000000001","00000000000001","00000000000001",16),("+0000000000001","+0000000000001","+0000000000001",17),("-0000000000001","-0000000000001","-0000000000001",18);
insert into t2 values ("+111111111.11","+111111111.11","+111111111.11",19),("111111111.11","111111111.11","111111111.11",20),("-11111111.11","-11111111.11","-11111111.11",21);
insert into t2 values ("-111111111.11","-111111111.11","-111111111.11",22),("+1111111111.11","+1111111111.11","+1111111111.11",23),("1111111111.11","1111111111.11","1111111111.11",24);
insert into t2 values ("1e+1000","1e+1000","1e+1000",25),("1e-1000","1e-1000","1e-1000",26),("-1e+1000","-1e+1000","-1e+1000",27);
insert into t2 values ("1e+4294967296","1e+4294967296","1e+4294967296",28),("1e-4294967296","1e-4294967296","1e-4294967296",29);
insert into t2 values ("1e+18446744073709551615","1e+18446744073709551615","1e+18446744073709551615",30),("1e+18446744073709551616","1e+18446744073709551616","1e+18446744073709551616",31),("1e-9223372036854775807","1e-9223372036854775807","1e-9223372036854775807",32),("1e-9223372036854775809","1e-9223372036854775809","1e-9223372036854775809",33);
# Now Select
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t1;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t2;
# Select using various access methods
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
# Using index for group-by
--sorted_result
SELECT c1 FROM t1 GROUP BY c1;
--sorted_result
SELECT DISTINCT c1 FROM t1;
--sorted_result
SELECT c1,MIN(c2) FROM t1 GROUP BY c1;
# Test encoding to 4 or 8 bytes
CREATE TABLE t5(c1 FLOAT(23,0) UNSIGNED NOT NULL, c2 FLOAT(23,0) SIGNED NULL, c3 FLOAT, c4 INT, INDEX idx(c1,c2));
INSERT INTO t5 VALUES('1e+22','-1e+22','1e+22',1),('1e-22','-1e-22','1e-22',2);
#Output is platform dependent
--disable_result_log
--sorted_result
SELECT * FROM t5;
--enable_result_log
ALTER TABLE t5 CHANGE c1 c1 FLOAT(24,0) SIGNED NOT NULL, CHANGE c2 c2 FLOAT(24,0) UNSIGNED NULL;
INSERT INTO t5 VALUES('-1e+23','1e+23','1e+23',3),('-1e-23','1e-23','1e-23',4);
#Output is platform dependent
--disable_result_log
--sorted_result
SELECT * FROM t5;
--enable_result_log
ALTER TABLE t5 CHANGE c1 c1 FLOAT(53,0) UNSIGNED, CHANGE c2 c2 FLOAT(53,0) SIGNED;
INSERT INTO t5 VALUES('1e+52','-1e+52','1e+52',5),('1e-52','-1e-52','1e-52',6);
INSERT INTO t5 VALUES('1e+53','-1e+53','1e+53',7),('1e-53','-1e-53','1e-53',8);
#Output is platform dependent
--replace_column 1 # 2 #
--sorted_result
SELECT * FROM t5;
DROP TABLE t5;
# Test ROUND() and TRUNCATE()
CREATE TABLE t5(c1 FLOAT(16,6), c2 tinyint);
INSERT INTO t5 VALUES(1.1325,3);
SELECT ROUND(c1,c2),TRUNCATE(c1,c2) FROM t5;
DROP TABLE t5;
# Test wrong decimal types
--error ER_M_BIGGER_THAN_D
CREATE TABLE t7(c1 FLOAT(5,10));
DROP TABLE t1,t2;
######## Running INSERT tests for DOUBLE ########
# Create tables
CREATE TABLE t1(c1 DOUBLE(10,5) UNSIGNED NOT NULL, c2 DOUBLE(10,5) SIGNED NULL, c3 DOUBLE, c4 INT, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t2(c1 DOUBLE(10,0) SIGNED NOT NULL, c2 DOUBLE(10,0) UNSIGNED NULL, c3 DOUBLE, c4 INT);
# Test insert values, trailing zeroes are not stripped
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100.05000',1);
INSERT INTO t2 VALUES('-1000000000','1000000000','1000000000',2);
# Test approximation
INSERT INTO t1(c1) VALUES('12345.000009');
# Test insert max values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','99999.99999',3);
INSERT INTO t2 VALUES('-9999999999','-9999999999','9999999999',4);
# Test insert outside max value, would be clipped to closest endpoint
SELECT * FROM t1;
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
DELETE FROM t1 WHERE c1='99999.99999' AND c2='-99999.99999';
INSERT INTO t1 VALUES('100000.000002','-100000.000002','100000.000002',5);
INSERT INTO t2 VALUES('10000000000','-10000000000','10000000000',6);
# Test insert leading zero, +/- signs, overflow handling
insert into t1 values ("0.0","0.0","0.0",7),("01.0","01.0","01.0",10);
insert into t1 values ("-.1","-.1","-.1",13);
insert into t1 values ("+111111111.11","+111111111.11","+111111111.11",19);
insert into t2 values ("0.0","0.0","0.0",7),("-0.0","-0.0","-0.0",8),("+0.0","+0.0","+0.0",9),("01.0","01.0","01.0",10),("+01.0","+01.0","+01.0",11),("-01.0","-01.0","-01.0",12);
insert into t2 values ("-.1","-.1","-.1",13),("+.1","+.1","+.1",14),(".1",".1",".1",15);
insert into t2 values ("00000000000001","00000000000001","00000000000001",16),("+0000000000001","+0000000000001","+0000000000001",17),("-0000000000001","-0000000000001","-0000000000001",18);
insert into t2 values ("+111111111.11","+111111111.11","+111111111.11",19),("111111111.11","111111111.11","111111111.11",20),("-11111111.11","-11111111.11","-11111111.11",21);
insert into t2 values ("-111111111.11","-111111111.11","-111111111.11",22),("+1111111111.11","+1111111111.11","+1111111111.11",23),("1111111111.11","1111111111.11","1111111111.11",24);
insert into t2 values ("1e+1000","1e+1000","1e+1000",25),("1e-1000","1e-1000","1e-1000",26),("-1e+1000","-1e+1000","-1e+1000",27);
insert into t2 values ("1e+4294967296","1e+4294967296","1e+4294967296",28),("1e-4294967296","1e-4294967296","1e-4294967296",29);
insert into t2 values ("1e+18446744073709551615","1e+18446744073709551615","1e+18446744073709551615",30),("1e+18446744073709551616","1e+18446744073709551616","1e+18446744073709551616",31),("1e-9223372036854775807","1e-9223372036854775807","1e-9223372036854775807",32),("1e-9223372036854775809","1e-9223372036854775809","1e-9223372036854775809",33);
# Now Select
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t1;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t1;
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t1;
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) as max_value, sum(c1) as sum, avg(c1) as avg FROM t2;
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) as max_value, sum(c2) as sum, avg(c2) as avg FROM t2;
#SELECT below outputs 'inf' and 'infinity' for Linux/SunOS respectively
--replace_column 4 inf 5 inf
SELECT count(*) as total_rows, min(c3) as min_value, max(c3) as max_value, sum(c3) as sum, avg(c3) as avg FROM t2;
# Select using various access methods
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '0.0' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '0.0' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('0.0','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '0.0' AND c1 < '99999.99999' AND c2 = '1.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 < '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <= '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 BETWEEN '100.05' AND '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN ('100.05','99999.99999') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 >= '100.05' AND c1 < '99999.99999' AND c2 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
## Full table scan ##
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1;
--sorted_result
SELECT * FROM t1 WHERE c3 = '-0.0';
## Forward index scan, covering ##
--sorted_result
SELECT c1,c2 FROM t1;
## Backward index scan, covering ##
SELECT c1,c2 FROM t1 ORDER BY c1,c2 DESC;
## Forward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 LIMIT 2;
## Backward index scan, non-covering ##
SELECT * FROM t1 ORDER BY c1,c2 DESC LIMIT 2;
## ref type access
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 = '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
## Range access, ordered ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2;
## Range access, backwards scan ##
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 > '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 < '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <= '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 <=> '-99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 BETWEEN '-99999.99999' AND '0.0' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IN ('-99999.99999','0.0') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 >= '-99999.99999' AND c2 < '0.0' AND c1 = '99999.99999' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2;
# Using index for group-by
--sorted_result
SELECT c1 FROM t1 GROUP BY c1;
--sorted_result
SELECT DISTINCT c1 FROM t1;
--sorted_result
SELECT c1,MIN(c2) FROM t1 GROUP BY c1;
# Test encoding to 4 or 8 bytes
CREATE TABLE t5(c1 DOUBLE(23,0) UNSIGNED NOT NULL, c2 DOUBLE(23,0) SIGNED NULL, c3 DOUBLE, c4 INT, INDEX idx(c1,c2));
INSERT INTO t5 VALUES('1e+22','-1e+22','1e+22',1),('1e-22','-1e-22','1e-22',2);
--sorted_result
SELECT * FROM t5;
ALTER TABLE t5 CHANGE c1 c1 DOUBLE(24,0) SIGNED NOT NULL, CHANGE c2 c2 DOUBLE(24,0) UNSIGNED NULL;
INSERT INTO t5 VALUES('-1e+23','1e+23','1e+23',3),('-1e-23','1e-23','1e-23',4);
#Output is platform dependent
--disable_result_log
--sorted_result
SELECT * FROM t5;
--enable_result_log
ALTER TABLE t5 CHANGE c1 c1 DOUBLE(53,0) UNSIGNED, CHANGE c2 c2 DOUBLE(53,0) SIGNED;
INSERT INTO t5 VALUES('1e+52','-1e+52','1e+52',5),('1e-52','-1e-52','1e-52',6);
INSERT INTO t5 VALUES('1e+53','-1e+53','1e+53',7),('1e-53','-1e-53','1e-53',8);
#Output is platform dependent
--disable_result_log
--sorted_result
SELECT * FROM t5;
--enable_result_log
DROP TABLE t5;
# Test ROUND() and TRUNCATE()
CREATE TABLE t5(c1 DOUBLE(16,6), c2 tinyint);
INSERT INTO t5 VALUES(1.1325,3);
SELECT ROUND(c1,c2),TRUNCATE(c1,c2) FROM t5;
DROP TABLE t5;
# Test wrong decimal types
--error ER_M_BIGGER_THAN_D
CREATE TABLE t7(c1 DOUBLE(5,10));
DROP TABLE t1,t2;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,500 @@
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.
This is a sample text.

View File

@@ -0,0 +1,134 @@
--disable_warnings
--enable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18;
######## Running UPDATE tests ########
#Test for latin1 character set
CREATE TABLE t5(c1 CHAR(1) CHARACTER SET latin1);
# Insert some targeted values for latin1 character set; borrowing from ctype_latin.test in the main suite
eval INSERT INTO t5 VALUES (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07);
eval INSERT INTO t5 VALUES (0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F);
eval INSERT INTO t5 VALUES (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17);
eval INSERT INTO t5 VALUES (0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F);
eval INSERT INTO t5 VALUES (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27);
eval INSERT INTO t5 VALUES (0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F);
eval INSERT INTO t5 VALUES (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37);
eval INSERT INTO t5 VALUES (0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F);
eval INSERT INTO t5 VALUES (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47);
eval INSERT INTO t5 VALUES (0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F);
eval INSERT INTO t5 VALUES (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57);
eval INSERT INTO t5 VALUES (0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F);
eval INSERT INTO t5 VALUES (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67);
eval INSERT INTO t5 VALUES (0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F);
eval INSERT INTO t5 VALUES (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77);
eval INSERT INTO t5 VALUES (0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F);
eval INSERT INTO t5 VALUES (0x80),(0x81),(0x82),(0x83),(0x84),(0x85),(0x86),(0x87);
eval INSERT INTO t5 VALUES (0x88),(0x89),(0x8A),(0x8B),(0x8C),(0x8D),(0x8E),(0x8F);
eval INSERT INTO t5 VALUES (0x90),(0x91),(0x92),(0x93),(0x94),(0x95),(0x96),(0x97);
eval INSERT INTO t5 VALUES (0x98),(0x99),(0x9A),(0x9B),(0x9C),(0x9D),(0x9E),(0x9F);
eval INSERT INTO t5 VALUES (0xA0),(0xA1),(0xA2),(0xA3),(0xA4),(0xA5),(0xA6),(0xA7);
eval INSERT INTO t5 VALUES (0xA8),(0xA9),(0xAA),(0xAB),(0xAC),(0xAD),(0xAE),(0xAF);
eval INSERT INTO t5 VALUES (0xB0),(0xB1),(0xB2),(0xB3),(0xB4),(0xB5),(0xB6),(0xB7);
eval INSERT INTO t5 VALUES (0xB8),(0xB9),(0xBA),(0xBB),(0xBC),(0xBD),(0xBE),(0xBF);
eval INSERT INTO t5 VALUES (0xC0),(0xC1),(0xC2),(0xC3),(0xC4),(0xC5),(0xC6),(0xC7);
eval INSERT INTO t5 VALUES (0xC8),(0xC9),(0xCA),(0xCB),(0xCC),(0xCD),(0xCE),(0xCF);
eval INSERT INTO t5 VALUES (0xD0),(0xD1),(0xD2),(0xD3),(0xD4),(0xD5),(0xD6),(0xD7);
eval INSERT INTO t5 VALUES (0xD8),(0xD9),(0xDA),(0xDB),(0xDC),(0xDD),(0xDE),(0xDF);
eval INSERT INTO t5 VALUES (0xE0),(0xE1),(0xE2),(0xE3),(0xE4),(0xE5),(0xE6),(0xE7);
eval INSERT INTO t5 VALUES (0xE8),(0xE9),(0xEA),(0xEB),(0xEC),(0xED),(0xEE),(0xEF);
eval INSERT INTO t5 VALUES (0xF0),(0xF1),(0xF2),(0xF3),(0xF4),(0xF5),(0xF6),(0xF7);
eval INSERT INTO t5 VALUES (0xF8),(0xF9),(0xFA),(0xFB),(0xFC),(0xFD),(0xFE),(0xFF);
SELECT c1 FROM t5;
CREATE TABLE t6 (a char(1) character set latin2);
INSERT INTO t6 VALUES (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27);
INSERT INTO t6 VALUES (0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F);
INSERT INTO t6 VALUES (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37);
INSERT INTO t6 VALUES (0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F);
INSERT INTO t6 VALUES (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47);
INSERT INTO t6 VALUES (0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F);
INSERT INTO t6 VALUES (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57);
INSERT INTO t6 VALUES (0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F);
INSERT INTO t6 VALUES (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67);
INSERT INTO t6 VALUES (0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F);
INSERT INTO t6 VALUES (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77);
INSERT INTO t6 VALUES (0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F);
INSERT INTO t6 VALUES (0x80),(0x81),(0x82),(0x83),(0x84),(0x85),(0x86),(0x87);
INSERT INTO t6 VALUES (0x88),(0x89),(0x8A),(0x8B),(0x8C),(0x8D),(0x8E),(0x8F);
INSERT INTO t6 VALUES (0x90),(0x91),(0x92),(0x93),(0x94),(0x95),(0x96),(0x97);
INSERT INTO t6 VALUES (0x98),(0x99),(0x9A),(0x9B),(0x9C),(0x9D),(0x9E),(0x9F);
INSERT INTO t6 VALUES (0xA0),(0xA1),(0xA2),(0xA3),(0xA4),(0xA5),(0xA6),(0xA7);
INSERT INTO t6 VALUES (0xA8),(0xA9),(0xAA),(0xAB),(0xAC),(0xAD),(0xAE),(0xAF);
INSERT INTO t6 VALUES (0xB0),(0xB1),(0xB2),(0xB3),(0xB4),(0xB5),(0xB6),(0xB7);
INSERT INTO t6 VALUES (0xB8),(0xB9),(0xBA),(0xBB),(0xBC),(0xBD),(0xBE),(0xBF);
INSERT INTO t6 VALUES (0xC0),(0xC1),(0xC2),(0xC3),(0xC4),(0xC5),(0xC6),(0xC7);
INSERT INTO t6 VALUES (0xC8),(0xC9),(0xCA),(0xCB),(0xCC),(0xCD),(0xCE),(0xCF);
INSERT INTO t6 VALUES (0xD0),(0xD1),(0xD2),(0xD3),(0xD4),(0xD5),(0xD6),(0xD7);
INSERT INTO t6 VALUES (0xD8),(0xD9),(0xDA),(0xDB),(0xDC),(0xDD),(0xDE),(0xDF);
INSERT INTO t6 VALUES (0xE0),(0xE1),(0xE2),(0xE3),(0xE4),(0xE5),(0xE6),(0xE7);
INSERT INTO t6 VALUES (0xE8),(0xE9),(0xEA),(0xEB),(0xEC),(0xED),(0xEE),(0xEF);
INSERT INTO t6 VALUES (0xF0),(0xF1),(0xF2),(0xF3),(0xF4),(0xF5),(0xF6),(0xF7);
INSERT INTO t6 VALUES (0xF8),(0xF9),(0xFA),(0xFB),(0xFC),(0xFD),(0xFE),(0xFF);
SELECT c1 FROM t5;
#Table to test for ascii character set
set names ascii;
select 'e'='`';
select 'y'='~';
CREATE TABLE t7(a CHAR(1) CHARACTER SET ascii);
# Insert some targeted values for ascii character set; borrowing from ctype_ascii.test in the main suite
insert into t7 (a) values (' '), ('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'), ('o'), ('p'), ('q'), ('r'), ('s'), ('t'), ('u'), ('v'), ('w'), ('x'), ('y'), ('z'), ('A'), ('B'), ('C'), ('D'), ('E'), ('F'), ('G'), ('H'), ('I'), ('J'), ('K'), ('L'), ('M'), ('N'), ('O'), ('P'), ('Q'), ('R'), ('S'), ('T'), ('U'), ('V'), ('W'), ('X'), ('Y'), ('Z'), ('!'), ('@'), ('#'), ('$'), ('%'), ('^'), ('&'), ('*'), ('('), (')'), ('_'), ('+'), ('`'), ('~'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('0'), ('['), (']'), ('\\'), ('|'), ('}'), ('{'), ('"'), (':'), (''''), (';'), ('/'), ('.'), (','), ('?'), ('>'), ('<'), ('\n'), ('\t'), ('\a'), ('\f'), ('\v');
SELECT t7a.a, t7b.a FROM t7 as t7a, t7 as t7b WHERE t7a.a=t7b.a ORDER BY BINARY t7a.a, BINARY t7b.a;
UPDATE t7 SET a=CHAR(ASCII(a)+32) WHERE ASCII(a) >= 65 AND ASCII(a) <= 90;
UPDATE t7 SET a=CHAR(ASCII(a)-32) WHERE ASCII(a) >= 97 AND ASCII(a) <= 122;
SELECT a,HEX(a) FROM t7;
#Tests for utf8 character set
CREATE TABLE t8 (a char(10) character set utf8 not null);
INSERT INTO t8 VALUES ('a'),('a\0'),('a\t'),('a ');
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t8;
DROP TABLE t8;
CREATE TABLE t8(a VARCHAR(255), KEY(a)) DEFAULT CHARSET=utf8;
eval INSERT INTO t8 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
INSERT INTO t8 VALUES('uu');
check table t8;
INSERT INTO t8 VALUES('uU');
check table t8;
INSERT INTO t8 VALUES('uu');
check table t8;
INSERT INTO t8 VALUES('uuABC');
check table t8;
INSERT INTO t8 VALUES('UuABC');
check table t8;
INSERT INTO t8 VALUES('uuABC');
check table t8;
alter table t8 add b int;
INSERT INTO t8 VALUES('BCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
INSERT INTO t8 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',2);
delete from t8 where b=1;
INSERT INTO t8 VALUES('UUABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',1);
check table t8;
INSERT INTO t8 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
INSERT INTO t8 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',4);
delete from t8 where b=3;
INSERT INTO t8 VALUES('uUABCDEFGHIGKLMNOPRSTUVWXYZbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',3);
check table t8;
UPDATE t8 SET a=REPEAT('Z',255) WHERE a LIKE 'uu%';
SELECT a,LENGTH(a) FROM t8;
drop table t8;
SET collation_connection = 'utf8_general_ci';
CREATE TABLE t8 (c1 TEXT character set utf8 collate utf8_general_ci);
insert into t8 values (repeat('बांग्लादे',1200));
insert into t8 values ('রবীন্দ্রনাথ ঠাকুর');
insert into t8 values (LOAD_FILE('$MYSQLTEST_VARDIR/hindi.txt'));
ALTER TABLE t8 ADD c2 TEXT CHARACTER SET utf8 collate utf8_general_ci DEFAULT NULL;
INSERT INTO t8 values (repeat('রবীন্দ্রনাথ ঠাকুর',1300),'');
ALTER TABLE t8 ADD INDEX(c1(18));
UPDATE t8 SET c2='यह हिन्दी में एक अलग वाक्य है. यह एक अलग कॉलम में जोड़ा जा रहा है' WHERE c2=NULL;
SELECT length(c1),c1, length(c2),c2 FROM t8;
SELECT length(c1),c1, length(c2),c2 FROM t8 WHERE c1 LIKE _utf8 'রবীন%' COLLATE utf8_general_ci ;
ALTER TABLE t8 ADD INDEX(c1(18),c2(10));
SELECT length(c1),c1, length(c2),c2 FROM t8 WHERE c1 LIKE _utf8 'রবীন%' COLLATE utf8_general_ci OR c2 LIKE _utf8 'जग' COLLATE utf8_general_ci;
UPDATE t8 SET c1= REPEAT('৯',12000);
SELECT length(c1),length(c2) FROM t8;
DROP TABLE t8;
SET collation_connection = default;
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18;

View File

@@ -0,0 +1,145 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18;
--enable_warnings
######## Running UPDATE tests ########
# Generic tables with mixed field types and sizes
CREATE TABLE t1(c1 CHAR(255), c2 TEXT);
eval INSERT INTO t1 VALUES(REPEAT('abcdef',40), REPEAT('1',65535));
eval INSERT INTO t1 VALUES(REPEAT('abc',80), REPEAT('2',65533));
eval INSERT INTO t1 VALUES(REPEAT('\t',255), REPEAT('3',65534));
UPDATE t1 SET c1=REPEAT('\n',255) WHERE c1=REPEAT('\t',255);
--sorted_result
SELECT LENGTH(c1),LENGTH(c2),CHAR_LENGTH(c2) FROM t1;
--sorted_result
SELECT c1, c2 FROM t1 where c1= REPEAT('\n',255);
#--warning 1265
UPDATE t1 SET c1=REPEAT('xyz',85), c2=REPEAT(c1, 100) ORDER by c1 LIMIT 2;
SHOW WARNINGS;
--sorted_result
SELECT LENGTH(c2) FROM t1 WHERE c2 LIKE 'xyz%';
--sorted_result
SELECT LENGTH(c1),LENGTH(c2),CHAR_LENGTH(c2) FROM t1;
--sorted_result
SELECT c1, c2 FROM t1;
--disable_query_log
eval INSERT INTO t1 VALUES(REPEAT('\0',255),LOAD_FILE('$MYSQLTEST_VARDIR/sample.txt'));
--enable_query_log
ALTER TABLE t1 MODIFY c1 TEXT;
UPDATE t1 SET c1=LOAD_FILE('$MYSQLTEST_VARDIR/temp.txt') LIMIT 2;
SHOW WARNINGS;
UPDATE t1 SET c1=NULL WHERE c1 LIKE 'xyz%';
DELETE FROM t1 LIMIT 1;
DELETE FROM t1 WHERE c1 NOT LIKE 'xyz%' LIMIT 1;
--sorted_result
SELECT length(c1), c1, length(c2), c2 FROM t1;
CREATE TABLE t2(c1 BLOB, c2 TINYBLOB, c3 TEXT);
eval INSERT INTO t2 VALUES(REPEAT('1',65535),REPEAT('a',254),REPEAT('d',65534 ));
eval INSERT INTO t2 VALUES(REPEAT('2',65534),REPEAT('b',253),REPEAT('e',65535 ));
eval INSERT INTO t2 VALUES(REPEAT('3',65533),REPEAT('c',255),REPEAT('f',65533));
--sorted_result
SELECT c1,c2 FROM t2;
let $i=100;
while($i){
let $j=100;
while($j){
eval INSERT INTO t2 VALUES('abcde\t \t fgh \n\n ', ' sdsdsd',NULL);
dec $j;
}
dec $i;
}
--sorted_result
SELECT length(c1),c1, length(c2),c2, length(c3), c3 FROM t2;
UPDATE t2 SET c3='Not NULL' WHERE c3=NULL;
--sorted_result
SELECT length(c1),c1, length(c2),c2, length(c3), c3 FROM t2;
# Multi-table updates/deletes
CREATE TABLE t3 (c1 CHAR(10), c2 CHAR(100));
INSERT INTO t3 VALUES ('AS','Axel Soa'), ('AK','Axle Kora'), ('HH','Hulk Hogan');
CREATE TABLE t4 (c1 CHAR(10), c2 CHAR(100));
INSERT INTO t4 VALUES ('AS','#100, Avenue, UK'), ('AK','#101, Avenue, US'), ('HH','#103, Avenu MT');
UPDATE t4 SET c2='#102, Avennue MT' WHERE c1='HH';
--sorted_result
SELECT LENGTH(c1), c1 , LENGTH(c2),c2 FROM t4;
DELETE FROM t3 USING t3,t4 WHERE t3.c1='AS' AND t3.c1=t4.c1 ;
--sorted_result
SELECT length(c1), c1, length(c2), c2 FROM t3;
DROP TABLE t3,t4;
CREATE TABLE t3 (id int(11) NOT NULL default '0',name varchar(10) default NULL,PRIMARY KEY (id)) ;
INSERT INTO t3 VALUES (1, 'aaa'),(2,'aaa'),(3,'aaa');
CREATE TABLE t4 (id int(11) NOT NULL default '0',name varchar(10) default NULL, PRIMARY KEY (id)) ;
INSERT INTO t4 VALUES (2,'bbb'),(3,'bbb'),(4,'bbb');
CREATE TABLE t5 (id int(11) NOT NULL default '0', mydate datetime default NULL,PRIMARY KEY (id));
INSERT INTO t5 VALUES (1,'2002-02-04 00:00:00'),(3,'2002-05-12 00:00:00'),(5,'2002-05-12 00:00:00'),(6,'2002-06-22 00:00:00'),(7,'2002-07-22 00:00:00');
delete t3,t4,t5 from t3,t4,t5 where to_days(now())-to_days(t5.mydate)>=30 and t5.id=t3.id and t5.id=t4.id;
select * from t5;
DROP TABLE t3,t4,t5;
CREATE TABLE t6 (a char(2) not null primary key, b varchar(20) not null, key (b));
CREATE TABLE t7 (a char(2) not null primary key, b varchar(20) not null, key (b));
INSERT INTO t6 values ('AB','MySQLAB'),('JA','Sun Microsystems'),('MS','Microsoft'),('IB','IBM- Inc.'),('GO','Google Inc.');
INSERT INTO t7 values ('AB','Sweden'),('JA','USA'),('MS','United States of Amercica'),('IB','North America'),('GO','South America');
update t6,t7 set t6.a=LCASE(t6.a);
--sorted_result
select * from t6;
update t6,t7 set t6.a=UCASE(t6.a) where t6.a='AB';
--sorted_result
select * from t6;
update t6,t7 set t6.b=UPPER(t6.b) where t6.b LIKE 'United%';
--sorted_result
select * from t7;
update t6,t7 set t6.b=UPPER(t6.b),t7.b=LOWER(t7.b) where LENGTH(t6.b) between 3 and 5 and t7.a=LOWER(t6.a);
--sorted_result
select * from t6;
--sorted_result
select * from t7;
drop table t6,t7;
# Test for some STRING functions on TEXT columns
CREATE TABLE t12(c1 TINYTEXT, c2 TEXT, c3 MEDIUMTEXT, c4 LONGTEXT);
eval INSERT INTO t12 values (" This is a test ","\0 \0 for STRING","functions available \t in", " \t\t MySQL " );
eval UPDATE t12 SET c1="This is a update test!" WHERE c2 LIKE "\0%";
--sorted_result
SELECT LENGTH(c1),LENGTH(c2),LENGTH(c3),LENGTH(c4) FROM t12;
--sorted_result
SELECT LEFT(c1,5),LEFT(c2,5),LEFT(c3,5),LEFT(c4,5) FROM t12;
--sorted_result
SELECT RTRIM(c1),RTRIM(c2),RTRIM(c3),RTRIM(c4) FROM t12;
--sorted_result
SELECT HEX(c1),HEX(c2),HEX(c3),HEX(c4) FROM t12;
--sorted_result
SELECT REVERSE(c1),REVERSE(c2),REVERSE(c3),REVERSE(c4) FROM t12;
DELETE FROM t12 WHERE C1 LIKE "%update%";
--sorted_result
SELECT HEX(c1),HEX(c2),HEX(c3),HEX(c4) FROM t12;
# Test for SET datatype
CREATE TABLE t16 (c1 SET('a', 'b', 'c', 'd', 'e'));
eval INSERT INTO t16 VALUES (('d,a,d,d'));
--sorted_result
SELECT c1 FROM t16;
eval INSERT INTO t16 (c1) VALUES ('a,b,d'),('d,A ,b');
--sorted_result
SELECT c1 FROM t16;
#--warning WARN_DATA_TRUNCATED
eval INSERT INTO t16 (c1) VALUES ('f,a,b');
SHOW WARNINGS;
--sorted_result
SELECT c1 FROM t16;
#--warning ER_DUPLICATED_VALUE_IN_TYPE
CREATE TABLE t17 (c1 SET('a','b','a','b'));
SHOW WARNINGS;
# Tests for ENUM datatype
# Invalid ENUM value insert behavior
CREATE TABLE t18 (c1 CHAR(4),c2 enum('SMALL','MEDIUM','LARGE','VERY LARGE'));
eval INSERT INTO t18 VALUES('SIZE', 'SMALL');
eval INSERT INTO t18 VALUES('SIZE', 'SMALL1');
--sorted_result
SELECT * FROM t18 WHERE c2=0;
EXPLAIN SELECT * FROM t18 WHERE c2=0;
eval SET sql_mode= 'STRICT_ALL_TABLES';
--error 1265
eval INSERT INTO t18 VALUES('SIZE','SMALL2');
--sorted_result
SELECT * FROM t18 WHERE c2=0;
DROP TABLE t17,t18;
DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,553 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running UPDATE tests for DECIMAL ########
# Create tables
CREATE TABLE t1(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# UPDATE starts here
# Update order by limit
UPDATE t1 SET c1='10001.00001' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Update with arithmetic operations
UPDATE t1 SET c1=c2+c3 WHERE c3 < 10000;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
--sorted_result
SELECT * FROM t1;
# Update with NULL ( NULL to number & number to NULL)
UPDATE t1 SET c2=NULL WHERE c4=4;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=1.0e+5 WHERE c2=NULL;
--sorted_result
SELECT * FROM t1;
# Update negative value to unsigned column
UPDATE t1 SET c1=-1.0e+2 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.0e+20 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
# Update range values
UPDATE t1 SET c1=0.9999999999e+5 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.2e+2,c2=c4+c2 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
UPDATE t1 SET c3=1234567890 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
# Update outside range would be clipped to closest endpoints
UPDATE t1 SET c1=99999.999999 WHERE c4=7;
--sorted_result
SELECT c1,c4 FROM t1;
UPDATE t1 SET c2=-9999.0099 WHERE c4=5;
--sorted_result
SELECT c2,c4 FROM t1;
# Update ignore on bad null error
SELECT c1 FROM t1 WHERE c1>1000;
SET SQL_MODE=STRICT_ALL_TABLES;
--error ER_BAD_NULL_ERROR
UPDATE t1 SET c1=NULL WHERE c1>1000;
UPDATE IGNORE t1 SET c1=NULL WHERE c1>1000;
--sorted_result
SELECT c1 from t1 WHERE c1>1000;
SET SQL_MODE=DEFAULT;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
UPDATE t1 SET c1=c1-100, c2=c1+c2 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--sorted_result
SELECT * FROM t1;
# Multi table update
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
UPDATE t1,t2,t3,t4 SET t2.c1=t2.c1+t3.c1, t3.c2=t3.c2-t2.c1, t4.c1=t1.c1*t1.c3 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888' ;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
# Update using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Update using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
UPDATE t2 SET t2.c1='44444.44444', t2.c3=4 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Update using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
update t2 set t2.c1='99999.99999' where c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
UPDATE t2 SET c1=c1-1,c2=c2-1 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Update using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT);
CREATE TABLE t3(c1 DECIMAL(10,5) NOT NULL, c2 DECIMAL, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
UPDATE t2,t3 SET t3.c1='22222.22222' WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
#Updating with invalid values
UPDATE t1 SET c3='asdf' WHERE c1='11111.11111';
--sorted_result
SELECT c3 FROM t1;
UPDATE t1 SET c2="1 e 1" WHERE c4=2;
--sorted_result
SELECT c2 FROM t1;
#Duplicate keys
--error ER_DUP_ENTRY
UPDATE t4 SET c1=88888.88888,c3=8 WHERE c3=7;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running UPDATE tests for FLOAT ########
# Create tables
CREATE TABLE t1(c1 FLOAT(10,5) UNSIGNED NOT NULL, c2 FLOAT(10,5) SIGNED NULL, c3 FLOAT, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# UPDATE starts here
# Update order by limit
UPDATE t1 SET c1='10001.00001' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Update with arithmetic operations
UPDATE t1 SET c1=c2+c3 WHERE c3 < 10000;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
--sorted_result
SELECT * FROM t1;
# Update with NULL ( NULL to number & number to NULL)
UPDATE t1 SET c2=NULL WHERE c4=4;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=1.0e+5 WHERE c2=NULL;
--sorted_result
SELECT * FROM t1;
# Update negative value to unsigned column
UPDATE t1 SET c1=-1.0e+2 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.0e+20 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
# Update range values
UPDATE t1 SET c1=0.9999999999e+5 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.2e+2,c2=c4+c2 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
UPDATE t1 SET c3=1234567890 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
# Update outside range would be clipped to closest endpoints
UPDATE t1 SET c1=99999.999999 WHERE c4=7;
--sorted_result
SELECT c1,c4 FROM t1;
UPDATE t1 SET c2=-9999.0099 WHERE c4=5;
--sorted_result
SELECT c2,c4 FROM t1;
# Update ignore on bad null error
SELECT c1 FROM t1 WHERE c1>1000;
SET SQL_MODE=STRICT_ALL_TABLES;
--error ER_BAD_NULL_ERROR
UPDATE t1 SET c1=NULL WHERE c1>1000;
UPDATE IGNORE t1 SET c1=NULL WHERE c1>1000;
--sorted_result
SELECT c1 from t1 WHERE c1>1000;
SET SQL_MODE=DEFAULT;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
UPDATE t1 SET c1=c1-100, c2=c1+c2 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
# Multi table update
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t4;
UPDATE t1,t2,t3,t4 SET t2.c1=t2.c1+t3.c1, t3.c2=t3.c2-t2.c1, t4.c1=t1.c1*t1.c3 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888' ;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
# Update using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Update using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
UPDATE t2 SET t2.c1='44444.44444', t2.c3=4 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Update using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
update t2 set t2.c1='99999.99999' where c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
UPDATE t2 SET c1=c1-1,c2=c2-1 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Update using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT);
CREATE TABLE t3(c1 FLOAT(10,5) NOT NULL, c2 FLOAT, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
UPDATE t2,t3 SET t3.c1='22222.22222' WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
#Updating with invalid values
UPDATE t1 SET c3='asdf' WHERE c1='11111.11111';
--sorted_result
SELECT c3 FROM t1;
UPDATE t1 SET c2="1 e 1" WHERE c4=2;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT c2 FROM t1;
#Duplicate keys
--replace_result 88888.89063 88888.89062
--error ER_DUP_ENTRY
UPDATE t4 SET c1=88888.88888,c3=8 WHERE c3=7;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--replace_result 88888.89063 88888.89062
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings
######## Running UPDATE tests for DOUBLE ########
# Create tables
CREATE TABLE t1(c1 DOUBLE(10,5) UNSIGNED NOT NULL, c2 DOUBLE(10,5) SIGNED NULL, c3 DOUBLE, c4 INT, UNIQUE INDEX idx(c1,c4));
# Inserting data into table t1
# Trailing zeroes are not stripped, D=5
INSERT INTO t1 VALUES('00100.05000','-00100.05000','00100119',1),('11111.00009','-9999.99999','9999999',2);
# DECIMAL := DECIMAL(10,0); Decimal values in c3 will be stripped;
INSERT INTO t1 VALUES('1000000','10000000','1000000000.0001',3);
# c1, c2, c3 will be rounded automatically
INSERT INTO t1 values('100.000001','1000.999999','9999.999999',4);
# Inserting maximum values
INSERT INTO t1 VALUES('99999.99999','-99999.99999','9999999999',5);
# Test insert leading zero, +/- signs, overflow handling
INSERT INTO t1 VALUES ("0.0","0.0","0.0",6),("01.0","01.0","01.0",7);
INSERT INTO t1 VALUES ("-.1","-.1","-.1",8);
INSERT INTO t1 VALUES ("+111111111.11","+111111111.11","+111111111.11",9);
# Inserting in scientific notations
INSERT INTO t1 VALUES('1.0e+4','1.0e-5','1.0e+9',10);
#INSERT INTO t1 VALUES('0.9999999999e+4','-.999999999e+4,'0.9999999999e+10',11);
--sorted_result
SELECT * FROM t1;
# UPDATE starts here
# Update order by limit
UPDATE t1 SET c1='10001.00001' WHERE c2 > 100 ORDER BY c2 LIMIT 1;
--sorted_result
SELECT c1,c2 FROM t1;
# Update with arithmetic operations
UPDATE t1 SET c1=c2+c3 WHERE c3 < 10000;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=c2+100 WHERE c1 >=100 ORDER BY c1 LIMIT 4;
--sorted_result
SELECT * FROM t1;
# Update with NULL ( NULL to number & number to NULL)
UPDATE t1 SET c2=NULL WHERE c4=4;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c2=1.0e+5 WHERE c2=NULL;
--sorted_result
SELECT * FROM t1;
# Update negative value to unsigned column
UPDATE t1 SET c1=-1.0e+2 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.0e+20 WHERE c4=2;
SHOW WARNINGS;
--sorted_result
SELECT * FROM t1;
# Update range values
UPDATE t1 SET c1=0.9999999999e+5 WHERE c3=1 AND c4=7;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=1.2e+2,c2=c4+c2 WHERE c3=9999999999 OR c2=1.0e-5;
--sorted_result
SELECT * FROM t1 WHERE c1=1.2e+2;
UPDATE t1 SET c3=1234567890 WHERE c4 IN (4,5,6);
--sorted_result
SELECT * FROM t1;
# Update outside range would be clipped to closest endpoints
UPDATE t1 SET c1=99999.999999 WHERE c4=7;
--sorted_result
SELECT c1,c4 FROM t1;
UPDATE t1 SET c2=-9999.0099 WHERE c4=5;
--sorted_result
SELECT c2,c4 FROM t1;
# Update ignore on bad null error
SELECT c1 FROM t1 WHERE c1>1000;
SET SQL_MODE=STRICT_ALL_TABLES;
--error ER_BAD_NULL_ERROR
UPDATE t1 SET c1=NULL WHERE c1>1000;
UPDATE IGNORE t1 SET c1=NULL WHERE c1>1000;
--sorted_result
SELECT c1 from t1 WHERE c1>1000;
SET SQL_MODE=DEFAULT;
TRUNCATE t1;
INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1),('22222.22222','-22222.22222','2222222222',2),('33333.33333','-33333.33333','3333333333',3),('44444.44444','-44444.44444','4444444444',4),('55555.55555','-55555.55555','5555555555',5),('66666.66666','-66666.66666','6666666666',6),('77777.77777','-77777.77777','7777777777',7),('88888.88888','-88888.88888','8888888888',8),('99999.99999','-99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t1;
SELECT c1 FROM t1 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
UPDATE t1 SET c1=c1-100, c2=c1+c2 WHERE c1>='22222.22222' AND c1<='55555.55555' ORDER BY c1;
--sorted_result
SELECT * FROM t1;
# Multi table update
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx2(c1,c3));
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1,c3));
CREATE TABLE t4(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx4(c1,c3));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
INSERT INTO t4 VALUES ('77777.77777','7777777777',7),('88888.88888','8888888888',8),('99999.99999','9999999999',9);
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
UPDATE t1,t2,t3,t4 SET t2.c1=t2.c1+t3.c1, t3.c2=t3.c2-t2.c1, t4.c1=t1.c1*t1.c3 WHERE t1.c2 >'1111111111' AND t4.c2 < '8888888888' ;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t1;
# Update using various access methods
TRUNCATE t2;
TRUNCATE t3;
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('44444.44444','4444444444',4),('55555.55555','5555555555',5),('66666.66666','6666666666',6);
# Update using Const
# EXPLAIN SELECT * FROM t2 WHERE t2.c1='22222.22222' AND t2.c3=2;
UPDATE t2 SET t2.c1='44444.44444', t2.c3=4 WHERE t2.c1='22222.22222' AND t2.c3=2;
--sorted_result
SELECT * FROM t2;
# Update using range
# EXPLAIN SELECT * FROM t2 WHERE c1 BETWEEN '11111' AND '44444';
update t2 set t2.c1='99999.99999' where c1 BETWEEN '11111' AND '44444';
--sorted_result
SELECT * FROM t2;
# EXPLAIN SELECT * FROM t2 WHERE c1 IN ('44444.44444','99999.99999');
UPDATE t2 SET c1=c1-1,c2=c2-1 WHERE c1 IN ('44444.44444','99999.99999');
--sorted_result
SELECT * FROM t2;
# Update using eq_ref
DROP TABLE t2,t3;
CREATE TABLE t2(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT);
CREATE TABLE t3(c1 DOUBLE(10,5) NOT NULL, c2 DOUBLE, c3 INT, UNIQUE INDEX idx3(c1));
INSERT INTO t2 VALUES ('11111.11111','1111111111',1),('22222.22222','2222222222',2),('33333.33333','3333333333',3);
INSERT INTO t3 VALUES ('11111.11111','4444444444',1),('55555.55555','5555555555',2),('66666.66666','6666666666',3);
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
UPDATE t2,t3 SET t3.c1='22222.22222' WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
#Updating with invalid values
UPDATE t1 SET c3='asdf' WHERE c1='11111.11111';
--sorted_result
SELECT c3 FROM t1;
UPDATE t1 SET c2="1 e 1" WHERE c4=2;
--sorted_result
SELECT c2 FROM t1;
#Duplicate keys
--error ER_DUP_ENTRY
UPDATE t4 SET c1=88888.88888,c3=8 WHERE c3=7;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
# Droping the tables
--disable_warnings
DROP TABLES IF EXISTS t1,t2,t3,t4;
--enable_warnings

View File

@@ -0,0 +1,763 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2;
--enable_warnings
######## Running UPDATE tests for DATE ########
# Create tables
CREATE TABLE t1(c1 DATE NOT NULL PRIMARY KEY, c2 DATE NULL, c3 INT, INDEX idx2(c2));
# Insert into table
INSERT INTO t1 VALUE('1998-01-01','10-01-01',1),('2001-01-01','70-01-01',2),('2001-01-03','2001-01-04 09:34:00',3);
--sorted_result
SELECT * FROM t1;
# Update year,month,day,4 digit year date type to 2 digit and vice-versa
UPDATE t1 SET c1='69-02-02' WHERE c2='10-01-01';
SELECT year(c1),month(c1),day(c1),year(c2) FROM t1 WHERE c2='10-01-01';
UPDATE t1 SET c1='1969-02-02',c2='1910-02-02' WHERE c2='10-01-01';
SELECT * FROM t1 WHERE c1='1969-02-02' AND c2='1910-02-02';
UPDATE t1 SET c1='01-02-02',c2='2070-02-02' WHERE c2='70-01-01';
SELECT year(c1),c2 FROM t1 WHERE c1='01-02-02' AND c2='2070-02-02';
# Update with time values
UPDATE t1 SET c1='2001-01-03 08:30:00',c2='2001-01-05' WHERE c2='2001-01-04';
SELECT c1,hour(c1),minute(c1),second(c1) FROM t1 WHERE c2='2001-01-05';
# Update with function
INSERT INTO t1 VALUES('2009-02-25','09-02-27',4);
SET TIMESTAMP=1235553613; #'2009-02-25'
UPDATE t1 SET c2=NOW() WHERE c1 >=CURDATE();
UPDATE t1 SET c1=DATE_ADD(CURDATE(),INTERVAL '1 1:1:1' DAY_SECOND) WHERE c2=CURDATE();
--sorted_result
SELECT * FROM t1;
# Update with Null, null to valid date
INSERT INTO t1 VALUES('2001-01-06','2001-01-07',5),('2001-01-08',NULL,6);
UPDATE t1 SET c2=NULL WHERE c1='2001-01-06';
--sorted_result
SELECT * FROM t1 WHERE c2 IS NULL;
UPDATE t1 SET c2='2001-01-10' WHERE c2 IS NULL;
--sorted_result
SELECT * FROM t1 WHERE c2='2001-01-10';
# Update with invalid dates, converts to zero dates, ALLOW_INVALID_DATES allows
INSERT INTO t1 VALUES('2001-01-11','2001-01-11',7),('2001-01-12','2001-01-12',8),('2001-01-13','2001-01-13',9),('2001-01-14','2001-01-14',10),('2001-01-15','2001-01-15',11),('2001-01-16','2001-01-16',12);
UPDATE t1 SET c1='10:45:15',c2='2009-01-32' WHERE c1='2001-01-11';
UPDATE t1 SET c2='2009-02-30' WHERE c2='2001-01-12';
UPDATE t1 SET c2='2009-04-31' WHERE c2='2001-01-13';
UPDATE t1 SET c2='2009-06-31' WHERE c2='2001-01-14';
UPDATE t1 SET c2='2009-09-31' WHERE c2='2001-01-15';
SELECT count(*) FROM t1 WHERE c2='10:45:15' OR c2='2009-01-32' OR c2='2009-02-30' OR c2='2009-04-31' OR c2='2009-06-31' OR c2='2009-09-31' /* returns 0 */;
UPDATE t1 SET c2='2009-11-31' WHERE c2='2001-01-16';
--sorted_result
SELECT * FROM t1 WHERE c2='0000-00-00';
SET SQL_MODE=ALLOW_INVALID_DATES;
INSERT INTO t1 VALUES('2001-01-27','2001-01-28',19);
UPDATE t1 SET c1='2009-04-31',c2='2009-02-30' WHERE c3=19;
SELECT c1,c2,day(c1),day(c2) FROM t1 WHERE c3=19;
SET SQL_MODE=DEFAULT;
# Update with zero dates, zero dates to valid dates
INSERT INTO t1 VALUES('2001-01-17','0000-00-00',13),('2001-01-18','2001-01-18',14);
SET SQL_MODE=TRADITIONAL;
SELECT * FROM t1 WHERE c2='0000-00-00';
--error ER_TRUNCATED_WRONG_VALUE
UPDATE t1 SET c2='0000-00-00' WHERE c2='2001-01-18';
SET SQL_MODE=DEFAULT;
UPDATE t1 SET c2='0000-00-00' WHERE c2='2001-01-18';
UPDATE t1 SET c2='2001-01-18' WHERE c2='0000-00-00' AND c1='2001-01-17';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00' OR c2='0000-00-00';
# Update with valid dates with zero in month/day
INSERT INTO t1 VALUES('2001-01-19','2001-01-20',15);
UPDATE t1 SET c1='2010-00-01',c2='2010-10-00' WHERE c3=15;
SELECT *,month(c1),day(c2) from t1 WHERE c3=15;
# Update with range values
INSERT INTO t1 VALUES('2001-01-21','2001-01-22',16);
UPDATE t1 SET c1='1000-01-01',c2='9999-12-31' WHERE c1='2001-01-21';
SELECT * FROM t1 WHERE c1='1000-01-01' AND c2='9999-12-31';
# Update ignore on bad null/duplicate key
INSERT INTO t1 VALUES('2001-01-23','2001-01-24',17),('2001-01-25','2001-01-26',18);
--error ER_DUP_ENTRY
UPDATE t1 SET c1='2001-01-23' WHERE c1='2001-01-25';
UPDATE IGNORE t1 SET c1='2001-01-23' WHERE c1='2001-01-25';
SELECT count(*) FROM t1 WHERE c1='2001-01-23';
--error ER_DUP_ENTRY
UPDATE t1 SET c1=NULL WHERE c2='2001-01-24' /* updates to 0000-00-00 */;
UPDATE IGNORE t1 SET c1=NULL WHERE c2='2001-01-24';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00';
# Multi table update
TRUNCATE TABLE t1;
CREATE TABLE t2(c1 DATE NOT NULL PRIMARY KEY, c2 DATE, c3 INT);
# eq-ref join
INSERT INTO t1 VALUES('2001-01-02','2001-01-01',1),('2001-01-03','2001-01-02',2);
INSERT INTO t2 VALUES('2001-01-02','2001-01-03',1),('2001-01-04','2001-01-05',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
UPDATE t1,t2 SET t2.c1='2005-01-06',t1.c1='2005-01-06' WHERE t2.c1=t1.c1;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
INSERT INTO t1 VALUES('2002-01-01','2002-01-02',3),('2002-01-04','2002-01-02',4);
INSERT INTO t2 VALUES('2002-01-02','2002-01-03',3),('2002-01-03','2002-01-04',4);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
UPDATE t1,t2 SET t2.c1='2002-01-06',t1.c2='2002-01-06' WHERE t2.c1=t1.c2;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1='2002-01-06' AND t1.c2='2002-01-06';
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM t1 WHERE c2='2002-01-06' AND c3=3;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t2;
# Update with other access methods, ORDER BY LIMIT
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 DATE NOT NULL, DROP PRIMARY KEY;
ALTER TABLE t1 CHANGE c1 c1 DATE NOT NULL, ADD KEY(c1);
# ref access
UPDATE t1 SET c1='2002-01-07' WHERE c2='2002-01-05';
SELECT * FROM t1 WHERE c1='2002-01-07';
# range access
INSERT INTO t1 VALUES('2002-01-08','2002-01-09',4),('2002-01-10','2002-01-11',5),('2002-01-12','2002-01-13',6),('2002-01-14','2002-01-15',7),('2002-01-16','2002-01-17',8),('2002-01-18','2002-01-19',9),('2002-01-20','2002-01-21',10),('2002-01-22','2002-01-23',11),('2002-01-24','2002-01-25',12),('2002-01-26','2002-01-27',13),('2002-01-28','2002-01-29',14),('2002-01-30','2002-01-31',15),('2002-02-01','2002-02-02',16),('2002-02-03','2002-02-04',17),('2002-02-05','2002-02-06',18),('2002-02-07','2002-02-08',19),('2002-02-09','2002-02-10',20);
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1='2003-01-01' WHERE c2 <> '2002-01-09' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <> '2002-01-09' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01' WHERE c2 >= '2002-01-13' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '2002-01-13' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01' WHERE c2 <='2002-01-21' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <='2002-01-21' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01' WHERE c2 <=> '2002-01-23' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '2002-01-23' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01' WHERE c2 BETWEEN '2002-01-25' AND '2002-01-29' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '2002-01-25' AND '2002-01-29' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01' WHERE c2 IN('2002-01-29','2002-01-31') ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN('2002-01-29','2002-01-31') ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01' WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
UPDATE t1 SET c1='2003-01-01' WHERE c2>= '2002-02-06' AND c1 < '2002-02-09' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2>= '2002-02-06' AND c1 < '2002-02-09' ORDER BY c2;
INSERT INTO t1 VALUES('2002-03-01','2002-03-01',1),('2002-03-03','2002-03-04',2),('2002-03-05','2002-03-06',3),('2005-01-01','2005-01-02',4),('2005-01-03','2005-01-04',5),('2005-01-05','2005-01-06',6),('2005-01-07','2005-01-08',7),('2005-01-09',NULL,8);
# Select using various access methods
## Full table scan
--sorted_result
SELECT * FROM t1;
## Forward index scan, covering ##
--sorted_result
SELECT c1 FROM t1;
## Backward index scan, covering ##
SELECT c1 FROM t1 ORDER BY c1 DESC;
# ref access
--sorted_result
SELECT * FROM t1 WHERE c1='2003-01-01';
## Range access ##
SELECT * FROM t1 WHERE c1 <> '2003-01-01' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> '2003-01-01' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '2003-01-01' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 >= '2003-01-01' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '2003-01-01' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <= '2003-01-01' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '2002-03-01' AND '2003-01-01' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '2002-03-01' AND '2003-01-01' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN('2003-01-01','2005-01-07') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN('2003-01-01','2005-01-07') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1;
SELECT * FROM t1 WHERE c1>='2003-01-01' AND c1 <= '2005-01-07' ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1>='2003-01-01' AND c1 <= '2005-01-07' ORDER BY c2,c1;
# Index-merge access
SELECT * FROM t1 WHERE c1='2003-01-03' OR c2='2002-03-06';
UPDATE t1 SET c1='2006-01-01' WHERE c1='2003-01-03' OR c2='2002-03-06';
--sorted_result
SELECT * FROM t1 WHERE c1='2006-01-01' OR c2='2002-03-04';
# Testing delete using various access methods
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 DATE NOT NULL, ADD PRIMARY KEY(c1);
INSERT INTO t1 VALUES(NOW(),NOW(),3),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),4),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),5),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),6);
INSERT INTO t1 VALUES('1000-01-01','1000-01-01',1),('9999-12-31','9999-12-31',2);
SELECT * FROM t1 WHERE c1 <='1000-01-01';
DELETE FROM t1 WHERE c1 <='1000-01-01';
SELECT * FROM t1 WHERE c1 <='1000-01-01';
SELECT * FROM t1 WHERE c1 >='9999-12-31';
DELETE FROM t1 WHERE c1 >='9999-12-31';
SELECT * FROM t1 WHERE c1 >='9999-12-31';
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <> CURDATE() ORDER BY c1;
DELETE FROM t1 WHERE c1 <> CURDATE() ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> CURDATE() ORDER BY c1;
INSERT INTO t1 VALUES('2001-01-01',NOW(),7),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),8),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),9),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),10);
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDDATE(CURDATE(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDDATE(CURDATE(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDDATE(CURDATE(),'1 01:01:01') ORDER BY c1 DESC;
INSERT INTO t1 VALUES('2001-01-01',NOW(),11),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),12),(ADDTIME(NOW(),'4 01:01:01'),NULL,13),(ADDTIME(NOW(),'5 01:01:01'),NULL,14);
SELECT * FROM t1 WHERE c1 BETWEEN CURDATE() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 BETWEEN CURDATE() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN CURDATE() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 IN(CURDATE(),ADDDATE(CURDATE(),'3 01:01:01')) ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 IN(CURDATE(),ADDDATE(CURDATE(),'3 01:01:01')) ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN(CURDATE(),ADDDATE(CURDATE(),'3 01:01:01')) ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
DELETE FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
INSERT INTO t1 VALUES(ADDTIME(NOW(),'6 01:01:01'),ADDTIME(NOW(),'6 01:01:01'),15),(ADDTIME(NOW(),'7 01:01:01'),NULL,16),(ADDTIME(NOW(),'8 01:01:01'),ADDTIME(NOW(),'8 01:01:01'),17),(ADDTIME(NOW(),'9 01:01:01'),ADDTIME(NOW(),'9 01:01:01'),18),(ADDTIME(NOW(),'10 01:01:01'),ADDTIME(NOW(),'10 01:01:01'),19);
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
DELETE FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 01:01:01') ORDER BY c1;
--sorted_result
SELECT * FROM t1 WHERE c1=ADDDATE(CURDATE(),'9 01:01:01') OR c2=ADDDATE(CURDATE(),'10 01:01:01');
DELETE FROM t1 WHERE c1=ADDDATE(CURDATE(),'9 01:01:01') OR c2=ADDDATE(CURDATE(),'10 01:01:01');
# Disable warnings due to #43763
--disable_warnings
--sorted_result
SELECT * FROM t1 WHERE c1=ADDDATE(CURDATE(),'9 01:01:01') OR c2=ADDDATE(CURDATE(),'10 01:01:01');
--enable_warnings
SELECT count(*) FROM t1;
TRUNCATE TABLE t1;
SELECT count(*) FROM t1;
# Multi-table delete
# eq-ref join
CREATE TABLE t2(c1 DATE NOT NULL PRIMARY KEY, c2 DATE, c3 INT);
INSERT INTO t1 VALUES('2001-01-02','2001-01-01',1),('2001-01-03','2001-01-02',2);
INSERT INTO t2 VALUES('2001-01-02','2001-01-03',1),('2001-01-04','2001-01-05',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
DELETE t1,t2 FROM t1,t2 WHERE t2.c1=t1.c1;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
TRUNCATE TABLE t1;
TRUNCATE TABLE t2;
INSERT INTO t1 VALUES('2001-01-01','2001-01-02',1),('2001-01-03','2001-01-02',2);
INSERT INTO t2 VALUES('2001-01-02','2001-01-03',1),('2001-01-04','2001-01-05',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a2.c1=a1.c2;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t1,t2;
######## Running UPDATE tests for DATETIME ########
# Create tables
CREATE TABLE t1(c1 DATETIME NOT NULL PRIMARY KEY, c2 DATETIME NULL, c3 INT, INDEX idx2(c2));
# Update date values to datetime field
INSERT INTO t1 VALUE('1998-01-01 09:23:45','10-01-01 14:12:33',1);
UPDATE t1 SET c1='2001-01-01' WHERE c2='10-01-01 14:12:33';
SELECT c1,hour(c1),minute(c1),second(c1) FROM t1 WHERE c2='10-01-01 14:12:33';
# Update with single digit hour, minute, second,fraction part to time
INSERT INTO t1 VALUES('2009-01-01 08:42:42','2009-01-02 23:59:59',2);
UPDATE t1 SET c1='2009-01-01 1:2:3',c2='2009-01-02 23:59:59.999999' WHERE c2='2009-01-02 23:59:59';
SELECT c1,ADDTIME(c2,'1 1:1:1.000002') FROM t1 WHERE c3=2;
# Update with function
INSERT INTO t1 VALUES('2009-02-25 15:45','09-02-27 15:46',3);
SET TIMESTAMP=1235553613; #'2009-02-25'
UPDATE t1 SET c2=NOW() WHERE c1 >=CURDATE();
UPDATE t1 SET c1=DATE_ADD(CURDATE(),INTERVAL '1 1:1:1' DAY_SECOND) WHERE c2=CURRENT_TIMESTAMP();
--sorted_result
SELECT * FROM t1;
# Update with Null, null to valid date
INSERT INTO t1 VALUES('2001-01-06','2001-01-07 09:30:00',4),('2001-01-08',NULL,5);
--sorted_result
SELECT * FROM t1 WHERE c2 IS NULL;
UPDATE t1 SET c2=NULL WHERE c1='2001-01-06 00:00:00';
--sorted_result
SELECT * FROM t1 WHERE c2 IS NULL;
UPDATE t1 SET c2='2001-01-10 00:00:00' WHERE c2 IS NULL;
--sorted_result
SELECT * FROM t1 WHERE c2='2001-01-10';
# Update with invalid datetimes, converts to zero datetime
INSERT INTO t1 VALUES('2001-01-09','2001-01-10',6),('2001-01-11','2001-01-12',7);
UPDATE t1 SET c1='2001-01-09 24:59:59',c2='2009-01-10 23:60:59' WHERE c1='2001-01-09';
UPDATE t1 SET c2='2001-01-11 23:59:60' WHERE c1='2001-01-11';
SELECT count(*) FROM t1 WHERE c1='2001-01-09 24:59:59' AND c2='2009-01-10 23:60:59';
# Bug#52283 : Remove the following --disable_warnings
# command when the bug is fixed
--disable_warnings
SELECT count(*) FROM t1 WHERE c2='2001-01-11 23:59:60' /* returns 0 */;
--enable_warnings
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00 00:00:00' OR c2='0000-00-00 00:00:00';
# Update with zero datetimes, zero datetimes to valid datetimes
INSERT INTO t1 VALUES('2001-01-17','0000-00-00 00:00:00',8),('2001-01-18','2001-01-18 07:35',9);
SET SQL_MODE=TRADITIONAL;
SELECT * FROM t1 WHERE c2='0000-00-00 00:00:00';
--error ER_TRUNCATED_WRONG_VALUE
UPDATE t1 SET c2='0000-00-00 00:00:00' WHERE c2='2001-01-18 07:35';
SET SQL_MODE=DEFAULT;
UPDATE t1 SET c2='0000-00-00 00:00:00' WHERE c2='2001-01-18 07:35';
UPDATE t1 SET c2='2001-01-17 12:34:00' WHERE c2='0000-00-00 00:00:00' AND c1='2001-01-17';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00 00:00:00' OR c2='0000-00-00 00:00:00';
--sorted_result
SELECT * FROM t1 WHERE c2='2001-01-17 12:34:00';
# Update with range values
INSERT INTO t1 VALUES('2001-01-21 05:43:43','2001-01-22 06:53:53',10);
UPDATE t1 SET c1='1000-01-01 00:00:00',c2='9999-12-31 23:59:59' WHERE c1='2001-01-21 05:43:43';
SELECT * FROM t1 WHERE c1='1000-01-01 00:00:00' AND c2='9999-12-31 23:59:59';
# Update ignore on bad null/duplicate key
INSERT INTO t1 VALUES('2001-01-23 02:33','2001-01-24 03:33',11),('2001-01-25 04:33','2001-01-26 05:33',12);
--error ER_DUP_ENTRY
UPDATE t1 SET c1='2001-01-23 02:33' WHERE c1='2001-01-25 04:33';
UPDATE IGNORE t1 SET c1='2001-01-23 02:33' WHERE c1='2001-01-25 04:33';
SELECT count(*) FROM t1 WHERE c1='2001-01-23 02:33';
--error ER_DUP_ENTRY
UPDATE t1 SET c1=NULL WHERE c2='2001-01-24 03:33' /* updates to 0000-00-00 00:00:00 */;
UPDATE IGNORE t1 SET c1=NULL WHERE c2='2001-01-24 03:33';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00 00:00:00';
# Multi table update
TRUNCATE TABLE t1;
CREATE TABLE t2(c1 DATETIME NOT NULL PRIMARY KEY, c2 DATETIME, c3 INT);
# eq-ref join
INSERT INTO t1 VALUES('2001-01-02 2:30:45','2001-01-01 1:30',1),('2001-01-03 3:30','2001-01-02 2:30:45',2);
INSERT INTO t2 VALUES('2001-01-02 2:30:45','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
UPDATE t1,t2 SET t2.c1='2005-01-06 2:30:50',t1.c1='2005-01-06 2:30:50' WHERE t2.c1=t1.c1;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
INSERT INTO t1 VALUES('2002-01-01 3:30','2002-01-02 2:30:45',3),('2002-01-04 4:30','2002-01-02 2:30:45',4);
INSERT INTO t2 VALUES('2002-01-02 2:30:45','2002-01-03 3:30',3),('2002-01-03 3:30','2002-01-04 4:30',4);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
UPDATE t1,t2 SET t2.c1='2002-01-06 2:30:50',t1.c2='2002-01-06 2:30:50' WHERE t2.c1=t1.c2;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1='2002-01-06 2:30:50' AND t1.c2='2002-01-06 2:30:50';
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM t1 WHERE c2='2002-01-06 2:30:50' AND c3=3;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t2;
# Update with other access methods, ORDER BY LIMIT
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 DATETIME NOT NULL, DROP PRIMARY KEY;
ALTER TABLE t1 CHANGE c1 c1 DATETIME NOT NULL, ADD KEY(c1);
# ref access
UPDATE t1 SET c1='2002-01-07 7:30' WHERE c2='2002-01-05 5:30';
SELECT * FROM t1 WHERE c1='2002-01-07 7:30';
# range access, MRR
INSERT INTO t1 VALUES('2002-01-08 1:30','2002-01-09 1:30',4),('2002-01-08 1:30:5','2002-01-09 1:30:5',5),('2002-01-08 1:30:10','2002-01-09 1:30:10',6),('2002-01-08 1:30:15','2002-01-09 1:30:15',7),('2002-01-08 1:30:20','2002-01-09 1:30:20',8),('2002-01-08 1:30:25','2002-01-09 1:30:25',9),('2002-01-08 1:30:30','2002-01-09 1:30:30',10),('2002-01-08 1:30:35','2002-01-09 1:30:35',11),('2002-01-08 1:30:40','2002-01-09 1:30:40',12),('2002-01-08 1:30:45','2002-01-09 1:30:45',13),('2002-01-08 1:30:50','2002-01-09 1:30:50',14),('2002-01-08 1:30:55','2002-01-09 1:30:55',15),('2002-01-08 1:30:59','2002-01-09 1:30:59',16),('2002-01-08 2:00','2002-01-09 2:00',17),('2002-01-08 2:00:05','2002-01-09 2:00:05',18),('2002-01-08 2:00:10','2002-01-09 2:00:10',19),('2002-01-08 2:00:15','2002-01-09 2:00:15',20);
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <> '2002-01-09 01:30:00' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <> '2002-01-09 01:30:00' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 >= '20020109013010' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '20020109013010' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <='02-01-09 1:30:20' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <='02-01-09 1:30:20' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <=> '020109013030' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '020109013030' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 BETWEEN '20020109 01:30:40' AND '20020109 01:30:50' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '20020109 01:30:40' AND '20020109 01:30:50' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 IN('2002-01-09 1:30:55','2002-01-09 2:00') ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN('2002-01-09 1:30:55','2002-01-09 2:00') ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2>= '2002-02-09 2:00:5' AND c1 < '2002-02-09 2:00:15' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2>= '2002-02-09 2:00:5' AND c1 < '2002-02-09 2:00:15' ORDER BY c2;
INSERT INTO t1 VALUES('20020301000001','20020302000001',1),('020303010030','020304010030',2),('050103000001','050104000001',3),('5-10-10 1:2:3','5-10-10 1:2:3',4),('0000-00-00 00:00:01',NULL,5);
# Select using various access methods
## Full table scan
--sorted_result
SELECT * FROM t1;
## Forward index scan, covering ##
--sorted_result
SELECT c1 FROM t1;
## Backward index scan, covering ##
SELECT c1 FROM t1 ORDER BY c1 DESC;
# ref access
--sorted_result
SELECT * FROM t1 WHERE c1='2003-01-01 1:2:3';
## Range access ##
SELECT * FROM t1 WHERE c1 <> '2003-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> '2003-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '20030101010203' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '20030101010203' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '03-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '03-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01 1:2:3' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01 1:2:3' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '20020301' AND '2003-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '20020301' AND '2003-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN('2003-01-01 1:2:3','2005-01-03 00:00:01') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN('2003-01-01 1:2:3','2005-01-03 00:00:01') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1;
SELECT * FROM t1 WHERE c1>='2003-01-01 01:02:03' AND c1 <= '20050104000001' ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1>='2003-01-01 01:02:03' AND c1 <= '20050104000001' ORDER BY c2,c1;
# Index-merge access
SELECT * FROM t1 WHERE c1='2003-01-03 1:2:3' OR c2='2002-03-02 00:00:01';
UPDATE t1 SET c1='20060101000001' WHERE c1='2003-01-03 1:2:3' OR c2='2002-03-02 00:00:01';
--sorted_result
SELECT * FROM t1 WHERE c1='20060101000001' OR c2='020304010030';
# Testing delete using various access methods
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 DATETIME NOT NULL, ADD PRIMARY KEY(c1);
INSERT INTO t1 VALUES(NOW(),NOW(),3),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),4),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),5),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),6);
INSERT INTO t1 VALUES('1000-01-01 00:00:00','1000-01-01 00:00:00',1),('9999-12-31 23:59:59','9999-12-31 23:59:59',2);
SELECT * FROM t1 WHERE c1 <='1000-01-01 00:00:00';
DELETE FROM t1 WHERE c1 <='1000-01-01 00:00:00';
SELECT * FROM t1 WHERE c1 <='1000-01-01 00:00:00';
SELECT * FROM t1 WHERE c1 >='9999-12-31 23:59:59';
DELETE FROM t1 WHERE c1 >='9999-12-31 23:59:59';
SELECT * FROM t1 WHERE c1 >='9999-12-31 23:59:59';
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1;
DELETE FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1;
INSERT INTO t1 VALUES('2001-01-01',NOW(),7),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),8),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),9),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),10);
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
INSERT INTO t1 VALUES('2001-01-01',NOW(),11),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),12),(ADDTIME(NOW(),'4 01:01:01'),NULL,13),(ADDTIME(NOW(),'5 01:01:01'),NULL,14);
SELECT * FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
DELETE FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
INSERT INTO t1 VALUES(ADDTIME(NOW(),'6 01:01:01'),ADDTIME(NOW(),'6 01:01:01'),15),(ADDTIME(NOW(),'7 01:01:01'),NULL,16),(ADDTIME(NOW(),'8 01:01:01'),ADDTIME(NOW(),'8 01:01:01'),17),(ADDTIME(NOW(),'9 01:01:01'),ADDTIME(NOW(),'9 01:01:01'),18),(ADDTIME(NOW(),'10 01:01:01'),ADDTIME(NOW(),'10 01:01:01'),19);
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
DELETE FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1;
DELETE FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1;
--sorted_result
SELECT * FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
DELETE FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
--sorted_result
SELECT * FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
SELECT count(*) FROM t1;
TRUNCATE TABLE t1;
SELECT count(*) FROM t1;
# Multi-table delete
# eq-ref join
CREATE TABLE t2(c1 DATETIME NOT NULL PRIMARY KEY, c2 DATETIME, c3 INT);
INSERT INTO t1 VALUES('2001-01-01 1:30','2001-01-02 2:30',1),('2001-01-03 3:30','2001-01-02 2:30',2);
INSERT INTO t2 VALUES('2001-01-02 2:30','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE t1,t2 FROM t1,t2 WHERE t2.c1=t1.c2;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
TRUNCATE TABLE t1;
TRUNCATE TABLE t2;
INSERT INTO t1 VALUES('2001-01-01 1:30','2001-01-02 2:30',1),('2001-01-03 3:30','2001-01-02 2:30',2);
INSERT INTO t2 VALUES('2001-01-02 2:30','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a2.c1=a1.c2;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t1,t2;
# More tests for update/delete........
CREATE TABLE mt1(id int(11) NOT NULL default '0', name varchar(10) default NULL, PRIMARY KEY (id));
INSERT INTO mt1 VALUES (1,'aaa'),(2,'aaa'),(3,'aaa');
CREATE TABLE mt2 (id int(11) NOT NULL default '0', name varchar(10) default NULL, PRIMARY KEY (id));
INSERT INTO mt2 VALUES (2,'bbb'),(3,'bbb'),(4,'bbb');
CREATE TABLE mt3 (id int(11) NOT NULL default '0', mydate datetime default NULL, PRIMARY KEY (id));
INSERT INTO mt3 VALUES (1,'2002-02-04 00:00:00'),(3,'2002-05-12 00:00:00'),(5,'2002-05-12 00:00:00'),(6,'2002-06-22 00:00:00'),(7,'2002-07-22 00:00:00');
delete mt1,mt2,mt3 from mt1,mt2,mt3 where to_days(now())-to_days(mt3.mydate)>=30 and mt3.id=mt1.id and mt3.id=mt2.id;
--sorted_result
select * from mt3;
DROP TABLE mt1,mt2,mt3;
######## Running UPDATE tests for TIMESTAMP ########
# Create tables
CREATE TABLE t1(c1 TIMESTAMP NOT NULL PRIMARY KEY, c2 TIMESTAMP NULL, c3 INT, INDEX idx2(c2));
# Update date values to timestamp field
INSERT INTO t1 VALUE('1998-01-01 09:23:45','10-01-01 14:12:33',1);
UPDATE t1 SET c1='2001-01-01' WHERE c2='10-01-01 14:12:33';
SELECT c1,hour(c1),minute(c1),second(c1) FROM t1 WHERE c2='10-01-01 14:12:33';
# Update with single digit hour, minute, second,fraction part to time
INSERT INTO t1 VALUES('2009-01-01 08:42:42','2009-01-02 23:59:59',2);
UPDATE t1 SET c1='2009-01-01 1:2:3',c2='2009-01-02 23:59:59.999999' WHERE c2='2009-01-02 23:59:59';
SELECT c1,ADDTIME(c2,'1 1:1:1.000002') FROM t1 WHERE c3=2;
# Update with function
INSERT INTO t1 VALUES('2009-02-25 15:45','09-02-27 15:46',3);
SET TIMESTAMP=1235553613; #'2009-02-25'
UPDATE t1 SET c2=NOW() WHERE c1 >=CURDATE() /* updates c1 with current timestamp */;
UPDATE t1 SET c1=DATE_ADD(CURDATE(),INTERVAL '1 1:1:1' DAY_SECOND) WHERE c2=CURRENT_TIMESTAMP();
--sorted_result
SELECT * FROM t1;
# Update with Null, null to valid date
INSERT INTO t1 VALUES('2001-01-06','2001-01-07 09:30:00',4),('2001-01-08',NULL,5);
UPDATE t1 SET c1='20010106010030',c2=NULL WHERE c1='2001-01-06 00:00:00';
--sorted_result
SELECT c1,c2 FROM t1 WHERE c2 IS NULL;
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1=c1,c2='2001-01-10 00:00:00' WHERE c2 IS NULL;
--sorted_result
SELECT * FROM t1 WHERE c2='2001-01-10';
# Update with invalid datetimes, converts to zero datetime
INSERT INTO t1 VALUES('2001-01-09','2001-01-10',6),('2001-01-11','2001-01-12',7);
UPDATE t1 SET c1='2001-01-09 24:59:59',c2='2009-01-10 23:60:59' WHERE c1='2001-01-09';
UPDATE t1 SET c1='2001-01-11 23:59:59',c2='2001-01-11 23:59:60' WHERE c1='2001-01-11';
SELECT count(*) FROM t1 WHERE c1='2001-01-09 24:59:59' AND c2='2009-01-10 23:60:59';
SELECT count(*) FROM t1 WHERE c1='2001-01-11 23:59:59' AND c2='2001-01-11 23:59:60';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00 00:00:00' OR c2='0000-00-00 00:00:00';
# Update with zero datetimes, zero datetimes to valid datetimes
INSERT INTO t1 VALUES('2001-01-17','0000-00-00 00:00:00',8),('2001-01-18','2001-01-18 07:35',9);
SET SQL_MODE=TRADITIONAL;
SELECT * FROM t1 WHERE c2='0000-00-00 00:00:00';
--error ER_TRUNCATED_WRONG_VALUE
UPDATE t1 SET c1='1972-01-01 07:35',c2='0000-00-00 00:00:00' WHERE c2='2001-01-18 07:35';
SET SQL_MODE=DEFAULT;
UPDATE t1 SET c1='1972-01-01 07:35',c2='0000-00-00 00:00:00' WHERE c2='2001-01-18 07:35';
UPDATE t1 SET c1='2001-01-17 12:34:00',c2='2001-01-17 12:34:00' WHERE c2='0000-00-00 00:00:00' AND c1='2001-01-17';
--sorted_result
SELECT * FROM t1 WHERE c1='0000-00-00 00:00:00' OR c2='0000-00-00 00:00:00';
--sorted_result
SELECT * FROM t1 WHERE c1='2001-01-17 12:34:00' AND c2='2001-01-17 12:34:00';
# Update with range values
INSERT INTO t1 VALUES('2001-01-21 05:43:43','2001-01-22 06:53:53',10);
UPDATE t1 SET c1='1971-01-01 00:00:01',c2='2038-01-09 03:14:07' WHERE c1='2001-01-21 05:43:43';
SELECT * FROM t1 WHERE c1='1971-01-01 00:00:01' AND c2='2038-01-09 03:14:07';
# Update ignore on duplicate key
INSERT INTO t1 VALUES('2001-01-23 02:33','2001-01-24 03:33',11),('2001-01-25 04:33','2001-01-26 05:33',12);
--error ER_DUP_ENTRY
UPDATE t1 SET c1='2001-01-23 02:33' WHERE c1='2001-01-25 04:33';
UPDATE IGNORE t1 SET c1='2001-01-23 02:33' WHERE c1='2001-01-25 04:33';
SELECT count(*) FROM t1 WHERE c1='2001-01-23 02:33';
UPDATE t1 SET c1=NULL WHERE c2='2001-01-24 03:33' /* updates to current timestamp */;
UPDATE IGNORE t1 SET c1=NULL WHERE c2='2001-01-26 05:33';
--sorted_result
SELECT * FROM t1 WHERE c1=CURRENT_TIMESTAMP();
# Multi table update
TRUNCATE TABLE t1;
CREATE TABLE t2(c1 TIMESTAMP NOT NULL PRIMARY KEY, c2 TIMESTAMP, c3 INT);
# eq-ref join
INSERT INTO t1 VALUES('2001-01-02 2:30:45','2001-01-01 1:30',1),('2001-01-03 3:30','2001-01-02 2:30:45',2);
INSERT INTO t2 VALUES('2001-01-02 2:30:45','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
UPDATE t1,t2 SET t2.c1='2005-01-06 2:30:50',t1.c1='2005-01-06 2:30:50' WHERE t2.c1=t1.c1;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c1;
INSERT INTO t1 VALUES('2002-01-01 3:30','2002-01-02 2:30:45',3),('2002-01-04 4:30','2002-01-02 2:30:45',4);
INSERT INTO t2 VALUES('2002-01-02 2:30:45','2002-01-03 3:30',3),('2002-01-03 3:30','2002-01-04 4:30',4);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
UPDATE t1,t2 SET t2.c1='2002-01-06 2:30:50',t1.c1=t1.c1,t1.c2='2002-01-06 2:30:50' WHERE t2.c1=t1.c2;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1='2002-01-06 2:30:50' AND t1.c2='2002-01-06 2:30:50';
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM t1 WHERE c2='2002-01-06 2:30:50' AND c3=3;
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t2;
# Update with other access methods, ORDER BY LIMIT
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 TIMESTAMP NOT NULL, DROP PRIMARY KEY;
ALTER TABLE t1 CHANGE c1 c1 TIMESTAMP NOT NULL, ADD KEY(c1);
# ref access
UPDATE t1 SET c1='2002-01-07 7:30' WHERE c2='2002-01-05 5:30';
SELECT * FROM t1 WHERE c1='2002-01-07 7:30';
# range access, MRR
INSERT INTO t1 VALUES('2002-01-08 1:30','2002-01-09 1:30',4),('2002-01-08 1:30:5','2002-01-09 1:30:5',5),('2002-01-08 1:30:10','2002-01-09 1:30:10',6),('2002-01-08 1:30:15','2002-01-09 1:30:15',7),('2002-01-08 1:30:20','2002-01-09 1:30:20',8),('2002-01-08 1:30:25','2002-01-09 1:30:25',9),('2002-01-08 1:30:30','2002-01-09 1:30:30',10),('2002-01-08 1:30:35','2002-01-09 1:30:35',11),('2002-01-08 1:30:40','2002-01-09 1:30:40',12),('2002-01-08 1:30:45','2002-01-09 1:30:45',13),('2002-01-08 1:30:50','2002-01-09 1:30:50',14),('2002-01-08 1:30:55','2002-01-09 1:30:55',15),('2002-01-08 1:30:59','2002-01-09 1:30:59',16),('2002-01-08 2:00','2002-01-09 2:00',17),('2002-01-08 2:00:05','2002-01-09 2:00:05',18),('2002-01-08 2:00:10','2002-01-09 2:00:10',19),('2002-01-08 2:00:15','2002-01-09 2:00:15',20);
--sorted_result
SELECT * FROM t1;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <> '2002-01-09 01:30:00' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <> '2002-01-09 01:30:00' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 >= '20020109013010' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 >= '20020109013010' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <='02-01-09 1:30:20' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 <='02-01-09 1:30:20' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 <=> '020109013030' ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 <=> '020109013030' ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 BETWEEN '20020109 01:30:40' AND '20020109 01:30:50' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 BETWEEN '20020109 01:30:40' AND '20020109 01:30:50' ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 IN('2002-01-09 1:30:55','2002-01-09 2:00') ORDER BY c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IN('2002-01-09 1:30:55','2002-01-09 2:00') ORDER BY c2 DESC;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2 IS NULL ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2;
UPDATE t1 SET c1='2003-01-01 1:2:3' WHERE c2>= '2002-02-09 2:00:5' AND c1 < '2002-02-09 2:00:15' ORDER BY c2 LIMIT 2;
SELECT * FROM t1 WHERE c2>= '2002-02-09 2:00:5' AND c1 < '2002-02-09 2:00:15' ORDER BY c2;
INSERT INTO t1 VALUES('20020301000001','20020302000001',1),('020303010030','020304010030',2),('050103000001','050104000001',3),('5-10-10 1:2:3','5-10-10 1:2:3',4),('0000-00-00 00:00:01',NULL,5);
# Select using various access methods
## Full table scan
--sorted_result
SELECT * FROM t1;
## Forward index scan, covering ##
--sorted_result
SELECT c1 FROM t1;
## Backward index scan, covering ##
SELECT c1 FROM t1 ORDER BY c1 DESC;
# ref access
--sorted_result
SELECT * FROM t1 WHERE c1='2003-01-01 1:2:3';
## Range access ##
SELECT * FROM t1 WHERE c1 <> '2003-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> '2003-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 > '20030101010203' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > '20030101010203' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 < '03-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 < '03-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01 1:2:3' ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 <=> '2003-01-01 1:2:3' ORDER BY c1,c2;
SELECT * FROM t1 WHERE c1 BETWEEN '20020301' AND '2003-01-01 1:2:3' ORDER BY c1,c2 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN '20020301' AND '2003-01-01 1:2:3' ORDER BY c1,c2 DESC;
SELECT * FROM t1 WHERE c1 IN('2003-01-01 1:2:3','2005-01-03 00:00:01') ORDER BY c1,c2 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN('2003-01-01 1:2:3','2005-01-03 00:00:01') ORDER BY c1,c2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1;
SELECT * FROM t1 WHERE c1>='2003-01-01 01:02:03' AND c1 <= '20050104000001' ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1>='2003-01-01 01:02:03' AND c1 <= '20050104000001' ORDER BY c2,c1;
# Index-merge access
SELECT * FROM t1 WHERE c1='2003-01-03 1:2:3' OR c2='2002-03-02 00:00:01';
UPDATE t1 SET c1='20060101000001' WHERE c1='2003-01-03 1:2:3' OR c2='2002-03-02 00:00:01';
--sorted_result
SELECT * FROM t1 WHERE c1='20060101000001' OR c2='020304010030';
# Testing delete using various access methods
TRUNCATE TABLE t1;
ALTER TABLE t1 CHANGE c1 c1 TIMESTAMP NOT NULL, ADD PRIMARY KEY(c1);
INSERT INTO t1 VALUES(NOW(),NOW(),3),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),4),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),5),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),6);
INSERT INTO t1 VALUES('1971-01-01 00:00:01','1971-01-01 00:00:01',1),('2038-01-09 03:14:07','2038-01-09 03:14:07',2);
SELECT * FROM t1 WHERE c1 <='1971-01-01 00:00:01';
DELETE FROM t1 WHERE c1 <='1971-01-01 00:00:01';
SELECT * FROM t1 WHERE c1 <='1971-01-01 00:00:01';
SELECT * FROM t1 WHERE c1 >='2038-01-09 03:14:07';
DELETE FROM t1 WHERE c1 >='2038-01-09 03:14:07';
SELECT * FROM t1 WHERE c1 >='2038-01-09 03:14:07';
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 > ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1;
DELETE FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 <> CURRENT_TIMESTAMP() ORDER BY c1;
INSERT INTO t1 VALUES('2001-01-01',NOW(),7),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),8),(ADDTIME(NOW(),'2 01:01:01'),ADDTIME(NOW(),'2 01:01:01'),9),(ADDTIME(NOW(),'3 01:01:01'),ADDTIME(NOW(),'3 01:01:01'),10);
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 < ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c1 <=> ADDTIME(NOW(),'1 01:01:01') ORDER BY c1 DESC;
INSERT INTO t1 VALUES('2001-01-01',NOW(),11),(ADDTIME(NOW(),'1 01:01:01'),ADDTIME(NOW(),'1 01:01:01'),12),(ADDTIME(NOW(),'4 01:01:01'),NULL,13),(ADDTIME(NOW(),'5 01:01:01'),NULL,14);
SELECT * FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
DELETE FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1 BETWEEN NOW() AND ADDTIME(NOW(),'2 01:01:01') ORDER BY c1;
SELECT * FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC;
DELETE FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c1 IN(NOW(),ADDTIME(NOW(),'3 01:01:01')) ORDER BY c1 DESC;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
DELETE FROM t1 WHERE c2 IS NULL ORDER BY c2,c1 LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2,c1;
INSERT INTO t1 VALUES(ADDTIME(NOW(),'6 01:01:01'),ADDTIME(NOW(),'6 01:01:01'),15),(ADDTIME(NOW(),'7 01:01:01'),NULL,16),(ADDTIME(NOW(),'8 01:01:01'),ADDTIME(NOW(),'8 01:01:01'),17),(ADDTIME(NOW(),'9 01:01:01'),ADDTIME(NOW(),'9 01:01:01'),18),(ADDTIME(NOW(),'10 01:01:01'),ADDTIME(NOW(),'10 01:01:01'),19);
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
DELETE FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC LIMIT 2;
SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2,c1 DESC;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1;
DELETE FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1 LIMIT 2;
SELECT * FROM t1 WHERE c1>=ADDTIME(NOW(),'5 01:01:01') AND c2 < ADDTIME(NOW(),'8 13:25') ORDER BY c1;
--sorted_result
SELECT * FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
DELETE FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
--sorted_result
SELECT * FROM t1 WHERE c1=ADDTIME(NOW(),'9 01:01:01') OR c2=ADDTIME(NOW(),'10 01:01:01');
SELECT count(*) FROM t1;
TRUNCATE TABLE t1;
SELECT count(*) FROM t1;
# Multi-table delete
# eq-ref join
CREATE TABLE t2(c1 TIMESTAMP NOT NULL PRIMARY KEY, c2 TIMESTAMP, c3 INT);
INSERT INTO t1 VALUES('2001-01-01 1:30','2001-01-02 2:30',1),('2001-01-03 3:30','2001-01-02 2:30',2);
INSERT INTO t2 VALUES('2001-01-02 2:30','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE t1,t2 FROM t1,t2 WHERE t2.c1=t1.c2;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
TRUNCATE TABLE t1;
TRUNCATE TABLE t2;
INSERT INTO t1 VALUES('2001-01-01 1:30','2001-01-02 2:30',1),('2001-01-03 3:30','2001-01-02 2:30',2);
INSERT INTO t2 VALUES('2001-01-02 2:30','2001-01-03 3:30',1),('2001-01-04 4:30','2001-01-05 5:30',2);
--sorted_result
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a2.c1=a1.c2;
SELECT * FROM t1,t2 WHERE t2.c1=t1.c2;
DROP TABLE t1,t2;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,197 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
# Create tables
CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1));
CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1,c2));
CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL);
# As a string in 'D HH:MM:SS.fraction' format
INSERT INTO t1 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t2 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t3 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
INSERT INTO t4 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59');
#As a string with no delimiters in 'HHMMSS' format
INSERT INTO t1 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t2 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t3 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
INSERT INTO t4 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53');
#As a number in HHMMSS format
INSERT INTO t1 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t2 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t3 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
INSERT INTO t4 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50);
#As the result of a function that returns a value that is acceptable in a TIME context
SET TIMESTAMP=1233216687; # 2009-01-29 13:41:27
INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME());
INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME());
#Insert permissible NULLs
INSERT INTO t1 VALUES('123456',null);
#INSERT INTO t2 VALUES('123456',null);
INSERT INTO t3 VALUES('123456',null);
INSERT INTO t4 VALUES('123456',null);
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Updating the tables
--sorted_result
SELECT c1 FROM t1 WHERE c1='00:00:07';
UPDATE t1 SET c1='22:22:22' WHERE c1='00:00:07';
--sorted_result
SELECT c1 FROM t1;
--sorted_result
SELECT c1 FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59';
UPDATE t2 SET c1='22:22:22' WHERE c1='-838:59:59' AND c2='-838:59:59';
--sorted_result
SELECT c1 FROM t2;
# Update with NULL ( NULL to number & number to NULL)
--sorted_result
SELECT c2 FROM t3 WHERE c2=null;
UPDATE t3 SET c2='34 22:59:59' WHERE c2=null;
--sorted_result
SELECT c2 FROM t3;
--sorted_result
SELECT c2 FROM t4 WHERE c1='00:00:00';
UPDATE t4 SET c2=null WHERE c1='00:00:00';
--sorted_result
SELECT c2 FROM t4;
#Update order by limit
--sorted_result
SELECT c1 FROM t4 WHERE c1 < '000009';
UPDATE t4 SET c1='0101' WHERE c1 < '000009' ORDER BY c1 LIMIT 3;
--sorted_result
SELECT c1 FROM t4;
#Update negative value to unsigned column
--sorted_result
SELECT c1 FROM t1 WHERE c1='12:12:12';
UPDATE t1 SET c1='-12:12:12' WHERE c1='12:12:12';
--sorted_result
SELECT c1 FROM t1;
#Update with Arithmetic operations
--sorted_result
SELECT c1 FROM t1 WHERE c1=111127;
UPDATE t1 SET c1=c1+c2 WHERE c1=111127;
--sorted_result
SELECT c1 FROM t1;
--sorted_result
SELECT c1 FROM t2 WHERE c2='100:04:04';
UPDATE t2 SET c1=c1 - '010101' WHERE c2=1000404;
--sorted_result
SELECT c1 FROM t2;
--sorted_result
SELECT c2 FROM t3 WHERE c2=020202;
UPDATE t3 SET c2=c1 * 2 WHERE c2='020202';
--sorted_result
SELECT c1 FROM t3;
--sorted_result
SELECT c1 FROM t4 WHERE c1=121212;
UPDATE t4 SET c1=c1 / 2 WHERE c1='12:12:12';
--sorted_result
SELECT c1 FROM t4;
#Update range values
UPDATE t1 SET c2=1250000 WHERE c1='00:00:09' AND c1='01:01:01';
--sorted_result
SELECT c2 FROM t1;
UPDATE t2 SET c1=125959 WHERE c2=000400 OR c2= 000900;
--sorted_result
SELECT c1 FROM t2;
UPDATE t2 SET c2='1111' WHERE c1 IN ('100:04:04',005454,'2:2:2',111111);
--sorted_result
SELECT c2 FROM t2;
#Update outside range would be clipped to closest endpoints
UPDATE t4 SET c2='-838:59:60' WHERE c1='100:04:04';
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2='838:59:60' WHERE c1='100:04:04';
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2='00:00:00' WHERE c1='100:04:04';
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2='11:11:60' WHERE c1='100:04:04';
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2='11:60:11' WHERE c1='100:04:04';
--sorted_result
SELECT c2 FROM t4;
# Update ignore on bad null error
--sorted_result
SELECT c1 FROM t3 WHERE c2 < '000007';
SET SQL_MODE=STRICT_ALL_TABLES;
--error ER_BAD_NULL_ERROR
UPDATE t3 SET c1=NULL WHERE c2 < '000007';
UPDATE IGNORE t3 SET c1=NULL WHERE c2 < '000007';
--sorted_result
SELECT c1 from t3 WHERE c2 < '000007';
SET SQL_MODE=DEFAULT;
#Duplicate keys
--error ER_DUP_ENTRY
UPDATE t1 SET c1=8385958 WHERE c2='34 22:59:59';
#Update with invalid values
UPDATE t1 SET c2='def' WHERE c1=59;
--sorted_result
SELECT c2 FROM t1;
--error ER_PARSE_ERROR
UPDATE t4 SET c1=11:11:11 WHERE c2=NULL;
--sorted_result
SELECT c1 FROM t4;
#Multi table update
UPDATE t1,t2,t3,t4 SET t1.c2=t2.c1+t2.c2,t3.c2=t4.c1*2 WHERE t1.c1='00:13:13' AND t2.c1=080808 AND t4.c1='00:04:00' AND t3.c2=020202;
# Update using various access methods
# Update using Const
# EXPLAIN SELECT * FROM t1 WHERE c1='00:09:09' AND c2='00:09:09';
UPDATE t1 SET t1.c1='00:12:12' WHERE c1='00:09:09' AND c2='00:09:09';
--sorted_result
SELECT * FROM t1;
# Update using range
# EXPLAIN SELECT * FROM t1 WHERE c1 BETWEEN 080000 AND 100000;
UPDATE t1 SET t1.c2='99999.99999' WHERE c1 BETWEEN 080000 AND 100000;
--sorted_result
SELECT * FROM t1;
# EXPLAIN SELECT * FROM t1 WHERE c1 IN (222222,8385955,1500000);
UPDATE t1 SET c1=c1+1,c2=c2-1 WHERE c1 IN (222222,8385955,1500000) ORDER BY c1;
--sorted_result
SELECT * FROM t1;
# Update using eq_ref
# EXPLAIN SELECT * FROM t2,t3 WHERE t2.c1=t3.c1 AND t2.c3=t3.c3;
UPDATE t1,t2 SET t1.c2='22222.22222' WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Drop tables;
DROP TABLE IF EXISTS t1,t2,t3,t4;

View File

@@ -0,0 +1,212 @@
--disable_warnings
DROP TABLE IF EXISTS t1,t2,t3,t4;
--enable_warnings
# Create tables
CREATE TABLE t1(c1 YEAR NOT NULL,c2 YEAR, PRIMARY KEY(c1));
CREATE TABLE t2(c1 YEAR NOT NULL, c2 YEAR, UNIQUE INDEX idx(c1,c2));
CREATE TABLE t3(c1 YEAR(2) NOT NULL,c2 YEAR(2), PRIMARY KEY(c1));
CREATE TABLE t4(c1 YEAR(2), c2 YEAR(2), UNIQUE INDEX idx(c1,c2));
#Insert as 4-digit number format in the range '1901' to '2155'
INSERT INTO t1 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t2 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t3 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
INSERT INTO t4 VALUES (1901,1901),(1970,1970),(1999,1999),(2000,2000),(2155,2155);
#Insert as 4-digit string format in the range '1901' to '2155'
INSERT INTO t1 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t2 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t3 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
INSERT INTO t4 VALUES ('1902','1902'),('1971','1971'),('1998','1998'),('2001','2001'),('2154','2154');
#Insert as 2-digit number format
INSERT INTO t1 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t2 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t3 VALUES (04,04),(64,64),(69,69),(97,97);
INSERT INTO t4 VALUES (04,04),(64,64),(69,69),(97,97);
#Insert as 2-digit string format
INSERT INTO t1 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t2 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t3 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
INSERT INTO t4 VALUES ('05','05'),('65','65'),('75','75'),('95','95');
#Insert permissible NULLs
INSERT INTO t1 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t2 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t3 VALUES ('09',null),('61',null),('79',null),('96',null);
INSERT INTO t4 VALUES ('09',null),('61',null),('79',null),('96',null);
--sorted_result
SELECT * FROM t1;
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Updating the tables
--sorted_result
SELECT c1 FROM t1 WHERE c1='2005';
UPDATE t1 SET c1='2003' WHERE c1='2005';
--sorted_result
SELECT c1 FROM t1;
# Update with NULL ( NULL to number & number to NULL)
--sorted_result
SELECT c2 FROM t2 WHERE c2=null;
UPDATE t2 SET c2='2070' WHERE c2=null AND c1='1996';
--sorted_result
SELECT c2 FROM t2;
--sorted_result
SELECT c2 FROM t3 WHERE c2 < '64';
UPDATE t3 SET c2=null WHERE c2 < '64' ORDER BY c2 LIMIT 3;
--sorted_result
SELECT c2 FROM t3;
#Update order by limit
--sorted_result
SELECT c1 FROM t4 WHERE c1 < '55';
UPDATE t4 SET c1='00' WHERE c1 < '65' ORDER BY c1 LIMIT 5;
--sorted_result
SELECT c1 FROM t4;
#Update with Arithmetic operations
#
#Updating 'YY' values
--sorted_result
SELECT c1 FROM t3 WHERE c1='05';
UPDATE t3 SET c1=c1+c2 WHERE c1='05';
--sorted_result
SELECT c1 FROM t3;
--sorted_result
SELECT c1 FROM t4 WHERE c2=4;
UPDATE t4 SET c1=c1 + 04 WHERE c2=04;
--sorted_result
SELECT c1 FROM t4;
--sorted_result
SELECT c2 FROM t3 WHERE c2=75;
UPDATE t3 SET c2=c2 + 1902 WHERE c2='75';
--sorted_result
SELECT c2 FROM t3;
--sorted_result
SELECT c1 FROM t4 WHERE c1=09;
UPDATE t4 SET c1=c1 - c2 WHERE c1='09';
--sorted_result
SELECT c1 FROM t4;
--sorted_result
SELECT c1 FROM t3 WHERE c1=75;
UPDATE t3 SET c1=c1 - 01 WHERE c1='75';
--sorted_result
SELECT c1 FROM t3;
--sorted_result
SELECT c1 FROM t4 WHERE c1=98;
UPDATE t4 SET c1=c1 / 2 WHERE c1='98';
--sorted_result
SELECT c1 FROM t4;
--sorted_result
SELECT c2 FROM t3 WHERE c2=03;
UPDATE t3 SET c2=c2 * 03 WHERE c2='03';
--sorted_result
SELECT c2 FROM t3;
#
#Updating 'YYYY' values
--sorted_result
SELECT c1 FROM t1 WHERE c1 > 2060 AND c1 < 2070;
UPDATE t1 SET c1=c1 + 10 WHERE c1 > 2060 AND c1 < 2070;
--sorted_result
SELECT c1 FROM t1;
--sorted_result
SELECT c1 FROM t2 WHERE c1 > 1969 AND c1 < 1980;
UPDATE t2 SET c1=c1 - 10 WHERE c1 > 1969 AND c1 < 1980 ORDER BY c1 LIMIT 2;
--sorted_result
SELECT c1 FROM t2;
#Update range values
UPDATE t2 SET c2=2009 WHERE c1=2009 AND c2=null;
--sorted_result
SELECT c2 FROM t2;
UPDATE t1 SET c2=2155 WHERE c1=1979 OR c1=2154;
--sorted_result
SELECT c2 FROM t1;
UPDATE t4 SET c1=99 WHERE c2 IN (01,54,65,69,null);
--sorted_result
SELECT c1 FROM t4;
# Update outside range would be clipped to closest endpoints
UPDATE t1 SET c2=-1 WHERE c1=2071;
--sorted_result
SELECT c2 FROM t1;
UPDATE t1 SET c2=0 WHERE c1=2003;
--sorted_result
SELECT c2 FROM t1;
UPDATE t1 SET c2=2156 WHERE c1=2001;
--sorted_result
SELECT c2 FROM t1;
UPDATE t4 SET c2=-1 WHERE c1=71;
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2=0 WHERE c1=70;
--sorted_result
SELECT c2 FROM t4;
UPDATE t4 SET c2=100 WHERE c1=79;
--sorted_result
SELECT c2 FROM t4;
# Update ignore on bad null error
--sorted_result
SELECT c1 FROM t1 WHERE c2 < 1975;
SET SQL_MODE=STRICT_ALL_TABLES;
--error ER_BAD_NULL_ERROR
UPDATE t1 SET c1=NULL WHERE c2 < 1975;
UPDATE IGNORE t1 SET c1=NULL WHERE c2 < 1975;
--sorted_result
SELECT c1 from t1 WHERE c2 < 1975;
SET SQL_MODE=DEFAULT
#Update with invalid values
#UPDATE t2 SET c1='def' WHERE c2=2064;
#--sorted_result
#SELECT c1 FROM t2;
UPDATE t4 SET c1=-70 WHERE c2=75;
--sorted_result
SELECT c1 FROM t4;
#Update duplicate key
--error ER_DUP_ENTRY
UPDATE t1 SET c1=1971 WHERE c2=1995;
#Multi table update
UPDATE t1,t2,t3,t4 SET t3.c1=t4.c1+t4.c2 WHERE t3.c1=61 AND t4.c2=4;
# Update using various access methods
# Update using Const
# EXPLAIN SELECT * FROM t1 WHERE c1=2074 AND c2=2064;
UPDATE t1 SET t1.c1=2073 WHERE c1=2074 AND c2=2064;
--sorted_result
SELECT * FROM t1;
# Update using range
# EXPLAIN SELECT * FROM t1 WHERE c1 BETWEEN 2000 AND 2010;
UPDATE t1 SET t1.c2=0000 WHERE c1 BETWEEN 2000 AND 2010;
--sorted_result
SELECT * FROM t1;
# EXPLAIN SELECT * FROM t1 WHERE c1 IN (2154,2009,1979);
UPDATE t1 SET c1=c1-1,c2=c2+1 WHERE c1 IN (2154,2009,1979);
--sorted_result
SELECT * FROM t1;
# Update using eq_ref
# EXPLAIN SELECT * FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
UPDATE t1,t2 SET t1.c2='2155' WHERE t1.c1=t2.c1 AND t1.c2=t2.c2;
#BUG49910
--disable_result_log
--sorted_result
SELECT * FROM t1;
--enable_result_log
--sorted_result
SELECT * FROM t2;
--sorted_result
SELECT * FROM t3;
--sorted_result
SELECT * FROM t4;
#Drop tables
DROP TABLE IF EXISTS t1,t2,t3,t4;