18
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#include <drizzled/server_includes.h>
22
22
#include <drizzled/show.h>
23
23
#include <drizzled/lock.h>
24
24
#include <drizzled/session.h>
25
25
#include <drizzled/statement/rename_table.h>
26
#include "drizzled/sql_table.h"
27
#include "drizzled/pthread_globals.h"
27
using namespace drizzled;
32
29
bool statement::RenameTable::execute()
110
107
/* Lets hope this doesn't fail as the result will be messy */
113
write_bin_log(session, session->query.c_str());
110
write_bin_log(session, true, session->query, session->query_length);
114
111
session->my_ok();
151
148
new_alias= new_table_name;
154
plugin::StorageEngine *engine= NULL;
151
StorageEngine *engine= NULL;
155
152
message::Table table_proto;
157
TableIdentifier old_identifier(ren_table->db, old_alias, message::Table::STANDARD);
159
if (plugin::StorageEngine::getTableDefinition(*session, old_identifier, table_proto) != EEXIST)
153
char path[FN_REFLEN];
156
length= build_table_filename(path, sizeof(path),
157
ren_table->db, old_alias, false);
159
if (StorageEngine::getTableProto(path, &table_proto)!= EEXIST)
161
161
my_error(ER_NO_SUCH_TABLE, MYF(0), ren_table->db, old_alias);
165
engine= plugin::StorageEngine::findByName(*session, table_proto.engine().name());
167
TableIdentifier new_identifier(new_db, new_alias, message::Table::STANDARD);
168
if (plugin::StorageEngine::doesTableExist(*session, new_identifier))
165
engine= ha_resolve_by_name(session, table_proto.engine().name());
167
length= build_table_filename(path, sizeof(path),
168
new_db, new_alias, false);
170
if (StorageEngine::getTableProto(path, NULL)!=ENOENT)
170
172
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), new_alias);
171
173
return 1; // This can't be skipped
174
rc= mysql_rename_table(engine, old_identifier, new_identifier, 0);
176
rc= mysql_rename_table(engine,
177
ren_table->db, old_alias,
178
new_db, new_alias, 0);
175
179
if (rc && ! skip_error)