summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/vcol/t/binlog.test
blob: edf0a8957b98a13d6e895997746e75e305aa2485 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
--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;


--echo #
--echo # MDEV-18166 ASSERT_COLUMN_MARKED_FOR_READ failed on tables with vcols
--echo #

SET SESSION binlog_row_image= noblob;
CREATE TEMPORARY TABLE t1 SELECT UUID();
show create table t1;
CREATE TABLE t2 (a INT PRIMARY KEY, b TEXT, c INT GENERATED ALWAYS AS(b));
INSERT INTO t2 (a,b) VALUES (1,1);

SET SESSION binlog_row_image= default;
DROP TABLE t2;


--source include/rpl_end.inc