summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormonty@donna.mysql.com <>2000-12-26 17:35:48 +0200
committermonty@donna.mysql.com <>2000-12-26 17:35:48 +0200
commit988a98c39315c53d47e28b79ef88f0a0b7ac4287 (patch)
tree7d5482b675df974ad486aff70513b273b718fe60
parent384b371bd293c1038ff62237bf82ab39300290ca (diff)
parenta12c1ffb9a738ac986e3106542b82a54a0a49a39 (diff)
downloadmariadb-git-988a98c39315c53d47e28b79ef88f0a0b7ac4287.tar.gz
Merge work:/my/mysql into donna.mysql.com:/home/my/bk/mysql
-rw-r--r--.bzrignore2
-rw-r--r--Docs/manual.texi279
-rw-r--r--sql/gen_lex_hash.cc2
-rw-r--r--sql/mysql_priv.h2
-rw-r--r--sql/mysqld.cc48
-rw-r--r--sql/sql_show.cc25
-rw-r--r--sql/structs.h4
7 files changed, 262 insertions, 100 deletions
diff --git a/.bzrignore b/.bzrignore
index 47b47611d1d..6d77ebb79c8 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -181,3 +181,5 @@ mysql-test/mysql-test-run
BitKeeper/tmp/gone
mysqld.S
mysqld.sym
+.snprj/*
+sql-bench/output/*
diff --git a/Docs/manual.texi b/Docs/manual.texi
index cd13813eba3..8d3e037728d 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -135,6 +135,7 @@ version see the relevant distribution.
* MySQL internals:: @strong{MySQL} internals
* Environment variables:: @strong{MySQL} environment variables
* Users:: Some @strong{MySQL} users
+* MySQL customer usage::
* Contrib:: Contributed programs
* Credits:: Contributors to @strong{MySQL}
* News:: @strong{MySQL} change history
@@ -192,7 +193,7 @@ Example Licensing Situations
* ISP:: ISP @strong{MySQL} services
* Web server:: Running a web server using @strong{MySQL}.
-@strong{MySQL} Licensing and Support Costs
+MySQL Licensing and Support Costs
* Payment information:: Payment information
* Contact information:: Contact information
@@ -222,7 +223,7 @@ Installing MySQL
* OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing
-* Upgrade:: Upgrading/downgrading @strong{MySQL}
+* Upgrade:: Upgrading/Downgrading MySQL
Installing a MySQL Binary Distribution
@@ -828,6 +829,7 @@ Credits
* Developers::
* Contributors::
+* Supporters::
MySQL change history
@@ -876,7 +878,7 @@ Changes in release 3.23.x (Recommended; Gamma)
* News-3.23.1:: Changes in release 3.23.1
* News-3.23.0:: Changes in release 3.23.0
-Changes in release 3.22.x
+Changes in release 3.22.x (Older; Still supported)
* News-3.22.35:: Changes in release 3.22.35
* News-3.22.34:: Changes in release 3.22.34
@@ -1814,7 +1816,8 @@ In-memory hash tables which are used as temporary tables.
@item
Handles large databases. We are using @strong{MySQL} with some
-databases that contain 50,000,000 records.
+databases that contain 50,000,000 records and we know of users that
+uses @code{MySQL} with 60,000 tables and about 5,000,000,000 rows
@item
All columns have default values. You can use @code{INSERT} to insert a
@@ -9465,16 +9468,13 @@ section in this manual. @xref{SHOW VARIABLES}.
The tuning server parameters section includes information of how to optimize
these. @xref{Server parameters}.
-@item -Sg, --skip-grant-tables
-This option causes the server not to use the privilege system at all. This
-gives everyone @emph{full access} to all databases! (You can tell a running
-server to start using the grant tables again by executing @code{mysqladmin
-flush-privileges} or @code{mysqladmin reload}.)
-
@item --safe-mode
Skip some optimize stages.
Implies @code{--skip-delay-key-write}.
+@item --safe-show-database
+Don't show databases for which the user doesn't have any privileges.
+
@item --secure
IP numbers returned by the @code{gethostbyname()} system call are
checked to make sure they resolve back to the original hostname. This
@@ -9494,6 +9494,12 @@ in this feature).
Ignore the @code{delay_key_write} option for all tables.
@xref{Server parameters}.
+@item -Sg, --skip-grant-tables
+This option causes the server not to use the privilege system at all. This
+gives everyone @emph{full access} to all databases! (You can tell a running
+server to start using the grant tables again by executing @code{mysqladmin
+flush-privileges} or @code{mysqladmin reload}.)
+
@item --skip-locking
Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must
shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version
@@ -20242,72 +20248,85 @@ The output resembles that shown below, though the format and numbers may
differ somewhat:
@example
-+-------------------------+---------------------------------+
-| Variable_name | Value |
-+-------------------------+---------------------------------+
-| ansi_mode | OFF |
-| back_log | 50 |
-| basedir | /usr/local/mysql/ |
-| bdb_cache_size | 1048540 |
-| bdb_home | /usr/local/mysql/data/ |
-| bdb_logdir | |
-| bdb_tmpdir | /tmp/ |
-| binlog_cache_size | 32768 |
-| character_set | latin1 |
-| character_sets | latin1 |
-| connect_timeout | 5 |
-| concurrent_insert | ON |
-| datadir | /usr/local/mysql/data/ |
-| delay_key_write | ON |
-| delayed_insert_limit | 100 |
-| delayed_insert_timeout | 300 |
-| delayed_queue_size | 1000 |
-| join_buffer_size | 131072 |
-| flush | OFF |
-| flush_time | 0 |
-| init_file | |
-| interactive_timeout | 28800 |
-| key_buffer_size | 16776192 |
-| language | /usr/local/mysql/share/english/ |
-| log | OFF |
-| log_update | OFF |
-| log_bin | OFF |
-| log_slave_updates | OFF |
-| long_query_time | 10 |
-| low_priority_updates | OFF |
-| lower_case_table_names | 0 |
-| max_allowed_packet | 1047552 |
-| max_connections | 100 |
-| max_connect_errors | 10 |
-| max_delayed_threads | 20 |
-| max_heap_table_size | 16777216 |
-| max_join_size | 4294967295 |
-| max_sort_length | 1024 |
-| max_tmp_tables | 32 |
-| max_write_lock_count | 4294967295 |
-| myisam_sort_buffer_size | 8388608 |
-| net_buffer_length | 16384 |
-| net_retry_count | 10 |
-| open_files_limit | 0 |
-| pid_file | /usr/local/mysql/data/tik.pid |
-| port | 3306 |
-| protocol_version | 10 |
-| record_buffer | 131072 |
-| skip_locking | ON |
-| skip_networking | OFF |
-| skip_show_database | OFF |
-| slow_launch_time | 2 |
-| socket | /tmp/mysql.sock |
-| sort_buffer | 2097116 |
-| table_cache | 64 |
-| table_type | MYISAM |
-| thread_stack | 131072 |
-| thread_cache_size | 3 |
-| tmp_table_size | 1048576 |
-| tmpdir | /tmp/ |
-| version | 3.23.21-beta-debug |
-| wait_timeout | 28800 |
-+-------------------------+---------------------------------+
++-------------------------+---------------------------+
+| Variable_name | Value |
++-------------------------+---------------------------+
+| ansi_mode | OFF |
+| back_log | 50 |
+| basedir | /my/monty/ |
+| bdb_cache_size | 16777216 |
+| bdb_home | /my/monty/data/ |
+| bdb_max_lock | 10000 |
+| bdb_logdir | |
+| bdb_shared_data | OFF |
+| bdb_tmpdir | /tmp/ |
+| binlog_cache_size | 32768 |
+| concurrent_insert | ON |
+| connect_timeout | 5 |
+| datadir | /my/monty/data/ |
+| delay_key_write | ON |
+| delayed_insert_limit | 100 |
+| delayed_insert_timeout | 300 |
+| delayed_queue_size | 1000 |
+| flush | OFF |
+| flush_time | 0 |
+| have_bdb | YES |
+| have_gemeni | NO |
+| have_innobase | YES |
+| have_raid | YES |
+| have_ssl | NO |
+| init_file | |
+| interactive_timeout | 28800 |
+| join_buffer_size | 131072 |
+| key_buffer_size | 16776192 |
+| language | /my/monty/share/english/ |
+| large_files_support | ON |
+| log | OFF |
+| log_update | OFF |
+| log_bin | OFF |
+| log_slave_updates | OFF |
+| long_query_time | 10 |
+| low_priority_updates | OFF |
+| lower_case_table_names | 0 |
+| max_allowed_packet | 1048576 |
+| max_binlog_cache_size | 4294967295 |
+| max_connections | 100 |
+| max_connect_errors | 10 |
+| max_delayed_threads | 20 |
+| max_heap_table_size | 16777216 |
+| max_join_size | 4294967295 |
+| max_sort_length | 1024 |
+| max_tmp_tables | 32 |
+| max_write_lock_count | 4294967295 |
+| myisam_recover_options | DEFAULT |
+| myisam_sort_buffer_size | 8388608 |
+| net_buffer_length | 16384 |
+| net_read_timeout | 30 |
+| net_retry_count | 10 |
+| net_write_timeout | 60 |
+| open_files_limit | 0 |
+| pid_file | /my/monty/data/donna.pid |
+| port | 3306 |
+| protocol_version | 10 |
+| record_buffer | 131072 |
+| query_buffer_size | 0 |
+| safe_show_database | OFF |
+| server_id | 0 |
+| skip_locking | ON |
+| skip_networking | OFF |
+| skip_show_database | OFF |
+| slow_launch_time | 2 |
+| socket | /tmp/mysql.sock |
+| sort_buffer | 2097116 |
+| table_cache | 64 |
+| table_type | MYISAM |
+| thread_cache_size | 4 |
+| thread_stack | 65536 |
+| tmp_table_size | 1048576 |
+| tmpdir | /tmp/ |
+| version | 3.23.29a-gamma-debug |
+| wait_timeout | 28800 |
++-------------------------+---------------------------+
@end example
Each option is described below. Values for buffer sizes, lengths, and stack
@@ -20427,6 +20446,21 @@ tables will be closed (to free up resources and sync things to disk). We
only recommend this option on Win95, Win98, or on systems where you have
very little resources.
+@item @code{have_bdb}
+@code{YES} if @code{mysqld} supports Berkeley DB tables. @code{DISABLED}
+if @code{--skip-bdb} is used.
+@item @code{have_gemeni}
+@code{YES} if @code{mysqld} supports Gemeni tables. @code{DISABLED}
+if @code{--skip-gemeni} is used.
+@item @code{have_innobase}
+@code{YES} if @code{mysqld} supports Innobase tables. @code{DISABLED}
+if @code{--skip-innobase} is used.
+@item @code{have_raid}
+@code{YES} if @code{mysqld} supports the @code{RAID} option.
+@item @code{have_ssl}
+@code{YES} if @code{mysqld} supports SSL (encryption) on the client/server
+protocol.
+
@item @code{init_file}
The name of the file specified with the @code{--init-file} option when
you start the server. This is a file of SQL statements you want the
@@ -20606,6 +20640,12 @@ want to increase this value.
The initial allocation of the query buffer. If most of your queries are
long (like when inserting blobs), you should increase this!
+@item @code{safe_show_databases}
+Don't show databases for which the user doesn't have any database or
+table privileges. This can improve security if you're concerned about
+people being able to see what databases other users have. See also
+@code{skip_show_databases}.
+
@item @code{server_id}
The value of the @code{--server-id} option.
@@ -20616,10 +20656,10 @@ Is OFF if @code{mysqld} uses external locking.
Is ON if we only allow local (socket) connections.
@item @code{skip_show_databases}
-This prevents people from doing @code{SHOW DATABASES} if they don't
-have the @code{PROCESS_PRIV} privilege. This can improve security if
-you're concerned about people being able to see what databases and
-tables other users have.
+This prevents people from doing @code{SHOW DATABASES} if they don't have
+the @code{PROCESS_PRIV} privilege. This can improve security if you're
+concerned about people being able to see what databases other users
+have. See also @code{safe_show_databases}.
@item @code{slow_launch_time}
If creating the thread takes longer than this value (in seconds), the
@@ -38284,9 +38324,6 @@ you should ftp all the relevant files to
@end itemize
-
-
-
@page
@cindex environment variables, list of
@node Environment variables, Users, MySQL internals, Top
@@ -38371,7 +38408,7 @@ variables to modify the behavior of @strong{MySQL}. @xref{Option files}.
@page
@cindex users, of MySQL
@cindex news sites
-@node Users, Contrib, Environment variables, Top
+@node Users, MySQL customer usage, Environment variables, Top
@appendix Some MySQL Users
@appendixsec General News Sites
@@ -38519,6 +38556,8 @@ support @strong{MySQL}}
@c @item @uref{http://dynodns.net, Free dynamic DNS implementation}
@c EMAIL: A Moore <amoore@mooresystems.com>
+@item @uref{http://www.hn.org/, Hammernode; Public DNS Servers}
+
@item @uref{http://www.fdns.net/, Free 3rd level domains}
@item @uref{http://worldcommunity.com/, Online Database}
@@ -38774,9 +38813,43 @@ Washington's Eastside residents and businesses}
Send any additions to this list to @email{webmaster@@mysql.com}.
@page
+@cindex MySQL usage
+@node MySQL customer usage, Contrib, Users, Top
+@appendix MySQL customer usage
+
+The section 'Some MySQL Users' contains a lot of different links to
+@strong{MySQL} users but doesn't provide that much information about how
+they are using @strong{MySQL}. @xref{Users}. This manual section is to
+give you an idea of how other @strong{MySQL} users are using
+@strong{MySQL} to solve their problems.
+
+This manual section is very new and we plan to add more stories here
+shortly. If you are interested in contributing of how you use
+@code{MySQL} in a unique environment or have success store about how you
+use @code{MySQL}, you can write to @code{docs@@lists.mysql.com} with
+subject @code{Success:}. Note that as we are very busy it may take some
+time before you get some feedback for your story.
+
+@itemize @bullet
+@item
+I think you might be interested in my database size. The whole database
+is currently on 15 servers and I think it's about 60.000 of tables
+containing about 5.000.000.000 of rows. My mostly loaded server
+currently holds about 10.000 of tables with 1.000.000.000 of rows in it.
+Hugest tables have about 50.000.000 of rows, and this value will raise
+as soon as I'll move to 2.4 kernel with large files. Currently I have to
+delete much of logs for large sites to hold table sizes in 2Gb.
+
+Peter Zaitsev, Spylog.ru.
+@item
+Texas Instrument is using MySQL for handling tables that contains up
+o 2,000 million rows in a validation regression database.
+@end itemize
+
+@page
@cindex contributed programs
@cindex programs, contributed
-@node Contrib, Credits, Users, Top
+@node Contrib, Credits, MySQL customer usage, Top
@appendix Contributed Programs
Many users of @strong{MySQL} have contributed @emph{very} useful support
@@ -39448,12 +39521,14 @@ interested in.
@node Credits, News, Contrib, Top
@appendix Credits
-The following persons have helped us make MySQL what it is today
+The following persons and companies have helped us make MySQL what it is
+today:
@cindex developers, list of
@menu
* Developers::
* Contributors::
+* Supporters::
@end menu
@node Developers, Contributors, Credits, Credits
@@ -39635,7 +39710,7 @@ Allan Larsson (The BOSS for TCX DataKonsult AB).
@end table
@cindex contributors, list of
-@node Contributors, , Developers, Credits
+@node Contributors, Supporters, Developers, Credits
@appendixsubsec Contributors to MySQL
Contributors to the @strong{MySQL} distribution are listed below, in
@@ -39705,6 +39780,12 @@ For porting PHP to @strong{MySQL}.
For the first @strong{MySQL} manual. And a lot of spelling/language
fixes for the FAQ (that turned into the @strong{MySQL} manual a long
time ago).
+@item Yan Cailin
+First translator of the MySQL Reference Manual into simplified chinese
+in early 2000 on which the Big5 and HK coded
+(@uref{http://mysql.hitstar.com, mysql.hitstar.com}) versions were
+based. @uref{http://linuxdb.yeah.net, Personal home page at
+linuxdb.yeah.net}.
@item Giovanni Maruzzelli @email{maruzz@@matrice.it}
For porting iODBC (Unix ODBC).
@item Chris Provenzano
@@ -39860,6 +39941,24 @@ ODBC and VisualC++ interface questions.
@code{DBD}, Linux, some SQL syntax questions.
@end table
+@cindex contributing companies, list of
+@node Supporters, , Contributors, Credits
+@appendixsubsec Supporters to MySQL
+
+The following companies has helped us finance development of
+@strong{MySQL} by either paying us for developing a new feature,
+developed a @strong{MySQL} feature themself or by giving us hardware for
+@strong{MySQL} development.
+
+@multitable @columnfractions .3 .7
+@item Va Linux / Andover.net @tab Replication
+@item NuSphere @tab Editing of the @strong{MySQL} manual.
+@item Intel @tab Contributed to development on Windows and Linux platforms
+@item Compaq @tab Contributed to Development on Linux-alpha
+@item SWSoft @tab Development on the embedded @code{mysqld} version.
+@item FutureQuest @tab @code{--skip-show-variables}
+@end multitable
+
@node News, Bugs, Credits, Top
@appendix MySQL change history
@@ -39951,6 +40050,12 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.30
@itemize @bullet
@item
+Added option @code{--safe-show-databases}.
+@item
+Added @code{have_bdb}, @code{have_gemeni}, @code{have_innobase},
+@code{have_raid} and @code{have_ssl} to @code{SHOW VARIABLES} to make it
+easy to test for supported extensions.
+@item
Added option @code{open-files-limit} to @code{mysqld}.
@item
Changed option @code{open-files} to @code{open-files-limit} in
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;