24 #include <drizzled/session.h>
25 #include <drizzled/statement/drop_index.h>
26 #include <drizzled/statement/alter_table.h>
27 #include <drizzled/plugin/storage_engine.h>
28 #include <drizzled/open_tables_state.h>
29 #include <drizzled/catalog/instance.h>
36 TableList *all_tables= lex().query_tables;
39 message::table::shared_ptr original_table_message;
42 first_table->getSchemaName(),
43 first_table->getTableName());
44 if (not (original_table_message= plugin::StorageEngine::getTableMessage(session(), identifier)))
46 my_error(ER_BAD_TABLE_ERROR, identifier);
62 assert(first_table == all_tables && first_table != 0);
63 if (session().inTransaction())
65 my_error(ER_TRANSACTIONAL_DDL_NOT_SUPPORTED, MYF(0));
69 create_info.db_type= 0;
72 if (original_table_message->type() == message::Table::STANDARD )
75 first_table->getSchemaName(),
76 first_table->getTableName());
78 create_info.default_table_charset= plugin::StorageEngine::getSchemaCollation(identifier);
80 res= alter_table(&session(),
84 *original_table_message,
93 first_table->getSchemaName(),
94 first_table->getTableName());
95 Table *table= session().open_tables.find_temporary_table(catch22);
99 first_table->getSchemaName(),
100 first_table->getTableName(),
101 table->getShare()->getPath());
102 create_info.default_table_charset= plugin::StorageEngine::getSchemaCollation(identifier);
104 res= alter_table(&session(),
108 *original_table_message,