34
36
bool statement::CreateSchema::execute()
38
if (not validateSchemaOptions())
36
41
if (not session->endActiveTransaction())
41
46
SchemaIdentifier schema_identifier(string(session->lex->name.str, session->lex->name.length));
42
if (not check_db_name(schema_identifier))
47
if (not check_db_name(session, schema_identifier))
44
49
my_error(ER_WRONG_DB_NAME, MYF(0), schema_identifier.getSQLPath().c_str());
48
schema_message.set_name(session->lex->name.str);
49
if (not schema_message.has_collation())
51
schema_message.set_collation(default_charset_info->name);
54
bool res= mysql_create_db(session, schema_message, is_if_not_exists);
53
drizzled::message::init(schema_message, session->lex->name.str);
56
if (unlikely(plugin::EventObserver::beforeCreateDatabase(*session, schema_identifier.getSQLPath())))
58
my_error(ER_EVENT_OBSERVER_PLUGIN, MYF(0), schema_identifier.getSQLPath().c_str());
62
res= mysql_create_db(session, schema_message, is_if_not_exists);
63
if (unlikely(plugin::EventObserver::afterCreateDatabase(*session, schema_identifier.getSQLPath(), res)))
65
my_error(ER_EVENT_OBSERVER_PLUGIN, MYF(0), schema_identifier.getSQLPath().c_str());
74
// We don't actually test anything at this point, we assume it is all bad.
75
bool statement::CreateSchema::validateSchemaOptions()
77
size_t num_engine_options= schema_message.engine().options_size();
78
bool rc= num_engine_options ? false : true;
80
for (size_t y= 0; y < num_engine_options; ++y)
82
my_error(ER_UNKNOWN_SCHEMA_OPTION, MYF(0),
83
schema_message.engine().options(y).name().c_str(),
84
schema_message.engine().options(y).state().c_str());
58
92
} /* namespace drizzled */