mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 02:51:44 +01:00
43e879c717
table->move_fields wasn't undone in case of error. 1. move_fields is unconditionally undone even when error is occurred 2. cherry-pick an assertion in `ptr_in_record`, which is already in 10.5
69 lines
2.1 KiB
Text
69 lines
2.1 KiB
Text
--source include/have_innodb.inc
|
|
--source include/have_binlog_format_row.inc
|
|
--source include/master-slave.inc
|
|
|
|
#
|
|
# MDEV-15243
|
|
# Server crashes in in Field_blob::pack upon REPLACE into view with virtual
|
|
# columns with binlog enabled
|
|
#
|
|
|
|
CREATE TABLE t1 (
|
|
pk SERIAL,
|
|
vcol_date DATE AS (col_date) PERSISTENT,
|
|
vcol_int INT AS (col_int) VIRTUAL,
|
|
vcol_year YEAR AS (col_year) PERSISTENT,
|
|
vcol_blob BLOB AS (col_blob) VIRTUAL,
|
|
col_date DATE,
|
|
col_int INT NULL,
|
|
col_blob BLOB NULL,
|
|
col_year YEAR,
|
|
PRIMARY KEY(pk)
|
|
) ENGINE=InnoDB;
|
|
|
|
INSERT INTO t1 (col_date,col_int,col_blob,col_year) VALUES ('2010-04-24',5,'foo',1981);
|
|
SET SQL_MODE='';
|
|
|
|
set binlog_row_image="FULL";
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
REPLACE INTO v1 SELECT pk, vcol_date, vcol_int, vcol_year, vcol_blob, col_date, col_int, col_blob, 1982 FROM t1;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
sync_slave_with_master;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
connection master;
|
|
DROP VIEW v1;
|
|
set binlog_row_image="MINIMAL";
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
REPLACE INTO v1 SELECT pk, vcol_date, vcol_int, vcol_year, vcol_blob, col_date, col_int, col_blob, 1983 FROM t1;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
sync_slave_with_master;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
connection master;
|
|
DROP VIEW v1;
|
|
set @@binlog_row_image="NOBLOB";
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
REPLACE INTO v1 SELECT pk, vcol_date, vcol_int, vcol_year, vcol_blob, col_date, col_int, col_blob, 1984 FROM t1;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
sync_slave_with_master;
|
|
select col_date,col_int,col_blob,col_year from v1;
|
|
connection master;
|
|
DROP VIEW v1;
|
|
set @@binlog_row_image=default;
|
|
|
|
DROP TABLE t1;
|
|
SET SQL_MODE=default;
|
|
|
|
# MDEV-24782
|
|
# ASAN use-after-poison in Field::pack_int / THD::binlog_update_row
|
|
|
|
CREATE TABLE t1 (pk INT, a VARCHAR(3), b VARCHAR(1) AS (a) VIRTUAL, PRIMARY KEY (pk));
|
|
INSERT IGNORE INTO t1 (pk, a) VALUES (1,'foo'),(2,'bar');
|
|
--error ER_DATA_TOO_LONG
|
|
REPLACE INTO t1 (pk) VALUES (2);
|
|
UPDATE IGNORE t1 SET a = NULL;
|
|
|
|
# Cleanup
|
|
DROP TABLE t1;
|
|
|
|
|
|
--source include/rpl_end.inc
|