diff options
author | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2009-12-23 16:42:05 +0300 |
---|---|---|
committer | Alexey Kopytov <Alexey.Kopytov@Sun.com> | 2009-12-23 16:42:05 +0300 |
commit | af74c3436f5ba44606dc3ffcf501001711ed06d0 (patch) | |
tree | 1552ff636d911fe038d671ee60e55406bdadbf35 | |
parent | d05c63f721c8aac027f5acab0339a86a4747be16 (diff) | |
parent | d332a1895282aa7b3786b8116ad89d93db8ddd6a (diff) | |
download | mariadb-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.cc | 3 | ||||
-rw-r--r-- | client/mysqldump.c | 4 | ||||
-rw-r--r-- | include/config-win.h | 2 | ||||
-rw-r--r-- | libmysql/libmysql.c | 11 | ||||
-rw-r--r-- | mysql-test/r/mysql.result | 8 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/rpl_killed_ddl.test | 3 | ||||
-rw-r--r-- | mysql-test/t/lock_multi.test | 4 | ||||
-rw-r--r-- | mysql-test/t/mysql.test | 7 | ||||
-rw-r--r-- | mysys/default.c | 2 | ||||
-rw-r--r-- | mysys/mf_pack.c | 4 | ||||
-rw-r--r-- | sql/log.cc | 8 | ||||
-rw-r--r-- | sql/sql_acl.cc | 6 | ||||
-rw-r--r-- | sql/sql_connect.cc | 2 | ||||
-rw-r--r-- | sql/sql_plugin.cc | 2 | ||||
-rw-r--r-- | sql/sql_table.cc | 2 |
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, ¬_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); |