Loading include/mysql_com.h +31 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,37 @@ enum enum_server_command #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30) #define CLIENT_REMEMBER_OPTIONS (1UL << 31) /* Gather all possible capabilites (flags) supported by the server */ #define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD | \ CLIENT_FOUND_ROWS | \ CLIENT_LONG_FLAG | \ CLIENT_CONNECT_WITH_DB | \ CLIENT_NO_SCHEMA | \ CLIENT_COMPRESS | \ CLIENT_ODBC | \ CLIENT_LOCAL_FILES | \ CLIENT_IGNORE_SPACE | \ CLIENT_PROTOCOL_41 | \ CLIENT_INTERACTIVE | \ CLIENT_SSL | \ CLIENT_IGNORE_SIGPIPE | \ CLIENT_TRANSACTIONS | \ CLIENT_RESERVED | \ CLIENT_SECURE_CONNECTION | \ CLIENT_MULTI_STATEMENTS | \ CLIENT_MULTI_RESULTS | \ CLIENT_SSL_VERIFY_SERVER_CERT | \ CLIENT_REMEMBER_OPTIONS) /* Switch off the flags that are optional and depending on build flags If any of the optional flags is supported by the build it will be switched on before sending to the client during the connection handshake. */ #define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \ & ~CLIENT_COMPRESS) \ & ~CLIENT_SSL_VERIFY_SERVER_CERT) #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */ Loading mysql-test/r/distinct.result +23 −0 Original line number Diff line number Diff line Loading @@ -682,3 +682,26 @@ a a b 1 1 3 DROP TABLE t1; End of 5.0 tests CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT, PRIMARY KEY(a,b,c,d,e), KEY(a,b,d,c) ); INSERT INTO t1(a, b, c) VALUES (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3); EXPLAIN SELECT DISTINCT a, b, d, c FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index NULL a 16 NULL 6 Using index SELECT DISTINCT a, b, d, c FROM t1; a b d c 1 1 0 1 1 1 0 2 1 1 0 3 1 2 0 1 1 2 0 2 1 2 0 3 DROP TABLE t1; End of 5.1 tests mysql-test/r/order_by.result +30 −0 Original line number Diff line number Diff line Loading @@ -1428,3 +1428,33 @@ set session max_sort_length= 2180; select * from t1 order by b; ERROR HY001: Out of sort memory; increase server sort buffer size drop table t1; CREATE TABLE t2 (a varchar(32), b int(11), c float, d double, UNIQUE KEY a (a,b,c), KEY b (b), KEY c (c)); CREATE TABLE t1 (a varchar(32), b char(3), UNIQUE KEY a (a,b), KEY b (b)); CREATE TABLE t3 (a varchar(32), b char(3), UNIQUE KEY a (a,b)); INSERT INTO t3 SELECT * FROM t1; EXPLAIN SELECT d FROM t1, t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref a,b b 4 const 4 Using where; Using temporary; Using filesort 1 SIMPLE t2 ref a,b,c a 40 test.t1.a,const 11 Using where SELECT d FROM t1, t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; d 52.5 EXPLAIN SELECT d FROM t3 AS t1, t2 AS t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range a,b,c c 5 NULL 420 Using where 1 SIMPLE t1 ref a a 39 test.t2.a,const 10 Using where; Using index SELECT d FROM t3 AS t1, t2 AS t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; d 52.5 DROP TABLE t1,t2,t3; mysql-test/r/range.result +39 −0 Original line number Diff line number Diff line Loading @@ -1166,6 +1166,45 @@ EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index DROP TABLE t1; CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (127),(254),(0),(1),(255); SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255; COUNT(*) 4 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1; COUNT(*) 0 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1; COUNT(*) 5 DROP TABLE t1; CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127); SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127; COUNT(*) 4 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128; COUNT(*) 4 DROP TABLE t1; create table t1 (a int); insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); create table t2 (a int, b int, filler char(100)); Loading mysql-test/t/distinct.test +23 −0 Original line number Diff line number Diff line Loading @@ -553,3 +553,26 @@ SELECT DISTINCT a, a, b FROM t1; DROP TABLE t1; --echo End of 5.0 tests # # Bug #34928: Confusion by having Primary Key and Index # CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT, PRIMARY KEY(a,b,c,d,e), KEY(a,b,d,c) ); INSERT INTO t1(a, b, c) VALUES (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3); EXPLAIN SELECT DISTINCT a, b, d, c FROM t1; SELECT DISTINCT a, b, d, c FROM t1; DROP TABLE t1; --echo End of 5.1 tests Loading
include/mysql_com.h +31 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,37 @@ enum enum_server_command #define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30) #define CLIENT_REMEMBER_OPTIONS (1UL << 31) /* Gather all possible capabilites (flags) supported by the server */ #define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD | \ CLIENT_FOUND_ROWS | \ CLIENT_LONG_FLAG | \ CLIENT_CONNECT_WITH_DB | \ CLIENT_NO_SCHEMA | \ CLIENT_COMPRESS | \ CLIENT_ODBC | \ CLIENT_LOCAL_FILES | \ CLIENT_IGNORE_SPACE | \ CLIENT_PROTOCOL_41 | \ CLIENT_INTERACTIVE | \ CLIENT_SSL | \ CLIENT_IGNORE_SIGPIPE | \ CLIENT_TRANSACTIONS | \ CLIENT_RESERVED | \ CLIENT_SECURE_CONNECTION | \ CLIENT_MULTI_STATEMENTS | \ CLIENT_MULTI_RESULTS | \ CLIENT_SSL_VERIFY_SERVER_CERT | \ CLIENT_REMEMBER_OPTIONS) /* Switch off the flags that are optional and depending on build flags If any of the optional flags is supported by the build it will be switched on before sending to the client during the connection handshake. */ #define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \ & ~CLIENT_COMPRESS) \ & ~CLIENT_SSL_VERIFY_SERVER_CERT) #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ #define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */ Loading
mysql-test/r/distinct.result +23 −0 Original line number Diff line number Diff line Loading @@ -682,3 +682,26 @@ a a b 1 1 3 DROP TABLE t1; End of 5.0 tests CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT, PRIMARY KEY(a,b,c,d,e), KEY(a,b,d,c) ); INSERT INTO t1(a, b, c) VALUES (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3); EXPLAIN SELECT DISTINCT a, b, d, c FROM t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 index NULL a 16 NULL 6 Using index SELECT DISTINCT a, b, d, c FROM t1; a b d c 1 1 0 1 1 1 0 2 1 1 0 3 1 2 0 1 1 2 0 2 1 2 0 3 DROP TABLE t1; End of 5.1 tests
mysql-test/r/order_by.result +30 −0 Original line number Diff line number Diff line Loading @@ -1428,3 +1428,33 @@ set session max_sort_length= 2180; select * from t1 order by b; ERROR HY001: Out of sort memory; increase server sort buffer size drop table t1; CREATE TABLE t2 (a varchar(32), b int(11), c float, d double, UNIQUE KEY a (a,b,c), KEY b (b), KEY c (c)); CREATE TABLE t1 (a varchar(32), b char(3), UNIQUE KEY a (a,b), KEY b (b)); CREATE TABLE t3 (a varchar(32), b char(3), UNIQUE KEY a (a,b)); INSERT INTO t3 SELECT * FROM t1; EXPLAIN SELECT d FROM t1, t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref a,b b 4 const 4 Using where; Using temporary; Using filesort 1 SIMPLE t2 ref a,b,c a 40 test.t1.a,const 11 Using where SELECT d FROM t1, t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; d 52.5 EXPLAIN SELECT d FROM t3 AS t1, t2 AS t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range a,b,c c 5 NULL 420 Using where 1 SIMPLE t1 ref a a 39 test.t2.a,const 10 Using where; Using index SELECT d FROM t3 AS t1, t2 AS t2 WHERE t2.b=14 AND t2.a=t1.a AND 5.1<t2.c AND t1.b='DE' ORDER BY t2.c LIMIT 1; d 52.5 DROP TABLE t1,t2,t3;
mysql-test/r/range.result +39 −0 Original line number Diff line number Diff line Loading @@ -1166,6 +1166,45 @@ EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index DROP TABLE t1; CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (127),(254),(0),(1),(255); SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255; COUNT(*) 4 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1; COUNT(*) 0 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1; COUNT(*) 5 DROP TABLE t1; CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1)); INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127); SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127; COUNT(*) 4 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0; COUNT(*) 5 SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128; COUNT(*) 4 DROP TABLE t1; create table t1 (a int); insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); create table t2 (a int, b int, filler char(100)); Loading
mysql-test/t/distinct.test +23 −0 Original line number Diff line number Diff line Loading @@ -553,3 +553,26 @@ SELECT DISTINCT a, a, b FROM t1; DROP TABLE t1; --echo End of 5.0 tests # # Bug #34928: Confusion by having Primary Key and Index # CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT, PRIMARY KEY(a,b,c,d,e), KEY(a,b,d,c) ); INSERT INTO t1(a, b, c) VALUES (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3); EXPLAIN SELECT DISTINCT a, b, d, c FROM t1; SELECT DISTINCT a, b, d, c FROM t1; DROP TABLE t1; --echo End of 5.1 tests