summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc98
1 files changed, 71 insertions, 27 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 9449224c01a..de7e1c4f8be 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -23,11 +23,9 @@
#include "sp.h"
#include "sp_head.h"
#include "sql_trigger.h"
+#include "authors.h"
#include <my_dir.h>
-#ifdef HAVE_BERKELEY_DB
-#include "ha_berkeley.h" // For berkeley_show_logs
-#endif
static const char *grant_names[]={
"select","insert","update","delete","create","drop","reload","shutdown",
@@ -59,6 +57,9 @@ bool mysqld_show_storage_engines(THD *thd)
field_list.push_back(new Item_empty_string("Engine",10));
field_list.push_back(new Item_empty_string("Support",10));
field_list.push_back(new Item_empty_string("Comment",80));
+ field_list.push_back(new Item_empty_string("Transactions",3));
+ field_list.push_back(new Item_empty_string("XA",3));
+ field_list.push_back(new Item_empty_string("Savepoints",3));
if (protocol->send_fields(&field_list,
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
@@ -81,6 +82,9 @@ bool mysqld_show_storage_engines(THD *thd)
option_name= "DEFAULT";
protocol->store(option_name, system_charset_info);
protocol->store((*types)->comment, system_charset_info);
+ protocol->store((*types)->commit ? "YES" : "NO", system_charset_info);
+ protocol->store((*types)->prepare ? "YES" : "NO", system_charset_info);
+ protocol->store((*types)->savepoint_set ? "YES" : "NO", system_charset_info);
if (protocol->write())
DBUG_RETURN(TRUE);
}
@@ -89,6 +93,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
@@ -529,29 +565,6 @@ bool mysqld_show_create_db(THD *thd, char *dbname,
DBUG_RETURN(FALSE);
}
-bool
-mysqld_show_logs(THD *thd)
-{
- List<Item> field_list;
- Protocol *protocol= thd->protocol;
- DBUG_ENTER("mysqld_show_logs");
-
- field_list.push_back(new Item_empty_string("File",FN_REFLEN));
- field_list.push_back(new Item_empty_string("Type",10));
- field_list.push_back(new Item_empty_string("Status",10));
-
- if (protocol->send_fields(&field_list,
- Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
- DBUG_RETURN(TRUE);
-
-#ifdef HAVE_BERKELEY_DB
- if ((have_berkeley_db == SHOW_OPTION_YES) && berkeley_show_logs(protocol))
- DBUG_RETURN(TRUE);
-#endif
-
- send_eof(thd);
- DBUG_RETURN(FALSE);
-}
/****************************************************************************
@@ -965,6 +978,12 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet)
}
}
packet->append(')');
+ if (key_info->parser)
+ {
+ packet->append(" WITH PARSER ", 13);
+ append_identifier(thd, packet, key_info->parser->name.str,
+ key_info->parser->name.length);
+ }
}
/*
@@ -985,7 +1004,15 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet)
packet->append(STRING_WITH_LEN(" TYPE="));
else
packet->append(STRING_WITH_LEN(" ENGINE="));
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ if (table->s->part_info)
+ packet->append(ha_get_storage_engine(
+ table->s->part_info->default_engine_type));
+ else
+ packet->append(file->table_type());
+#else
packet->append(file->table_type());
+#endif
if (share->table_charset &&
!(thd->variables.sql_mode & MODE_MYSQL323) &&
@@ -1057,6 +1084,23 @@ store_create_info(THD *thd, TABLE_LIST *table_list, String *packet)
append_directory(thd, packet, "DATA", create_info.data_file_name);
append_directory(thd, packet, "INDEX", create_info.index_file_name);
}
+#ifdef WITH_PARTITION_STORAGE_ENGINE
+ {
+ /*
+ Partition syntax for CREATE TABLE is at the end of the syntax.
+ */
+ uint part_syntax_len;
+ char *part_syntax;
+ if (table->s->part_info &&
+ ((part_syntax= generate_partition_syntax(table->s->part_info,
+ &part_syntax_len,
+ FALSE,FALSE))))
+ {
+ packet->append(part_syntax, part_syntax_len);
+ my_free(part_syntax, MYF(0));
+ }
+ }
+#endif
DBUG_RETURN(0);
}
@@ -2887,7 +2931,7 @@ int fill_schema_proc(THD *thd, TABLE_LIST *tables, COND *cond)
{
DBUG_RETURN(1);
}
- proc_table->file->ha_index_init(0);
+ proc_table->file->ha_index_init(0, 1);
if ((res= proc_table->file->index_first(proc_table->record[0])))
{
res= (res == HA_ERR_END_OF_FILE) ? 0 : 1;