summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-04-07 15:23:05 +0300
committerunknown <bell@sanja.is.com.ua>2004-04-07 15:23:05 +0300
commit0948f9769b3e3da2e064e65015b86644af4acd78 (patch)
treec7d0df7f0334621904d6713b3ea5f4ba1c9cefbe /mysql-test
parent08594c4795d9e673f8f514142489ce01954deba5 (diff)
parent91fb27a3ca13beffcfec0fef93f12c580bad260f (diff)
downloadmariadb-git-0948f9769b3e3da2e064e65015b86644af4acd78.tar.gz
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-ps3-4.1 mysql-test/r/union.result: Auto merged sql/item.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_sum.h: Auto merged sql/log_event.cc: Auto merged sql/slave.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_prepare.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_parse.cc: Auto merged
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/include/have_debug.inc4
-rw-r--r--mysql-test/r/func_gconcat.result109
-rw-r--r--mysql-test/r/grant2.result3
-rw-r--r--mysql-test/r/grant_cache.result17
-rw-r--r--mysql-test/r/have_debug.require2
-rw-r--r--mysql-test/r/lowercase_table2.result4
-rw-r--r--mysql-test/r/metadata.result70
-rw-r--r--mysql-test/r/show_check.result38
-rw-r--r--mysql-test/r/synchronization.result169
-rw-r--r--mysql-test/r/union.result6
-rw-r--r--mysql-test/t/func_gconcat.test81
-rw-r--r--mysql-test/t/func_group.test1
-rw-r--r--mysql-test/t/grant2.test1
-rw-r--r--mysql-test/t/grant_cache.test8
-rw-r--r--mysql-test/t/show_check.test48
-rw-r--r--mysql-test/t/synchronization-master.opt1
-rw-r--r--mysql-test/t/synchronization.test64
17 files changed, 494 insertions, 132 deletions
diff --git a/mysql-test/include/have_debug.inc b/mysql-test/include/have_debug.inc
deleted file mode 100644
index 63c0c008b21..00000000000
--- a/mysql-test/include/have_debug.inc
+++ /dev/null
@@ -1,4 +0,0 @@
--- require r/have_debug.require
-disable_query_log;
-select instr(version(),convert('debug' using utf8))!=0;
-enable_query_log;
diff --git a/mysql-test/r/func_gconcat.result b/mysql-test/r/func_gconcat.result
index 5807bae6a06..dccd87e3d75 100644
--- a/mysql-test/r/func_gconcat.result
+++ b/mysql-test/r/func_gconcat.result
@@ -59,11 +59,16 @@ grp group_concat(d order by a desc)
1 a
2 b,a
3 c,d,d,b,b,a
-select grp,group_concat(a order by a,d+c) from t1 group by grp;
-grp group_concat(a order by a,d+c)
+select grp,group_concat(a order by a,d+c-ascii(c)-a) from t1 group by grp;
+grp group_concat(a order by a,d+c-ascii(c)-a)
1 1
2 2,3
3 4,5,6,7,8,9
+select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
+grp group_concat(a order by d+c-ascii(c),a)
+1 1
+2 3,2
+3 7,8,4,6,9,5
select grp,group_concat(c order by 1) from t1 group by grp;
grp group_concat(c order by 1)
1 a
@@ -136,17 +141,7 @@ grp ROUND(group_concat(a separator ""))
3 456789
drop table t1;
create table t1 (grp int, c char(10));
-insert into t1 values (1,NULL);
-insert into t1 values (2,"b");
-insert into t1 values (2,NULL);
-insert into t1 values (3,"E");
-insert into t1 values (3,NULL);
-insert into t1 values (3,"D");
-insert into t1 values (3,NULL);
-insert into t1 values (3,NULL);
-insert into t1 values (3,"D");
-insert into t1 values (4,"");
-insert into t1 values (5,NULL);
+insert into t1 values (1,NULL),(2,"b"),(2,NULL),(3,"E"),(3,NULL),(3,"D"),(3,NULL),(3,NULL),(3,"D"),(4,""),(5,NULL);
select grp,group_concat(c order by c) from t1 group by grp;
grp group_concat(c order by c)
1 NULL
@@ -207,9 +202,21 @@ NULL
drop table t1;
drop table t2;
create table t1 (bar varchar(32));
-insert into t1 values('test'),('test2');
-select * from t1 having group_concat(bar)='';
+insert into t1 values('test1'),('test2');
+select group_concat(bar order by concat(bar,bar)) from t1;
+group_concat(bar order by concat(bar,bar))
+test1,test2
+select group_concat(bar order by concat(bar,bar) desc) from t1;
+group_concat(bar order by concat(bar,bar) desc)
+test2,test1
+select bar from t1 having group_concat(bar)='';
+bar
+select bar from t1 having instr(group_concat(bar), "test") > 0;
bar
+test1
+select bar from t1 having instr(group_concat(bar order by concat(bar,bar) desc), "test2,test1") > 0;
+bar
+test1
drop table t1;
create table t1 (a int, a1 varchar(10));
create table t2 (a0 int);
@@ -222,3 +229,75 @@ select group_concat(a1 order by (t1.a)) from t1;
group_concat(a1 order by (t1.a))
b,a,c
drop table t1, t2;
+CREATE TABLE t1 (id1 tinyint(4) NOT NULL, id2 tinyint(4) NOT NULL);
+INSERT INTO t1 VALUES (1, 1),(1, 2),(1, 3),(1, 4),(1, 5),(2, 1),(2, 2),(2, 3);
+CREATE TABLE t2 (id1 tinyint(4) NOT NULL);
+INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 AND t1.id1=1 GROUP BY t1.id1;
+id1 concat_id
+1 1,2,3,4,5
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 1,2,3,4,5
+2 1,2,3
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 DESC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 5,4,3,2,1
+2 3,2,1
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 5,4,3,2,1
+2 3,2,1
+SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 51,42,33,24,15
+2 33,24,15
+SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 51,42,33,24,15
+2 33,24,15
+SELECT t1.id1, GROUP_CONCAT(t1.id2,"/",6-t1.id2 ORDER BY 1+0,6-t1.id2,t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+id1 concat_id
+1 5/1,4/2,3/3,2/4,1/5
+2 3/3,2/4,1/5
+drop table t1,t2;
+create table t1 (s1 char(10), s2 int not null);
+insert into t1 values ('a',2),('b',2),('c',1),('a',3),('b',4),('c',4);
+select distinct s1 from t1 order by s2,s1;
+s1
+c
+a
+b
+select group_concat(distinct s1) from t1;
+group_concat(distinct s1)
+a,b,c
+select group_concat(distinct s1 order by s2) from t1 where s2 < 4;
+group_concat(distinct s1 order by s2)
+c,b,a
+select group_concat(distinct s1 order by s2) from t1;
+group_concat(distinct s1 order by s2)
+c,b,a,c
+drop table t1;
+create table t1 (a int, c int);
+insert into t1 values (1, 2), (2, 3), (2, 4), (3, 5);
+create table t2 (a int, c int);
+insert into t2 values (1, 5), (2, 4), (3, 3), (3,3);
+select group_concat(c) from t1;
+group_concat(c)
+2,3,4,5
+select group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1;
+grp
+5,4,3,2
+select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1;
+grp
+5,4,3,2
+select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1;
+grp
+2,4,3,5
+select a,c,(select group_concat(c order by a) from t2 where a=t1.a) as grp from t1 order by grp;
+a c grp
+3 5 3,3
+2 3 4
+2 4 4
+1 2 5
+drop table t1,t2;
diff --git a/mysql-test/r/grant2.result b/mysql-test/r/grant2.result
index 0b127188586..d0765e2721f 100644
--- a/mysql-test/r/grant2.result
+++ b/mysql-test/r/grant2.result
@@ -5,6 +5,9 @@ grant all privileges on `my\_%`.* to mysqltest_1@localhost with grant option;
select current_user();
current_user()
mysqltest_1@localhost
+select current_user;
+current_user
+mysqltest_1@localhost
grant all privileges on `my\_1`.* to mysqltest_2@localhost with grant option;
grant all privileges on `my_%`.* to mysqltest_3@localhost with grant option;
ERROR 42000: Access denied for user: 'mysqltest_1'@'localhost' to database 'my_%'
diff --git a/mysql-test/r/grant_cache.result b/mysql-test/r/grant_cache.result
index fc4073d23b1..48068c0f68d 100644
--- a/mysql-test/r/grant_cache.result
+++ b/mysql-test/r/grant_cache.result
@@ -2,6 +2,12 @@ drop table if exists test.t1,mysqltest.t1,mysqltest.t2;
drop database if exists mysqltest;
reset query cache;
flush status;
+show grants for current_user;
+Grants for root@localhost
+GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
+show grants;
+Grants for root@localhost
+GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
create database if not exists mysqltest;
create table mysqltest.t1 (a int,b int,c int);
create table mysqltest.t2 (a int,b int,c int);
@@ -41,6 +47,10 @@ grant SELECT on mysqltest.* to mysqltest_1@localhost;
grant SELECT on mysqltest.t1 to mysqltest_2@localhost;
grant SELECT on test.t1 to mysqltest_2@localhost;
grant SELECT(a) on mysqltest.t1 to mysqltest_3@localhost;
+show grants for current_user();
+Grants for mysqltest_1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
+GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
@@ -101,6 +111,9 @@ Qcache_hits 3
show status like "Qcache_not_cached";
Variable_name Value
Qcache_not_cached 1
+show grants for current_user();
+Grants for @localhost
+GRANT USAGE ON *.* TO ''@'localhost'
select "user2";
user2
user2
@@ -158,6 +171,10 @@ Qcache_not_cached 7
select "user4";
user4
user4
+show grants;
+Grants for mysqltest_1@localhost
+GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
+GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
select a from t1;
ERROR 3D000: No Database Selected
select * from mysqltest.t1,test.t1;
diff --git a/mysql-test/r/have_debug.require b/mysql-test/r/have_debug.require
deleted file mode 100644
index 3ef51a3a6db..00000000000
--- a/mysql-test/r/have_debug.require
+++ /dev/null
@@ -1,2 +0,0 @@
-instr(version(),convert('debug' using utf8))!=0;
-1 \ No newline at end of file
diff --git a/mysql-test/r/lowercase_table2.result b/mysql-test/r/lowercase_table2.result
index 737d49fc340..c29d52ffffc 100644
--- a/mysql-test/r/lowercase_table2.result
+++ b/mysql-test/r/lowercase_table2.result
@@ -13,7 +13,7 @@ SHOW CREATE TABLE T1;
Table Create Table
T1 CREATE TABLE `T1` (
`a` int(11) default NULL
-) TYPE=MyISAM
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
RENAME TABLE T1 TO T2;
SHOW TABLES LIKE "T2";
Tables_in_test (T2)
@@ -68,7 +68,7 @@ SHOW CREATE TABLE T1;
Table Create Table
T1 CREATE TABLE `T1` (
`a` int(11) default NULL
-) TYPE=InnoDB
+) ENGINE=InnoDB DEFAULT CHARSET=latin
RENAME TABLE T1 TO T2;
SHOW TABLES LIKE "T2";
Tables_in_test (T2)
diff --git a/mysql-test/r/metadata.result b/mysql-test/r/metadata.result
index 59914447087..80a01a0ca90 100644
--- a/mysql-test/r/metadata.result
+++ b/mysql-test/r/metadata.result
@@ -1,36 +1,36 @@
drop table if exists t1,t2;
select 1, 1.0, -1, "hello", NULL;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def 1 8 1 1 N 32769 0
-def 1.0 5 3 3 N 32769 1
-def -1 8 1 2 N 32769 0
-def hello 254 5 5 N 1 31
-def NULL 6 0 0 Y 32768 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def 1 8 1 1 N 32769 0 8
+def 1.0 5 3 3 N 32769 1 8
+def -1 8 1 2 N 32769 0 8
+def hello 254 5 5 N 1 31 8
+def NULL 6 0 0 Y 32768 0 8
1 1.0 -1 hello NULL
1 1.0 -1 hello NULL
create table t1 (a tinyint, b smallint, c mediumint, d int, e bigint, f float(3,2), g double(4,3), h decimal(5,4), i year, j date, k timestamp, l datetime, m enum('a','b'), n set('a','b'), o char(10));
select * from t1;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def test t1 t1 a a 1 4 0 Y 32768 0
-def test t1 t1 b b 2 6 0 Y 32768 0
-def test t1 t1 c c 9 9 0 Y 32768 0
-def test t1 t1 d d 3 11 0 Y 32768 0
-def test t1 t1 e e 8 20 0 Y 32768 0
-def test t1 t1 f f 4 3 0 Y 32768 2
-def test t1 t1 g g 5 4 0 Y 32768 3
-def test t1 t1 h h 0 7 0 Y 32768 4
-def test t1 t1 i i 13 4 0 Y 32864 0
-def test t1 t1 j j 10 10 0 Y 0 0
-def test t1 t1 k k 7 19 0 N 1089 0
-def test t1 t1 l l 12 19 0 Y 0 0
-def test t1 t1 m m 254 1 0 Y 256 0
-def test t1 t1 n n 254 3 0 Y 2048 0
-def test t1 t1 o o 254 10 0 Y 0 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 a a 1 4 0 Y 32768 0 63
+def test t1 t1 b b 2 6 0 Y 32768 0 63
+def test t1 t1 c c 9 9 0 Y 32768 0 63
+def test t1 t1 d d 3 11 0 Y 32768 0 63
+def test t1 t1 e e 8 20 0 Y 32768 0 63
+def test t1 t1 f f 4 3 0 Y 32768 2 63
+def test t1 t1 g g 5 4 0 Y 32768 3 63
+def test t1 t1 h h 0 7 0 Y 32768 4 63
+def test t1 t1 i i 13 4 0 Y 32864 0 63
+def test t1 t1 j j 10 10 0 Y 128 0 63
+def test t1 t1 k k 7 19 0 N 1217 0 63
+def test t1 t1 l l 12 19 0 Y 128 0 63
+def test t1 t1 m m 254 1 0 Y 256 0 8
+def test t1 t1 n n 254 3 0 Y 2048 0 8
+def test t1 t1 o o 254 10 0 Y 0 0 8
a b c d e f g h i j k l m n o
select a b, b c from t1 as t2;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def test t1 t2 a b 1 4 0 Y 32768 0
-def test t1 t2 b c 2 6 0 Y 32768 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t2 a b 1 4 0 Y 32768 0 63
+def test t1 t2 b c 2 6 0 Y 32768 0 63
b c
drop table t1;
CREATE TABLE t1 (id tinyint(3) default NULL, data varchar(255) default NULL);
@@ -38,24 +38,24 @@ INSERT INTO t1 VALUES (1,'male'),(2,'female');
CREATE TABLE t2 (id tinyint(3) unsigned default NULL, data char(3) default '0');
INSERT INTO t2 VALUES (1,'yes'),(2,'no');
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def test t1 t1 id id 1 3 1 Y 32768 0
-def test t1 t1 data data 253 255 6 Y 0 0
-def test t2 t2 data data 254 3 3 Y 0 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 id id 1 3 1 Y 32768 0 63
+def test t1 t1 data data 253 255 6 Y 0 0 8
+def test t2 t2 data data 254 3 3 Y 0 0 8
id data data
1 male yes
2 female no
select t1.id, t1.data, t2.data from t1, t2 where t1.id = t2.id order by t1.id;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def test t1 t1 id id 1 3 1 Y 32768 0
-def test t1 t1 data data 253 255 6 Y 0 0
-def test t2 t2 data data 254 3 3 Y 0 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 id id 1 3 1 Y 32768 0 63
+def test t1 t1 data data 253 255 6 Y 0 0 8
+def test t2 t2 data data 254 3 3 Y 0 0 8
id data data
1 male yes
2 female no
select t1.id from t1 union select t2.id from t2;
-Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals
-def test t1 t1 id id 1 3 1 Y 32768 0
+Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 id id 1 3 1 Y 32768 0 63
id
1
2
diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result
index 5a5eb025353..b54d4b5a342 100644
--- a/mysql-test/r/show_check.result
+++ b/mysql-test/r/show_check.result
@@ -362,3 +362,41 @@ t1 HEAP Fixed 0 5 # # # 5 NULL NULL NULL NULL latin1_swedish_ci NULL
t2 HEAP Fixed 0 5 # # # 5 NULL NULL NULL NULL latin1_swedish_ci NULL
t3 HEAP Fixed 0 9 # # # 9 NULL NULL NULL NULL latin1_swedish_ci NULL
drop table t1, t2, t3;
+create database test_$1;
+show create database test_$1;
+Database Create Database
+test_$1 CREATE DATABASE `test_$1` /*!40100 DEFAULT CHARACTER SET latin1 */
+create table test_$1.t1(a int);
+insert into test_$1.t1 values(1);
+grant select on `test_$1`.* to mysqltest_1@localhost;
+grant usage on `test_$1`.* to mysqltest_2@localhost;
+grant drop on `test_$1`.* to mysqltest_3@localhost;
+select * from t1;
+a
+1
+show create database test_$1;
+Database Create Database
+test_$1 CREATE DATABASE `test_$1` /*!40100 DEFAULT CHARACTER SET latin1 */
+drop table t1;
+ERROR 42000: Access denied for user: 'mysqltest_1'@'localhost' to database 'test_$1'
+drop database test_$1;
+ERROR 42000: Access denied for user: 'mysqltest_1'@'localhost' to database 'test_$1'
+select * from test_$1.t1;
+ERROR 42000: Access denied for user: 'mysqltest_2'@'localhost' to database 'test_$1'
+show create database test_$1;
+ERROR 42000: Access denied for user: 'mysqltest_2'@'localhost' to database 'test_$1'
+drop table test_$1.t1;
+ERROR 42000: Access denied for user: 'mysqltest_2'@'localhost' to database 'test_$1'
+drop database test_$1;
+ERROR 42000: Access denied for user: 'mysqltest_2'@'localhost' to database 'test_$1'
+select * from test_$1.t1;
+ERROR 42000: Access denied for user: 'mysqltest_3'@'localhost' to database 'test_$1'
+show create database test_$1;
+ERROR 42000: Access denied for user: 'mysqltest_3'@'localhost' to database 'test_$1'
+drop table test_$1.t1;
+drop database test_$1;
+delete from mysql.user
+where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
+delete from mysql.db
+where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
+flush privileges;
diff --git a/mysql-test/r/synchronization.result b/mysql-test/r/synchronization.result
index 87800939ed9..ad9443c86da 100644
--- a/mysql-test/r/synchronization.result
+++ b/mysql-test/r/synchronization.result
@@ -1,23 +1,162 @@
-CREATE TABLE t1 (a int);
- CREATE TABLE t2 LIKE t1;
-ALTER TABLE t1 add key(a);
+CREATE TABLE t1 (x1 int);
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `a` int(11) default NULL
+ `xx` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1, t2;
-CREATE TABLE t1 (a int);
- CREATE TABLE t2 LIKE t1;
-CREATE TABLE t2 (b int);
-let's take a look at result of create .. like :
------------
-ERROR HY000: Can't create/write to file './test/t2.frm' (Errcode: 17)
------------
-
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `b` int(11) default NULL
+ `xx` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1, t2;
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x1 x2 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+ ALTER TABLE t1 CHANGE x2 x1 int;
+CREATE TABLE t2 LIKE t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `xx` int(11) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t2;
+DROP TABLE t1;
diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result
index 91d53ce21d0..fbd4624a57c 100644
--- a/mysql-test/r/union.result
+++ b/mysql-test/r/union.result
@@ -693,7 +693,7 @@ testc
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `dt` char(19) default NULL
+ `dt` binary(19) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 SELECT dt from t2 UNION select sv from t2;
@@ -704,7 +704,7 @@ testv
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `dt` char(19) default NULL
+ `dt` binary(19) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 SELECT sc from t2 UNION select sv from t2;
@@ -726,7 +726,7 @@ tetetetetest
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `dt` longblob
+ `dt` blob
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t1 SELECT sv from t2 UNION select b from t2;
diff --git a/mysql-test/t/func_gconcat.test b/mysql-test/t/func_gconcat.test
index d004c81f14e..9d99a57afe5 100644
--- a/mysql-test/t/func_gconcat.test
+++ b/mysql-test/t/func_gconcat.test
@@ -29,7 +29,8 @@ select grp,group_concat(c order by c) from t1 group by grp;
select grp,group_concat(c order by c desc) from t1 group by grp;
select grp,group_concat(d order by a) from t1 group by grp;
select grp,group_concat(d order by a desc) from t1 group by grp;
-select grp,group_concat(a order by a,d+c) from t1 group by grp;
+select grp,group_concat(a order by a,d+c-ascii(c)-a) from t1 group by grp;
+select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
select grp,group_concat(c order by 1) from t1 group by grp;
select grp,group_concat(c order by "c") from t1 group by grp;
select grp,group_concat(distinct c order by c) from t1 group by grp;
@@ -50,22 +51,12 @@ select grp,group_concat(c order by grp desc) from t1 group by grp order by grp;
select grp, group_concat(a separator "")+0 from t1 group by grp;
select grp, group_concat(a separator "")+0.0 from t1 group by grp;
select grp, ROUND(group_concat(a separator "")) from t1 group by grp;
+drop table t1;
# Test NULL values
-drop table t1;
create table t1 (grp int, c char(10));
-insert into t1 values (1,NULL);
-insert into t1 values (2,"b");
-insert into t1 values (2,NULL);
-insert into t1 values (3,"E");
-insert into t1 values (3,NULL);
-insert into t1 values (3,"D");
-insert into t1 values (3,NULL);
-insert into t1 values (3,NULL);
-insert into t1 values (3,"D");
-insert into t1 values (4,"");
-insert into t1 values (5,NULL);
+insert into t1 values (1,NULL),(2,"b"),(2,NULL),(3,"E"),(3,NULL),(3,"D"),(3,NULL),(3,NULL),(3,"D"),(4,""),(5,NULL);
select grp,group_concat(c order by c) from t1 group by grp;
# Test warnings
@@ -118,8 +109,12 @@ drop table t2;
# check having
create table t1 (bar varchar(32));
-insert into t1 values('test'),('test2');
-select * from t1 having group_concat(bar)='';
+insert into t1 values('test1'),('test2');
+select group_concat(bar order by concat(bar,bar)) from t1;
+select group_concat(bar order by concat(bar,bar) desc) from t1;
+select bar from t1 having group_concat(bar)='';
+select bar from t1 having instr(group_concat(bar), "test") > 0;
+select bar from t1 having instr(group_concat(bar order by concat(bar,bar) desc), "test2,test1") > 0;
drop table t1;
# ORDER BY fix_fields()
@@ -129,4 +124,58 @@ insert into t1 values (0,"a"),(0,"b"),(1,"c");
insert into t2 values (1),(2),(3);
select group_concat(a1 order by (t1.a IN (select a0 from t2))) from t1;
select group_concat(a1 order by (t1.a)) from t1;
-drop table t1, t2; \ No newline at end of file
+drop table t1, t2;
+
+#
+# Problem with GROUP BY (Bug #2695)
+#
+
+CREATE TABLE t1 (id1 tinyint(4) NOT NULL, id2 tinyint(4) NOT NULL);
+INSERT INTO t1 VALUES (1, 1),(1, 2),(1, 3),(1, 4),(1, 5),(2, 1),(2, 2),(2, 3);
+CREATE TABLE t2 (id1 tinyint(4) NOT NULL);
+INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 AND t1.id1=1 GROUP BY t1.id1;
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 DESC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+
+# The following failed when it was run twice:
+SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+
+SELECT t1.id1, GROUP_CONCAT(t1.id2,"/",6-t1.id2 ORDER BY 1+0,6-t1.id2,t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
+drop table t1,t2;
+
+#
+# Problem with distinct (Bug #3381)
+#
+
+create table t1 (s1 char(10), s2 int not null);
+insert into t1 values ('a',2),('b',2),('c',1),('a',3),('b',4),('c',4);
+select distinct s1 from t1 order by s2,s1;
+select group_concat(distinct s1) from t1;
+select group_concat(distinct s1 order by s2) from t1 where s2 < 4;
+# The following is wrong and needs to be fixed ASAP
+select group_concat(distinct s1 order by s2) from t1;
+drop table t1;
+
+#
+# Test with subqueries (Bug #3319)
+#
+
+create table t1 (a int, c int);
+insert into t1 values (1, 2), (2, 3), (2, 4), (3, 5);
+create table t2 (a int, c int);
+insert into t2 values (1, 5), (2, 4), (3, 3), (3,3);
+select group_concat(c) from t1;
+select group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1;
+
+select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1;
+select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1;
+
+# The following returns random results as we are sorting on blob addresses
+# select group_concat(c order by (select group_concat(c order by a) from t2 where t2.a=t1.a)) as grp from t1;
+# select group_concat(c order by (select group_concat(c) from t2 where a=t1.a)) as grp from t1;
+
+select a,c,(select group_concat(c order by a) from t2 where a=t1.a) as grp from t1 order by grp;
+drop table t1,t2;
diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test
index ce89cbe1b22..2bd4838f934 100644
--- a/mysql-test/t/func_group.test
+++ b/mysql-test/t/func_group.test
@@ -134,7 +134,6 @@ select max(t2.a1) from t1 left outer join t2 on t1.a2=t2.a1 and 1=0 where t2.a1=
select max(t1.a2),max(t2.a1) from t1 left outer join t2 on t1.a1=10;
drop table t1,t2;
-
#
# Tests to check MIN/MAX query optimization
#
diff --git a/mysql-test/t/grant2.test b/mysql-test/t/grant2.test
index 148c4d3da21..1fc1ed78385 100644
--- a/mysql-test/t/grant2.test
+++ b/mysql-test/t/grant2.test
@@ -15,6 +15,7 @@ grant all privileges on `my\_%`.* to mysqltest_1@localhost with grant option;
connect (user1,localhost,mysqltest_1,,);
connection user1;
select current_user();
+select current_user;
grant all privileges on `my\_1`.* to mysqltest_2@localhost with grant option;
--error 1044
grant all privileges on `my_%`.* to mysqltest_3@localhost with grant option;
diff --git a/mysql-test/t/grant_cache.test b/mysql-test/t/grant_cache.test
index 5ebf621ff40..7806253124e 100644
--- a/mysql-test/t/grant_cache.test
+++ b/mysql-test/t/grant_cache.test
@@ -12,6 +12,8 @@ reset query cache;
flush status;
connect (root,localhost,root,,test,$MASTER_MYPORT,master.sock);
connection root;
+show grants for current_user;
+show grants;
--disable_warnings
create database if not exists mysqltest;
--enable_warnings
@@ -43,6 +45,7 @@ grant SELECT(a) on mysqltest.t1 to mysqltest_3@localhost;
# The following queries should be fetched from cache
connect (user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,master.sock);
connection user1;
+show grants for current_user();
show status like "Qcache_queries_in_cache";
show status like "Qcache_hits";
show status like "Qcache_not_cached";
@@ -64,6 +67,10 @@ show status like "Qcache_queries_in_cache";
show status like "Qcache_hits";
show status like "Qcache_not_cached";
+connect (unkuser,localhost,,,,$MASTER_MYPORT,master.sock);
+connection unkuser;
+show grants for current_user();
+
# The following queries should be fetched from cache
connect (user2,localhost,mysqltest_2,,mysqltest,$MASTER_MYPORT,master.sock);
connection user2;
@@ -104,6 +111,7 @@ show status like "Qcache_not_cached";
connect (user4,localhost,mysqltest_1,,*NO-ONE*,$MASTER_MYPORT,master.sock);
connection user4;
select "user4";
+show grants;
--error 1046
select a from t1;
# The following query is not cached before (different database)
diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test
index 638626a7456..b0307af19bb 100644
--- a/mysql-test/t/show_check.test
+++ b/mysql-test/t/show_check.test
@@ -256,3 +256,51 @@ delete from t3 where a=5;
show table status;
drop table t1, t2, t3;
+
+#
+# Test for bug #3342 SHOW CREATE DATABASE seems to require DROP privilege
+#
+
+create database test_$1;
+show create database test_$1;
+create table test_$1.t1(a int);
+insert into test_$1.t1 values(1);
+grant select on `test_$1`.* to mysqltest_1@localhost;
+grant usage on `test_$1`.* to mysqltest_2@localhost;
+grant drop on `test_$1`.* to mysqltest_3@localhost;
+
+connect (con1,localhost,mysqltest_1,,test_$1);
+connection con1;
+select * from t1;
+show create database test_$1;
+--error 1044
+drop table t1;
+--error 1044
+drop database test_$1;
+
+connect (con2,localhost,mysqltest_2,,test);
+connection con2;
+--error 1044
+select * from test_$1.t1;
+--error 1044
+show create database test_$1;
+--error 1044
+drop table test_$1.t1;
+--error 1044
+drop database test_$1;
+
+connect (con3,localhost,mysqltest_3,,test);
+connection con3;
+--error 1044
+select * from test_$1.t1;
+--error 1044
+show create database test_$1;
+drop table test_$1.t1;
+drop database test_$1;
+
+connection default;
+delete from mysql.user
+where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
+delete from mysql.db
+where user='mysqltest_1' || user='mysqltest_2' || user='mysqltest_3';
+flush privileges;
diff --git a/mysql-test/t/synchronization-master.opt b/mysql-test/t/synchronization-master.opt
deleted file mode 100644
index 710a0395d55..00000000000
--- a/mysql-test/t/synchronization-master.opt
+++ /dev/null
@@ -1 +0,0 @@
---exit-info=2048 \ No newline at end of file
diff --git a/mysql-test/t/synchronization.test b/mysql-test/t/synchronization.test
index 695e405544a..7bdeaa8a740 100644
--- a/mysql-test/t/synchronization.test
+++ b/mysql-test/t/synchronization.test
@@ -1,45 +1,33 @@
--- source include/have_crypt.inc
-
#
# Test for Bug #2385 CREATE TABLE LIKE lacks locking on source and destination table
#
-connect (con_to_sleep,localhost,lock_controller,,);
-connect (con_to_harm_sleeper,localhost,root,,);
+connect (con1,localhost,root,,);
+connect (con2,localhost,root,,);
# locking of source:
-connection con_to_sleep;
-CREATE TABLE t1 (a int);
-send CREATE TABLE t2 LIKE t1;
-
-connection con_to_harm_sleeper;
-sleep 1;
-ALTER TABLE t1 add key(a);
-
-connection con_to_sleep;
-sleep 4;
-SHOW CREATE TABLE t2;
-drop table t1, t2;
-
-# locking of destination:
-connection con_to_sleep;
-CREATE TABLE t1 (a int);
-send CREATE TABLE t2 LIKE t1;
-
-connection con_to_harm_sleeper;
-sleep 1;
-CREATE TABLE t2 (b int);
-disable_query_log;
-select "-----------" as "let's take a look at result of create .. like : ";
-enable_query_log;
-
-connection con_to_sleep;
-sleep 1;
---error 1
-reap;
-disable_query_log;
-select "" as "-----------";
-enable_query_log;
-SHOW CREATE TABLE t2;
-drop table t1, t2; \ No newline at end of file
+CREATE TABLE t1 (x1 int);
+let $1= 10;
+while ($1)
+{
+ connection con1;
+ send ALTER TABLE t1 CHANGE x1 x2 int;
+ connection con2;
+ CREATE TABLE t2 LIKE t1;
+ replace_result x1 xx x2 xx;
+ SHOW CREATE TABLE t2;
+ DROP TABLE t2;
+ connection con1;
+ reap;
+ send ALTER TABLE t1 CHANGE x2 x1 int;
+ connection con2;
+ CREATE TABLE t2 LIKE t1;
+ replace_result x1 xx x2 xx;
+ SHOW CREATE TABLE t2;
+ DROP TABLE t2;
+ connection con1;
+ reap;
+ dec $1;
+}
+DROP TABLE t1;