From ff23273b7afe24ebc5927178895c18c97c01d3cf Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 17 May 2004 12:47:16 +0500 Subject: A fix (bug #3756: ISNULL(QUOTE()) returns 1 for every row after 1st NULL) --- sql/item_strfunc.cc | 1 + 1 file changed, 1 insertion(+) (limited to 'sql') diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index ac70ef2cbd3..5d017b3a27a 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2215,6 +2215,7 @@ String *Item_func_quote::val_str(String *str) } *to= '\''; str->length(new_length); + null_value= 0; return str; null: -- cgit v1.2.1 From cdf7471c2c504840bd6feb1e7c634a2d1ad8ed89 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 May 2004 22:59:43 +0400 Subject: Fix and test case for BUG#3649. mysql-test/r/handler.result: Test case for BUG#3649 mysql-test/t/handler.test: Test case for BUG#3649 sql/sql_handler.cc: Fix for BUG#3649: when doing an index scan for an equality condition, use index_next_same to retrieve subsequent rows. --- sql/sql_handler.cc | 68 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 29 deletions(-) (limited to 'sql') diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index a80b4040882..6f7bb319258 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -103,7 +103,7 @@ int mysql_ha_closeall(THD *thd, TABLE_LIST *tables) } static enum enum_ha_read_modes rkey_to_rnext[]= - { RNEXT, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV }; + { RKEY, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV }; int mysql_ha_read(THD *thd, TABLE_LIST *tables, @@ -151,6 +151,10 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, HANDLER_TABLES_HACK(thd); MYSQL_LOCK *lock=mysql_lock_tables(thd,&tables->table,1); HANDLER_TABLES_HACK(thd); + + byte *key= NULL; + uint key_len; + LINT_INIT(key_len); /* protected by key key variable */ if (!lock) goto err0; // mysql_lock_tables() printed error message already @@ -185,40 +189,46 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, break; case RKEY: { - DBUG_ASSERT(keyname != 0); - KEY *keyinfo=table->key_info+keyno; - KEY_PART_INFO *key_part=keyinfo->key_part; - uint key_len; - byte *key; - if (key_expr->elements > keyinfo->key_parts) + if (key) { - my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), - MYF(0),keyinfo->key_parts); - goto err; + /* Continue scan on "(keypart1,keypart2,...)=(c1, c2, ...) */ + err= table->file->index_next_same(table->record[0], key, key_len); } - List_iterator_fast it_ke(*key_expr); - Item *item; - for (key_len=0 ; (item=it_ke++) ; key_part++) + else { - if (item->fix_fields(thd, tables)) - goto err; - if (item->used_tables() & ~RAND_TABLE_BIT) + DBUG_ASSERT(keyname != 0); + KEY *keyinfo=table->key_info+keyno; + KEY_PART_INFO *key_part=keyinfo->key_part; + if (key_expr->elements > keyinfo->key_parts) { - my_error(ER_WRONG_ARGUMENTS,MYF(0),"HANDLER ... READ"); - goto err; + my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), + MYF(0),keyinfo->key_parts); + goto err; } - item->save_in_field(key_part->field, 1); - key_len+=key_part->store_length; - } - if (!(key= (byte*) thd->calloc(ALIGN_SIZE(key_len)))) - { - send_error(&thd->net,ER_OUTOFMEMORY); - goto err; + List_iterator_fast it_ke(*key_expr); + Item *item; + for (key_len=0 ; (item=it_ke++) ; key_part++) + { + if (item->fix_fields(thd, tables)) + goto err; + if (item->used_tables() & ~RAND_TABLE_BIT) + { + my_error(ER_WRONG_ARGUMENTS,MYF(0),"HANDLER ... READ"); + goto err; + } + item->save_in_field(key_part->field, 1); + key_len+=key_part->store_length; + } + if (!(key= (byte*) thd->calloc(ALIGN_SIZE(key_len)))) + { + send_error(&thd->net,ER_OUTOFMEMORY); + goto err; + } + key_copy(key, table, keyno, key_len); + err=table->file->index_read(table->record[0], + key,key_len,ha_rkey_mode); + mode=rkey_to_rnext[(int)ha_rkey_mode]; } - key_copy(key, table, keyno, key_len); - err=table->file->index_read(table->record[0], - key,key_len,ha_rkey_mode); - mode=rkey_to_rnext[(int)ha_rkey_mode]; break; } default: -- cgit v1.2.1 From ea44ccb00f770387bad01eff938866a38d013a75 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 19 May 2004 02:18:54 +0400 Subject: Fix for BUG33649: Post-review fixes sql/sql_class.h: Fix for BUG33649: Post-review fixes: added RNEXT_SAME sql/sql_handler.cc: Fix for BUG33649: Post-review fixes: added RNEXT_SAME --- sql/sql_class.h | 2 +- sql/sql_handler.cc | 68 ++++++++++++++++++++++++++---------------------------- 2 files changed, 34 insertions(+), 36 deletions(-) (limited to 'sql') diff --git a/sql/sql_class.h b/sql/sql_class.h index 83dc75e2b84..9663957963f 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -28,7 +28,7 @@ class Load_log_event; class Slave_log_event; enum enum_enable_or_disable { LEAVE_AS_IS, ENABLE, DISABLE }; -enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY }; +enum enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME }; enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_IGNORE }; enum enum_log_type { LOG_CLOSED, LOG_TO_BE_OPENED, LOG_NORMAL, LOG_NEW, LOG_BIN}; enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON, diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index 6f7bb319258..022ca76a0af 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -103,7 +103,7 @@ int mysql_ha_closeall(THD *thd, TABLE_LIST *tables) } static enum enum_ha_read_modes rkey_to_rnext[]= - { RKEY, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV }; + { RNEXT_SAME, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV }; int mysql_ha_read(THD *thd, TABLE_LIST *tables, @@ -152,9 +152,10 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, MYSQL_LOCK *lock=mysql_lock_tables(thd,&tables->table,1); HANDLER_TABLES_HACK(thd); - byte *key= NULL; + byte *key; uint key_len; - LINT_INIT(key_len); /* protected by key key variable */ + LINT_INIT(key); + LINT_INIT(key_len); if (!lock) goto err0; // mysql_lock_tables() printed error message already @@ -187,48 +188,45 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, DBUG_ASSERT(keyname != 0); err=table->file->index_prev(table->record[0]); break; + case RNEXT_SAME: + /* Continue scan on "(keypart1,keypart2,...)=(c1, c2, ...) */ + DBUG_ASSERT(keyname != 0); + err= table->file->index_next_same(table->record[0], key, key_len); + break; case RKEY: { - if (key) + DBUG_ASSERT(keyname != 0); + KEY *keyinfo=table->key_info+keyno; + KEY_PART_INFO *key_part=keyinfo->key_part; + if (key_expr->elements > keyinfo->key_parts) { - /* Continue scan on "(keypart1,keypart2,...)=(c1, c2, ...) */ - err= table->file->index_next_same(table->record[0], key, key_len); + my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), + MYF(0),keyinfo->key_parts); + goto err; } - else + List_iterator_fast it_ke(*key_expr); + Item *item; + for (key_len=0 ; (item=it_ke++) ; key_part++) { - DBUG_ASSERT(keyname != 0); - KEY *keyinfo=table->key_info+keyno; - KEY_PART_INFO *key_part=keyinfo->key_part; - if (key_expr->elements > keyinfo->key_parts) - { - my_printf_error(ER_TOO_MANY_KEY_PARTS,ER(ER_TOO_MANY_KEY_PARTS), - MYF(0),keyinfo->key_parts); + if (item->fix_fields(thd, tables)) goto err; - } - List_iterator_fast it_ke(*key_expr); - Item *item; - for (key_len=0 ; (item=it_ke++) ; key_part++) - { - if (item->fix_fields(thd, tables)) - goto err; - if (item->used_tables() & ~RAND_TABLE_BIT) - { - my_error(ER_WRONG_ARGUMENTS,MYF(0),"HANDLER ... READ"); - goto err; - } - item->save_in_field(key_part->field, 1); - key_len+=key_part->store_length; - } - if (!(key= (byte*) thd->calloc(ALIGN_SIZE(key_len)))) + if (item->used_tables() & ~RAND_TABLE_BIT) { - send_error(&thd->net,ER_OUTOFMEMORY); + my_error(ER_WRONG_ARGUMENTS,MYF(0),"HANDLER ... READ"); goto err; } - key_copy(key, table, keyno, key_len); - err=table->file->index_read(table->record[0], - key,key_len,ha_rkey_mode); - mode=rkey_to_rnext[(int)ha_rkey_mode]; + item->save_in_field(key_part->field, 1); + key_len+=key_part->store_length; + } + if (!(key= (byte*) thd->calloc(ALIGN_SIZE(key_len)))) + { + send_error(&thd->net,ER_OUTOFMEMORY); + goto err; } + key_copy(key, table, keyno, key_len); + err=table->file->index_read(table->record[0], + key,key_len,ha_rkey_mode); + mode=rkey_to_rnext[(int)ha_rkey_mode]; break; } default: -- cgit v1.2.1 From 458f07519c830ddc46d082246dad0ad7cb93f71c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 19 May 2004 16:42:29 +0400 Subject: Fix for Bug#3754 "SET GLOBAL myisam_max_sort_file_size doesn't work as expected": precision-losing conversion removed from sys_var_thd_ulonglong. mysql-test/r/variables.result: Test case for Bug#3754 mysql-test/t/variables.test: Test case for Bug#3754 sql/set_var.cc: Fix for Bug#3754: precision-losing conversion removed from sys_var_thd_ulonglong. --- sql/set_var.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sql') diff --git a/sql/set_var.cc b/sql/set_var.cc index eb94ad2ebf6..1657d0d0bcb 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -965,11 +965,11 @@ bool sys_var_thd_ulonglong::update(THD *thd, set_var *var) { ulonglong tmp= var->value->val_int(); - if ((ulonglong) tmp > max_system_variables.*offset) + if (tmp > max_system_variables.*offset) tmp= max_system_variables.*offset; if (option_limits) - tmp= (ulong) getopt_ull_limit_value(tmp, option_limits); + tmp= getopt_ull_limit_value(tmp, option_limits); if (var->type == OPT_GLOBAL) { /* Lock is needed to make things safe on 32 bit systems */ -- cgit v1.2.1 From 66c96f2c57edf8cff71734a8fa7fcba8b04f2f49 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 19 May 2004 15:03:32 +0200 Subject: Fix for BUG#3829 "Setting server_id on fly doesn't allow replication to start" (fix by our Harrison Fisk): when one does SET GLOBAL SERVER_ID=x, we must set server_id_supplied to 1. sql/mysql_priv.h: server_id_supplied must be here to be visible in set_var.cc sql/mysqld.cc: rephrasing warnings when server id is not set explicitely. sql/set_var.cc: when one does SET GLOBAL SERVER_ID=x; it should be considered as explicitely setting the server id, so do server_id_supplied=1. sql/slave.cc: Correcting wrong comment --- sql/mysql_priv.h | 2 +- sql/mysqld.cc | 10 +++++----- sql/set_var.cc | 7 ++++++- sql/slave.cc | 6 ++---- 4 files changed, 14 insertions(+), 11 deletions(-) (limited to 'sql') diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index d4fe5968eff..b03d98f4cb0 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -703,7 +703,7 @@ extern uint protocol_version,dropping_tables; extern uint delay_key_write_options, lower_case_table_names; extern bool opt_endinfo, using_udf_functions, locked_in_memory; extern bool opt_using_transactions, mysql_embedded; -extern bool using_update_log, opt_large_files; +extern bool using_update_log, opt_large_files, server_id_supplied; extern bool opt_log, opt_update_log, opt_bin_log, opt_slow_log, opt_error_log; extern bool opt_disable_networking, opt_skip_show_db; extern bool volatile abort_loop, shutdown_in_progress, grant_option; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c1ea29caa88..8e5a2745f72 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2354,15 +2354,15 @@ You should consider changing lower_case_table_names to 1 or 2", #ifdef EXTRA_DEBUG case 1: sql_print_error("\ -Warning: You have enabled the binary log, but you haven't set server-id:\n\ -Updates will be logged to the binary log, but connections to slaves will\n\ -not be accepted."); +Warning: You have enabled the binary log, but you haven't set server-id to \ +a non-zero value: we force server id to 1; updates will be logged to the \ +binary log, but connections from slaves will not be accepted."); break; #endif case 2: sql_print_error("\ -Warning: You should set server-id to a non-0 value if master_host is set.\n\ -The server will not act as a slave."); +Warning: You should set server-id to a non-0 value if master_host is set; \ +we force server id to 2, but this MySQL server will not act as a slave."); break; } } diff --git a/sql/set_var.cc b/sql/set_var.cc index eb94ad2ebf6..56208023d94 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -90,6 +90,7 @@ static void fix_max_relay_log_size(THD *thd, enum_var_type type); static void fix_max_connections(THD *thd, enum_var_type type); static void fix_thd_mem_root(THD *thd, enum_var_type type); static void fix_trans_mem_root(THD *thd, enum_var_type type); +static void fix_server_id(THD *thd, enum_var_type type); /* Variable definition list @@ -235,7 +236,7 @@ sys_var_thd_bool sys_query_cache_wlock_invalidate("query_cache_wlock_invalidate", &SV::query_cache_wlock_invalidate); #endif /* HAVE_QUERY_CACHE */ -sys_var_long_ptr sys_server_id("server_id",&server_id); +sys_var_long_ptr sys_server_id("server_id", &server_id, fix_server_id); sys_var_bool_ptr sys_slave_compressed_protocol("slave_compressed_protocol", &opt_slave_compressed_protocol); sys_var_long_ptr sys_slave_net_timeout("slave_net_timeout", @@ -811,6 +812,10 @@ static void fix_trans_mem_root(THD *thd, enum_var_type type) thd->variables.trans_prealloc_size); } +static void fix_server_id(THD *thd, enum_var_type type) +{ + server_id_supplied = 1; +} bool sys_var_long_ptr::update(THD *thd, set_var *var) { diff --git a/sql/slave.cc b/sql/slave.cc index c7a7dac141a..be60b5e6217 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -143,13 +143,11 @@ int init_slave() goto err; } - /* - make sure slave thread gets started if server_id is set, - valid master.info is present, and master_host has not been specified - */ if (server_id && !master_host && active_mi->host[0]) master_host= active_mi->host; + /* If server id is not set, start_slave_thread() will say it */ + if (master_host && !opt_skip_slave_start) { if (start_slave_threads(1 /* need mutex */, -- cgit v1.2.1 From 2d67f1e0cf5270f37816669bc8d7e606abce1469 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 19 May 2004 16:38:12 +0300 Subject: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' Ensured that all projects compile Removed compiler warnings Better setting of server_version variable. Fix that make_win_src_distribution creates the privilege tables. VC++Files/bdb/bdb.dsp: Small, automatic changes VC++Files/client/mysql.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/client/mysqladmin.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/client/mysqlclient.dsp: Removed files that should only be used with mysql command line client VC++Files/client/mysqldump.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/client/mysqlimport.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/client/mysqlshow.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/comp_err/comp_err.dsp: Automatic changes VC++Files/dbug/dbug.dsp: Automatic changes VC++Files/heap/heap.dsp: automatic changes VC++Files/innobase/innobase.dsp: Automatic changes VC++Files/isam/isam.dsp: Automatic changes VC++Files/isamchk/isamchk.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/libmysql/libmysql.dsp: Automatic changes VC++Files/libmysqld/examples/test_libmysqld.dsp: Add missing files VC++Files/libmysqld/libmysqld.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/libmysqltest/myTest.dsp: Automatic changes VC++Files/merge/merge.dsp: Automatic changes VC++Files/my_print_defaults/my_print_defaults.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/myisam/myisam.dsp: automatic changes VC++Files/myisam_ftdump/myisam_ftdump.dsp: automatic changes VC++Files/myisamchk/myisamchk.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/myisamlog/myisamlog.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/myisammrg/myisammrg.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/myisampack/myisampack.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/mysql.dsw: Automatic changes VC++Files/mysqlbinlog/mysqlbinlog.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/mysqlcheck/mysqlcheck.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/mysqldemb/mysqldemb.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/mysqlserver/mysqlserver.dsp: Automatic changes VC++Files/mysqlshutdown/mysqlshutdown.dsp: Automatic changes VC++Files/mysqlwatch/mysqlwatch.dsp: Automatic changes VC++Files/mysys/mysys.dsp: Automatic changes VC++Files/pack_isam/pack_isam.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/perror/perror.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/regex/regex.dsp: Automatic changes VC++Files/replace/replace.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/sql/mysqld.dsp: Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt' VC++Files/strings/strings.dsp: Removed duplicate code for strnlen VC++Files/test1/test1.dsp: Automatic changes VC++Files/thr_test/thr_test.dsp: Automatic changes VC++Files/vio/vio.dsp: Automatic changes VC++Files/zlib/contrib/asm386/zlibvc.dsp: Automatic changes VC++Files/zlib/zlib.dsp: Automatic changes extra/my_print_defaults.c: Fixed bug in --verbose include/m_string.h: Portability fix include/mysql_embed.h: Better setting of server_version variable include/mysql_version.h.in: Better license text handling innobase/pars/pars0lex.l: Remove compiler warnings innobase/trx/trx0sys.c: Remove compiler warnings libmysqld/lib_sql.cc: Better setting of server_version variable libmysqld/libmysqld.def: Add functions needed for mysql command line client myisam/myisam_ftdump.c: Remove compiler warnings mysys/sha1.c: Remove compiler warnings scripts/make_win_src_distribution.sh: Safety fix scripts/mysql_install_db.sh: Backport from 4.1 to allow make_win_src_distribution create the privilege tables sql/Makefile.am: Add new file mysqld_suffix.h Remove not used file sql_olap.h sql/ha_innodb.cc: Remove not used variable sql/mysqld.cc: Better setting of server_version variable sql/set_var.cc: Fixed bug when showing lower_case_file_system strings/ctype-tis620.c: Remove compiler warnings --- sql/Makefile.am | 4 ++-- sql/ha_innodb.cc | 1 - sql/mysqld.cc | 54 +++++++++++++++++++++++++++++------------------------ sql/mysqld_suffix.h | 38 +++++++++++++++++++++++++++++++++++++ sql/set_var.cc | 4 +--- 5 files changed, 71 insertions(+), 30 deletions(-) create mode 100644 sql/mysqld_suffix.h (limited to 'sql') diff --git a/sql/Makefile.am b/sql/Makefile.am index e2494e50d96..f3751eabd25 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -49,7 +49,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ item_create.h mysql_priv.h \ procedure.h sql_class.h sql_lex.h sql_list.h \ sql_manager.h sql_map.h sql_string.h unireg.h \ - field.h handler.h \ + field.h handler.h mysqld_suffix.h \ ha_isammrg.h ha_isam.h ha_myisammrg.h\ ha_heap.h ha_myisam.h ha_berkeley.h ha_innodb.h \ opt_range.h opt_ft.h \ @@ -81,7 +81,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc \ sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \ slave.cc sql_repl.cc sql_union.cc \ mini_client.cc mini_client_errors.c \ - stacktrace.c repl_failsafe.h repl_failsafe.cc sql_olap.cc + stacktrace.c repl_failsafe.h repl_failsafe.cc gen_lex_hash_SOURCES = gen_lex_hash.cc gen_lex_hash_LDADD = $(LDADD) $(CXXLDFLAGS) diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 4a50e2d8ccf..dee34b47ccb 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -4671,7 +4671,6 @@ innodb_show_status( THD* thd) /* in: the MySQL query thread of the caller */ { String* packet = &thd->packet; - char* buf; trx_t* trx; DBUG_ENTER("innodb_show_status"); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index c1ea29caa88..20836038131 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -22,6 +22,7 @@ #include "sql_repl.h" #include "repl_failsafe.h" #include "stacktrace.h" +#include "mysqld_suffix.h" #ifdef HAVE_BERKELEY_DB #include "ha_berkeley.h" #endif @@ -202,22 +203,6 @@ static int opt_argc; static char **opt_argv; #endif -/* Set prefix for windows binary */ -#ifdef __WIN__ -#undef MYSQL_SERVER_SUFFIX -#ifdef __NT__ -#if defined(HAVE_BERKELEY_DB) -#define MYSQL_SERVER_SUFFIX "-max-nt" -#else -#define MYSQL_SERVER_SUFFIX "-nt" -#endif /* ...DB */ -#elif defined(HAVE_BERKELEY_DB) -#define MYSQL_SERVER_SUFFIX "-max" -#else -#define MYSQL_SERVER_SUFFIX "" -#endif /* __NT__ */ -#endif /* __WIN__ */ - #ifdef HAVE_BERKELEY_DB SHOW_COMP_OPTION have_berkeley_db=SHOW_OPTION_YES; #else @@ -420,7 +405,7 @@ bool mysql_embedded=1; static char *opt_bin_logname = 0; char *opt_relay_logname = 0, *opt_relaylog_index_name=0; -char server_version[SERVER_VERSION_LENGTH]=MYSQL_SERVER_VERSION; +char server_version[SERVER_VERSION_LENGTH]; const char *first_keyword="first"; const char **errmesg; /* Error messages */ const char *myisam_recover_options_str="OFF"; @@ -485,6 +470,7 @@ static void start_signal_handler(void); extern "C" pthread_handler_decl(signal_hand, arg); static void set_options(void); static void get_options(int argc,char **argv); +static void set_server_version(void); static char *get_relative_path(const char *path); static void fix_paths(void); extern "C" pthread_handler_decl(handle_connections_sockets,arg); @@ -2037,11 +2023,7 @@ int main(int argc, char **argv) strmov(glob_hostname,"mysql"); strmake(pidfile_name, glob_hostname, sizeof(pidfile_name)-5); strmov(fn_ext(pidfile_name),".pid"); // Add proper extension -#ifndef DBUG_OFF - strxmov(strend(server_version),MYSQL_SERVER_SUFFIX,"-debug",NullS); -#else - strmov(strend(server_version),MYSQL_SERVER_SUFFIX); -#endif + #ifdef _CUSTOMSTARTUPCONFIG_ if (_cust_check_startup()) { @@ -2065,8 +2047,8 @@ int main(int argc, char **argv) set_options(); get_options(argc,argv); - if (opt_log || opt_update_log || opt_slow_log || opt_bin_log) - strcat(server_version,"-log"); + set_server_version(); + DBUG_PRINT("info",("%s Ver %s for %s on %s\n",my_progname, server_version, SYSTEM_TYPE,MACHINE_TYPE)); @@ -4330,6 +4312,7 @@ struct show_var_st status_vars[]= { static void print_version(void) { + set_server_version(); printf("%s Ver %s for %s on %s (%s)\n",my_progname, server_version,SYSTEM_TYPE,MACHINE_TYPE, MYSQL_COMPILATION_COMMENT); } @@ -4944,6 +4927,29 @@ static void get_options(int argc,char **argv) } +/* + Create version name for running mysqld version + We automaticly add suffixes -debug, -embedded and -log to the version + name to make the version more descriptive. + (MYSQL_SERVER_SUFFIX is set by the compilation environment) +*/ + +static void set_server_version(void) +{ + char *end= strxmov(server_version, MYSQL_SERVER_VERSION, + MYSQL_SERVER_SUFFIX, NullS); +#ifdef EMBEDDED_LIBRARY + end= strmov(end, "-embedded"); +#endif +#ifndef DBUG_OFF + if (!strstr(MYSQL_SERVER_SUFFIX, "-debug")) + end= strmov(end, "-debug"); +#endif + if (opt_log || opt_update_log || opt_slow_log || opt_bin_log) + strmov(end, "-log"); // This may slow down system +} + + static char *get_relative_path(const char *path) { if (test_if_hard_path(path) && diff --git a/sql/mysqld_suffix.h b/sql/mysqld_suffix.h new file mode 100644 index 00000000000..502cdeed75f --- /dev/null +++ b/sql/mysqld_suffix.h @@ -0,0 +1,38 @@ +/* Copyright (C) 2000-2004 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +/* + Set MYSQL_SERVER_SUFFIX + The following code is quite ugly as there is no portable way to set a + string to the value of a macro +*/ + +#if defined(MYSQL_SERVER_SUFFIX_NT) +#undef MYSQL_SERVER_SUFFIX +#define MYSQL_SERVER_SUFFIX "-nt" +#elif defined(MYSQL_SERVER_SUFFIX_MAX) +#undef MYSQL_SERVER_SUFFIX +#define MYSQL_SERVER_SUFFIX "-max" +#elif defined(MYSQL_SERVER_SUFFIX_NT_MAX) +#undef MYSQL_SERVER_SUFFIX +#define MYSQL_SERVER_SUFFIX "-nt-max" +#elif defined(MYSQL_SERVER_SUFFIX_PRO) +#undef MYSQL_SERVER_SUFFIX +#define MYSQL_SERVER_SUFFIX "-pro" +#elif defined(MYSQL_SERVER_SUFFIX_PRO_NT) +#undef MYSQL_SERVER_SUFFIX +#define MYSQL_SERVER_SUFFIX "-pro-nt" +#endif diff --git a/sql/set_var.cc b/sql/set_var.cc index eb94ad2ebf6..da4734d766c 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -342,8 +342,6 @@ sys_var_const_str sys_os("version_compile_os", SYSTEM_TYPE); sys_var_const_str sys_license("license", LICENSE); - - /* List of all variables for initialisation and storage in hash This is sorted in alphabetical order to make it easy to add new variables @@ -540,7 +538,7 @@ struct show_var_st init_vars[]= { {sys_log_warnings.name, (char*) &sys_log_warnings, SHOW_SYS}, {sys_long_query_time.name, (char*) &sys_long_query_time, SHOW_SYS}, {sys_low_priority_updates.name, (char*) &sys_low_priority_updates, SHOW_SYS}, - {"lower_case_file_system", (char*) &lower_case_file_system, SHOW_BOOL}, + {"lower_case_file_system", (char*) &lower_case_file_system, SHOW_MY_BOOL}, {"lower_case_table_names", (char*) &lower_case_table_names, SHOW_INT}, {sys_max_allowed_packet.name,(char*) &sys_max_allowed_packet, SHOW_SYS}, {sys_max_binlog_cache_size.name,(char*) &sys_max_binlog_cache_size, SHOW_SYS}, -- cgit v1.2.1 From 406a5fa7cd48d9bb51e513bd5040a7c3499553cc Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 24 May 2004 14:42:34 +0300 Subject: After merge fixes Remove compiler warnings Update windows project files VC++Files/innobase/innobase.dsp: Update project files after merge VC++Files/libmysqld/examples/test_libmysqld.dsp: Update project files after merge VC++Files/libmysqld/libmysqld.dsp: Update project files after merge VC++Files/myisamchk/myisamchk.dsp: Update project files after merge VC++Files/myisamlog/myisamlog.dsp: Update project files after merge VC++Files/myisampack/myisampack.dsp: Update project files after merge VC++Files/mysqldemb/mysqldemb.dsp: Update project files after merge VC++Files/sql/mysqld.dsp: Update project files after merge VC++Files/strings/strings.dsp: Update project files after merge innobase/include/data0data.ic: Fix compiler warning innobase/include/mem0pool.h: Remove reference to not existing variable (after merge fix) innobase/srv/srv0srv.c: Remove reference to not existing variable (after merge fix) libmysqld/libmysqld.def: Add function used by test programs mysql-test/r/func_str.result: After merge fixes mysql-test/r/variables.result: After merge fixes mysql-test/t/variables.test: After merge fixes sql/discover.cc: Remove not used lable sql/opt_range.cc: Removed compiler warnings strings/ctype-tis620.c: After merge fixes --- sql/discover.cc | 1 - sql/opt_range.cc | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'sql') diff --git a/sql/discover.cc b/sql/discover.cc index e260f44a8db..696be193148 100644 --- a/sql/discover.cc +++ b/sql/discover.cc @@ -159,7 +159,6 @@ int create_table_from_handler(const char *db, error = writefrm(path, frmblob, frmlen); } - err: if (frmblob) my_free((char*) frmblob,MYF(0)); DBUG_RETURN(error); diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 3cc64c35223..ddedf4ca3f0 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -2313,7 +2313,7 @@ check_quick_keys(PARAM *param,uint idx,SEL_ARG *key_tree, min_range.length= min_key_length; min_range.flag= (tmp_min_flag & NEAR_MIN ? HA_READ_AFTER_KEY : HA_READ_KEY_EXACT); - max_range.key= param->max_key; + max_range.key= (byte*) param->max_key; max_range.length= max_key_length; max_range.flag= (tmp_max_flag & NEAR_MAX ? HA_READ_BEFORE_KEY : HA_READ_AFTER_KEY); @@ -2826,7 +2826,8 @@ int QUICK_SELECT_DESC::cmp_prev(QUICK_RANGE *range_arg) if (range_arg->flag & NO_MIN_RANGE) return 0; /* key can't be to small */ - cmp= key_cmp(key_part_info, range_arg->min_key, range_arg->min_length); + cmp= key_cmp(key_part_info, (byte*) range_arg->min_key, + range_arg->min_length); if (cmp > 0 || cmp == 0 && !(range_arg->flag & NEAR_MIN)) return 0; return 1; // outside of range -- cgit v1.2.1