mirror of
https://github.com/MariaDB/server.git
synced 2025-11-30 05:23:50 +03:00
trx_t::commit_in_memory(): Do not initiate a redo log write if the transaction has no visible effect. If anything for this transaction had been made durable, crash recovery will roll back the transaction just fine even if the end of ROLLBACK is not durably written. Rollbacks of transactions that are associated with XA identifiers (possibly internally via the binlog) will always be persisted. The test rpl.rpl_gtid_crash covers this.
162 lines
6.2 KiB
Plaintext
162 lines
6.2 KiB
Plaintext
FLUSH TABLES;
|
|
CREATE TABLE articles (
|
|
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
|
title VARCHAR(200),
|
|
body TEXT,
|
|
FULLTEXT (title,body)
|
|
) ENGINE=InnoDB;
|
|
DROP INDEX title ON articles;
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...') ,
|
|
('How To Use MySQL Well','After you went through a ...'),
|
|
('Optimizing MySQL','In this tutorial we will show ...'),
|
|
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
|
|
('MySQL vs. YourSQL','In the following database comparison ...'),
|
|
('MySQL Security','When configured properly, MySQL ...');
|
|
BEGIN;
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...');
|
|
# Make durable the AUTO_INCREMENT in the above incomplete transaction.
|
|
connect ddl1, localhost, root,,;
|
|
CREATE TABLE t1(a TEXT,b TEXT,FULLTEXT INDEX(a)) ENGINE=InnoDB;
|
|
ALTER TABLE t1 ADD FULLTEXT INDEX(b);
|
|
connection default;
|
|
connect ddl2, localhost, root,,;
|
|
CREATE TABLE t2(a TEXT,b TEXT,FULLTEXT INDEX(a)) ENGINE=InnoDB;
|
|
ALTER TABLE t2 DROP INDEX a, ADD FULLTEXT INDEX(b), FORCE;
|
|
connection default;
|
|
connect ddl3, localhost, root,,;
|
|
CREATE TABLE t3(a TEXT,b TEXT,FULLTEXT INDEX(a)) ENGINE=InnoDB;
|
|
ALTER TABLE t3 DROP INDEX a, ADD FULLTEXT INDEX(b), ALGORITHM=COPY;
|
|
connection default;
|
|
# restart
|
|
disconnect ddl1;
|
|
disconnect ddl2;
|
|
disconnect ddl3;
|
|
SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency;
|
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
|
InnoDB 0 transactions not purged
|
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;
|
|
CHECK TABLE t1,t2,t3;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
test.t2 check status OK
|
|
test.t3 check status OK
|
|
DROP TABLE t1,t2,t3;
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...');
|
|
CREATE FULLTEXT INDEX idx ON articles (title,body);
|
|
SELECT * FROM articles
|
|
WHERE MATCH (title,body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for DataBase ...
|
|
5 MySQL vs. YourSQL In the following database comparison ...
|
|
8 MySQL Tutorial DBMS stands for DataBase ...
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...') ,
|
|
('How To Use MySQL Well','After you went through a ...'),
|
|
('Optimizing MySQL','In this tutorial we will show ...'),
|
|
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
|
|
('MySQL vs. YourSQL','In the following database comparison ...'),
|
|
('MySQL Security','When configured properly, MySQL ...');
|
|
connect dml, localhost, root,,;
|
|
BEGIN;
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...');
|
|
connection default;
|
|
# Make durable the AUTO_INCREMENT in the above incomplete transaction.
|
|
connect flush_redo_log,localhost,root,,;
|
|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
|
SET SQL_MODE = NO_AUTO_VALUE_ON_ZERO;
|
|
BEGIN;
|
|
UPDATE articles SET id=0 WHERE id=1;
|
|
UPDATE articles SET id=1 WHERE id=0;
|
|
COMMIT;
|
|
disconnect flush_redo_log;
|
|
connection default;
|
|
# restart
|
|
disconnect dml;
|
|
INSERT INTO articles (title,body) VALUES
|
|
('MySQL Tutorial','DBMS stands for DataBase ...');
|
|
SELECT * FROM articles
|
|
WHERE MATCH (title,body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for DataBase ...
|
|
5 MySQL vs. YourSQL In the following database comparison ...
|
|
8 MySQL Tutorial DBMS stands for DataBase ...
|
|
9 MySQL Tutorial DBMS stands for DataBase ...
|
|
13 MySQL vs. YourSQL In the following database comparison ...
|
|
16 MySQL Tutorial DBMS stands for DataBase ...
|
|
DROP TABLE articles;
|
|
CREATE TABLE articles (
|
|
id int PRIMARY KEY,
|
|
FTS_DOC_ID BIGINT UNSIGNED NOT NULL,
|
|
title VARCHAR(200),
|
|
body TEXT
|
|
) ENGINE=InnoDB;
|
|
CREATE FULLTEXT INDEX idx1 on articles (title, body);
|
|
INSERT INTO articles VALUES
|
|
(1, 10, 'MySQL Tutorial','DBMS stands for DataBase ...') ,
|
|
(2, 1, 'How To Use MySQL Well','After you went through a ...'),
|
|
(3, 2, 'Optimizing MySQL','In this tutorial we will show ...'),
|
|
(4, 11, '1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
|
|
(5, 6, 'MySQL vs. YourSQL','In the following database comparison ...'),
|
|
(7, 4, 'MySQL Security','When configured properly, MySQL ...');
|
|
connect dml, localhost, root,,;
|
|
BEGIN;
|
|
INSERT INTO articles VALUES
|
|
(100, 200, 'MySQL Tutorial','DBMS stands for DataBase ...');
|
|
connect dml2, localhost, root,,;
|
|
#
|
|
# MDEV-19073 FTS row mismatch after crash recovery
|
|
#
|
|
CREATE TABLE mdev19073(id SERIAL, title VARCHAR(200), body TEXT,
|
|
FULLTEXT(title,body)) ENGINE=InnoDB;
|
|
INSERT INTO mdev19073 (title, body) VALUES
|
|
('MySQL Tutorial', 'DBMS stands for Database...');
|
|
CREATE FULLTEXT INDEX idx ON mdev19073(title, body);
|
|
CREATE TABLE mdev19073_2 LIKE mdev19073;
|
|
INSERT INTO mdev19073_2 (title, body) VALUES
|
|
('MySQL Tutorial', 'DBMS stands for Database...');
|
|
INSERT INTO mdev19073 (title, body) VALUES
|
|
('MariaDB Tutorial', 'DB means Database ...');
|
|
INSERT INTO mdev19073_2 (title, body) VALUES
|
|
('MariaDB Tutorial', 'DB means Database ...');
|
|
SELECT * FROM mdev19073 WHERE MATCH (title, body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for Database...
|
|
2 MariaDB Tutorial DB means Database ...
|
|
SELECT * FROM mdev19073_2 WHERE MATCH (title, body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for Database...
|
|
2 MariaDB Tutorial DB means Database ...
|
|
connection default;
|
|
# restart
|
|
disconnect dml;
|
|
disconnect dml2;
|
|
INSERT INTO articles VALUES (8, 12, 'MySQL Tutorial','DBMS stands for DataBase ...');
|
|
SELECT * FROM articles WHERE MATCH (title, body)
|
|
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
|
|
id FTS_DOC_ID title body
|
|
3 2 Optimizing MySQL In this tutorial we will show ...
|
|
1 10 MySQL Tutorial DBMS stands for DataBase ...
|
|
8 12 MySQL Tutorial DBMS stands for DataBase ...
|
|
DROP TABLE articles;
|
|
SELECT * FROM mdev19073 WHERE MATCH (title, body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for Database...
|
|
2 MariaDB Tutorial DB means Database ...
|
|
SELECT * FROM mdev19073_2 WHERE MATCH (title, body)
|
|
AGAINST ('Database' IN NATURAL LANGUAGE MODE);
|
|
id title body
|
|
1 MySQL Tutorial DBMS stands for Database...
|
|
2 MariaDB Tutorial DB means Database ...
|
|
DROP TABLE mdev19073, mdev19073_2;
|
|
SELECT * FROM information_schema.innodb_sys_tables WHERE name LIKE 'test/%';
|
|
TABLE_ID NAME FLAG N_COLS SPACE ROW_FORMAT ZIP_PAGE_SIZE SPACE_TYPE
|