File: rpl_func_bitwise_ops.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (134 lines) | stat: -rw-r--r-- 4,772 bytes parent folder | download
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
############################################################################################
#                                                                                          #
# The aim of this test is to set up replication between a master and slave and             #
# test the modified behaviour of bitwise operations which was brought by WL#8699:          #
# Bit-wise operations on binary data types.                                                #
#                                                                                          #
# Creation Date: 2016-03-02                                                                #
# Author: Deepa Dixit                                                                      #
#                                                                                          #
############################################################################################

--source include/master-slave.inc

call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");

--echo # Create table with columns of binary data types and insert values

--connection master

CREATE TABLE bitwise_table(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, vbin1 VARBINARY(32), vbin2 VARBINARY(32));

INSERT INTO bitwise_table(vbin1, vbin2) VALUES
(x'59', x'6a'),
(x'5939', x'6ac3'),
(x'5939a998', x'6ac35d2a'),
(x'5939a99861154f35', x'6ac35d2a3ab34bda'),
(x'5939a99861154f3587d5440618e9b28b', x'6ac35d2a3ab34bda8ac412ea0141852c'),
(x'5939a99861154f3587d5440618e9b28b166181c5ca514ab1b8e9c970ae5e421a', x'6ac35d2a3ab34bda8ac412ea0141852c3c8e38bb19934a7092a40bb19db13a80'),
(x'5939a99861154f3587d5440618e9b28b', x'8ac412ea0141852c'),
(x'5939a99861154f35', x'6ac35d2a3ab34bda8ac412ea0141852c');

--disable_warnings
INSERT INTO bitwise_table(vbin1, vbin2)
SELECT (vbin1 & vbin2) , (vbin1 | vbin2) FROM bitwise_table WHERE id <= 6;

INSERT INTO bitwise_table(vbin1, vbin2)
SELECT (vbin1 ^ vbin2) , ( ~ vbin1 ) FROM bitwise_table WHERE id <= 6;

INSERT INTO bitwise_table(vbin1, vbin2)
SELECT (vbin1 >> 4 ) , ( vbin2 << 3 ) FROM bitwise_table WHERE id <= 6;

INSERT INTO bitwise_table(vbin1, vbin2)
SELECT (vbin1 ^ x'6ac3'), (vbin2 & x'5939') FROM bitwise_table WHERE id = 2;
--enable_warnings

--error ER_INVALID_BITWISE_OPERANDS_SIZE
INSERT INTO bitwise_table(vbin1, vbin2)
SELECT (vbin1 & vbin2) , (vbin1 | vbin2) FROM bitwise_table WHERE id = 7;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # check whether table was created and values were inserted on slave

SELECT HEX(vbin1), BIT_COUNT(vbin1), HEX(vbin2), BIT_COUNT(vbin2) FROM bitwise_table;

SELECT (vbin1 | NULL ), (vbin2 & NULL) FROM bitwise_table;

SELECT HEX(vbin1), HEX(BIT_AND(vbin1)), HEX(BIT_OR(vbin1)), HEX(BIT_XOR(vbin1)), BIT_COUNT(vbin1)  FROM bitwise_table GROUP BY id;

SELECT HEX(vbin2), HEX(BIT_AND(vbin2)), HEX(BIT_OR(vbin2)), HEX(BIT_XOR(vbin2)), BIT_COUNT(vbin2)  FROM bitwise_table GROUP BY id;

--let $diff_tables = master:bitwise_table, slave:bitwise_table
--source include/diff_tables.inc

--echo [Connection Master]
--connection master

--echo # Update rows inside the table

UPDATE bitwise_table SET vbin1 = (vbin1 | vbin2) WHERE id <= 6;
UPDATE bitwise_table SET vbin2 = (vbin1 & vbin2) WHERE id <= 6;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether rows are updated

SELECT HEX(vbin1), HEX(vbin2) FROM bitwise_table WHERE id <= 6;

--let $diff_tables = master:bitwise_table, slave:bitwise_table
--source include/diff_tables.inc

--echo [Connection Master]
--connection master

UPDATE bitwise_table SET vbin1 = (vbin1 ^ vbin2) WHERE id <= 6;
UPDATE bitwise_table SET vbin2 = (~ vbin1) WHERE id <= 6;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether rows are updated

SELECT HEX(vbin1), HEX(vbin2) FROM bitwise_table WHERE id <= 6;

--let $diff_tables = master:bitwise_table, slave:bitwise_table
--source include/diff_tables.inc

--echo [Connection Master]
--connection master

--echo # Delete rows from the table

DELETE FROM bitwise_table WHERE BIT_COUNT(vbin1) <= 8;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # check whether the rows are deleted

SELECT HEX(vbin1), HEX(vbin2) FROM bitwise_table;

--let $diff_tables = master:bitwise_table, slave:bitwise_table
--source include/diff_tables.inc


--echo [Connection Master]
--connection master

--echo # Drop tables and clean up

DROP TABLE bitwise_table;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether table is dropped

--error ER_NO_SUCH_TABLE
SELECT * FROM bitwise_table;

--source include/rpl_end.inc