diff --git a/mysql-test/r/show_check.result b/mysql-test/r/show_check.result index 98be82fbf38f47aee34d2aa20fe27930f636631b..572465072e5221e4e3d3c170f5ae971b9c50878b 100644 --- a/mysql-test/r/show_check.result +++ b/mysql-test/r/show_check.result @@ -564,3 +564,7 @@ DROP TABLE tyt2; DROP TABLE urkunde; SHOW TABLES FROM non_existing_database; ERROR 42000: Unknown database 'non_existing_database' +SHOW AUTHORS; +Name Location Comment +Brian "Krow" Aker Seattle, WA. USA Architecture, archive, federated, buncha of little stuff :) +David Axmark Uppsala, Sweden Small stuff long time ago, Monty ripped it out! diff --git a/mysql-test/t/show_check.test b/mysql-test/t/show_check.test index 1b6a1158dac0a447c742aa5dc9f780f7af3436cc..f06dc60af9e2654b73b114734355b47ec627fa6f 100644 --- a/mysql-test/t/show_check.test +++ b/mysql-test/t/show_check.test @@ -424,3 +424,7 @@ DROP TABLE urkunde; # --error 1049 SHOW TABLES FROM non_existing_database; + +# End of 4.1 tests +# +SHOW AUTHORS; diff --git a/sql/authors.h b/sql/authors.h new file mode 100644 index 0000000000000000000000000000000000000000..20cfeabfd804e6dc1542e6e18890424500f27b56 --- /dev/null +++ b/sql/authors.h @@ -0,0 +1,18 @@ +/*************************************************************************** +** Output from "SHOW AUTHORS" +** If you can update it, you get to be in it :) +** Dont be offended if your name is not in here, just add it! +***************************************************************************/ + +struct show_table_authors_st { + const char *name; + const char *location; + const char *comment; +}; + +struct show_table_authors_st show_table_authors[]= { + { "Brian \"Krow\" Aker", "Seattle, WA. USA", + "Architecture, archive, federated, buncha of little stuff :)" }, + { "David Axmark", "Uppsala, Sweden", "Small stuff long time ago, Monty ripped it out!"}, + {NULL, NULL, NULL} +}; diff --git a/sql/field.h b/sql/field.h index 77d00b671f6098407eec4751025f084a620b95d6..7446875d8649246c8b141875725ec46841d320d7 100644 --- a/sql/field.h +++ b/sql/field.h @@ -1081,7 +1081,7 @@ class Field_varstring :public Field_longstr { int cmp_max(const char *, const char *, uint max_length); int cmp(const char *a,const char*b) { - return cmp_max(a, b, ~0); + return cmp_max(a, b, ~0L); } void sort_string(char *buff,uint length); void get_key_image(char *buff,uint length, imagetype type); @@ -1141,7 +1141,7 @@ class Field_blob :public Field_longstr { my_decimal *val_decimal(my_decimal *); int cmp_max(const char *, const char *, uint max_length); int cmp(const char *a,const char*b) - { return cmp_max(a, b, ~0); } + { return cmp_max(a, b, ~0L); } int cmp(const char *a, uint32 a_length, const char *b, uint32 b_length); int cmp_binary(const char *a,const char *b, uint32 max_length=~0L); int key_cmp(const byte *,const byte*); diff --git a/sql/lex.h b/sql/lex.h index cfafd98fe201bf6183e8350caffd377b7056e00c..ba290e9b6465c6d4e48a5e221b93edc09a7a6962 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -74,6 +74,7 @@ static SYMBOL symbols[] = { { "ASC", SYM(ASC)}, { "ASCII", SYM(ASCII_SYM)}, { "ASENSITIVE", SYM(ASENSITIVE_SYM)}, + { "AUTHORS", SYM(AUTHORS_SYM)}, { "AUTO_INCREMENT", SYM(AUTO_INC)}, { "AVG", SYM(AVG_SYM)}, { "AVG_ROW_LENGTH", SYM(AVG_ROW_LENGTH)}, diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 90c4f52e51dc4ce6c6c72c2cca0eeb568cf16876..d9af379fa97d0095b8f30d79ee7e9e86a9b9d93a 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -857,6 +857,7 @@ int mysqld_show_variables(THD *thd,const char *wild); int mysql_find_files(THD *thd,List<char> *files, const char *db, const char *path, const char *wild, bool dir); bool mysqld_show_storage_engines(THD *thd); +bool mysqld_show_authors(THD *thd); bool mysqld_show_privileges(THD *thd); bool mysqld_show_column_types(THD *thd); bool mysqld_help (THD *thd, const char *text); diff --git a/sql/sql_cache.h b/sql/sql_cache.h index 123d16b606ddd8310e696c3c76ee22c117ea1017..880bf74e67ff57e30dd6334569454b326998c86a 100644 --- a/sql/sql_cache.h +++ b/sql/sql_cache.h @@ -215,6 +215,8 @@ struct Query_cache_memory_bin struct Query_cache_memory_bin_step { +public: + Query_cache_memory_bin_step() {} ulong size; ulong increment; uint idx; diff --git a/sql/sql_lex.h b/sql/sql_lex.h index b82ac754e261c5f89749c3478e2cd7dc98354d25..feb3f2a30c9227c091b6cf49c2d47cb890132eb4 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -92,6 +92,7 @@ enum enum_sql_command { SQLCOM_XA_START, SQLCOM_XA_END, SQLCOM_XA_PREPARE, SQLCOM_XA_COMMIT, SQLCOM_XA_ROLLBACK, SQLCOM_XA_RECOVER, SQLCOM_INSTALL_PLUGIN, SQLCOM_UNINSTALL_PLUGIN, + SQLCOM_SHOW_AUTHORS, /* This should be the last !!! */ SQLCOM_END diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 9b3b7ffad69d646b74b69a97163e3fddb4148f62..f401d30d9c474b4c11445ded89f42e2af8139b83 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3409,6 +3409,9 @@ mysql_execute_command(THD *thd) case SQLCOM_SHOW_STORAGE_ENGINES: res= mysqld_show_storage_engines(thd); break; + case SQLCOM_SHOW_AUTHORS: + res= mysqld_show_authors(thd); + break; case SQLCOM_SHOW_PRIVILEGES: res= mysqld_show_privileges(thd); break; diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 2548e77449b7812b1fd06b3f4ed4ec30d28faf79..d936778eaa407c07cd91197bce38379c6299f5f0 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -23,6 +23,7 @@ #include "sp.h" #include "sp_head.h" #include "sql_trigger.h" +#include "authors.h" #include <my_dir.h> @@ -83,6 +84,38 @@ bool mysqld_show_storage_engines(THD *thd) DBUG_RETURN(FALSE); } +/*************************************************************************** +** List all Authors. +** If you can update it, you get to be in it :) +***************************************************************************/ + +bool mysqld_show_authors(THD *thd) +{ + List<Item> field_list; + Protocol *protocol= thd->protocol; + DBUG_ENTER("mysqld_show_authors"); + + field_list.push_back(new Item_empty_string("Name",40)); + field_list.push_back(new Item_empty_string("Location",40)); + field_list.push_back(new Item_empty_string("Comment",80)); + + if (protocol->send_fields(&field_list, + Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)) + DBUG_RETURN(TRUE); + + show_table_authors_st *authors; + for (authors= show_table_authors; authors->name; authors++) + { + protocol->prepare_for_resend(); + protocol->store(authors->name, system_charset_info); + protocol->store(authors->location, system_charset_info); + protocol->store(authors->comment, system_charset_info); + if (protocol->write()) + DBUG_RETURN(TRUE); + } + send_eof(thd); + DBUG_RETURN(FALSE); +} /*************************************************************************** List all privileges supported diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 7d670d8988cc26de65449799dc63c67663a572f4..953e479560edb8f3e6ed4c46976fa6c8e63e2c28 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -137,6 +137,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); %token ASCII_SYM %token ASENSITIVE_SYM %token ATAN +%token AUTHORS_SYM %token AUTO_INC %token AVG_ROW_LENGTH %token AVG_SYM @@ -7174,6 +7175,11 @@ show_param: LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; } + | AUTHORS_SYM + { + LEX *lex=Lex; + lex->sql_command= SQLCOM_SHOW_AUTHORS; + } | PRIVILEGES { LEX *lex=Lex; @@ -8171,6 +8177,7 @@ user: keyword: keyword_sp {} | ASCII_SYM {} + | AUTHORS_SYM {} | BACKUP_SYM {} | BEGIN_SYM {} | BYTE_SYM {}