File: binlog_transaction_compression_basic.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 (170 lines) | stat: -rw-r--r-- 4,565 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Variable Name: binlog_transaction_compression
# Scope: Global & Session
# Access Type: Static
# Data Type: enumeration
#
# Creation Date: 2019-03-26
# Author : Luis Soares

--let $saved_global_binlog_transaction_compression = `SELECT @@global.binlog_transaction_compression`

--let $saved_session_binlog_transaction_compression = `SELECT @@session.binlog_transaction_compression`

####################################################################
#   Displaying default value                                       #
####################################################################

--let $assert_text= Default GLOBAL value is OFF
--let $assert_cond = [SELECT @@global.binlog_transaction_compression = 0]
--source include/assert.inc

--let $assert_text= Default SESSION value is OFF
--let $assert_cond = [SELECT @@session.binlog_transaction_compression = 0]
--source include/assert.inc

####################################################################
#   Check if Value can set and that P_S reports the correct value  #
####################################################################

# GLOBAL, SESSION, PERSIST, PERSIST_ONLY
--let $i=4

# 1, TRUE , ON or 0, FALSE, OFF, DEFAULT
--let $j=7

while($i>0)
{
  while($j>0)
  {
    if ($j == 7)
    {
      --let $to_set = DEFAULT
      --let $expected = OFF
    }

    if ($j == 6)
    {
      --let $to_set = OFF
      --let $expected = OFF
    }

    if ($j == 5)
    {
      --let $to_set = FALSE
      --let $expected = OFF
    }

    if ($j == 4)
    {
      --let $to_set = 0
      --let $expected = OFF
    }

    if ($j == 3)
    {
      --let $to_set = ON
      --let $expected = ON
    }

    if ($j == 2)
    {
      --let $to_set = TRUE
      --let $expected = ON
    }

    if ($j == 1)
    {
      --let $to_set = 1
      --let $expected = ON
    }

    # SESSION
    if ($i == 1)
    {
      --let $scope = SESSION
      --let $ps_table = session_variables
    }

    # GLOBAL
    if ($i == 2)
    {
      --let $scope = GLOBAL
      --let $ps_table = global_variables
    }

    # PERSIST
    if ($i == 3)
    {
      --let $scope = PERSIST
      --let $ps_table = persisted_variables
    }

    # PERSIST_ONLY
    if ($i == 4)
    {
      --let $scope = PERSIST_ONLY
      --let $ps_table = persisted_variables
    }

    --eval SET @@$scope.binlog_transaction_compression = $to_set
    --let $reported=`SELECT variable_value FROM performance_schema.$ps_table WHERE variable_name = 'binlog_transaction_compression'`

    --let $assert_text= Reported value matches the one set (set $to_set in $scope scope)
    --let $assert_cond = "$reported" = "$expected"
    --source include/assert.inc

    --dec $j
  }
  --dec $i
}

####################################################################
# Privileges                                                       #
####################################################################

CREATE USER user1;
--connect(conn_user1,localhost,user1,,)

# assert that one cannot change the value without privileges
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
SET GLOBAL binlog_transaction_compression = ON;

# assert that one can change the value if SYSTEM_VARIABLES_ADMIN is given
--connection default
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO user1@'%';
--connection conn_user1
SET GLOBAL binlog_transaction_compression=ON;

--connection default
DROP USER user1;

####################################################################
# transactional context                                            #
####################################################################

BEGIN;

# cannot set variable inside a transaction in session scope
--error ER_VARIABLE_NOT_SETTABLE_IN_TRANSACTION
SET SESSION binlog_transaction_compression=ON;

# can change the variable's value in global scope while inside a transaction
SET GLOBAL binlog_transaction_compression=ON;

# can change the variable's value in persist scope while inside a transaction
SET PERSIST binlog_transaction_compression=ON;

# can change the variable's value in persist_only scope while inside transaction
SET PERSIST_ONLY binlog_transaction_compression=ON;

ROLLBACK;

####################################################################
# End of tests                                                     #
####################################################################

RESET PERSIST;

--eval SET @@session.binlog_transaction_compression = $saved_session_binlog_transaction_compression

--eval SET @@global.binlog_transaction_compression = $saved_global_binlog_transaction_compression