mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
The handlerton structures for archive and CSV had not been updated. Nicht so gute. I also fixed CSV to use fast alter table and put in a test in archive in case someone tries to do the same there (hint... it won't work).
mysql-test/r/archive.result: New results mysql-test/r/csv.result: New results mysql-test/t/archive.test: Adding test for new fast alter table mysql-test/t/csv.test: Adding test for new fast alter table sql/ha_archive.cc: Updating handlerton to remove warnings. storage/csv/ha_tina.cc: Updating handlerton to remove warnings, and updated CSV to handle fast alter table. storage/csv/ha_tina.h: New method.
This commit is contained in:
@ -12537,4 +12537,59 @@ SELECT c FROM t5 WHERE a IN (32, 23, 5);
|
|||||||
c
|
c
|
||||||
NULL
|
NULL
|
||||||
posterity
|
posterity
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (v varchar(32));
|
||||||
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
alter table t1 change v v2 varchar(32);
|
||||||
|
select * from t1;
|
||||||
|
v2
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
alter table t1 change v2 v varchar(64);
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
lmn
|
||||||
|
3r4f
|
||||||
|
alter table t1 add i int auto_increment not null primary key first;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
3 lmn
|
||||||
|
4 3r4f
|
||||||
|
update t1 set i=5 where i=3;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
5 lmn
|
||||||
|
4 3r4f
|
||||||
|
alter table t1 change i i bigint;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
5 lmn
|
||||||
|
4 3r4f
|
||||||
|
alter table t1 add unique key (i, v);
|
||||||
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
||||||
|
i v
|
||||||
|
4 3r4f
|
||||||
drop table t1, t2, t4, t5;
|
drop table t1, t2, t4, t5;
|
||||||
|
@ -5017,3 +5017,58 @@ insert t1 values (1),(2),(3),(4),(5);
|
|||||||
truncate table t1;
|
truncate table t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (v varchar(32));
|
||||||
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
alter table t1 change v v2 varchar(32);
|
||||||
|
select * from t1;
|
||||||
|
v2
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
alter table t1 change v2 v varchar(64);
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
hij
|
||||||
|
3r4f
|
||||||
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
|
select * from t1;
|
||||||
|
v
|
||||||
|
def
|
||||||
|
abc
|
||||||
|
lmn
|
||||||
|
3r4f
|
||||||
|
alter table t1 add i int auto_increment not null primary key first;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
3 lmn
|
||||||
|
4 3r4f
|
||||||
|
update t1 set i=5 where i=3;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
5 lmn
|
||||||
|
4 3r4f
|
||||||
|
alter table t1 change i i bigint;
|
||||||
|
select * from t1;
|
||||||
|
i v
|
||||||
|
1 def
|
||||||
|
2 abc
|
||||||
|
5 lmn
|
||||||
|
4 3r4f
|
||||||
|
alter table t1 add unique key (i, v);
|
||||||
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
||||||
|
i v
|
||||||
|
4 3r4f
|
||||||
|
drop table t1;
|
||||||
|
@ -1456,6 +1456,34 @@ SELECT c FROM t5;
|
|||||||
SELECT c FROM t5 WHERE a =3;
|
SELECT c FROM t5 WHERE a =3;
|
||||||
SELECT c FROM t5 WHERE a IN (32, 23, 5);
|
SELECT c FROM t5 WHERE a IN (32, 23, 5);
|
||||||
|
|
||||||
|
# Adding this in case someone tries to add fast alter table and doesn't tes
|
||||||
|
# it.
|
||||||
|
# Some additional tests for new, faster alter table. Note that most of the
|
||||||
|
# whole alter table code is being tested all around the test suite already.
|
||||||
|
#
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (v varchar(32));
|
||||||
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
|
select * from t1;
|
||||||
|
# Fast alter, no copy performed
|
||||||
|
alter table t1 change v v2 varchar(32);
|
||||||
|
select * from t1;
|
||||||
|
# Fast alter, no copy performed
|
||||||
|
alter table t1 change v2 v varchar(64);
|
||||||
|
select * from t1;
|
||||||
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
|
select * from t1;
|
||||||
|
# Regular alter table
|
||||||
|
alter table t1 add i int auto_increment not null primary key first;
|
||||||
|
select * from t1;
|
||||||
|
update t1 set i=5 where i=3;
|
||||||
|
select * from t1;
|
||||||
|
alter table t1 change i i bigint;
|
||||||
|
select * from t1;
|
||||||
|
alter table t1 add unique key (i, v);
|
||||||
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cleanup, test is over
|
# Cleanup, test is over
|
||||||
#
|
#
|
||||||
|
@ -1418,3 +1418,29 @@ truncate table t1; -- truncate
|
|||||||
--disable_info
|
--disable_info
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Some additional tests for new, faster alter table. Note that most of the
|
||||||
|
# whole alter table code is being tested all around the test suite already.
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (v varchar(32));
|
||||||
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
|
select * from t1;
|
||||||
|
# Fast alter, no copy performed
|
||||||
|
alter table t1 change v v2 varchar(32);
|
||||||
|
select * from t1;
|
||||||
|
# Fast alter, no copy performed
|
||||||
|
alter table t1 change v2 v varchar(64);
|
||||||
|
select * from t1;
|
||||||
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
|
select * from t1;
|
||||||
|
# Regular alter table
|
||||||
|
alter table t1 add i int auto_increment not null primary key first;
|
||||||
|
select * from t1;
|
||||||
|
update t1 set i=5 where i=3;
|
||||||
|
select * from t1;
|
||||||
|
alter table t1 change i i bigint;
|
||||||
|
select * from t1;
|
||||||
|
alter table t1 add unique key (i, v);
|
||||||
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
||||||
|
drop table t1;
|
||||||
|
@ -177,7 +177,9 @@ handlerton archive_hton = {
|
|||||||
NULL, /* Partition flags */
|
NULL, /* Partition flags */
|
||||||
NULL, /* Alter table flags */
|
NULL, /* Alter table flags */
|
||||||
NULL, /* Alter interface */
|
NULL, /* Alter interface */
|
||||||
HTON_NO_FLAGS
|
HTON_NO_FLAGS,
|
||||||
|
NULL, /* binlog_func */
|
||||||
|
NULL /* binlog_log_query */
|
||||||
};
|
};
|
||||||
|
|
||||||
static handler *archive_create_handler(TABLE_SHARE *table)
|
static handler *archive_create_handler(TABLE_SHARE *table)
|
||||||
|
@ -92,7 +92,9 @@ handlerton tina_hton= {
|
|||||||
NULL, /* Alter table flags */
|
NULL, /* Alter table flags */
|
||||||
NULL, /* Alter Tablespace */
|
NULL, /* Alter Tablespace */
|
||||||
NULL, /* Fill FILES Table */
|
NULL, /* Fill FILES Table */
|
||||||
HTON_CAN_RECREATE
|
HTON_CAN_RECREATE,
|
||||||
|
NULL, /* binlog_func */
|
||||||
|
NULL /* binlog_log_query */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -1018,6 +1020,12 @@ int ha_tina::create(const char *name, TABLE *table_arg,
|
|||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ha_tina::check_if_incompatible_data(HA_CREATE_INFO *info,
|
||||||
|
uint table_changes)
|
||||||
|
{
|
||||||
|
return COMPATIBLE_DATA_YES;
|
||||||
|
}
|
||||||
|
|
||||||
mysql_declare_plugin
|
mysql_declare_plugin
|
||||||
{
|
{
|
||||||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||||
|
@ -122,6 +122,8 @@ public:
|
|||||||
int extra(enum ha_extra_function operation);
|
int extra(enum ha_extra_function operation);
|
||||||
int delete_all_rows(void);
|
int delete_all_rows(void);
|
||||||
int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info);
|
int create(const char *name, TABLE *form, HA_CREATE_INFO *create_info);
|
||||||
|
bool check_if_incompatible_data(HA_CREATE_INFO *info,
|
||||||
|
uint table_changes);
|
||||||
|
|
||||||
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
|
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
|
||||||
enum thr_lock_type lock_type);
|
enum thr_lock_type lock_type);
|
||||||
|
Reference in New Issue
Block a user