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;