mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge bk-internal:/home/bk/mysql-5.0-engines
into rama.(none):/home/jimw/my/mysql-5.0-17608 include/my_base.h: Auto merged mysql-test/r/merge.result: Auto merged mysql-test/t/merge.test: Auto merged sql/ha_myisammrg.cc: Auto merged sql/handler.cc: Auto merged
This commit is contained in:
commit
a00f18e5e6
5 changed files with 38 additions and 2 deletions
|
@ -356,8 +356,9 @@ enum ha_base_keytype {
|
|||
#define HA_ERR_NULL_IN_SPATIAL 158 /* NULLs are not supported in spatial index */
|
||||
#define HA_ERR_TABLE_DEF_CHANGED 159 /* The table changed in storage engine */
|
||||
#define HA_ERR_TABLE_NEEDS_UPGRADE 160 /* The table changed in storage engine */
|
||||
#define HA_ERR_TABLE_READONLY 161 /* The table is not writable */
|
||||
|
||||
#define HA_ERR_LAST 160 /*Copy last error nr.*/
|
||||
#define HA_ERR_LAST 161 /*Copy last error nr.*/
|
||||
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
|
||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||
|
||||
|
|
|
@ -774,3 +774,15 @@ create table tm (b bit(1)) engine = merge union = (t1,t2);
|
|||
select * from tm;
|
||||
b
|
||||
drop table tm, t1, t2;
|
||||
create table t1 (a int) insert_method = last engine = merge;
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Table 't1' is read only
|
||||
create table t2 (a int) engine = myisam;
|
||||
alter table t1 union (t2);
|
||||
insert into t1 values (1);
|
||||
alter table t1 insert_method = no;
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Table 't1' is read only
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -389,4 +389,19 @@ create table tm (b bit(1)) engine = merge union = (t1,t2);
|
|||
select * from tm;
|
||||
drop table tm, t1, t2;
|
||||
|
||||
# End of 5.0 tests
|
||||
#
|
||||
# Bug #17766: The server accepts to create MERGE tables which cannot work
|
||||
#
|
||||
create table t1 (a int) insert_method = last engine = merge;
|
||||
--error ER_OPEN_AS_READONLY
|
||||
insert into t1 values (1);
|
||||
create table t2 (a int) engine = myisam;
|
||||
alter table t1 union (t2);
|
||||
insert into t1 values (1);
|
||||
alter table t1 insert_method = no;
|
||||
--error ER_OPEN_AS_READONLY
|
||||
insert into t1 values (1);
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -132,6 +132,10 @@ int ha_myisammrg::close(void)
|
|||
int ha_myisammrg::write_row(byte * buf)
|
||||
{
|
||||
statistic_increment(table->in_use->status_var.ha_write_count,&LOCK_status);
|
||||
|
||||
if (file->merge_insert_method == MERGE_INSERT_DISABLED || !file->tables)
|
||||
return (HA_ERR_TABLE_READONLY);
|
||||
|
||||
if (table->timestamp_field_type & TIMESTAMP_AUTO_SET_ON_INSERT)
|
||||
table->timestamp_field->set_time();
|
||||
if (table->next_number_field && buf == table->record[0])
|
||||
|
|
|
@ -426,6 +426,7 @@ static int ha_init_errors(void)
|
|||
SETMSG(HA_ERR_NO_CONNECTION, "Could not connect to storage engine");
|
||||
SETMSG(HA_ERR_TABLE_DEF_CHANGED, ER(ER_TABLE_DEF_CHANGED));
|
||||
SETMSG(HA_ERR_TABLE_NEEDS_UPGRADE, ER(ER_TABLE_NEEDS_UPGRADE));
|
||||
SETMSG(HA_ERR_TABLE_READONLY, ER(ER_OPEN_AS_READONLY));
|
||||
|
||||
/* Register the error messages for use with my_error(). */
|
||||
return my_error_register(errmsgs, HA_ERR_FIRST, HA_ERR_LAST);
|
||||
|
@ -1858,6 +1859,9 @@ void handler::print_error(int error, myf errflag)
|
|||
case HA_ERR_TABLE_NEEDS_UPGRADE:
|
||||
textno=ER_TABLE_NEEDS_UPGRADE;
|
||||
break;
|
||||
case HA_ERR_TABLE_READONLY:
|
||||
textno= ER_OPEN_AS_READONLY;
|
||||
break;
|
||||
default:
|
||||
{
|
||||
/* The error was "unknown" to this function.
|
||||
|
|
Loading…
Reference in a new issue