summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Kopytov <Alexey.Kopytov@Sun.com>2009-12-23 16:42:05 +0300
committerAlexey Kopytov <Alexey.Kopytov@Sun.com>2009-12-23 16:42:05 +0300
commitaf74c3436f5ba44606dc3ffcf501001711ed06d0 (patch)
tree1552ff636d911fe038d671ee60e55406bdadbf35
parentd05c63f721c8aac027f5acab0339a86a4747be16 (diff)
parentd332a1895282aa7b3786b8116ad89d93db8ddd6a (diff)
downloadmariadb-git-af74c3436f5ba44606dc3ffcf501001711ed06d0.tar.gz
Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
Conflicts: Conflict adding files to server-tools. Created directory. Conflict because server-tools is not versioned, but has versioned children. Versioned directory. Conflict adding files to server-tools/instance-manager. Created directory. Conflict because server-tools/instance-manager is not versioned, but has versioned children. Versioned directory. Contents conflict in server-tools/instance-manager/instance_map.cc Contents conflict in server-tools/instance-manager/listener.cc Contents conflict in server-tools/instance-manager/options.cc Contents conflict in server-tools/instance-manager/user_map.cc
-rw-r--r--client/mysql.cc3
-rw-r--r--client/mysqldump.c4
-rw-r--r--include/config-win.h2
-rw-r--r--libmysql/libmysql.c11
-rw-r--r--mysql-test/r/mysql.result8
-rw-r--r--mysql-test/suite/rpl/t/rpl_killed_ddl.test3
-rw-r--r--mysql-test/t/lock_multi.test4
-rw-r--r--mysql-test/t/mysql.test7
-rw-r--r--mysys/default.c2
-rw-r--r--mysys/mf_pack.c4
-rw-r--r--sql/log.cc8
-rw-r--r--sql/sql_acl.cc6
-rw-r--r--sql/sql_connect.cc2
-rw-r--r--sql/sql_plugin.cc2
-rw-r--r--sql/sql_table.cc2
15 files changed, 42 insertions, 26 deletions
diff --git a/client/mysql.cc b/client/mysql.cc
index 548feb5a1c7..10e47c7edc7 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -3521,7 +3521,8 @@ print_table_data_vertically(MYSQL_RES *result)
for (uint off=0; off < mysql_num_fields(result); off++)
{
field= mysql_fetch_field(result);
- tee_fprintf(PAGER, "%*s: ",(int) max_length,field->name);
+ if (column_names)
+ tee_fprintf(PAGER, "%*s: ",(int) max_length,field->name);
if (cur[off])
{
unsigned int i;
diff --git a/client/mysqldump.c b/client/mysqldump.c
index aa81a0e98bf..4e39612b38d 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -808,7 +808,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
&err_ptr, &err_len);
if (err_len)
{
- strmake(buff, err_ptr, min(sizeof(buff), err_len));
+ strmake(buff, err_ptr, min(sizeof(buff) - 1, err_len));
fprintf(stderr, "Invalid mode to --compatible: %s\n", buff);
exit(1);
}
@@ -4452,7 +4452,7 @@ static ulong find_set(TYPELIB *lib, const char *x, uint length,
for (; pos != end && *pos != ','; pos++) ;
var_len= (uint) (pos - start);
- strmake(buff, start, min(sizeof(buff), var_len));
+ strmake(buff, start, min(sizeof(buff) - 1, var_len));
find= find_type(buff, lib, var_len);
if (!find)
{
diff --git a/include/config-win.h b/include/config-win.h
index 364c4f92134..17a0bd4bcac 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -165,7 +165,7 @@ typedef uint rf_SetTimer;
#define isnan(X) _isnan(X)
#define finite(X) _finite(X)
-#ifndef UNDEF_THREAD_HACK
+#ifndef MYSQL_CLIENT_NO_THREADS
#define THREAD
#endif
#define VOID_SIGHANDLER
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index 5533ccdf457..793e41b340e 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -409,7 +409,10 @@ my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
if (!passwd)
passwd="";
- /* Store user into the buffer */
+ /*
+ Store user into the buffer.
+ Advance position as strmake returns a pointer to the closing NUL.
+ */
end= strmake(end, user, USERNAME_LENGTH) + 1;
/* write scrambled password according to server capabilities */
@@ -897,7 +900,7 @@ mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
{
MYSQL_RES *result;
MYSQL_FIELD *fields;
- char buff[257],*end;
+ char buff[258],*end;
DBUG_ENTER("mysql_list_fields");
DBUG_PRINT("enter",("table: '%s' wild: '%s'",table,wild ? wild : ""));
@@ -1903,7 +1906,7 @@ mysql_stmt_param_metadata(MYSQL_STMT *stmt)
/* Store type of parameter in network buffer. */
-static void store_param_type(char **pos, MYSQL_BIND *param)
+static void store_param_type(unsigned char **pos, MYSQL_BIND *param)
{
uint typecode= param->buffer_type | (param->is_unsigned ? 32768 : 0);
int2store(*pos, typecode);
@@ -2182,7 +2185,7 @@ int cli_stmt_execute(MYSQL_STMT *stmt)
that is sent to the server.
*/
for (param= stmt->params; param < param_end ; param++)
- store_param_type((char**) &net->write_pos, param);
+ store_param_type(&net->write_pos, param);
}
for (param= stmt->params; param < param_end; param++)
diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result
index 8debb3a9414..3482c2bab93 100644
--- a/mysql-test/r/mysql.result
+++ b/mysql-test/r/mysql.result
@@ -231,4 +231,10 @@ a: b
</row>
</resultset>
drop table t1;
-End of 5.0 tests
+
+Bug #47147: mysql client option --skip-column-names does not apply to vertical output
+
+*************************** 1. row ***************************
+1
+
+End of tests
diff --git a/mysql-test/suite/rpl/t/rpl_killed_ddl.test b/mysql-test/suite/rpl/t/rpl_killed_ddl.test
index 0f2fe5b60fb..61b882efcf3 100644
--- a/mysql-test/suite/rpl/t/rpl_killed_ddl.test
+++ b/mysql-test/suite/rpl/t/rpl_killed_ddl.test
@@ -158,8 +158,7 @@ source include/kill_query_and_diff_master_slave.inc;
######## EVENT ########
-let $diff_statement= SELECT event_name, event_body, execute_at
- FROM information_schema.events where event_name like 'e%';
+let $diff_statement= SELECT event_name, event_body, execute_at FROM information_schema.events where event_name like 'e%';
send CREATE EVENT e2
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
diff --git a/mysql-test/t/lock_multi.test b/mysql-test/t/lock_multi.test
index 47b5aa0292b..4df1a0f3478 100644
--- a/mysql-test/t/lock_multi.test
+++ b/mysql-test/t/lock_multi.test
@@ -626,9 +626,11 @@ let $wait_condition=
--source include/wait_condition.inc
let $tlwb= `show status like 'Table_locks_waited'`;
unlock tables;
+connection waiter;
+--reap
+connection default;
drop table t1;
disconnect waiter;
-connection default;
--disable_query_log
eval SET @tlwa= SUBSTRING_INDEX('$tlwa', ' ', -1);
eval SET @tlwb= SUBSTRING_INDEX('$tlwb', ' ', -1);
diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test
index 8b30d9961d8..cf22a0008c5 100644
--- a/mysql-test/t/mysql.test
+++ b/mysql-test/t/mysql.test
@@ -412,5 +412,10 @@ insert into t1 values ('\0b\0');
--exec $MYSQL --xml test -e "select a from t1"
drop table t1;
+--echo
+--echo Bug #47147: mysql client option --skip-column-names does not apply to vertical output
+--echo
+--exec $MYSQL --skip-column-names --vertical test -e "select 1 as a"
---echo End of 5.0 tests
+--echo
+--echo End of tests
diff --git a/mysys/default.c b/mysys/default.c
index 6468cf2b35d..91a2728d009 100644
--- a/mysys/default.c
+++ b/mysys/default.c
@@ -679,7 +679,7 @@ static int search_default_file_with_ext(Process_option_func opt_handler,
int recursion_level)
{
char name[FN_REFLEN + 10], buff[4096], curr_gr[4096], *ptr, *end, **tmp_ext;
- char *value, option[4096], tmp[FN_REFLEN];
+ char *value, option[4096+2], tmp[FN_REFLEN];
static const char includedir_keyword[]= "includedir";
static const char include_keyword[]= "include";
const int max_recursion_level= 10;
diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c
index 9775a842b18..c13a5581b80 100644
--- a/mysys/mf_pack.c
+++ b/mysys/mf_pack.c
@@ -245,7 +245,7 @@ my_bool my_use_symdir=0; /* Set this if you want to use symdirs */
#ifdef USE_SYMDIR
void symdirget(char *dir)
{
- char buff[FN_REFLEN];
+ char buff[FN_REFLEN+1];
char *pos=strend(dir);
if (dir[0] && pos[-1] != FN_DEVCHAR && my_access(dir, F_OK))
{
@@ -257,7 +257,7 @@ void symdirget(char *dir)
*pos++=temp; *pos=0; /* Restore old filename */
if (file >= 0)
{
- if ((length= my_read(file, buff, sizeof(buff), MYF(0))) > 0)
+ if ((length= my_read(file, buff, sizeof(buff) - 1, MYF(0))) > 0)
{
for (pos= buff + length ;
pos > buff && (iscntrl(pos[-1]) || isspace(pos[-1])) ;
diff --git a/sql/log.cc b/sql/log.cc
index 6bda06c71d8..14329397b28 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -2433,7 +2433,7 @@ const char *MYSQL_LOG::generate_name(const char *log_name,
{
char *p= fn_ext(log_name);
uint length= (uint) (p - log_name);
- strmake(buff, log_name, min(length, FN_REFLEN));
+ strmake(buff, log_name, min(length, FN_REFLEN-1));
return (const char*)buff;
}
return log_name;
@@ -3683,7 +3683,7 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time)
if (stat_area.st_mtime < purge_time)
strmake(to_log,
log_info.log_file_name,
- sizeof(log_info.log_file_name));
+ sizeof(log_info.log_file_name) - 1);
else
break;
}
@@ -5089,11 +5089,11 @@ bool flush_error_log()
if (opt_error_log)
{
char err_renamed[FN_REFLEN], *end;
- end= strmake(err_renamed,log_error_file,FN_REFLEN-4);
+ end= strmake(err_renamed,log_error_file,FN_REFLEN-5);
strmov(end, "-old");
VOID(pthread_mutex_lock(&LOCK_error_log));
#ifdef __WIN__
- char err_temp[FN_REFLEN+4];
+ char err_temp[FN_REFLEN+5];
/*
On Windows is necessary a temporary file for to rename
the current error file.
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 4c24ef1dedd..cf9ee1407b1 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -1061,7 +1061,7 @@ int acl_getroot(THD *thd, USER_RESOURCES *mqh,
*mqh= acl_user->user_resource;
if (acl_user->host.hostname)
- strmake(sctx->priv_host, acl_user->host.hostname, MAX_HOSTNAME);
+ strmake(sctx->priv_host, acl_user->host.hostname, MAX_HOSTNAME - 1);
else
*sctx->priv_host= 0;
}
@@ -1162,7 +1162,7 @@ bool acl_getroot_no_password(Security_context *sctx, char *user, char *host,
sctx->priv_user= acl_user->user ? user : (char *) "";
if (acl_user->host.hostname)
- strmake(sctx->priv_host, acl_user->host.hostname, MAX_HOSTNAME);
+ strmake(sctx->priv_host, acl_user->host.hostname, MAX_HOSTNAME - 1);
else
*sctx->priv_host= 0;
}
@@ -3768,11 +3768,11 @@ static my_bool grant_reload_procs_priv(THD *thd)
DBUG_RETURN(TRUE);
}
+ rw_wrlock(&LOCK_grant);
/* Save a copy of the current hash if we need to undo the grant load */
old_proc_priv_hash= proc_priv_hash;
old_func_priv_hash= func_priv_hash;
- rw_wrlock(&LOCK_grant);
if ((return_val= grant_load_procs_priv(table.table)))
{
/* Error; Reverting to old hash */
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 959209df412..24150aba1e0 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -721,7 +721,7 @@ static int check_connection(THD *thd)
ulong server_capabilites;
{
/* buff[] needs to big enough to hold the server_version variable */
- char buff[SERVER_VERSION_LENGTH + SCRAMBLE_LENGTH + 64];
+ char buff[SERVER_VERSION_LENGTH + 1 + SCRAMBLE_LENGTH + 1 + 64];
server_capabilites= CLIENT_BASIC_FLAGS;
if (opt_using_transactions)
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 936c9ae8866..0eae22019a0 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -2081,7 +2081,7 @@ static int check_func_set(THD *thd, struct st_mysql_sys_var *var,
&error, &error_len, &not_used);
if (error_len)
{
- strmake(buff, error, min(sizeof(buff), error_len));
+ strmake(buff, error, min(sizeof(buff) - 1, error_len));
strvalue= buff;
goto err;
}
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index b648a9b933e..17f4c89b7fb 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -2610,7 +2610,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
!(sql_field->charset= get_charset_by_csname(sql_field->charset->csname,
MY_CS_BINSORT,MYF(0))))
{
- char tmp[64];
+ char tmp[65];
strmake(strmake(tmp, save_cs->csname, sizeof(tmp)-4),
STRING_WITH_LEN("_bin"));
my_error(ER_UNKNOWN_COLLATION, MYF(0), tmp);