mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
Merge tag 'mariadb-10.0.19' into 10.0-galera
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,63 +0,0 @@
|
||||
call mtr.add_suppression("InnoDB: Error: row_merge_drop_indexes_dict failed with error code*");
|
||||
create table t1(a int, b int) engine=innodb;
|
||||
create procedure innodb_insert_proc (repeat_count int)
|
||||
begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values(current_num, current_num);
|
||||
set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
commit;
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(20000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
create table t2(a int) engine=innodb;
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE `t2` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
set DEBUG_DBUG='+d,ib_os_aio_func_io_failure_28';
|
||||
alter table t1 add testcol int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
alter table t2 add testcol int;
|
||||
ERROR HY000: The table 't2' is full
|
||||
alter table t1 add testcol int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
alter table t1 add testcol int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
alter table t1 add testcol2 int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
alter table t1 add testcol3 int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
alter table t1 add testcol int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t2;
|
||||
alter table t1 add testcol2 int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
alter table t1 add testcol3 int;
|
||||
ERROR HY000: The table 't1' is full
|
||||
call innodb_insert_proc(20000);
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(20000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
set DEBUG_DBUG='';
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table t1;
|
||||
drop table if exists t2;
|
40
mysql-test/suite/innodb/r/innodb-alter-tempfile.result
Normal file
40
mysql-test/suite/innodb/r/innodb-alter-tempfile.result
Normal file
@@ -0,0 +1,40 @@
|
||||
#
|
||||
# Bug #18734396 INNODB IN-PLACE ALTER FAILURES BLOCK FUTURE ALTERS
|
||||
#
|
||||
# Temporary tablename will be unique. This makes sure that future
|
||||
# in-place ALTERs of the same table will not be blocked due to
|
||||
# temporary tablename.
|
||||
# Crash the server in ha_innobase::commit_inplace_alter_table()
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb;
|
||||
SET debug='d,innodb_alter_commit_crash_before_commit';
|
||||
Warnings:
|
||||
Warning 1287 '@@debug' is deprecated and will be removed in a future release. Please use '@@debug_dbug' instead
|
||||
# Write file to make mysql-test-run.pl expect crash
|
||||
# Execute the statement that causes the crash
|
||||
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Startup the server after the crash
|
||||
# Read and remember the temporary table name
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
# Consecutive Alter table does not create same temporary file name
|
||||
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
# Shutdown the server to allow manual recovery
|
||||
# Manual recovery begin. The dictionary was not updated
|
||||
# and the files were not renamed. The rebuilt table
|
||||
# was left behind on purpose, to faciliate data recovery.
|
||||
# Manual recovery end
|
||||
# Startup the server after manual recovery
|
||||
# Drop the orphaned rebuilt table.
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`f1` int(11) NOT NULL,
|
||||
`f2` int(11) NOT NULL,
|
||||
PRIMARY KEY (`f2`,`f1`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
7
mysql-test/suite/innodb/r/innodb-bigblob.result
Normal file
7
mysql-test/suite/innodb/r/innodb-bigblob.result
Normal file
@@ -0,0 +1,7 @@
|
||||
call mtr.add_suppression("Resizing redo log from *");
|
||||
call mtr.add_suppression("Starting to delete and rewrite log files.");
|
||||
call mtr.add_suppression("New log files created, LSN=*");
|
||||
create table foo (id varchar(37) not null, content longblob) engine=INNODB;
|
||||
insert into foo (id, content) values('xyz', '');
|
||||
update foo set content=repeat('a', 43941888) where id='xyz';
|
||||
drop table foo;
|
@@ -67,3 +67,78 @@ Error 1005 Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key c
|
||||
Warning 1215 Cannot add foreign key constraint
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
CREATE TABLE `#departaments` (
|
||||
`id_depart` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id_depart`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
CREATE TABLE `#departaments_tree` (
|
||||
`id_depart` INT(10) UNSIGNED NOT NULL,
|
||||
`id_depart_in` INT(10) UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`id_depart`,`id_depart_in`),
|
||||
CONSTRAINT `#departaments_tree_ibfk_1` FOREIGN KEY (`id_depart`) REFERENCES `#departaments` (`id_depart`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
ALTER TABLE `#departaments_tree`
|
||||
ADD FOREIGN KEY (`id_depart_in`) REFERENCES `#departaments`(`id_depart`);
|
||||
SHOW CREATE TABLE `#departaments_tree`;
|
||||
Table Create Table
|
||||
#departaments_tree CREATE TABLE `#departaments_tree` (
|
||||
`id_depart` int(10) unsigned NOT NULL,
|
||||
`id_depart_in` int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (`id_depart`,`id_depart_in`),
|
||||
KEY `id_depart_in` (`id_depart_in`),
|
||||
CONSTRAINT `#departaments_tree_ibfk_1` FOREIGN KEY (`id_depart`) REFERENCES `#departaments` (`id_depart`),
|
||||
CONSTRAINT `#departaments_tree_ibfk_2` FOREIGN KEY (`id_depart_in`) REFERENCES `#departaments` (`id_depart`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
||||
DROP TABLE `#departaments_tree`;
|
||||
DROP TABLE `#departaments`;
|
||||
CREATE TABLE `boroda` (
|
||||
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`a` INT(11) UNSIGNED DEFAULT NULL,
|
||||
`b` INT(11) UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
CONSTRAINT `boroda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `boroda` (`id`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
ALTER TABLE `boroda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `boroda`(`id`);
|
||||
ALTER TABLE `boroda` DROP FOREIGN KEY `boroda_ibfk_2`;
|
||||
RENAME TABLE `boroda` TO `#boroda`;
|
||||
ALTER TABLE `#boroda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `#boroda`(`id`);
|
||||
SHOW CREATE TABLE `#boroda`;
|
||||
Table Create Table
|
||||
#boroda CREATE TABLE `#boroda` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`a` int(11) unsigned DEFAULT NULL,
|
||||
`b` int(11) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
KEY `b` (`b`),
|
||||
CONSTRAINT `#boroda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `#boroda` (`id`),
|
||||
CONSTRAINT `#boroda_ibfk_2` FOREIGN KEY (`b`) REFERENCES `#boroda` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
||||
DROP TABLE `#boroda`;
|
||||
CREATE TABLE `boroda` (
|
||||
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`a` INT(11) UNSIGNED DEFAULT NULL,
|
||||
`b` INT(11) UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
CONSTRAINT `boroda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `boroda` (`id`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
RENAME TABLE `boroda` TO `bor#oda`;
|
||||
ALTER TABLE `bor#oda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `bor#oda`(`id`);
|
||||
SHOW CREATE TABLE `bor#oda`;
|
||||
Table Create Table
|
||||
bor#oda CREATE TABLE `bor#oda` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`a` int(11) unsigned DEFAULT NULL,
|
||||
`b` int(11) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
KEY `b` (`b`),
|
||||
CONSTRAINT `bor#oda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `bor#oda` (`id`),
|
||||
CONSTRAINT `bor#oda_ibfk_2` FOREIGN KEY (`b`) REFERENCES `bor#oda` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
||||
DROP TABLE `bor#oda`;
|
||||
|
@@ -1 +0,0 @@
|
||||
1
|
322
mysql-test/suite/innodb/r/innodb-virtual-columns.result
Normal file
322
mysql-test/suite/innodb/r/innodb-virtual-columns.result
Normal file
@@ -0,0 +1,322 @@
|
||||
CREATE TABLE IF NOT EXISTS gso_grad_supr (
|
||||
term char(4) NOT NULL DEFAULT '',
|
||||
uw_id int(8) UNSIGNED NOT NULL DEFAULT 0,
|
||||
plan varchar(10) NOT NULL DEFAULT '',
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
admit_term char(4) NOT NULL DEFAULT '',
|
||||
CONSTRAINT gso_grad_supr_pky PRIMARY KEY (uw_id, term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
INSERT INTO `gso_grad_supr` VALUES ('1031',2,'CSM','','1009');
|
||||
INSERT INTO `gso_grad_supr` VALUES ('1035',2,'CSM','ACAD','1009');
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
drop table grad_degree;
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status2 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress2'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed2'
|
||||
ELSE 'Not Completed2'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status3 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress3'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed3'
|
||||
ELSE 'Not Completed3'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status4 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress4'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed4'
|
||||
ELSE 'Not Completed4'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status5 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress5'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed5'
|
||||
ELSE 'Not Completed5'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status6 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress6'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed6'
|
||||
ELSE 'Not Completed6'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status7 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress7'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed7'
|
||||
ELSE 'Not Completed7'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status8 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress8'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed8'
|
||||
ELSE 'Not Completed8'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
ALTER TABLE grad_degree DROP INDEX grad_degree_wdraw_rsn_ndx;
|
||||
ALTER TABLE grad_degree DROP COLUMN deg_start_term;
|
||||
SHOW CREATE TABLE grad_degree;
|
||||
Table Create Table
|
||||
grad_degree CREATE TABLE `grad_degree` (
|
||||
`student_id` int(8) unsigned NOT NULL,
|
||||
`plan` varchar(10) NOT NULL,
|
||||
`admit_term` char(4) NOT NULL,
|
||||
`wdraw_rsn` varchar(4) NOT NULL DEFAULT '',
|
||||
`ofis_deg_status` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status2` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress2'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed2'
|
||||
ELSE 'Not Completed2'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status3` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress3'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed3'
|
||||
ELSE 'Not Completed3'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status4` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress4'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed4'
|
||||
ELSE 'Not Completed4'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status5` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress5'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed5'
|
||||
ELSE 'Not Completed5'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status6` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress6'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed6'
|
||||
ELSE 'Not Completed6'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status7` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress7'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed7'
|
||||
ELSE 'Not Completed7'
|
||||
END) VIRTUAL,
|
||||
`ofis_deg_status8` varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress8'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed8'
|
||||
ELSE 'Not Completed8'
|
||||
END) VIRTUAL,
|
||||
`deg_as_of_term` char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
PRIMARY KEY (`student_id`,`plan`,`admit_term`),
|
||||
KEY `grad_degree_as_of_term_ndx` (`deg_as_of_term`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
||||
DROP TABLE grad_degree;
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status2 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress2'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed2'
|
||||
ELSE 'Not Completed2'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status3 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress3'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed3'
|
||||
ELSE 'Not Completed3'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status4 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress4'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed4'
|
||||
ELSE 'Not Completed4'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status5 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress5'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed5'
|
||||
ELSE 'Not Completed5'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status6 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress6'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed6'
|
||||
ELSE 'Not Completed6'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status7 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress7'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed7'
|
||||
ELSE 'Not Completed7'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status8 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress8'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed8'
|
||||
ELSE 'Not Completed8'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
ALTER TABLE grad_degree DROP COLUMN ofis_deg_status2, DROP COLUMN ofis_deg_status3,
|
||||
DROP COLUMN ofis_deg_status4, DROP COLUMN ofis_deg_status5, DROP COLUMN ofis_deg_status6,
|
||||
DROP COLUMN ofis_deg_status7, DROP COLUMN ofis_deg_status8;
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
select * from grad_degree;
|
||||
student_id plan admit_term wdraw_rsn ofis_deg_status deg_start_term deg_as_of_term
|
||||
2 CSM 1009 ACAD Not Completed 1009 1035
|
||||
select * from gso_grad_supr;
|
||||
term uw_id plan wdraw_rsn admit_term
|
||||
1031 2 CSM 1009
|
||||
1035 2 CSM ACAD 1009
|
||||
drop table grad_degree;
|
||||
drop table gso_grad_supr;
|
17
mysql-test/suite/innodb/r/innodb-xa.result
Normal file
17
mysql-test/suite/innodb/r/innodb-xa.result
Normal file
@@ -0,0 +1,17 @@
|
||||
xa rollback 'xid2';
|
||||
ERROR XAE04: XAER_NOTA: Unknown XID
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.t1'
|
||||
create table t1(a int)engine=innodb;
|
||||
rollback;
|
||||
xa start 'xid2';
|
||||
insert into `t1` values (1);
|
||||
savepoint `sv1`;
|
||||
xa end 'xid2';
|
||||
start transaction;
|
||||
ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state
|
||||
xa prepare 'xid2';
|
||||
release savepoint `sv1`;
|
||||
xa commit 'xid2';
|
||||
drop table t1;
|
@@ -86,4 +86,36 @@ SHOW MASTER STATUS;
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /Server ver: .*, Binlog ver: .*/Server ver: #, Binlog ver: #/ /table_id: [0-9]+/table_id: #/
|
||||
SHOW BINLOG EVENTS;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo *** MDEV-7310: last_commit_pos_offset set to wrong value after binlog rotate in group commit ***
|
||||
|
||||
SET @old_size= @@GLOBAL.max_binlog_size;
|
||||
SET GLOBAL max_binlog_size=4096;
|
||||
|
||||
CREATE TABLE t3 (a INT PRIMARY KEY, b VARBINARY(8192)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (10, '');
|
||||
--let $bigdata= `SELECT REPEAT('a', 5000)`
|
||||
eval INSERT INTO t3 VALUES (11, '$bigdata');
|
||||
|
||||
# The bug was that binlog_snapshot_file pointed to the new file after binlog
|
||||
# rotation, but binlog_snapshot_position was the offset in the old file before
|
||||
# binlog rotation. So the position was invalid.
|
||||
# So here, we check that the values are consistent with SHOW MASTER STATUS,
|
||||
# which uses a different code path and did not have the bug.
|
||||
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
--let $snap_file= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_file', Value, 1)
|
||||
--let $snap_pos= query_get_value(SHOW STATUS LIKE 'binlog_snapshot_position', Value, 1)
|
||||
|
||||
--let $master_file= query_get_value(SHOW MASTER STATUS, File, 1)
|
||||
--let $master_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||
|
||||
--disable_query_log
|
||||
eval SET @errmsg= 'ERROR: ($snap_file, $snap_pos) != ($master_file, $master_pos)';
|
||||
eval SELECT IF('$snap_file' = '$master_file' AND $snap_pos = $master_pos, 'OK', @errmsg) AS test_result;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL max_binlog_size=@old_size;
|
||||
|
||||
|
||||
DROP TABLE t1,t2, t3;
|
||||
|
@@ -1 +0,0 @@
|
||||
--innodb-use-native-aio=0
|
@@ -1,75 +0,0 @@
|
||||
# MDEV-6288: Innodb causes server crash after disk full, then can't ALTER TABLE any more
|
||||
--source include/have_innodb.inc
|
||||
--source include/not_windows.inc
|
||||
--source include/not_valgrind.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# DEBUG_SYNC must be compiled in.
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Error: row_merge_drop_indexes_dict failed with error code*");
|
||||
|
||||
create table t1(a int, b int) engine=innodb;
|
||||
|
||||
delimiter //;
|
||||
create procedure innodb_insert_proc (repeat_count int)
|
||||
begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values(current_num, current_num);
|
||||
set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
delimiter ;//
|
||||
commit;
|
||||
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(20000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
|
||||
create table t2(a int) engine=innodb;
|
||||
show create table t2;
|
||||
|
||||
# This caused crash earlier
|
||||
set DEBUG_DBUG='+d,ib_os_aio_func_io_failure_28';
|
||||
--error 1114
|
||||
alter table t1 add testcol int;
|
||||
show create table t1;
|
||||
--error 1114
|
||||
alter table t2 add testcol int;
|
||||
--error 1114
|
||||
alter table t1 add testcol int;
|
||||
--error 1114
|
||||
alter table t1 add testcol int;
|
||||
--error 1114
|
||||
alter table t1 add testcol2 int;
|
||||
--error 1114
|
||||
alter table t1 add testcol3 int;
|
||||
--error 1114
|
||||
alter table t1 add testcol int;
|
||||
show create table t1;
|
||||
--error 0,1051
|
||||
drop table t2;
|
||||
--error 1114
|
||||
alter table t1 add testcol2 int;
|
||||
--error 1114
|
||||
alter table t1 add testcol3 int;
|
||||
--error 0,1114
|
||||
call innodb_insert_proc(20000);
|
||||
set autocommit=0;
|
||||
--error 0,1114
|
||||
call innodb_insert_proc(20000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
|
||||
set DEBUG_DBUG='';
|
||||
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table t1;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
|
||||
|
75
mysql-test/suite/innodb/t/innodb-alter-tempfile.test
Normal file
75
mysql-test/suite/innodb/t/innodb-alter-tempfile.test
Normal file
@@ -0,0 +1,75 @@
|
||||
# Not supported in embedded
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# This test case needs to crash the server. Needs a debug server.
|
||||
--source include/have_debug.inc
|
||||
|
||||
# Don't test this under valgrind, memory leaks will occur.
|
||||
--source include/not_valgrind.inc
|
||||
|
||||
# Avoid CrashReporter popup on Mac
|
||||
--source include/not_crashrep.inc
|
||||
|
||||
# InnoDB is required
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug #18734396 INNODB IN-PLACE ALTER FAILURES BLOCK FUTURE ALTERS
|
||||
--echo #
|
||||
--echo # Temporary tablename will be unique. This makes sure that future
|
||||
--echo # in-place ALTERs of the same table will not be blocked due to
|
||||
--echo # temporary tablename.
|
||||
|
||||
let datadir= `select @@datadir`;
|
||||
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name=$MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
|
||||
--echo # Crash the server in ha_innobase::commit_inplace_alter_table()
|
||||
CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL) ENGINE=innodb;
|
||||
SET debug='d,innodb_alter_commit_crash_before_commit';
|
||||
|
||||
let $orig_table_id = `SELECT table_id
|
||||
FROM information_schema.innodb_sys_tables
|
||||
WHERE name = 'test/t1'`;
|
||||
|
||||
--echo # Write file to make mysql-test-run.pl expect crash
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--echo # Execute the statement that causes the crash
|
||||
--error 2013
|
||||
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
--echo # Startup the server after the crash
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
--echo # Read and remember the temporary table name
|
||||
let $temp_table_name = `SELECT SUBSTRING(name,6)
|
||||
FROM information_schema.innodb_sys_tables
|
||||
WHERE name LIKE "test/#sql-ib$orig_table_id%"`;
|
||||
# This second copy is an environment variable for the perl script below.
|
||||
let temp_table_name = $temp_table_name;
|
||||
show create table t1;
|
||||
--echo # Consecutive Alter table does not create same temporary file name
|
||||
ALTER TABLE t1 ADD PRIMARY KEY (f2, f1);
|
||||
--echo # Shutdown the server to allow manual recovery
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--echo # Manual recovery begin. The dictionary was not updated
|
||||
--echo # and the files were not renamed. The rebuilt table
|
||||
--echo # was left behind on purpose, to faciliate data recovery.
|
||||
|
||||
perl;
|
||||
my @frm_file = glob "$ENV{'datadir'}/test/#sql-*.frm";
|
||||
my $target_frm = "$ENV{'datadir'}/test/$ENV{'temp_table_name'}.frm";
|
||||
rename($frm_file[0], $target_frm);
|
||||
EOF
|
||||
--echo # Manual recovery end
|
||||
--echo # Startup the server after manual recovery
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
--echo # Drop the orphaned rebuilt table.
|
||||
--disable_query_log
|
||||
eval DROP TABLE `#mysql50#$temp_table_name`;
|
||||
--enable_query_log
|
||||
show create table t1;
|
||||
drop table t1;
|
2
mysql-test/suite/innodb/t/innodb-bigblob.opt
Normal file
2
mysql-test/suite/innodb/t/innodb-bigblob.opt
Normal file
@@ -0,0 +1,2 @@
|
||||
--max-allowed-packet=128M
|
||||
--innodb-log-file-size=210M
|
20
mysql-test/suite/innodb/t/innodb-bigblob.test
Normal file
20
mysql-test/suite/innodb/t/innodb-bigblob.test
Normal file
@@ -0,0 +1,20 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/big_test.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $status_orig=`SELECT @@innodb_status_output`;
|
||||
--enable_query_log
|
||||
|
||||
call mtr.add_suppression("Resizing redo log from *");
|
||||
call mtr.add_suppression("Starting to delete and rewrite log files.");
|
||||
call mtr.add_suppression("New log files created, LSN=*");
|
||||
|
||||
create table foo (id varchar(37) not null, content longblob) engine=INNODB;
|
||||
insert into foo (id, content) values('xyz', '');
|
||||
update foo set content=repeat('a', 43941888) where id='xyz';
|
||||
drop table foo;
|
||||
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_status_output = $status_orig;
|
||||
--enable_query_log
|
@@ -124,3 +124,66 @@ show warnings;
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# MDEV-7627: Some symbols in table name can cause to Error Code: 1050 when created FK
|
||||
#
|
||||
|
||||
CREATE TABLE `#departaments` (
|
||||
`id_depart` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`id_depart`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `#departaments_tree` (
|
||||
`id_depart` INT(10) UNSIGNED NOT NULL,
|
||||
`id_depart_in` INT(10) UNSIGNED NOT NULL,
|
||||
PRIMARY KEY (`id_depart`,`id_depart_in`),
|
||||
CONSTRAINT `#departaments_tree_ibfk_1` FOREIGN KEY (`id_depart`) REFERENCES `#departaments` (`id_depart`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
|
||||
ALTER TABLE `#departaments_tree`
|
||||
ADD FOREIGN KEY (`id_depart_in`) REFERENCES `#departaments`(`id_depart`);
|
||||
|
||||
SHOW CREATE TABLE `#departaments_tree`;
|
||||
|
||||
DROP TABLE `#departaments_tree`;
|
||||
DROP TABLE `#departaments`;
|
||||
|
||||
CREATE TABLE `boroda` (
|
||||
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`a` INT(11) UNSIGNED DEFAULT NULL,
|
||||
`b` INT(11) UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
CONSTRAINT `boroda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `boroda` (`id`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
|
||||
ALTER TABLE `boroda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `boroda`(`id`);
|
||||
|
||||
ALTER TABLE `boroda` DROP FOREIGN KEY `boroda_ibfk_2`;
|
||||
|
||||
RENAME TABLE `boroda` TO `#boroda`;
|
||||
|
||||
ALTER TABLE `#boroda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `#boroda`(`id`);
|
||||
|
||||
SHOW CREATE TABLE `#boroda`;
|
||||
DROP TABLE `#boroda`;
|
||||
|
||||
CREATE TABLE `boroda` (
|
||||
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`a` INT(11) UNSIGNED DEFAULT NULL,
|
||||
`b` INT(11) UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a` (`a`),
|
||||
CONSTRAINT `boroda_ibfk_1` FOREIGN KEY (`a`) REFERENCES `boroda` (`id`)
|
||||
) ENGINE=INNODB DEFAULT CHARSET=utf8;
|
||||
|
||||
RENAME TABLE `boroda` TO `bor#oda`;
|
||||
|
||||
ALTER TABLE `bor#oda`
|
||||
ADD FOREIGN KEY (`b`) REFERENCES `bor#oda`(`id`);
|
||||
|
||||
SHOW CREATE TABLE `bor#oda`;
|
||||
DROP TABLE `bor#oda`;
|
||||
|
@@ -1,23 +0,0 @@
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
# MDEV-7055: MySQL#74664 - InnoDB: Failing assertion: len <= col->len
|
||||
# || col->mtype == 5 || (col->len == 0 && col->mtype == 1) in
|
||||
# file rem0rec.cc line 845
|
||||
--disable_query_log
|
||||
--disable_warnings
|
||||
--disable_result_log
|
||||
set @old_character_set=@@character_set_connection;
|
||||
set character_set_connection=ucs2;
|
||||
create TABLE t1 engine=innodb select if(0=0,'Y','N');
|
||||
insert INTO t1 values(date_format('2001-01-01','%W'));
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
set @@character_set_connection=@old_character_set;
|
||||
--enable_result_log
|
||||
--enable_warnings
|
||||
--enable_query_log
|
||||
|
||||
#produce something
|
||||
--echo 1
|
||||
|
||||
|
302
mysql-test/suite/innodb/t/innodb-virtual-columns.test
Normal file
302
mysql-test/suite/innodb/t/innodb-virtual-columns.test
Normal file
@@ -0,0 +1,302 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
#
|
||||
# MDEV-7367: Updating a virtual column corrupts table which crashes server
|
||||
# MySQL table columns contains virtual columns but InnoDB table
|
||||
# definition does not.
|
||||
#
|
||||
CREATE TABLE IF NOT EXISTS gso_grad_supr (
|
||||
term char(4) NOT NULL DEFAULT '',
|
||||
uw_id int(8) UNSIGNED NOT NULL DEFAULT 0,
|
||||
plan varchar(10) NOT NULL DEFAULT '',
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
admit_term char(4) NOT NULL DEFAULT '',
|
||||
CONSTRAINT gso_grad_supr_pky PRIMARY KEY (uw_id, term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
INSERT INTO `gso_grad_supr` VALUES ('1031',2,'CSM','','1009');
|
||||
INSERT INTO `gso_grad_supr` VALUES ('1035',2,'CSM','ACAD','1009');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
|
||||
drop table grad_degree;
|
||||
|
||||
#
|
||||
# Test with more virtual columns so that MySQL table has
|
||||
# more columns than InnoDB and index definition is out
|
||||
# of number of actual InnoDB columns.
|
||||
#
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status2 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress2'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed2'
|
||||
ELSE 'Not Completed2'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status3 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress3'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed3'
|
||||
ELSE 'Not Completed3'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status4 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress4'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed4'
|
||||
ELSE 'Not Completed4'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status5 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress5'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed5'
|
||||
ELSE 'Not Completed5'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status6 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress6'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed6'
|
||||
ELSE 'Not Completed6'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status7 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress7'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed7'
|
||||
ELSE 'Not Completed7'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status8 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress8'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed8'
|
||||
ELSE 'Not Completed8'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
|
||||
#
|
||||
# Verify that indexes can be dropped
|
||||
#
|
||||
ALTER TABLE grad_degree DROP INDEX grad_degree_wdraw_rsn_ndx;
|
||||
|
||||
#
|
||||
# Verify that we can drop columns
|
||||
#
|
||||
ALTER TABLE grad_degree DROP COLUMN deg_start_term;
|
||||
|
||||
SHOW CREATE TABLE grad_degree;
|
||||
|
||||
DROP TABLE grad_degree;
|
||||
|
||||
#
|
||||
# Verify after dropping virtual columns
|
||||
#
|
||||
CREATE TABLE IF NOT EXISTS grad_degree (
|
||||
student_id int(8) UNSIGNED NOT NULL,
|
||||
plan varchar(10) NOT NULL,
|
||||
admit_term char(4) NOT NULL,
|
||||
wdraw_rsn varchar(4) NOT NULL DEFAULT '',
|
||||
ofis_deg_status varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed'
|
||||
ELSE 'Not Completed'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status2 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress2'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed2'
|
||||
ELSE 'Not Completed2'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status3 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress3'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed3'
|
||||
ELSE 'Not Completed3'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status4 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress4'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed4'
|
||||
ELSE 'Not Completed4'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status5 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress5'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed5'
|
||||
ELSE 'Not Completed5'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status6 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress6'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed6'
|
||||
ELSE 'Not Completed6'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status7 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress7'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed7'
|
||||
ELSE 'Not Completed7'
|
||||
END) VIRTUAL,
|
||||
ofis_deg_status8 varchar(15) AS (
|
||||
CASE
|
||||
WHEN wdraw_rsn = '' THEN 'In progress8'
|
||||
WHEN wdraw_rsn = 'DCMP' OR wdraw_rsn = 'TRDC' THEN 'Completed8'
|
||||
ELSE 'Not Completed8'
|
||||
END) VIRTUAL,
|
||||
deg_start_term char(4) NOT NULL DEFAULT '' COMMENT 'Educated guess at the beginning of the data',
|
||||
deg_as_of_term char(4) NOT NULL COMMENT 'In most cases also end term',
|
||||
CONSTRAINT grad_degree_stu_plan_admit_pky PRIMARY KEY (student_id, plan, admit_term)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE INDEX grad_degree_wdraw_rsn_ndx ON grad_degree (wdraw_rsn);
|
||||
|
||||
ALTER TABLE grad_degree DROP COLUMN ofis_deg_status2, DROP COLUMN ofis_deg_status3,
|
||||
DROP COLUMN ofis_deg_status4, DROP COLUMN ofis_deg_status5, DROP COLUMN ofis_deg_status6,
|
||||
DROP COLUMN ofis_deg_status7, DROP COLUMN ofis_deg_status8;
|
||||
|
||||
CREATE INDEX grad_degree_as_of_term_ndx ON grad_degree (deg_as_of_term);
|
||||
|
||||
INSERT IGNORE grad_degree (
|
||||
student_id,
|
||||
plan,
|
||||
admit_term,
|
||||
wdraw_rsn,
|
||||
deg_start_term,
|
||||
deg_as_of_term
|
||||
)
|
||||
SELECT
|
||||
ggs.uw_id AS c_student_id,
|
||||
ggs.plan,
|
||||
ggs.admit_term,
|
||||
ggs.wdraw_rsn,
|
||||
IF( (SELECT COUNT(*) FROM grad_degree AS gd WHERE gd.student_id = ggs.uw_id AND gd.admit_term = ggs.admit_term) > 0, ggs.term, ggs.admit_term ) AS c_deg_start_term,
|
||||
ggs.term AS c_as_of_term
|
||||
FROM gso_grad_supr AS ggs
|
||||
LEFT OUTER JOIN
|
||||
grad_degree AS gd
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
WHERE
|
||||
ggs.term = 1031 AND
|
||||
gd.student_id IS NULL
|
||||
;
|
||||
|
||||
UPDATE grad_degree AS gd
|
||||
INNER JOIN
|
||||
gso_grad_supr AS ggs
|
||||
ON ( gd.student_id = ggs.uw_id AND gd.plan = ggs.plan AND gd.admit_term = ggs.admit_term )
|
||||
SET
|
||||
gd.wdraw_rsn = ggs.wdraw_rsn,
|
||||
gd.deg_as_of_term = 1035
|
||||
WHERE
|
||||
gd.wdraw_rsn NOT IN ('DCMP', 'TRDC') AND
|
||||
ggs.term = 1035
|
||||
;
|
||||
|
||||
select * from grad_degree;
|
||||
select * from gso_grad_supr;
|
||||
|
||||
drop table grad_degree;
|
||||
drop table gso_grad_supr;
|
17
mysql-test/suite/innodb/t/innodb-xa.test
Normal file
17
mysql-test/suite/innodb/t/innodb-xa.test
Normal file
@@ -0,0 +1,17 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--disable_abort_on_error
|
||||
xa rollback 'xid2';
|
||||
drop table if exists t1;
|
||||
create table t1(a int)engine=innodb;
|
||||
rollback;
|
||||
xa start 'xid2';
|
||||
insert into `t1` values (1);
|
||||
savepoint `sv1`;
|
||||
xa end 'xid2';
|
||||
start transaction;
|
||||
xa prepare 'xid2';
|
||||
release savepoint `sv1`;
|
||||
xa commit 'xid2';
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user