summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjimw@mysql.com <>2005-04-04 23:03:56 -0700
committerjimw@mysql.com <>2005-04-04 23:03:56 -0700
commitbb215f648b0ab1cb10d540cf1d6adabb508f2beb (patch)
tree6ad8acc6094f563caca17989c7e15c8f1d599987
parent8197710349d1f090891adaf25d2a61006a804ce3 (diff)
parent247f2ac563f6ff157b6b3c6f0d9408ea9a2d276b (diff)
downloadmariadb-git-bb215f648b0ab1cb10d540cf1d6adabb508f2beb.tar.gz
Merge
-rw-r--r--client/mysqltest.c9
-rw-r--r--mysql-test/r/join_outer.result19
-rw-r--r--mysql-test/r/kill.result2
-rw-r--r--mysql-test/t/join_outer.test11
-rw-r--r--mysql-test/t/kill.test14
-rw-r--r--sql-common/client.c27
-rw-r--r--sql/item_sum.cc15
-rw-r--r--sql/mysqld.cc13
8 files changed, 93 insertions, 17 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 4000f494c63..3386118014a 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -294,6 +294,7 @@ Q_QUERY_VERTICAL, Q_QUERY_HORIZONTAL,
Q_START_TIMER, Q_END_TIMER,
Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL,
Q_EXIT,
+Q_DISABLE_RECONNECT, Q_ENABLE_RECONNECT,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -382,6 +383,8 @@ const char *command_names[]=
"disable_ps_protocol",
"enable_ps_protocol",
"exit",
+ "disable_reconnect",
+ "enable_reconnect",
0
};
@@ -3895,6 +3898,12 @@ int main(int argc, char **argv)
case Q_ENABLE_PS_PROTOCOL:
ps_protocol_enabled= ps_protocol;
break;
+ case Q_DISABLE_RECONNECT:
+ cur_con->mysql.reconnect= 0;
+ break;
+ case Q_ENABLE_RECONNECT:
+ cur_con->mysql.reconnect= 1;
+ break;
case Q_EXIT:
abort_flag= 1;
diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result
index 227ff655fcd..6db48cff57e 100644
--- a/mysql-test/r/join_outer.result
+++ b/mysql-test/r/join_outer.result
@@ -924,3 +924,22 @@ a b a b
3 1 NULL NULL
4 2 NULL NULL
DROP TABLE t1,t2;
+set group_concat_max_len=5;
+create table t1 (a int, b varchar(20));
+create table t2 (a int, c varchar(20));
+insert into t1 values (1,"aaaaaaaaaa"),(2,"bbbbbbbbbb");
+insert into t2 values (1,"cccccccccc"),(2,"dddddddddd");
+select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by t1.a;
+group_concat(t1.b,t2.c)
+aaaaa
+bbbbb
+Warnings:
+Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
+group_concat(t1.b,t2.c)
+aaaaa
+bbbbb
+Warnings:
+Warning 1260 2 line(s) were cut by GROUP_CONCAT()
+drop table t1, t2;
+set group_concat_max_len=default;
diff --git a/mysql-test/r/kill.result b/mysql-test/r/kill.result
index 2413834be4f..049281ad5d4 100644
--- a/mysql-test/r/kill.result
+++ b/mysql-test/r/kill.result
@@ -5,6 +5,8 @@ select ((@id := kill_id) - kill_id) from t1;
((@id := kill_id) - kill_id)
0
kill @id;
+select 1;
+ERROR HY000: MySQL server has gone away
select ((@id := kill_id) - kill_id) from t1;
((@id := kill_id) - kill_id)
0
diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test
index 38b5ef6151f..25344af55b4 100644
--- a/mysql-test/t/join_outer.test
+++ b/mysql-test/t/join_outer.test
@@ -651,4 +651,13 @@ SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1));
DROP TABLE t1,t2;
-
+# Bug #8681: Bad warning message when group_concat() exceeds max length
+set group_concat_max_len=5;
+create table t1 (a int, b varchar(20));
+create table t2 (a int, c varchar(20));
+insert into t1 values (1,"aaaaaaaaaa"),(2,"bbbbbbbbbb");
+insert into t2 values (1,"cccccccccc"),(2,"dddddddddd");
+select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by t1.a;
+select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
+drop table t1, t2;
+set group_concat_max_len=default;
diff --git a/mysql-test/t/kill.test b/mysql-test/t/kill.test
index 8492a2a2f8e..6744a212828 100644
--- a/mysql-test/t/kill.test
+++ b/mysql-test/t/kill.test
@@ -23,13 +23,15 @@ connection con2;
select ((@id := kill_id) - kill_id) from t1;
kill @id;
-# Wait for thread to do.
---sleep 5
-# verify that con1 is doning a reconnect
connection con1;
---ping
---ping
-select ((@id := kill_id) - kill_id) from t1;
+
+--disable_reconnect
+# this statement should fail
+--error 2006
+select 1;
+--enable_reconnect
+# this should work, and we should have a new connection_id()
+select ((@id := kill_id) - kill_id) from t1;
select @id != connection_id();
#make sure the server is still alive
diff --git a/sql-common/client.c b/sql-common/client.c
index f28ea65fabf..df7a3fe4974 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -2211,6 +2211,29 @@ my_bool mysql_reconnect(MYSQL *mysql)
}
tmp_mysql.reconnect= 1;
tmp_mysql.free_me= mysql->free_me;
+
+ /*
+ For each stmt in mysql->stmts, move it to tmp_mysql if it is
+ in state MYSQL_STMT_INIT_DONE, otherwise close it.
+ */
+ {
+ LIST *element= mysql->stmts;
+ for (; element; element= element->next)
+ {
+ MYSQL_STMT *stmt= (MYSQL_STMT *) element->data;
+ if (stmt->state != MYSQL_STMT_INIT_DONE)
+ {
+ stmt->mysql= 0;
+ }
+ else
+ {
+ tmp_mysql.stmts= list_add(tmp_mysql.stmts, &stmt->list);
+ }
+ /* No need to call list_delete for statement here */
+ }
+ mysql->stmts= NULL;
+ }
+
/* Don't free options as these are now used in tmp_mysql */
bzero((char*) &mysql->options,sizeof(mysql->options));
mysql->free_me=0;
@@ -2299,6 +2322,10 @@ static void mysql_close_free(MYSQL *mysql)
SYNOPSYS
mysql_detach_stmt_list()
stmt_list pointer to mysql->stmts
+
+ NOTE
+ There is similar code in mysql_reconnect(), so changes here
+ should also be reflected there.
*/
void mysql_detach_stmt_list(LIST **stmt_list __attribute__((unused)))
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 66b64128dab..e4eac51eff7 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -2802,9 +2802,20 @@ Item_func_group_concat::Item_func_group_concat(THD *thd,
void Item_func_group_concat::cleanup()
{
+ THD *thd= current_thd;
+
DBUG_ENTER("Item_func_group_concat::cleanup");
Item_sum::cleanup();
+ /* Adjust warning message to include total number of cut values */
+ if (warning)
+ {
+ char warn_buff[MYSQL_ERRMSG_SIZE];
+ sprintf(warn_buff, ER(ER_CUT_VALUE_GROUP_CONCAT), count_cut_values);
+ warning->set_msg(thd, warn_buff);
+ warning= 0;
+ }
+
/*
Free table and tree if they belong to this item (if item have not pointer
to original item from which was made copy => it own its objects )
@@ -3059,6 +3070,10 @@ String* Item_func_group_concat::val_str(String* str)
return 0;
if (count_cut_values && !warning)
{
+ /*
+ ER_CUT_VALUE_GROUP_CONCAT needs an argument, but this gets set in
+ Item_func_group_concat::cleanup().
+ */
DBUG_ASSERT(table);
warning= push_warning(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_CUT_VALUE_GROUP_CONCAT,
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index e1303585114..2062a67adfa 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -6116,16 +6116,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
sf_malloc_mem_limit = atoi(argument);
#endif
break;
-#ifdef EMBEDDED_LIBRARY
- case OPT_MAX_ALLOWED_PACKET:
- max_allowed_packet= atoi(argument);
- global_system_variables.max_allowed_packet= max_allowed_packet;
- break;
- case OPT_NET_BUFFER_LENGTH:
- net_buffer_length= atoi(argument);
- global_system_variables.net_buffer_length= net_buffer_length;
- break;
-#endif
#include <sslopt-case.h>
case 'V':
print_version();
@@ -6713,6 +6703,9 @@ static void get_options(int argc,char **argv)
#ifndef EMBEDDED_LIBRARY
if (mysqld_chroot)
set_root(mysqld_chroot);
+#else
+ max_allowed_packet= global_system_variables.max_allowed_packet;
+ net_buffer_length= global_system_variables.net_buffer_length;
#endif
fix_paths();