diff --git a/mysql-test/r/contributors.result b/mysql-test/r/contributors.result new file mode 100644 index 0000000000000000000000000000000000000000..5739c2244c39f6afeb3d9a39f94be7140b5d1c95 --- /dev/null +++ b/mysql-test/r/contributors.result @@ -0,0 +1,5 @@ +SHOW CONTRIBUTORS; +Name Location Comment +Ronald Bradford Brisbane, Australia EFF contribution for UC2006 Auction +Sheeri Kritzer Boston, Mass. USA EFF contribution for UC2006 Auction +Mark Shuttleworth London, UK. EFF contribution for UC2006 Auction diff --git a/mysql-test/t/contributors.test b/mysql-test/t/contributors.test new file mode 100644 index 0000000000000000000000000000000000000000..e463c4a888b077bce7b845e85b61cd2cd9b396da --- /dev/null +++ b/mysql-test/t/contributors.test @@ -0,0 +1 @@ +SHOW CONTRIBUTORS; diff --git a/sql/contributors.h b/sql/contributors.h new file mode 100644 index 0000000000000000000000000000000000000000..dca232b9b693c15ba3ae730e03524c12b8424871 --- /dev/null +++ b/sql/contributors.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2005 MySQL AB & MySQL Finland AB & TCX DataKonsult 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 */ + +/* Structure of the name list */ + +struct show_table_contributors_st { + const char *name; + const char *location; + const char *comment; +}; + +/* + Output from "SHOW CONTRIBUTORS" + + Get permission before editing. + + IMPORTANT: Names should be left in historical order. + + Names should be encoded using UTF-8. +*/ + +struct show_table_contributors_st show_table_contributors[]= { + {"Ronald Bradford", "Brisbane, Australia", "EFF contribution for UC2006 Auction"}, + {"Sheeri Kritzer", "Boston, Mass. USA", "EFF contribution for UC2006 Auction"}, + {"Mark Shuttleworth", "London, UK.", "EFF contribution for UC2006 Auction"}, + {NULL, NULL, NULL} +}; diff --git a/sql/lex.h b/sql/lex.h index 555a68dc38836f516d8cc681b612ed825d2adc18..5c7c66484c4c585ef3a36208c57bc4197447f725 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -133,6 +133,7 @@ static SYMBOL symbols[] = { { "CONSTRAINT", SYM(CONSTRAINT)}, { "CONTAINS", SYM(CONTAINS_SYM)}, { "CONTINUE", SYM(CONTINUE_SYM)}, + { "CONTRIBUTORS", SYM(CONTRIBUTORS_SYM)}, { "CONVERT", SYM(CONVERT_SYM)}, { "CREATE", SYM(CREATE)}, { "CROSS", SYM(CROSS)}, diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 650d2a52b53e57e4268559785304c593037158bf..72b46fd2899e0a6fc7b07494b9527fd7167d240c 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -998,6 +998,7 @@ 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_contributors(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/sp_head.cc b/sql/sp_head.cc index de56e261bd3e489b9f2a031036eae6fcd0c93c36..b1bc06b657a4d3e486768a3ba8ffe48bd8a6346e 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -202,6 +202,7 @@ sp_get_flags_for_command(LEX *lex) case SQLCOM_SHOW_PROC_CODE: case SQLCOM_SHOW_FUNC_CODE: case SQLCOM_SHOW_AUTHORS: + case SQLCOM_SHOW_CONTRIBUTORS: case SQLCOM_REPAIR: case SQLCOM_BACKUP_TABLE: case SQLCOM_RESTORE_TABLE: diff --git a/sql/sql_lex.h b/sql/sql_lex.h index f0bd85367d0a899003702a22240edcfe0a3484b8..1fbdec6d73c01df85652c24075646d6d13e71f72 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -110,6 +110,7 @@ enum enum_sql_command { SQLCOM_INSTALL_PLUGIN, SQLCOM_UNINSTALL_PLUGIN, SQLCOM_SHOW_AUTHORS, SQLCOM_BINLOG_BASE64_EVENT, SQLCOM_SHOW_PLUGINS, + SQLCOM_SHOW_CONTRIBUTORS, SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT, SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS, diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 33b3118de1aa2fd4853917af5670551dc9863aba..b6bd12e37b40944b16eee75ab86a6908366491d3 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3531,6 +3531,9 @@ end_with_restore_list: case SQLCOM_SHOW_AUTHORS: res= mysqld_show_authors(thd); break; + case SQLCOM_SHOW_CONTRIBUTORS: + res= mysqld_show_contributors(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 28bedf62ea5261eb7a53e18ce6a0801b4b10fefc..33e4ed81ec4bef22da8cc94db5248f3dffde80a7 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -25,6 +25,7 @@ #include "sp_head.h" #include "sql_trigger.h" #include "authors.h" +#include "contributors.h" #include "event.h" #include <my_dir.h> @@ -229,6 +230,41 @@ bool mysqld_show_authors(THD *thd) DBUG_RETURN(FALSE); } + +/*************************************************************************** +** List all Contributors. +** Please get permission before updating +***************************************************************************/ + +bool mysqld_show_contributors(THD *thd) +{ + List<Item> field_list; + Protocol *protocol= thd->protocol; + DBUG_ENTER("mysqld_show_contributors"); + + 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_contributors_st *contributors; + for (contributors= show_table_contributors; contributors->name; contributors++) + { + protocol->prepare_for_resend(); + protocol->store(contributors->name, system_charset_info); + protocol->store(contributors->location, system_charset_info); + protocol->store(contributors->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 fb84d5e4459c8d97f95084df51740514eee6d2bc..bd68d2441c714ae71fa0c88b5dc8bb39e471f5a9 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -204,6 +204,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); %token CONSTRAINT %token CONTAINS_SYM %token CONTINUE_SYM +%token CONTRIBUTORS_SYM %token CONVERT_SYM %token CONVERT_TZ_SYM %token COUNT_SYM @@ -8184,6 +8185,11 @@ show_param: LEX *lex=Lex; lex->sql_command= SQLCOM_SHOW_AUTHORS; } + | CONTRIBUTORS_SYM + { + LEX *lex=Lex; + lex->sql_command= SQLCOM_SHOW_CONTRIBUTORS; + } | PRIVILEGES { LEX *lex=Lex;