diff options
author | monty@donna.mysql.com <> | 2000-12-26 17:35:48 +0200 |
---|---|---|
committer | monty@donna.mysql.com <> | 2000-12-26 17:35:48 +0200 |
commit | 988a98c39315c53d47e28b79ef88f0a0b7ac4287 (patch) | |
tree | 7d5482b675df974ad486aff70513b273b718fe60 /sql | |
parent | 384b371bd293c1038ff62237bf82ab39300290ca (diff) | |
parent | a12c1ffb9a738ac986e3106542b82a54a0a49a39 (diff) | |
download | mariadb-git-988a98c39315c53d47e28b79ef88f0a0b7ac4287.tar.gz |
Merge work:/my/mysql into donna.mysql.com:/home/my/bk/mysql
Diffstat (limited to 'sql')
-rw-r--r-- | sql/gen_lex_hash.cc | 2 | ||||
-rw-r--r-- | sql/mysql_priv.h | 2 | ||||
-rw-r--r-- | sql/mysqld.cc | 48 | ||||
-rw-r--r-- | sql/sql_show.cc | 25 | ||||
-rw-r--r-- | sql/structs.h | 4 |
5 files changed, 68 insertions, 13 deletions
diff --git a/sql/gen_lex_hash.cc b/sql/gen_lex_hash.cc index e77081c64a0..97a3bc6f518 100644 --- a/sql/gen_lex_hash.cc +++ b/sql/gen_lex_hash.cc @@ -472,7 +472,7 @@ int main(int argc,char **argv) int error; MY_INIT(argv[0]); - start_value=5206280L; best_t1=590774L; best_t2=5977654L; best_type=1; /* mode=6229 add=2 func_type: 0 */ + start_value=5307411L; best_t1=4597287L; best_t2=3375760L; best_type=1; /* mode=4783 add=5 func_type: 0 */ if (get_options(argc,(char **) argv)) exit(1); diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 2f171259699..6ce43d6a560 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -520,7 +520,7 @@ extern ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size, binlog_cache_size, max_binlog_cache_size; extern ulong specialflag, current_pid; extern bool low_priority_updates; -extern bool opt_sql_bin_update; +extern bool opt_sql_bin_update, opt_safe_show_db; extern char language[LIBLEN],reg_ext[FN_EXTLEN],blob_newline; extern const char **errmesg; /* Error messages */ extern byte last_ref[MAX_REFLENGTH]; /* Index ref of keys */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index d214bf46533..d48171d49be 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -146,6 +146,33 @@ static uint handler_count; static bool opt_console=0; #endif +#ifdef HAVE_BERKELEY_DB +SHOW_COMP_OPTION have_berkeley_db=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_berkeley_db=SHOW_OPTION_NO; +#endif +#ifdef HAVE_GEMENI_DB +SHOW_COMP_OPTION have_gemeni=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_gemeni=SHOW_OPTION_NO; +#endif +#ifdef HAVE_INNOBASE_DB +SHOW_COMP_OPTION have_innobase=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_innobase=SHOW_OPTION_NO; +#endif +#ifdef USE_RAID +SHOW_COMP_OPTION have_raid=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_raid=SHOW_OPTION_NO; +#endif +#ifdef HAVE_OPENSSL +SHOW_COMP_OPTION have_ssl=SHOW_OPTION_YES; +#else +SHOW_COMP_OPTION have_ssl=SHOW_OPTION_NO; +#endif + + static bool opt_skip_slave_start = 0; // if set, slave is not autostarted static ulong opt_specialflag=SPECIAL_ENGLISH; static my_socket unix_sock= INVALID_SOCKET,ip_sock= INVALID_SOCKET; @@ -155,9 +182,10 @@ static my_string opt_logname=0,opt_update_logname=0, static char mysql_home[FN_REFLEN],pidfile_name[FN_REFLEN]; static pthread_t select_thread; static bool opt_log,opt_update_log,opt_bin_log,opt_slow_log,opt_noacl, - opt_disable_networking=0, opt_bootstrap=0,opt_skip_show_db=0, - opt_ansi_mode=0,opt_myisam_log=0, opt_large_files=sizeof(my_off_t) > 4; -bool opt_sql_bin_update = 0, opt_log_slave_updates = 0; + opt_disable_networking=0, opt_bootstrap=0,opt_skip_show_db=0, + opt_ansi_mode=0,opt_myisam_log=0, + opt_large_files=sizeof(my_off_t) > 4; +bool opt_sql_bin_update = 0, opt_log_slave_updates = 0, opt_safe_show_db=0; FILE *bootstrap_file=0; int segfaulted = 0; // ensure we do not enter SIGSEGV handler twice extern MASTER_INFO glob_mi; @@ -2322,7 +2350,7 @@ enum options { OPT_INNOBASE_DATA_HOME_DIR,OPT_INNOBASE_DATA_FILE_PATH, OPT_INNOBASE_LOG_GROUP_HOME_DIR, OPT_INNOBASE_LOG_ARCH_DIR, OPT_INNOBASE_LOG_ARCHIVE, - OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT + OPT_INNOBASE_FLUSH_LOG_AT_TRX_COMMIT, OPT_SAFE_SHOW_DB }; static struct option long_options[] = { @@ -2424,6 +2452,7 @@ static struct option long_options[] = { {"replicate-rewrite-db", required_argument, 0, (int) OPT_REPLICATE_REWRITE_DB}, {"safe-mode", no_argument, 0, (int) OPT_SAFE}, + {"safe-show-database", no_argument, 0, (int) OPT_SAFE_SHOW_DB}, {"socket", required_argument, 0, (int) OPT_SOCKET}, {"server-id", required_argument, 0, (int) OPT_SERVER_ID}, {"set-variable", required_argument, 0, 'O'}, @@ -2593,6 +2622,11 @@ struct show_var_st init_vars[]= { {"delayed_queue_size", (char*) &delayed_queue_size, SHOW_LONG}, {"flush", (char*) &myisam_flush, SHOW_MY_BOOL}, {"flush_time", (char*) &flush_time, SHOW_LONG}, + {"have_bdb", (char*) &have_berkeley_db, SHOW_HAVE}, + {"have_gemeni", (char*) &have_gemeni, SHOW_HAVE}, + {"have_innobase", (char*) &have_innobase, SHOW_HAVE}, + {"have_raid", (char*) &have_raid, SHOW_HAVE}, + {"have_ssl", (char*) &have_ssl, SHOW_HAVE}, {"init_file", (char*) &opt_init_file, SHOW_CHAR_PTR}, {"interactive_timeout", (char*) &net_interactive_timeout, SHOW_LONG}, {"join_buffer_size", (char*) &join_buff_size, SHOW_LONG}, @@ -2631,6 +2665,7 @@ struct show_var_st init_vars[]= { {"protocol_version", (char*) &protocol_version, SHOW_INT}, {"record_buffer", (char*) &my_default_record_cache_size,SHOW_LONG}, {"query_buffer_size", (char*) &query_buff_size, SHOW_LONG}, + {"safe_show_database", (char*) &opt_safe_show_db, SHOW_BOOL}, {"server_id", (char*) &server_id, SHOW_LONG}, {"skip_locking", (char*) &my_disable_locking, SHOW_MY_BOOL}, {"skip_networking", (char*) &opt_disable_networking, SHOW_BOOL}, @@ -3347,11 +3382,13 @@ static void get_options(int argc,char **argv) break; case OPT_BDB_SKIP: berkeley_skip=1; + have_berkeley_db=SHOW_OPTION_DISABLED; break; #endif #ifdef HAVE_INNOBASE_DB case OPT_INNOBASE_SKIP: innobase_skip=1; + have_innobase_db=SHOW_HAVE_DISABLED; break; case OPT_INNOBASE_DATA_HOME_DIR: innobase_data_home_dir=optarg; @@ -3410,6 +3447,9 @@ static void get_options(int argc,char **argv) case OPT_MASTER_CONNECT_RETRY: master_connect_retry= atoi(optarg); break; + case (int) OPT_SAFE_SHOW_DB: + opt_safe_show_db=1; + break; default: fprintf(stderr,"%s: Unrecognized option: %c\n",my_progname,c); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 1d4bdffeb61..ed373f58b00 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -21,8 +21,6 @@ #include "sql_select.h" // For select_describe #include "sql_acl.h" #include <my_dir.h> -#undef USE_RAID -#define USE_RAID #ifdef HAVE_BERKELEY_DB #include "ha_berkeley.h" // For berkeley_show_logs @@ -77,10 +75,17 @@ mysqld_show_dbs(THD *thd,const char *wild) List_iterator<char> it(files); while ((file_name=it++)) { - thd->packet.length(0); - net_store_data(&thd->packet,file_name); - if (my_net_write(&thd->net,(char*) thd->packet.ptr(),thd->packet.length())) - DBUG_RETURN(-1); + if (!opt_safe_show_db || thd->master_access || + acl_get(thd->host, thd->ip, (char*) &thd->remote.sin_addr, + thd->priv_user, file_name) || + (grant_option && !check_grant_db(thd, file_name))) + { + thd->packet.length(0); + net_store_data(&thd->packet,file_name); + if (my_net_write(&thd->net, (char*) thd->packet.ptr(), + thd->packet.length())) + DBUG_RETURN(-1); + } } send_eof(&thd->net); DBUG_RETURN(0); @@ -1088,6 +1093,14 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables) case SHOW_INT: net_store_data(&packet2,(uint32) *(int*) variables[i].value); break; + case SHOW_HAVE: + { + SHOW_COMP_OPTION tmp= *(SHOW_COMP_OPTION*) variables[i].value; + net_store_data(&packet2, (tmp == SHOW_OPTION_NO ? "NO" : + tmp == SHOW_OPTION_YES ? "YES" : + "DISABLED")); + break; + } case SHOW_CHAR: net_store_data(&packet2,variables[i].value); break; diff --git a/sql/structs.h b/sql/structs.h index f1db62f5d9e..36f503312c0 100644 --- a/sql/structs.h +++ b/sql/structs.h @@ -125,7 +125,9 @@ typedef struct { enum SHOW_TYPE { SHOW_LONG,SHOW_CHAR,SHOW_INT,SHOW_CHAR_PTR,SHOW_BOOL, SHOW_MY_BOOL,SHOW_OPENTABLES,SHOW_STARTTIME,SHOW_QUESTION, - SHOW_LONG_CONST, SHOW_INT_CONST}; + SHOW_LONG_CONST, SHOW_INT_CONST, SHOW_HAVE}; + +enum SHOW_COMP_OPTION { SHOW_OPTION_YES, SHOW_OPTION_NO, SHOW_OPTION_DISABLED}; struct show_var_st { const char *name; |