mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
BUG#50479 DDL stmt on row-only/stmt-only tables generate spurious binlog_format
errors In the fix of BUG#39934 in 5.1-rep+3, errors are generated when binlog_format=row and a statement modifies a table restricted to statement-logging (ER_BINLOG_ROW_MODE_AND_STMT_ENGINE); or if binlog_format=statement and a statement modifies a table restricted to row-logging (ER_BINLOG_STMT_MODE_AND_ROW_ENGINE). However, some DDL statements that lock tables (e.g. ALTER TABLE, CREATE INDEX and CREATE TRIGGER) were causing spurious errors, although no row might be inserted into the binary log. To fix the problem, we tagged statements that may generate rows into the binary log and thence the warning messages are only printed out when the appropriate conditions hold and rows might be changed.
This commit is contained in:
@@ -43,11 +43,11 @@ SELECT * FROM t /* Should be empty */;
|
||||
a
|
||||
* Modify both row-only and stmt-only table
|
||||
CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END;
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.
|
||||
INSERT INTO t_stmt VALUES (1);
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since both row-incapable engines and statement-incapable engines are involved.
|
||||
SELECT * FROM t_stmt /* should be empty */;
|
||||
a
|
||||
DROP TRIGGER trig_2;
|
||||
* Stmt-only table and binlog_format=row
|
||||
INSERT INTO t_stmt VALUES (1);
|
||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.
|
||||
|
@@ -97,11 +97,11 @@ SELECT * FROM t_self_logging /* Should be empty */;
|
||||
SELECT * FROM t /* Should be empty */;
|
||||
|
||||
--echo * Modify both row-only and stmt-only table
|
||||
--error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
|
||||
--eval CREATE TRIGGER trig_2 AFTER INSERT ON t_stmt FOR EACH ROW BEGIN INSERT INTO t_row VALUES(1); END
|
||||
--error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
|
||||
--error ER_BINLOG_ROW_ENGINE_AND_STMT_ENGINE
|
||||
INSERT INTO t_stmt VALUES (1);
|
||||
SELECT * FROM t_stmt /* should be empty */;
|
||||
DROP TRIGGER trig_2;
|
||||
|
||||
--echo * Stmt-only table and binlog_format=row
|
||||
--error ER_BINLOG_ROW_MODE_AND_STMT_ENGINE
|
||||
|
Reference in New Issue
Block a user