diff options
author | unknown <serg@serg.mylan> | 2005-05-16 12:05:42 +0200 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2005-05-16 12:05:42 +0200 |
commit | 5112e25c58052e1848942ac693d17500fdae3bff (patch) | |
tree | f030d64b9933880f748479fa9f88762b322ae48f | |
parent | 70686e252aaf54ccc5367445b138048e617f2972 (diff) | |
parent | 3efe3e26b4ec710b63a120325d2f2bdeb0fe0fc8 (diff) | |
download | mariadb-git-5112e25c58052e1848942ac693d17500fdae3bff.tar.gz |
Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
BitKeeper/etc/logging_ok:
auto-union
-rw-r--r-- | BitKeeper/etc/logging_ok | 1 | ||||
-rw-r--r-- | client/client_priv.h | 2 | ||||
-rw-r--r-- | client/mysql.cc | 67 | ||||
-rw-r--r-- | sql/field.h | 2 |
4 files changed, 68 insertions, 4 deletions
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok index 3f0d0ce05fb..5b43d25b818 100644 --- a/BitKeeper/etc/logging_ok +++ b/BitKeeper/etc/logging_ok @@ -57,6 +57,7 @@ evgen@moonbone.local gbichot@production.mysql.com gbichot@quadita2.mysql.com gbichot@quadxeon.mysql.com +geert@kriem.kemuri.org georg@beethoven.local georg@beethoven.site georg@lmy002.wdf.sap.corp diff --git a/client/client_priv.h b/client/client_priv.h index 24df2bdee7f..d656e54a2b8 100644 --- a/client/client_priv.h +++ b/client/client_priv.h @@ -49,5 +49,5 @@ enum options_client #ifdef HAVE_NDBCLUSTER_DB OPT_NDBCLUSTER, OPT_NDB_CONNECTSTRING, #endif - OPT_IGNORE_TABLE,OPT_INSERT_IGNORE + OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS }; diff --git a/client/mysql.cc b/client/mysql.cc index e0ed85f2651..15917e99a23 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -135,7 +135,8 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0, opt_xml=0,opt_nopager=1, opt_outfile=0, named_cmds= 0, tty_password= 0, opt_nobeep=0, opt_reconnect=1, default_charset_used= 0, opt_secure_auth= 0, - default_pager_set= 0, opt_sigint_ignore= 0; + default_pager_set= 0, opt_sigint_ignore= 0, + show_warnings = 0; static ulong opt_max_allowed_packet, opt_net_buffer_length; static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0; static my_string opt_mysql_unix_port=0; @@ -194,7 +195,8 @@ static int com_quit(String *str,char*), com_use(String *str,char*), com_source(String *str, char*), com_rehash(String *str, char*), com_tee(String *str, char*), com_notee(String *str, char*), - com_prompt(String *str, char*), com_delimiter(String *str, char*); + com_prompt(String *str, char*), com_delimiter(String *str, char*), + com_warnings(String *str, char*), com_nowarnings(String *str, char*); #ifdef USE_POPEN static int com_nopager(String *str, char*), com_pager(String *str, char*), @@ -266,6 +268,10 @@ static COMMANDS commands[] = { "Set outfile [to_outfile]. Append everything into given outfile." }, { "use", 'u', com_use, 1, "Use another database. Takes database name as argument." }, + { "warnings", 'W', com_warnings, 0, + "Show warnings after every statement." }, + { "nowarning", 'w', com_nowarnings, 0, + "Don't show warnings after every statement." }, /* Get bash-like expansion for some commands */ { "create table", 0, 0, 0, ""}, { "create database", 0, 0, 0, ""}, @@ -323,6 +329,7 @@ static void print_table_data_html(MYSQL_RES *result); static void print_table_data_xml(MYSQL_RES *result); static void print_tab_data(MYSQL_RES *result); static void print_table_data_vertically(MYSQL_RES *result); +static void print_warnings(void); static ulong start_timer(void); static void end_timer(ulong start_time,char *buff); static void mysql_end_timer(ulong start_time,char *buff); @@ -693,6 +700,9 @@ static struct my_option my_long_options[] = {"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it" " uses old (pre-4.1.1) protocol", (gptr*) &opt_secure_auth, (gptr*) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.", + (gptr*) &show_warnings, (gptr*) &show_warnings, 0, GET_BOOL, NO_ARG, + 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; @@ -1962,6 +1972,13 @@ com_go(String *buffer,char *line __attribute__((unused))) if (err >= 1) error= put_error(&mysql); + if (show_warnings == 1 && warnings >= 1) /* Show warnings if any */ + { + init_pager(); + print_warnings(); + end_pager(); + } + if (!error && !status.batch && (mysql.server_status & SERVER_STATUS_DB_DROPPED)) get_current_db(); @@ -2219,6 +2236,35 @@ print_table_data_vertically(MYSQL_RES *result) } } +/* print_warnings should be called right after executing a statement */ +static void +print_warnings() +{ + char query[30]; + MYSQL_RES *result; + MYSQL_ROW cur; + MYSQL_FIELD *field; + + /* Get the warnings */ + strmov(query,"show warnings"); + mysql_real_query_for_lazy(query,strlen(query)); + mysql_store_result_for_lazy(&result); + + /* Bail out when no warnings */ + my_ulonglong num_rows = mysql_num_rows(result); + if (num_rows == 0) + { + mysql_free_result(result); + return; + } + + /* Print the warnings */ + while ((cur= mysql_fetch_row(result))) + { + tee_fprintf(PAGER, "%s (Code %s): %s\n", cur[0], cur[1], cur[2]); + } + mysql_free_result(result); +} static const char *array_value(const char **array, char key) @@ -2715,6 +2761,23 @@ com_use(String *buffer __attribute__((unused)), char *line) return 0; } +static int +com_warnings(String *buffer __attribute__((unused)), + char *line __attribute__((unused))) +{ + show_warnings = 1; + put_info("Show warnings enabled.",INFO_INFO); + return 0; +} + +static int +com_nowarnings(String *buffer __attribute__((unused)), + char *line __attribute__((unused))) +{ + show_warnings = 0; + put_info("Show warnings disabled.",INFO_INFO); + return 0; +} /* Gets argument from a command on the command line. If get_next_arg is diff --git a/sql/field.h b/sql/field.h index edc3286ae8d..f68a2327dff 100644 --- a/sql/field.h +++ b/sql/field.h @@ -198,7 +198,7 @@ public: virtual Field *new_key_field(MEM_ROOT *root, struct st_table *new_table, char *new_ptr, uchar *new_null_ptr, uint new_null_bit); - virtual void move_field(char *ptr_arg,uchar *null_ptr_arg,uchar null_bit_arg) + inline void move_field(char *ptr_arg,uchar *null_ptr_arg,uchar null_bit_arg) { ptr=ptr_arg; null_ptr=null_ptr_arg; null_bit=null_bit_arg; } |