1set @save_binlog_checksum= @@global.binlog_checksum;
2set @@global.binlog_checksum = default;
3select @@global.binlog_checksum as 'must be CRC32 by default';
4must be CRC32 by default
5CRC32
6select @@session.binlog_checksum as 'no session var';
7ERROR HY000: Variable 'binlog_checksum' is a GLOBAL variable
8set @@global.binlog_checksum = CRC32;
9set @@global.binlog_checksum = CRC32;
10set @@global.master_verify_checksum = 0;
11set @@global.master_verify_checksum = default;
12set @@global.binlog_checksum = ADLER32;
13ERROR 42000: Variable 'binlog_checksum' can't be set to the value of 'ADLER32'
14#
15# Bug#22914463 SET BINLOG_CHECKSUM CRASHES WHEN EXECUTED INSIDE
16#              TRANSACTION
17#
18# Check that changing binlog_checksum inside transacation
19# is not allowed.
20#
21BEGIN;
22SET @@global.binlog_checksum = CRC32;
23ERROR HY000: The system variable binlog_checksum cannot be set when there is an ongoing transaction.
24COMMIT;
25XA START 'trx1';
26SET @@global.binlog_checksum = CRC32;
27ERROR HY000: The system variable binlog_checksum cannot be set when there is an ongoing transaction.
28XA END 'trx1';
29XA ROLLBACK 'trx1';
30#
31# Check that changing binlog_checksum if the session owns
32# a GTID is not allowed.
33#
34SET GLOBAL GTID_MODE=OFF_PERMISSIVE;
35SET GLOBAL GTID_MODE=ON_PERMISSIVE;
36SET GLOBAL ENFORCE_GTID_CONSISTENCY=ON;
37SET GLOBAL GTID_MODE=ON;
38SET SESSION GTID_NEXT='11111111-AAAA-2222-BBBB-000000000000:5';
39SET @@global.binlog_checksum = CRC32;
40ERROR HY000: Variable binlog_checksum cannot be changed by a client that owns a GTID. The client owns 11111111-aaaa-2222-bbbb-000000000000:5. Ownership is released on COMMIT or ROLLBACK.
41SET SESSION GTID_NEXT='AUTOMATIC';
42SET GLOBAL GTID_MODE=ON_PERMISSIVE;
43SET GLOBAL GTID_MODE=OFF_PERMISSIVE;
44SET GLOBAL ENFORCE_GTID_CONSISTENCY=OFF;
45SET GLOBAL GTID_MODE=OFF;
46set @@global.binlog_checksum = @save_binlog_checksum;
47