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		{}