mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
c7744c6df5
Split table version into 2 (major, minor) Impl. signaling to API when table has been altered Allow running transactions to use any minor number for transactions mysql-test/r/ndb_alter_table.result: Allow running transactions to use old table definition when possible. mysql-test/t/ndb_alter_table.test: Allow running transactions to use old table definition when possible. ndb/include/kernel/BlockNumbers.h: remove GREP ndb/include/kernel/GlobalSignalNumbers.h: Add ALTER_TABL_REP and API_BROADCAST_REP ndb/include/kernel/kernel_types.h: table_version_major ndb/include/kernel/signaldata/AlterTable.hpp: New error code for alter table during rolling upgrade ndb/include/ndbapi/NdbDictionary.hpp: Add state on table object to represent an altered but still valid table object ndb/src/common/debugger/BlockNames.cpp: remove GREP ndb/src/common/util/version.c: Fix upgrades ndb/src/kernel/SimBlockList.cpp: remove GREP ndb/src/kernel/blocks/Makefile.am: remove GREP ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: remove GREP ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Split tableSchemaVersion into 2 part 24 bit real version 8 bit for online alter table where old table definition is still usable ndb/src/kernel/blocks/dbdict/Dbdict.hpp: Check for same ndb versions ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp: Update schema printer ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: remove grep ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: 1) Use table_ version_major when checking table version 2) Dummy fix for BUG that tableSchemaVersion is only 16 bit in LQHKEYREQ ndb/src/kernel/blocks/dbtc/Dbtc.hpp: 1) Use table_ version_major when checking table version 2) Dummy fix for BUG that tableSchemaVersion is only 16 bit in LQHKEYREQ ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: 1) Use table_ version_major when checking table version 2) Dummy fix for BUG that tableSchemaVersion is only 16 bit in LQHKEYREQ ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: remove GREP ndb/src/kernel/blocks/qmgr/Qmgr.hpp: Add support for sending REP to ALL api nodes ndb/src/kernel/blocks/qmgr/QmgrInit.cpp: Add support for sending REP to ALL api nodes ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Add support for sending REP to ALL api nodes ndb/src/kernel/blocks/suma/Suma.cpp: remove GREP ndb/src/mgmsrv/MgmtSrvr.cpp: remove GREP ndb/src/ndbapi/DictCache.cpp: Add support for alter_table_rep by setting status to Altered NOTE special handling of tables in state RETREIVING ndb/src/ndbapi/DictCache.hpp: Add support for alter_table_rep by setting status to Altered NOTE special handling of tables in state RETREIVING ndb/src/ndbapi/NdbDictionaryImpl.cpp: Change alter table so that remove from global cache is used wo/ retreiving it from there first as ALTER_TABLE_REP might already have changed the table object... ndb/src/ndbapi/TransporterFacade.cpp: Add support for ALTER_TABLE_REP sql/ha_ndbcluster.cc: Allow running transactions to use tables in state ALTERED...but new transactions may not... ndb/include/kernel/signaldata/ApiBroadcast.hpp: New BitKeeper file ``ndb/include/kernel/signaldata/ApiBroadcast.hpp''
202 lines
6.2 KiB
Text
202 lines
6.2 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
drop database if exists mysqltest;
|
|
CREATE TABLE t1 (
|
|
a INT NOT NULL,
|
|
b INT NOT NULL
|
|
) ENGINE=ndbcluster;
|
|
INSERT INTO t1 VALUES (9410,9412);
|
|
ALTER TABLE t1 ADD COLUMN c int not null;
|
|
SELECT * FROM t1;
|
|
a b c
|
|
9410 9412 0
|
|
DROP TABLE t1;
|
|
CREATE DATABASE mysqltest;
|
|
USE mysqltest;
|
|
CREATE TABLE t1 (
|
|
a INT NOT NULL,
|
|
b INT NOT NULL
|
|
) ENGINE=ndbcluster;
|
|
RENAME TABLE t1 TO test.t1;
|
|
SHOW TABLES;
|
|
Tables_in_mysqltest
|
|
DROP DATABASE mysqltest;
|
|
USE test;
|
|
SHOW TABLES;
|
|
Tables_in_test
|
|
t1
|
|
DROP TABLE t1;
|
|
create table t1 (
|
|
col1 int not null auto_increment primary key,
|
|
col2 varchar(30) not null,
|
|
col3 varchar (20) not null,
|
|
col4 varchar(4) not null,
|
|
col5 enum('PENDING', 'ACTIVE', 'DISABLED') not null,
|
|
col6 int not null, to_be_deleted int) ENGINE=ndbcluster;
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 ndbcluster 9 Dynamic 0 0 0 NULL 0 0 1 NULL NULL NULL latin1_swedish_ci NULL
|
|
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
|
insert into t1 values
|
|
(0,4,3,5,"PENDING",1,7),(NULL,4,3,5,"PENDING",1,7),(31,4,3,5,"PENDING",1,7), (7,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7), (100,4,3,5,"PENDING",1,7), (99,4,3,5,"PENDING",1,7), (8,4,3,5,"PENDING",1,7), (NULL,4,3,5,"PENDING",1,7);
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 ndbcluster 9 Dynamic 9 0 0 NULL 0 0 102 NULL NULL NULL latin1_swedish_ci NULL
|
|
select * from t1 order by col1;
|
|
col1 col2 col3 col4 col5 col6 to_be_deleted
|
|
0 4 3 5 PENDING 1 7
|
|
1 4 3 5 PENDING 1 7
|
|
7 4 3 5 PENDING 1 7
|
|
8 4 3 5 PENDING 1 7
|
|
31 4 3 5 PENDING 1 7
|
|
32 4 3 5 PENDING 1 7
|
|
99 4 3 5 PENDING 1 7
|
|
100 4 3 5 PENDING 1 7
|
|
101 4 3 5 PENDING 1 7
|
|
alter table t1
|
|
add column col4_5 varchar(20) not null after col4,
|
|
add column col7 varchar(30) not null after col5,
|
|
add column col8 datetime not null, drop column to_be_deleted,
|
|
change column col2 fourth varchar(30) not null after col3,
|
|
modify column col6 int not null first;
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 ndbcluster 9 Dynamic 9 0 0 NULL 0 0 102 NULL NULL NULL latin1_swedish_ci NULL
|
|
select * from t1 order by col1;
|
|
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
|
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 1 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 7 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 8 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 31 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 32 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 99 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 100 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 101 3 4 5 PENDING 0000-00-00 00:00:00
|
|
insert into t1 values (2, NULL,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
|
show table status;
|
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
t1 ndbcluster 9 Dynamic 10 0 0 NULL 0 0 103 NULL NULL NULL latin1_swedish_ci NULL
|
|
select * from t1 order by col1;
|
|
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
|
1 0 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 1 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 7 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 8 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 31 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 32 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 99 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 100 3 4 5 PENDING 0000-00-00 00:00:00
|
|
1 101 3 4 5 PENDING 0000-00-00 00:00:00
|
|
2 102 4 3 5 99 PENDING EXTRA 2004-01-01 00:00:00
|
|
delete from t1;
|
|
insert into t1 values (0,0,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
|
SET SQL_MODE='';
|
|
insert into t1 values (1,0,4,3,5,99,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
|
select * from t1 order by col1;
|
|
col6 col1 col3 fourth col4 col4_5 col5 col7 col8
|
|
0 0 4 3 5 99 PENDING EXTRA 2004-01-01 00:00:00
|
|
1 103 4 3 5 99 PENDING EXTRA 2004-01-01 00:00:00
|
|
alter table t1 drop column col4_5;
|
|
insert into t1 values (2,0,4,3,5,"PENDING","EXTRA",'2004-01-01 00:00:00');
|
|
select * from t1 order by col1;
|
|
col6 col1 col3 fourth col4 col5 col7 col8
|
|
0 0 4 3 5 PENDING EXTRA 2004-01-01 00:00:00
|
|
1 103 4 3 5 PENDING EXTRA 2004-01-01 00:00:00
|
|
2 104 4 3 5 PENDING EXTRA 2004-01-01 00:00:00
|
|
drop table t1;
|
|
CREATE TABLE t1 (
|
|
a INT NOT NULL,
|
|
b INT NOT NULL
|
|
) ENGINE=ndbcluster;
|
|
INSERT INTO t1 VALUES (9410,9412);
|
|
ALTER TABLE t1 ADD COLUMN c int not null;
|
|
select * from t1 order by a;
|
|
a b c
|
|
9410 9412 0
|
|
select * from t1 order by a;
|
|
a b c
|
|
9410 9412 0
|
|
alter table t1 drop c;
|
|
select * from t1 order by a;
|
|
a b
|
|
9410 9412
|
|
drop table t1;
|
|
select * from t1 order by a;
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
CREATE TABLE t1 (
|
|
a INT NOT NULL PRIMARY KEY,
|
|
b INT NOT NULL
|
|
) ENGINE=ndbcluster;
|
|
INSERT INTO t1 VALUES (0,1),(17,18);
|
|
select * from t1 order by a;
|
|
a b
|
|
0 1
|
|
17 18
|
|
SET SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
|
|
alter table t1 modify column a int not null auto_increment;
|
|
SET SQL_MODE='';
|
|
select * from t1 order by a;
|
|
a b
|
|
0 1
|
|
17 18
|
|
INSERT INTO t1 VALUES (0,19),(20,21);
|
|
select * from t1 order by a;
|
|
a b
|
|
0 1
|
|
17 18
|
|
18 19
|
|
20 21
|
|
drop table t1;
|
|
CREATE TABLE t1 (
|
|
a INT NOT NULL PRIMARY KEY,
|
|
b INT NOT NULL
|
|
) ENGINE=ndbcluster;
|
|
INSERT INTO t1 VALUES (0,1),(17,18);
|
|
select * from t1 order by a;
|
|
a b
|
|
0 1
|
|
17 18
|
|
alter table t1 add c int not null unique auto_increment;
|
|
select c from t1 order by c;
|
|
c
|
|
1
|
|
2
|
|
INSERT INTO t1 VALUES (1,2,0),(18,19,4),(20,21,0);
|
|
select c from t1 order by c;
|
|
c
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
drop table t1;
|
|
create table t1 ( a int primary key, b varchar(10), c varchar(10), index (b) )
|
|
engine=ndb;
|
|
insert into t1 values (1,'one','one'), (2,'two','two'), (3,'three','three');
|
|
create index c on t1(c);
|
|
select * from t1 where b = 'two';
|
|
a b c
|
|
2 two two
|
|
alter table t1 drop index c;
|
|
select * from t1 where b = 'two';
|
|
a b c
|
|
2 two two
|
|
select * from t1 where b = 'two';
|
|
a b c
|
|
2 two two
|
|
drop table t1;
|
|
create table t3 (a int primary key) engine=ndbcluster;
|
|
begin;
|
|
insert into t3 values (1);
|
|
alter table t3 rename t4;
|
|
delete from t3;
|
|
insert into t3 values (1);
|
|
commit;
|
|
select * from t3;
|
|
ERROR HY000: Can't lock file (errno: 155)
|
|
select * from t4;
|
|
a
|
|
1
|
|
drop table t4;
|
|
show tables;
|
|
Tables_in_test
|