Add warning of TRANSACTIONAL=1 is used with handler that doesn't support it
Added hton_name() and handler->engine_name() and use these when appropriate KNOWN_BUGS.txt: Added some of the known bugs mysql-test/r/maria.result: Added test for TRANSACTIONAL=1 mysql-test/r/myisam.result: Added test for TRANSACTIONAL=1 mysql-test/t/maria.test: Added test for TRANSACTIONAL=1 mysql-test/t/myisam.test: Added test for TRANSACTIONAL=1 sql/handler.cc: ha_resolve_storage_engine_name() -> hton_name() sql/handler.h: Added hton_name() and handler->engine_name() sql/set_var.cc: Use hton_name() sql/sql_table.cc: Add warning of TRANSACTIONAL=1 is used with handler that doesn't support it Indentation fixes ha_resolve_storage_engine_name() -> hton_name() sql/sql_tablespace.cc: ha_resolve_storage_engine_name() -> hton_name() Indentation fixes sql/sql_yacc.yy: ha_resolve_storage_engine_name() -> hton_name() sql/unireg.cc: ha_resolve_storage_engine_name() -> hton_name() Indentation fixes
This commit is contained in:
parent
5fa560e995
commit
315d7b3419
@ -20,8 +20,8 @@ http://bugs.mysql.com/ so that we can either fix it for next release
|
|||||||
or in the worst case add it here for others to know!
|
or in the worst case add it here for others to know!
|
||||||
|
|
||||||
|
|
||||||
Known bugs that are planned to be fixed before next minor release
|
Known bugs that we are working on and will be fixed shortly
|
||||||
=================================================================
|
===========================================================
|
||||||
|
|
||||||
- If the log files are damaged or inconsistent, Maria may fail to start.
|
- If the log files are damaged or inconsistent, Maria may fail to start.
|
||||||
We should fix that if this happens and mysqld is restarted (thanks to
|
We should fix that if this happens and mysqld is restarted (thanks to
|
||||||
@ -31,9 +31,15 @@ Known bugs that are planned to be fixed before next minor release
|
|||||||
Temporary fix is to remove or maria_log.???????? files from the data
|
Temporary fix is to remove or maria_log.???????? files from the data
|
||||||
directory, restart mysqld and run CHECK TABLE / REPAIR TABLE or
|
directory, restart mysqld and run CHECK TABLE / REPAIR TABLE or
|
||||||
mysqlcheck on your Maria tables
|
mysqlcheck on your Maria tables
|
||||||
|
- We have some instabilities in log writing that is under investigatation
|
||||||
|
This causes mainly assert to triggers in the code and sometimes
|
||||||
|
the log handler doesn't start up after restart.
|
||||||
- LOAD INDEX commands are for the moment ignored for Maria tables
|
- LOAD INDEX commands are for the moment ignored for Maria tables
|
||||||
(The code needs to be rewritten to do all reads through page cache to
|
(The code needs to be rewritten to do all reads through page cache to
|
||||||
avoid half-block reads)
|
avoid half-block reads)
|
||||||
|
- Freeing maria tmp table after fetching rows using prepared statements causes
|
||||||
|
a crash.
|
||||||
|
|
||||||
|
|
||||||
Known bugs that are planned to be fixed before Beta
|
Known bugs that are planned to be fixed before Beta
|
||||||
===================================================
|
===================================================
|
||||||
|
@ -2245,3 +2245,36 @@ n c
|
|||||||
301 c
|
301 c
|
||||||
302 d
|
302 d
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (n int not null, c char(1)) engine=maria;
|
||||||
|
alter table t1 engine=myisam;
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`n` int(11) NOT NULL,
|
||||||
|
`c` char(1) DEFAULT NULL
|
||||||
|
) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int not null, c char(1)) engine=maria transactional=1;
|
||||||
|
alter table t1 engine=myisam;
|
||||||
|
Warnings:
|
||||||
|
Error 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`n` int(11) NOT NULL,
|
||||||
|
`c` char(1) DEFAULT NULL
|
||||||
|
) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
|
||||||
|
Warnings:
|
||||||
|
Error 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`n` int(11) NOT NULL,
|
||||||
|
`c` char(1) DEFAULT NULL
|
||||||
|
) ENGINE=MARIA DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 TRANSACTIONAL=1
|
||||||
|
drop table t1;
|
||||||
|
@ -2023,4 +2023,14 @@ CHECK TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (n int not null, c char(1)) transactional=1;
|
||||||
|
Warnings:
|
||||||
|
Error 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`n` int(11) NOT NULL,
|
||||||
|
`c` char(1) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 TRANSACTIONAL=1
|
||||||
|
drop table t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1454,8 +1454,26 @@ insert into t1 values(null, "d");
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test warnings with transactional=1 with MyISAM
|
||||||
|
#
|
||||||
|
|
||||||
# End of 5.2 tests
|
create table t1 (n int not null, c char(1)) engine=maria;
|
||||||
|
alter table t1 engine=myisam;
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int not null, c char(1)) engine=maria transactional=1;
|
||||||
|
alter table t1 engine=myisam;
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (n int not null, c char(1)) engine=myisam transactional=1;
|
||||||
|
alter table t1 engine=maria;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
# End of 5.1 tests
|
||||||
|
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
|
@ -1278,5 +1278,12 @@ DELETE FROM t1 WHERE c1 >= 10;
|
|||||||
CHECK TABLE t1;
|
CHECK TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test warnings with transactional=1 with MyISAM
|
||||||
|
#
|
||||||
|
create table t1 (n int not null, c char(1)) transactional=1;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
@ -373,8 +373,7 @@ int ha_finalize_handlerton(st_plugin_int *plugin)
|
|||||||
handlerton *hton= (handlerton *)plugin->data;
|
handlerton *hton= (handlerton *)plugin->data;
|
||||||
DBUG_ENTER("ha_finalize_handlerton");
|
DBUG_ENTER("ha_finalize_handlerton");
|
||||||
|
|
||||||
switch (hton->state)
|
switch (hton->state) {
|
||||||
{
|
|
||||||
case SHOW_OPTION_NO:
|
case SHOW_OPTION_NO:
|
||||||
case SHOW_OPTION_DISABLED:
|
case SHOW_OPTION_DISABLED:
|
||||||
break;
|
break;
|
||||||
@ -647,7 +646,7 @@ int ha_prepare(THD *thd)
|
|||||||
{
|
{
|
||||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_ILLEGAL_HA, ER(ER_ILLEGAL_HA),
|
ER_ILLEGAL_HA, ER(ER_ILLEGAL_HA),
|
||||||
ha_resolve_storage_engine_name(*ht));
|
hton_name(*ht)->str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1041,7 +1040,7 @@ static my_bool xarecover_handlerton(THD *unused, plugin_ref plugin,
|
|||||||
while ((got= hton->recover(hton, info->list, info->len)) > 0 )
|
while ((got= hton->recover(hton, info->list, info->len)) > 0 )
|
||||||
{
|
{
|
||||||
sql_print_information("Found %d prepared transaction(s) in %s",
|
sql_print_information("Found %d prepared transaction(s) in %s",
|
||||||
got, ha_resolve_storage_engine_name(hton));
|
got, hton_name(hton)->str);
|
||||||
for (int i=0; i < got; i ++)
|
for (int i=0; i < got; i ++)
|
||||||
{
|
{
|
||||||
my_xid x=info->list[i].get_my_xid();
|
my_xid x=info->list[i].get_my_xid();
|
||||||
@ -3814,7 +3813,7 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat)
|
|||||||
{
|
{
|
||||||
if (db_type->state != SHOW_OPTION_YES)
|
if (db_type->state != SHOW_OPTION_YES)
|
||||||
{
|
{
|
||||||
const LEX_STRING *name=&hton2plugin[db_type->slot]->name;
|
const LEX_STRING *name= hton_name(db_type);
|
||||||
result= stat_print(thd, name->str, name->length,
|
result= stat_print(thd, name->str, name->length,
|
||||||
"", 0, "DISABLED", 8) ? 1 : 0;
|
"", 0, "DISABLED", 8) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
@ -709,6 +709,12 @@ struct handlerton
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
inline LEX_STRING *hton_name(const handlerton *hton)
|
||||||
|
{
|
||||||
|
return &(hton2plugin[hton->slot]->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Possible flags of a handlerton (there can be 32 of them) */
|
/* Possible flags of a handlerton (there can be 32 of them) */
|
||||||
#define HTON_NO_FLAGS 0
|
#define HTON_NO_FLAGS 0
|
||||||
#define HTON_CLOSE_CURSORS_AT_COMMIT (1 << 0)
|
#define HTON_CLOSE_CURSORS_AT_COMMIT (1 << 0)
|
||||||
@ -1629,6 +1635,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void use_hidden_primary_key();
|
virtual void use_hidden_primary_key();
|
||||||
|
|
||||||
|
LEX_STRING *engine_name() { return hton_name(ht); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/* Service methods for use by storage engines. */
|
/* Service methods for use by storage engines. */
|
||||||
void ha_statistic_increment(ulong SSV::*offset) const;
|
void ha_statistic_increment(ulong SSV::*offset) const;
|
||||||
@ -1644,6 +1652,7 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual int rename_table(const char *from, const char *to);
|
virtual int rename_table(const char *from, const char *to);
|
||||||
virtual int delete_table(const char *name);
|
virtual int delete_table(const char *name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/*
|
/*
|
||||||
Low-level primitives for storage engines. These should be
|
Low-level primitives for storage engines. These should be
|
||||||
@ -1848,7 +1857,7 @@ static inline enum legacy_db_type ha_legacy_type(const handlerton *db_type)
|
|||||||
|
|
||||||
static inline const char *ha_resolve_storage_engine_name(const handlerton *db_type)
|
static inline const char *ha_resolve_storage_engine_name(const handlerton *db_type)
|
||||||
{
|
{
|
||||||
return db_type == NULL ? "UNKNOWN" : hton2plugin[db_type->slot]->name.str;
|
return db_type == NULL ? "UNKNOWN" : hton_name(db_type)->str;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool ha_check_storage_engine_flag(const handlerton *db_type, uint32 flag)
|
static inline bool ha_check_storage_engine_flag(const handlerton *db_type, uint32 flag)
|
||||||
|
@ -3529,7 +3529,7 @@ uchar *sys_var_thd_storage_engine::value_ptr(THD *thd, enum_var_type type,
|
|||||||
if (type == OPT_GLOBAL)
|
if (type == OPT_GLOBAL)
|
||||||
plugin= my_plugin_lock(thd, &(global_system_variables.*offset));
|
plugin= my_plugin_lock(thd, &(global_system_variables.*offset));
|
||||||
hton= plugin_data(plugin, handlerton*);
|
hton= plugin_data(plugin, handlerton*);
|
||||||
engine_name= &hton2plugin[hton->slot]->name;
|
engine_name= hton_name(hton);
|
||||||
result= (uchar *) thd->strmake(engine_name->str, engine_name->length);
|
result= (uchar *) thd->strmake(engine_name->str, engine_name->length);
|
||||||
if (type == OPT_GLOBAL)
|
if (type == OPT_GLOBAL)
|
||||||
plugin_unlock(thd, plugin);
|
plugin_unlock(thd, plugin);
|
||||||
|
@ -3418,6 +3418,14 @@ bool mysql_create_table_no_lock(THD *thd,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Give warnings for not supported table options */
|
||||||
|
if (create_info->transactional && !file->ht->commit)
|
||||||
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
||||||
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
|
ER(ER_ILLEGAL_HA_CREATE_OPTION),
|
||||||
|
file->engine_name()->str,
|
||||||
|
"TRANSACTIONAL=1");
|
||||||
|
|
||||||
VOID(pthread_mutex_lock(&LOCK_open));
|
VOID(pthread_mutex_lock(&LOCK_open));
|
||||||
if (!internal_tmp_table && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
|
if (!internal_tmp_table && !(create_info->options & HA_LEX_CREATE_TMP_TABLE))
|
||||||
{
|
{
|
||||||
@ -5414,6 +5422,7 @@ bool alter_table_manage_keys(TABLE *table, int indexes_were_disabled,
|
|||||||
Sets create_info->varchar if the table has a VARCHAR column.
|
Sets create_info->varchar if the table has a VARCHAR column.
|
||||||
Prepares alter_info->create_list and alter_info->key_list with
|
Prepares alter_info->create_list and alter_info->key_list with
|
||||||
columns and keys of the new table.
|
columns and keys of the new table.
|
||||||
|
|
||||||
@retval TRUE error, out of memory or a semantical error in ALTER
|
@retval TRUE error, out of memory or a semantical error in ALTER
|
||||||
TABLE instructions
|
TABLE instructions
|
||||||
@retval FALSE success
|
@retval FALSE success
|
||||||
@ -5440,7 +5449,8 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
uint used_fields= create_info->used_fields;
|
uint used_fields= create_info->used_fields;
|
||||||
KEY *key_info=table->key_info;
|
KEY *key_info=table->key_info;
|
||||||
bool rc= TRUE;
|
bool rc= TRUE;
|
||||||
|
Create_field *def;
|
||||||
|
Field **f_ptr,*field;
|
||||||
DBUG_ENTER("mysql_prepare_alter_table");
|
DBUG_ENTER("mysql_prepare_alter_table");
|
||||||
|
|
||||||
create_info->varchar= FALSE;
|
create_info->varchar= FALSE;
|
||||||
@ -5476,18 +5486,16 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
create_info->tablespace= tablespace;
|
create_info->tablespace= tablespace;
|
||||||
}
|
}
|
||||||
restore_record(table, s->default_values); // Empty record for DEFAULT
|
restore_record(table, s->default_values); // Empty record for DEFAULT
|
||||||
Create_field *def;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
First collect all fields from table which isn't in drop_list
|
First collect all fields from table which isn't in drop_list
|
||||||
*/
|
*/
|
||||||
Field **f_ptr,*field;
|
|
||||||
for (f_ptr=table->field ; (field= *f_ptr) ; f_ptr++)
|
for (f_ptr=table->field ; (field= *f_ptr) ; f_ptr++)
|
||||||
{
|
{
|
||||||
|
Alter_drop *drop;
|
||||||
if (field->type() == MYSQL_TYPE_STRING)
|
if (field->type() == MYSQL_TYPE_STRING)
|
||||||
create_info->varchar= TRUE;
|
create_info->varchar= TRUE;
|
||||||
/* Check if field should be dropped */
|
/* Check if field should be dropped */
|
||||||
Alter_drop *drop;
|
|
||||||
drop_it.rewind();
|
drop_it.rewind();
|
||||||
while ((drop=drop_it++))
|
while ((drop=drop_it++))
|
||||||
{
|
{
|
||||||
@ -5561,7 +5569,8 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
{
|
{
|
||||||
if (def->change && ! def->field)
|
if (def->change && ! def->field)
|
||||||
{
|
{
|
||||||
my_error(ER_BAD_FIELD_ERROR, MYF(0), def->change, table->s->table_name.str);
|
my_error(ER_BAD_FIELD_ERROR, MYF(0), def->change,
|
||||||
|
table->s->table_name.str);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -5596,7 +5605,8 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
}
|
}
|
||||||
if (!find)
|
if (!find)
|
||||||
{
|
{
|
||||||
my_error(ER_BAD_FIELD_ERROR, MYF(0), def->after, table->s->table_name.str);
|
my_error(ER_BAD_FIELD_ERROR, MYF(0), def->after,
|
||||||
|
table->s->table_name.str);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
find_it.after(def); // Put element after this
|
find_it.after(def); // Put element after this
|
||||||
@ -5646,6 +5656,8 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
continue; // Wrong field (from UNIREG)
|
continue; // Wrong field (from UNIREG)
|
||||||
const char *key_part_name=key_part->field->field_name;
|
const char *key_part_name=key_part->field->field_name;
|
||||||
Create_field *cfield;
|
Create_field *cfield;
|
||||||
|
uint key_part_length;
|
||||||
|
|
||||||
field_it.rewind();
|
field_it.rewind();
|
||||||
while ((cfield=field_it++))
|
while ((cfield=field_it++))
|
||||||
{
|
{
|
||||||
@ -5661,7 +5673,7 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
|
|||||||
}
|
}
|
||||||
if (!cfield)
|
if (!cfield)
|
||||||
continue; // Field is removed
|
continue; // Field is removed
|
||||||
uint key_part_length=key_part->length;
|
key_part_length= key_part->length;
|
||||||
if (cfield->field) // Not new field
|
if (cfield->field) // Not new field
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -7312,7 +7324,7 @@ static bool check_engine(THD *thd, const char *table_name,
|
|||||||
if (create_info->used_fields & HA_CREATE_USED_ENGINE)
|
if (create_info->used_fields & HA_CREATE_USED_ENGINE)
|
||||||
{
|
{
|
||||||
my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0),
|
my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0),
|
||||||
ha_resolve_storage_engine_name(*new_engine), "TEMPORARY");
|
hton_name(*new_engine)->str, "TEMPORARY");
|
||||||
*new_engine= 0;
|
*new_engine= 0;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ int mysql_alter_tablespace(THD *thd, st_alter_tablespace *ts_info)
|
|||||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
||||||
ER_WARN_USING_OTHER_HANDLER,
|
ER_WARN_USING_OTHER_HANDLER,
|
||||||
ER(ER_WARN_USING_OTHER_HANDLER),
|
ER(ER_WARN_USING_OTHER_HANDLER),
|
||||||
ha_resolve_storage_engine_name(hton),
|
hton_name(hton)->str,
|
||||||
ts_info->tablespace_name ? ts_info->tablespace_name
|
ts_info->tablespace_name ? ts_info->tablespace_name
|
||||||
: ts_info->logfile_group_name);
|
: ts_info->logfile_group_name);
|
||||||
}
|
}
|
||||||
@ -43,14 +43,15 @@ int mysql_alter_tablespace(THD *thd, st_alter_tablespace *ts_info)
|
|||||||
{
|
{
|
||||||
if ((error= hton->alter_tablespace(hton, thd, ts_info)))
|
if ((error= hton->alter_tablespace(hton, thd, ts_info)))
|
||||||
{
|
{
|
||||||
|
if (error == 1)
|
||||||
|
{
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
if (error == HA_ADMIN_NOT_IMPLEMENTED)
|
if (error == HA_ADMIN_NOT_IMPLEMENTED)
|
||||||
{
|
{
|
||||||
my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "");
|
my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "");
|
||||||
}
|
}
|
||||||
else if (error == 1)
|
|
||||||
{
|
|
||||||
DBUG_RETURN(1);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my_error(error, MYF(0));
|
my_error(error, MYF(0));
|
||||||
@ -63,7 +64,7 @@ int mysql_alter_tablespace(THD *thd, st_alter_tablespace *ts_info)
|
|||||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
|
||||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||||
ER(ER_ILLEGAL_HA_CREATE_OPTION),
|
ER(ER_ILLEGAL_HA_CREATE_OPTION),
|
||||||
ha_resolve_storage_engine_name(hton),
|
hton_name(hton)->str,
|
||||||
"TABLESPACE or LOGFILE GROUP");
|
"TABLESPACE or LOGFILE GROUP");
|
||||||
}
|
}
|
||||||
write_bin_log(thd, FALSE, thd->query, thd->query_length);
|
write_bin_log(thd, FALSE, thd->query, thd->query_length);
|
||||||
|
@ -1650,7 +1650,7 @@ create:
|
|||||||
push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
|
push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_WARN_USING_OTHER_HANDLER,
|
ER_WARN_USING_OTHER_HANDLER,
|
||||||
ER(ER_WARN_USING_OTHER_HANDLER),
|
ER(ER_WARN_USING_OTHER_HANDLER),
|
||||||
ha_resolve_storage_engine_name(lex->create_info.db_type),
|
hton_name(lex->create_info.db_type)->str,
|
||||||
$5->table.str);
|
$5->table.str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,8 +159,7 @@ bool mysql_create_frm(THD *thd, const char *file_name,
|
|||||||
reclength=uint2korr(forminfo+266);
|
reclength=uint2korr(forminfo+266);
|
||||||
|
|
||||||
/* Calculate extra data segment length */
|
/* Calculate extra data segment length */
|
||||||
str_db_type.str= (char *) ha_resolve_storage_engine_name(create_info->db_type);
|
str_db_type= *hton_name(create_info->db_type);
|
||||||
str_db_type.length= strlen(str_db_type.str);
|
|
||||||
/* str_db_type */
|
/* str_db_type */
|
||||||
create_info->extra_size= (2 + str_db_type.length +
|
create_info->extra_size= (2 + str_db_type.length +
|
||||||
2 + create_info->connect_string.length);
|
2 + create_info->connect_string.length);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user