初版
This commit is contained in:
@@ -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
|
||||
|
||||
122
build/lib/mysql/mysql-test/suite/engines/iuds/t/delete_time.test
Normal file
122
build/lib/mysql/mysql-test/suite/engines/iuds/t/delete_time.test
Normal 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;
|
||||
|
||||
110
build/lib/mysql/mysql-test/suite/engines/iuds/t/delete_year.test
Normal file
110
build/lib/mysql/mysql-test/suite/engines/iuds/t/delete_year.test
Normal 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;
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
insert_calendar : Bug #52283 Innodb reports extra warnings when SELECT/WHERE is performed using invalid value
|
||||
50
build/lib/mysql/mysql-test/suite/engines/iuds/t/hindi.txt
Normal file
50
build/lib/mysql/mysql-test/suite/engines/iuds/t/hindi.txt
Normal file
@@ -0,0 +1,50 @@
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
यह हिन्दी में एक वाक्य है.
|
||||
5983
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_calendar.test
Normal file
5983
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_calendar.test
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
|
||||
8169
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_number.test
Normal file
8169
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_number.test
Normal file
File diff suppressed because it is too large
Load Diff
1063
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_time.test
Normal file
1063
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_time.test
Normal file
File diff suppressed because it is too large
Load Diff
1506
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_year.test
Normal file
1506
build/lib/mysql/mysql-test/suite/engines/iuds/t/insert_year.test
Normal file
File diff suppressed because it is too large
Load Diff
500
build/lib/mysql/mysql-test/suite/engines/iuds/t/sample.txt
Normal file
500
build/lib/mysql/mysql-test/suite/engines/iuds/t/sample.txt
Normal 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.
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
18452
build/lib/mysql/mysql-test/suite/engines/iuds/t/type_bit_iuds.test
Normal file
18452
build/lib/mysql/mysql-test/suite/engines/iuds/t/type_bit_iuds.test
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
197
build/lib/mysql/mysql-test/suite/engines/iuds/t/update_time.test
Normal file
197
build/lib/mysql/mysql-test/suite/engines/iuds/t/update_time.test
Normal 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;
|
||||
|
||||
212
build/lib/mysql/mysql-test/suite/engines/iuds/t/update_year.test
Normal file
212
build/lib/mysql/mysql-test/suite/engines/iuds/t/update_year.test
Normal 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;
|
||||
|
||||
Reference in New Issue
Block a user