Merge lp:~vlad-lesin/percona-server/per_query_variables_setting into lp:percona-server/5.5
- per_query_variables_setting
- Merge into 5.5
Status: | Work in progress |
---|---|
Proposed branch: | lp:~vlad-lesin/percona-server/per_query_variables_setting |
Merge into: | lp:percona-server/5.5 |
Diff against target: |
2067 lines (+1910/-5) 10 files modified
Percona-Server/mysql-test/r/percona_statement_set.result (+815/-0) Percona-Server/mysql-test/t/percona_statement_set.test (+778/-0) Percona-Server/sql/lex.h (+1/-0) Percona-Server/sql/set_var.cc (+178/-0) Percona-Server/sql/set_var.h (+5/-0) Percona-Server/sql/sql_lex.cc (+1/-0) Percona-Server/sql/sql_lex.h (+5/-0) Percona-Server/sql/sql_parse.cc (+84/-0) Percona-Server/sql/sql_prepare.cc (+6/-2) Percona-Server/sql/sql_yacc.yy (+37/-3) |
To merge this branch: | bzr merge lp:~vlad-lesin/percona-server/per_query_variables_setting |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis (community) | Needs Fixing | ||
Vlad Lesin (community) | Needs Resubmitting | ||
Alexey Kopytov (community) | Needs Fixing | ||
Review via email: mp+103425@code.launchpad.net |
Commit message
Description of the change
Per query variable settings.
Example:
SET PER_STATEMENT
FOR
The variables "myisam_
The global-only variables can't be used in this statement.
If variables are changed during the query, their values will be restored to the pre-"set per_statement" state. For example:
SET myisam_
SET PER_STATEMENT myisam_
SELECT @@myisam_
+------
| @@myisam_
+------
| 40000 |
+------
1 row in set (0.02 sec)
Jenkins build:
http://
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
Alexey Kopytov (akopytov) wrote : | # |
Vlad,
Also why was the syntax changed to "SET PER_STATEMENT", whereas the original patch had "SET STATEMENT"?
SET STATEMENT follows the current logic of possible SET modifiers (i.e. "GLOBAL", "SESSION"), i.e. you specify the scope of the variable being set. But PER_STATEMENT is not in line with that naming.
Vlad Lesin (vlad-lesin) wrote : | # |
> Vlad,
>
> Also why was the syntax changed to "SET PER_STATEMENT", whereas the original
> patch had "SET STATEMENT"?
>
> SET STATEMENT follows the current logic of possible SET modifiers (i.e.
> "GLOBAL", "SESSION"), i.e. you specify the scope of the variable being set.
> But PER_STATEMENT is not in line with that naming.
That's because of some tests were failed due to intersection the "STATEMENT" keyword with one of the possible values of binlog_format variable (set binlog_
Alexey Kopytov (akopytov) wrote : | # |
Vlad,
> That's because of some tests were failed due to intersection the "STATEMENT" keyword with one of the possible values of binlog_format variable (set binlog_
Can you please give more details? What specific tests and an example of
a failure?
Vlad Lesin (vlad-lesin) wrote : | # |
> Can you please give more details? What specific tests and an example of
> a failure?
Unfortunately I've removed jenkins build with such errors. But I reproduced this error on my workstation. There is an example of failed test:
=====
TEST RESULT TIME (ms) or COMMENT
-------
worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
binlog.
Test ended at 2012-04-26 12:02:14
CURRENT_TEST: binlog.
mysqltest: At line 5: query 'set binlog_
- saving '/home/
=====
And all tests which contain "set binlog_
Vlad Lesin (vlad-lesin) wrote : | # |
> The lp:percona-server is now a proper branch instead of set of patches, please
> submit direct code changes instead of a new patch.
>
> Also, please merge all the revisions into a single revision with a descriptive
> commit comment (see history of lp:mysql-server for examples of comments)
Done.
Vlad Lesin (vlad-lesin) wrote : | # |
> Vlad,
>
> Also why was the syntax changed to "SET PER_STATEMENT", whereas the original
> patch had "SET STATEMENT"?
>
> SET STATEMENT follows the current logic of possible SET modifiers (i.e.
> "GLOBAL", "SESSION"), i.e. you specify the scope of the variable being set.
> But PER_STATEMENT is not in line with that naming.
Now STATEMENT keyword is used.
Vlad Lesin (vlad-lesin) wrote : | # |
Stewart Smith (stewart) wrote : | # |
On Mon, 30 Apr 2012 12:15:47 -0000, Vladislav Lesin <email address hidden> wrote:
> Review: Resubmit
Rather than setting the review status to resubmit, you want to hit the
link on the top right that says "resubmit proposal", as this creates a
new merge req, redoes the diff and everything. The review "resubmit"
just is as if it's your review of your own code telling yourself to
resubmit it.
The proper resubmit also sends people email again in a new thread to bug
them about reviewing ti.
--
Stewart Smith
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
Is there a blueprint for this work?
Vlad Lesin (vlad-lesin) wrote : | # |
> Is there a blueprint for this work?
Yes. It can be found here https:/
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
This is not a full review unfortunately as I cannot review the code part without spending too much time right now.
The commit message describes the feature but not the changes made
to the server.
Lines 834--837 probably apply to the test case that served as a
starting point for the current one. I'd replace them with
"testcase adopted from foo.test".
The testcase is missing the --disable_
EXISTS-
Some parts of the test manipulates various MyISAM variables such as
myisam_
InnoDB table on 5.5, thus while of course it's possible to adjust
the MyISAM variable values, a better test would be to adjust
something relevant.
I'd prefer to see more feature tests:
1) Set some session variable to some value that does not allow some
statement to complete without an error or warning. Issue that
statement, record the warning. Then set the variable for the
statement to a value that allows the statement to complete, for
example join_buffer_size.
2) autocommit is an interesting variable. What happens if you have
autocommit=0, start a transaction with a statement set with
autocommit=1 there? Note that for this MP, if any dark corner
cases are found, there is no need to work out any additional
semantics beyond what would a regular session autocommit setting
do in the same situation.
3) Set auto_increment_* for statement and check the resulting id.
4) storage_engine for CREATE TABLE statement, check the resulting
table type.
5) query_cache_type, that it does not crash.
If you disagree that so much testing is required, then I don't have
that strong feelings about 1), 3) and 4). But I do want to see 2)
and 5) very much.
The header comment for set_stmt_
"will do smth" style, but "do smth", thus "retrieves the current
value of ... ".
s/will be change to/will be changed to
Comma after "occurs" in @return.
char str[var-
unfortunately.
Line 1658: s/ans/and
Is it possible to avoid the new yacc shift/reduce conflict?
Unmerged revisions
- 237. By Vlad Lesin
-
Per query variable settings allow to assign some values to variables only for
the certain query after execution of which the variables restore their previous
values.
Example:
SET STATEMENT myisam_sort_buffer_ size=40000, myisam_ repair_ threads= 2
FOR SELECT * FROM t;
Preview Diff
1 | === added file 'Percona-Server/mysql-test/r/percona_statement_set.result' | |||
2 | --- Percona-Server/mysql-test/r/percona_statement_set.result 1970-01-01 00:00:00 +0000 | |||
3 | +++ Percona-Server/mysql-test/r/percona_statement_set.result 2012-04-26 09:29:20 +0000 | |||
4 | @@ -0,0 +1,815 @@ | |||
5 | 1 | '# SET STATEMENT ..... FOR .... TEST' | ||
6 | 2 | '# Setup database' | ||
7 | 3 | CREATE TABLE t1 (v1 INT, v2 INT); | ||
8 | 4 | INSERT INTO t1 VALUES (1,2); | ||
9 | 5 | INSERT INTO t1 VALUES (3,4); | ||
10 | 6 | '' | ||
11 | 7 | '#------------------ STATEMENT Test 1 -----------------------#' | ||
12 | 8 | '# Initialize variables to known setting' | ||
13 | 9 | SET SESSION sort_buffer_size=100000; | ||
14 | 10 | '' | ||
15 | 11 | '# Pre-STATEMENT variable value' | ||
16 | 12 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
17 | 13 | Variable_name Value | ||
18 | 14 | sort_buffer_size 100000 | ||
19 | 15 | SET STATEMENT sort_buffer_size=150000 FOR SELECT * FROM t1; | ||
20 | 16 | v1 v2 | ||
21 | 17 | 1 2 | ||
22 | 18 | 3 4 | ||
23 | 19 | '' | ||
24 | 20 | '# Post-STATEMENT variable value' | ||
25 | 21 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
26 | 22 | Variable_name Value | ||
27 | 23 | sort_buffer_size 100000 | ||
28 | 24 | '' | ||
29 | 25 | '#------------------ STATEMENT Test 2 -----------------------#' | ||
30 | 26 | '# Initialize variables to known setting' | ||
31 | 27 | SET SESSION binlog_format=mixed; | ||
32 | 28 | SET SESSION sort_buffer_size=100000; | ||
33 | 29 | '# Pre-STATEMENT variable value' | ||
34 | 30 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
35 | 31 | Variable_name Value | ||
36 | 32 | sort_buffer_size 100000 | ||
37 | 33 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
38 | 34 | Variable_name Value | ||
39 | 35 | binlog_format MIXED | ||
40 | 36 | SET STATEMENT sort_buffer_size=150000, binlog_format=row | ||
41 | 37 | FOR SELECT * FROM t1; | ||
42 | 38 | v1 v2 | ||
43 | 39 | 1 2 | ||
44 | 40 | 3 4 | ||
45 | 41 | '# Post-STATEMENT variable value' | ||
46 | 42 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
47 | 43 | Variable_name Value | ||
48 | 44 | sort_buffer_size 100000 | ||
49 | 45 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
50 | 46 | Variable_name Value | ||
51 | 47 | binlog_format MIXED | ||
52 | 48 | '' | ||
53 | 49 | '#------------------ STATEMENT Test 3 -----------------------#' | ||
54 | 50 | '# set initial variable value, make prepared statement | ||
55 | 51 | SET SESSION binlog_format=row; | ||
56 | 52 | PREPARE stmt1 FROM 'SET STATEMENT binlog_format=row FOR SELECT * FROM t1'; | ||
57 | 53 | '' | ||
58 | 54 | '# Change variable setting' | ||
59 | 55 | SET SESSION binlog_format=mixed; | ||
60 | 56 | '' | ||
61 | 57 | '# Pre-STATEMENT variable value' | ||
62 | 58 | '' | ||
63 | 59 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
64 | 60 | Variable_name Value | ||
65 | 61 | binlog_format MIXED | ||
66 | 62 | '' | ||
67 | 63 | EXECUTE stmt1; | ||
68 | 64 | v1 v2 | ||
69 | 65 | 1 2 | ||
70 | 66 | 3 4 | ||
71 | 67 | '' | ||
72 | 68 | '# Post-STATEMENT variable value' | ||
73 | 69 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
74 | 70 | Variable_name Value | ||
75 | 71 | binlog_format MIXED | ||
76 | 72 | '' | ||
77 | 73 | DEALLOCATE PREPARE stmt1; | ||
78 | 74 | '#------------------ STATEMENT Test 4 -----------------------#' | ||
79 | 75 | '# set initial variable value, make prepared statement | ||
80 | 76 | SET SESSION myisam_sort_buffer_size=500000, myisam_repair_threads=1; | ||
81 | 77 | '' | ||
82 | 78 | '# Pre-STATEMENT variable value' | ||
83 | 79 | SHOW SESSION VARIABLES LIKE 'myisam_sort_buffer_size'; | ||
84 | 80 | Variable_name Value | ||
85 | 81 | myisam_sort_buffer_size 500000 | ||
86 | 82 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
87 | 83 | Variable_name Value | ||
88 | 84 | myisam_repair_threads 1 | ||
89 | 85 | '' | ||
90 | 86 | SET STATEMENT myisam_sort_buffer_size=800000, | ||
91 | 87 | myisam_repair_threads=2 FOR OPTIMIZE TABLE t1; | ||
92 | 88 | Table Op Msg_type Msg_text | ||
93 | 89 | test.t1 optimize status OK | ||
94 | 90 | '' | ||
95 | 91 | '# Post-STATEMENT variable value' | ||
96 | 92 | SHOW SESSION VARIABLES LIKE 'myisam_sort_buffer_size'; | ||
97 | 93 | Variable_name Value | ||
98 | 94 | myisam_sort_buffer_size 500000 | ||
99 | 95 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
100 | 96 | Variable_name Value | ||
101 | 97 | myisam_repair_threads 1 | ||
102 | 98 | '' | ||
103 | 99 | '#------------------ STATEMENT Test 5 -----------------------#' | ||
104 | 100 | '# Initialize variables to known setting' | ||
105 | 101 | SET SESSION sort_buffer_size=100000; | ||
106 | 102 | '' | ||
107 | 103 | '# Pre-STATEMENT variable value' | ||
108 | 104 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
109 | 105 | Variable_name Value | ||
110 | 106 | sort_buffer_size 100000 | ||
111 | 107 | '' | ||
112 | 108 | SET STATEMENT sort_buffer_size=150000 FOR SELECT * FROM t2; | ||
113 | 109 | ERROR 42S02: Table 'test.t2' doesn't exist | ||
114 | 110 | '' | ||
115 | 111 | '# Post-STATEMENT variable value' | ||
116 | 112 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
117 | 113 | Variable_name Value | ||
118 | 114 | sort_buffer_size 100000 | ||
119 | 115 | '' | ||
120 | 116 | '#------------------ STATEMENT Test 6 -----------------------#' | ||
121 | 117 | '# Initialize variables to known setting' | ||
122 | 118 | SET SESSION keep_files_on_create=ON; | ||
123 | 119 | '' | ||
124 | 120 | '# Pre-STATEMENT variable value' | ||
125 | 121 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
126 | 122 | Variable_name Value | ||
127 | 123 | keep_files_on_create ON | ||
128 | 124 | '' | ||
129 | 125 | SET STATEMENT keep_files_on_create=OFF FOR SELECT * FROM t1; | ||
130 | 126 | v1 v2 | ||
131 | 127 | 1 2 | ||
132 | 128 | 3 4 | ||
133 | 129 | '' | ||
134 | 130 | '# Post-STATEMENT variable value' | ||
135 | 131 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
136 | 132 | Variable_name Value | ||
137 | 133 | keep_files_on_create ON | ||
138 | 134 | '' | ||
139 | 135 | '#------------------ STATEMENT Test 7 -----------------------#' | ||
140 | 136 | '# Initialize variables to known setting' | ||
141 | 137 | SET SESSION max_join_size=2222220000000; | ||
142 | 138 | '' | ||
143 | 139 | '# Pre-STATEMENT variable value' | ||
144 | 140 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
145 | 141 | Variable_name Value | ||
146 | 142 | max_join_size 2222220000000 | ||
147 | 143 | '' | ||
148 | 144 | SET STATEMENT max_join_size=1000000000000 FOR SELECT * FROM t1; | ||
149 | 145 | v1 v2 | ||
150 | 146 | 1 2 | ||
151 | 147 | 3 4 | ||
152 | 148 | '' | ||
153 | 149 | '# Post-STATEMENT variable value' | ||
154 | 150 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
155 | 151 | Variable_name Value | ||
156 | 152 | max_join_size 2222220000000 | ||
157 | 153 | '' | ||
158 | 154 | '#------------------Test 8-----------------------#' | ||
159 | 155 | '# Initialize test variables' | ||
160 | 156 | SET SESSION myisam_sort_buffer_size=500000, | ||
161 | 157 | myisam_repair_threads=1, | ||
162 | 158 | sort_buffer_size = 200000, | ||
163 | 159 | max_join_size=2222220000000, | ||
164 | 160 | keep_files_on_create=ON; | ||
165 | 161 | '' | ||
166 | 162 | '# LONG ' | ||
167 | 163 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
168 | 164 | Variable_name Value | ||
169 | 165 | sort_buffer_size 200000 | ||
170 | 166 | SET STATEMENT sort_buffer_size = 100000 | ||
171 | 167 | FOR SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
172 | 168 | Variable_name Value | ||
173 | 169 | sort_buffer_size 100000 | ||
174 | 170 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
175 | 171 | Variable_name Value | ||
176 | 172 | sort_buffer_size 200000 | ||
177 | 173 | '' | ||
178 | 174 | '# MY_BOOL ' | ||
179 | 175 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
180 | 176 | Variable_name Value | ||
181 | 177 | keep_files_on_create ON | ||
182 | 178 | SET STATEMENT keep_files_on_create=OFF | ||
183 | 179 | FOR SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
184 | 180 | Variable_name Value | ||
185 | 181 | keep_files_on_create OFF | ||
186 | 182 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
187 | 183 | Variable_name Value | ||
188 | 184 | keep_files_on_create ON | ||
189 | 185 | '' | ||
190 | 186 | '# INT/LONG ' | ||
191 | 187 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
192 | 188 | Variable_name Value | ||
193 | 189 | myisam_repair_threads 1 | ||
194 | 190 | SET STATEMENT myisam_repair_threads=2 | ||
195 | 191 | FOR SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
196 | 192 | Variable_name Value | ||
197 | 193 | myisam_repair_threads 2 | ||
198 | 194 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
199 | 195 | Variable_name Value | ||
200 | 196 | myisam_repair_threads 1 | ||
201 | 197 | '' | ||
202 | 198 | '# ULONGLONG ' | ||
203 | 199 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
204 | 200 | Variable_name Value | ||
205 | 201 | max_join_size 2222220000000 | ||
206 | 202 | SET STATEMENT max_join_size=2000000000000 | ||
207 | 203 | FOR SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
208 | 204 | Variable_name Value | ||
209 | 205 | max_join_size 2000000000000 | ||
210 | 206 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
211 | 207 | Variable_name Value | ||
212 | 208 | max_join_size 2222220000000 | ||
213 | 209 | '' | ||
214 | 210 | '#------------------Test 9-----------------------#' | ||
215 | 211 | '# set initial variable values | ||
216 | 212 | SET SESSION myisam_sort_buffer_size=500000, | ||
217 | 213 | myisam_repair_threads=1, | ||
218 | 214 | sort_buffer_size=100000, | ||
219 | 215 | binlog_format=mixed, | ||
220 | 216 | keep_files_on_create=ON, | ||
221 | 217 | max_join_size=2222220000000; | ||
222 | 218 | '' | ||
223 | 219 | '' | ||
224 | 220 | '# Pre-STATEMENT variable value | ||
225 | 221 | SELECT @@myisam_sort_buffer_size, | ||
226 | 222 | @@myisam_repair_threads, | ||
227 | 223 | @@sort_buffer_size, | ||
228 | 224 | @@binlog_format, | ||
229 | 225 | @@keep_files_on_create, | ||
230 | 226 | @@max_join_size; | ||
231 | 227 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
232 | 228 | 500000 1 100000 MIXED 1 2222220000000 | ||
233 | 229 | '' | ||
234 | 230 | '' | ||
235 | 231 | CREATE FUNCTION myProc (cost DECIMAL(10,2)) | ||
236 | 232 | RETURNS DECIMAL(10,2) | ||
237 | 233 | SQL SECURITY DEFINER | ||
238 | 234 | tax: BEGIN | ||
239 | 235 | DECLARE order_tax DECIMAL(10,2); | ||
240 | 236 | SET order_tax = cost * .05; | ||
241 | 237 | RETURN order_tax; | ||
242 | 238 | END| | ||
243 | 239 | '' | ||
244 | 240 | '# During Execution values | ||
245 | 241 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
246 | 242 | myisam_repair_threads=2, | ||
247 | 243 | sort_buffer_size=200000, | ||
248 | 244 | binlog_format=row, | ||
249 | 245 | keep_files_on_create=OFF, | ||
250 | 246 | max_join_size=4444440000000 FOR | ||
251 | 247 | SELECT myProc(123.45); | ||
252 | 248 | myProc(123.45) | ||
253 | 249 | 6.17 | ||
254 | 250 | Warnings: | ||
255 | 251 | Note 1265 Data truncated for column 'order_tax' at row 1 | ||
256 | 252 | '' | ||
257 | 253 | '# Post-STATEMENT No 1 variable value Pre-STATEMENT for No 2' | ||
258 | 254 | SELECT @@myisam_sort_buffer_size, | ||
259 | 255 | @@myisam_repair_threads, | ||
260 | 256 | @@sort_buffer_size, | ||
261 | 257 | @@binlog_format, | ||
262 | 258 | @@keep_files_on_create, | ||
263 | 259 | @@max_join_size; | ||
264 | 260 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
265 | 261 | 500000 1 100000 MIXED 1 2222220000000 | ||
266 | 262 | '' | ||
267 | 263 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
268 | 264 | myisam_repair_threads=2, | ||
269 | 265 | sort_buffer_size=200000, | ||
270 | 266 | binlog_format=row, | ||
271 | 267 | keep_files_on_create=OFF, | ||
272 | 268 | max_join_size=4444440000000 FOR | ||
273 | 269 | DROP FUNCTION myProc; | ||
274 | 270 | '' | ||
275 | 271 | '# Post-STATEMENT No 2 variable value | ||
276 | 272 | SELECT @@myisam_sort_buffer_size, | ||
277 | 273 | @@myisam_repair_threads, | ||
278 | 274 | @@sort_buffer_size, | ||
279 | 275 | @@binlog_format, | ||
280 | 276 | @@keep_files_on_create, | ||
281 | 277 | @@max_join_size; | ||
282 | 278 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
283 | 279 | 500000 1 100000 MIXED 1 2222220000000 | ||
284 | 280 | '' | ||
285 | 281 | '#------------------Test 10-----------------------#' | ||
286 | 282 | '# set initial variable values | ||
287 | 283 | SET SESSION myisam_sort_buffer_size=500000, | ||
288 | 284 | myisam_repair_threads=1, | ||
289 | 285 | sort_buffer_size=100000, | ||
290 | 286 | binlog_format=mixed, | ||
291 | 287 | keep_files_on_create=ON, | ||
292 | 288 | max_join_size=2222220000000; | ||
293 | 289 | '' | ||
294 | 290 | '# Pre-STATEMENT variable value | ||
295 | 291 | SELECT @@myisam_sort_buffer_size, | ||
296 | 292 | @@myisam_repair_threads, | ||
297 | 293 | @@sort_buffer_size, | ||
298 | 294 | @@binlog_format, | ||
299 | 295 | @@keep_files_on_create, | ||
300 | 296 | @@max_join_size; | ||
301 | 297 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
302 | 298 | 500000 1 100000 MIXED 1 2222220000000 | ||
303 | 299 | '' | ||
304 | 300 | '' | ||
305 | 301 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
306 | 302 | myisam_repair_threads=2, | ||
307 | 303 | sort_buffer_size=200000, | ||
308 | 304 | binlog_format=row, | ||
309 | 305 | keep_files_on_create=OFF, | ||
310 | 306 | max_join_size=4444440000000 FOR | ||
311 | 307 | PREPARE stmt2 | ||
312 | 308 | FROM 'SELECT * FROM t1'; | ||
313 | 309 | '' | ||
314 | 310 | 'Test No 1 Post Value & Test 2 Pre values' | ||
315 | 311 | SELECT @@myisam_sort_buffer_size, | ||
316 | 312 | @@myisam_repair_threads, | ||
317 | 313 | @@sort_buffer_size, | ||
318 | 314 | @@binlog_format, | ||
319 | 315 | @@keep_files_on_create, | ||
320 | 316 | @@max_join_size; | ||
321 | 317 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
322 | 318 | 500000 1 100000 MIXED 1 2222220000000 | ||
323 | 319 | '' | ||
324 | 320 | '' | ||
325 | 321 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
326 | 322 | myisam_repair_threads=2, | ||
327 | 323 | sort_buffer_size=200000, | ||
328 | 324 | binlog_format=row, | ||
329 | 325 | keep_files_on_create=OFF, | ||
330 | 326 | max_join_size=4444440000000 FOR | ||
331 | 327 | EXECUTE stmt2; | ||
332 | 328 | v1 v2 | ||
333 | 329 | 1 2 | ||
334 | 330 | 3 4 | ||
335 | 331 | '' | ||
336 | 332 | '# Post-STATEMENT No 2 | ||
337 | 333 | SELECT @@myisam_sort_buffer_size, | ||
338 | 334 | @@myisam_repair_threads, | ||
339 | 335 | @@sort_buffer_size, | ||
340 | 336 | @@binlog_format, | ||
341 | 337 | @@keep_files_on_create, | ||
342 | 338 | @@max_join_size; | ||
343 | 339 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
344 | 340 | 500000 1 100000 MIXED 1 2222220000000 | ||
345 | 341 | '' | ||
346 | 342 | DEALLOCATE PREPARE stmt2; | ||
347 | 343 | '' | ||
348 | 344 | '#------------------Test 11-----------------------#' | ||
349 | 345 | '# set initial variable values | ||
350 | 346 | SET SESSION myisam_sort_buffer_size=500000, | ||
351 | 347 | myisam_repair_threads=1, | ||
352 | 348 | sort_buffer_size=100000, | ||
353 | 349 | binlog_format=mixed, | ||
354 | 350 | keep_files_on_create=ON, | ||
355 | 351 | max_join_size=2222220000000; | ||
356 | 352 | '' | ||
357 | 353 | '' | ||
358 | 354 | '# Pre-STATEMENT variable value | ||
359 | 355 | SELECT @@myisam_sort_buffer_size, | ||
360 | 356 | @@myisam_repair_threads, | ||
361 | 357 | @@sort_buffer_size, | ||
362 | 358 | @@binlog_format, | ||
363 | 359 | @@keep_files_on_create, | ||
364 | 360 | @@max_join_size; | ||
365 | 361 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
366 | 362 | 500000 1 100000 MIXED 1 2222220000000 | ||
367 | 363 | '' | ||
368 | 364 | '' | ||
369 | 365 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
370 | 366 | myisam_repair_threads=2, | ||
371 | 367 | sort_buffer_size=200000, | ||
372 | 368 | keep_files_on_create=OFF, | ||
373 | 369 | max_join_size=4444440000000 FOR | ||
374 | 370 | PREPARE stmt1 FROM | ||
375 | 371 | 'SET STATEMENT binlog_format=row FOR SELECT * FROM t1'; | ||
376 | 372 | '' | ||
377 | 373 | 'Test No 1 Post Value & Test 2 Pre values' | ||
378 | 374 | SELECT @@myisam_sort_buffer_size, | ||
379 | 375 | @@myisam_repair_threads, | ||
380 | 376 | @@sort_buffer_size, | ||
381 | 377 | @@binlog_format, | ||
382 | 378 | @@keep_files_on_create, | ||
383 | 379 | @@max_join_size; | ||
384 | 380 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
385 | 381 | 500000 1 100000 MIXED 1 2222220000000 | ||
386 | 382 | '' | ||
387 | 383 | '' | ||
388 | 384 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
389 | 385 | myisam_repair_threads=2, | ||
390 | 386 | sort_buffer_size=200000, | ||
391 | 387 | keep_files_on_create=OFF, | ||
392 | 388 | max_join_size=4444440000000 FOR | ||
393 | 389 | EXECUTE stmt1; | ||
394 | 390 | v1 v2 | ||
395 | 391 | 1 2 | ||
396 | 392 | 3 4 | ||
397 | 393 | '' | ||
398 | 394 | '# Post-STATEMENT No 2 | ||
399 | 395 | SELECT @@myisam_sort_buffer_size, | ||
400 | 396 | @@myisam_repair_threads, | ||
401 | 397 | @@sort_buffer_size, | ||
402 | 398 | @@binlog_format, | ||
403 | 399 | @@keep_files_on_create, | ||
404 | 400 | @@max_join_size; | ||
405 | 401 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
406 | 402 | 500000 1 100000 MIXED 1 2222220000000 | ||
407 | 403 | '' | ||
408 | 404 | '' | ||
409 | 405 | '#------------------Test 12-----------------------#' | ||
410 | 406 | '# set initial variable values | ||
411 | 407 | SET SESSION myisam_sort_buffer_size=500000, | ||
412 | 408 | myisam_repair_threads=1, | ||
413 | 409 | sort_buffer_size=100000, | ||
414 | 410 | binlog_format=mixed, | ||
415 | 411 | keep_files_on_create=ON, | ||
416 | 412 | max_join_size=2222220000000; | ||
417 | 413 | '' | ||
418 | 414 | '' | ||
419 | 415 | '# Pre-STATEMENT variable value | ||
420 | 416 | SELECT @@myisam_sort_buffer_size, | ||
421 | 417 | @@myisam_repair_threads, | ||
422 | 418 | @@sort_buffer_size, | ||
423 | 419 | @@binlog_format, | ||
424 | 420 | @@keep_files_on_create, | ||
425 | 421 | @@max_join_size; | ||
426 | 422 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
427 | 423 | 500000 1 100000 MIXED 1 2222220000000 | ||
428 | 424 | '' | ||
429 | 425 | '' | ||
430 | 426 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
431 | 427 | myisam_repair_threads=2, | ||
432 | 428 | sort_buffer_size=200000, | ||
433 | 429 | binlog_format=row, | ||
434 | 430 | keep_files_on_create=OFF, | ||
435 | 431 | max_join_size=4444440000000 FOR | ||
436 | 432 | CREATE PROCEDURE p1() BEGIN | ||
437 | 433 | SELECT @@myisam_sort_buffer_size, | ||
438 | 434 | @@myisam_repair_threads, | ||
439 | 435 | @@sort_buffer_size, | ||
440 | 436 | @@binlog_format, | ||
441 | 437 | @@keep_files_on_create, | ||
442 | 438 | @@max_join_size; | ||
443 | 439 | END| | ||
444 | 440 | '' | ||
445 | 441 | 'Test No 1 Post Value & Test 2 Pre values' | ||
446 | 442 | SELECT @@myisam_sort_buffer_size, | ||
447 | 443 | @@myisam_repair_threads, | ||
448 | 444 | @@sort_buffer_size, | ||
449 | 445 | @@binlog_format, | ||
450 | 446 | @@keep_files_on_create, | ||
451 | 447 | @@max_join_size; | ||
452 | 448 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
453 | 449 | 500000 1 100000 MIXED 1 2222220000000 | ||
454 | 450 | '' | ||
455 | 451 | '' | ||
456 | 452 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
457 | 453 | myisam_repair_threads=2, | ||
458 | 454 | sort_buffer_size=200000, | ||
459 | 455 | binlog_format=row, | ||
460 | 456 | keep_files_on_create=OFF, | ||
461 | 457 | max_join_size=4444440000000 FOR | ||
462 | 458 | CALL p1(); | ||
463 | 459 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
464 | 460 | 400000 2 200000 ROW 0 4444440000000 | ||
465 | 461 | '' | ||
466 | 462 | '# Post-STATEMENT No 2 | ||
467 | 463 | SELECT @@myisam_sort_buffer_size, | ||
468 | 464 | @@myisam_repair_threads, | ||
469 | 465 | @@sort_buffer_size, | ||
470 | 466 | @@binlog_format, | ||
471 | 467 | @@keep_files_on_create, | ||
472 | 468 | @@max_join_size; | ||
473 | 469 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
474 | 470 | 500000 1 100000 MIXED 1 2222220000000 | ||
475 | 471 | '' | ||
476 | 472 | '' | ||
477 | 473 | '#------------------Test 13-----------------------#' | ||
478 | 474 | '# set initial variable values | ||
479 | 475 | SET SESSION myisam_sort_buffer_size=500000, | ||
480 | 476 | myisam_repair_threads=1, | ||
481 | 477 | sort_buffer_size=100000, | ||
482 | 478 | binlog_format=mixed, | ||
483 | 479 | keep_files_on_create=ON, | ||
484 | 480 | max_join_size=2222220000000; | ||
485 | 481 | '' | ||
486 | 482 | '' | ||
487 | 483 | CREATE PROCEDURE p2() BEGIN | ||
488 | 484 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
489 | 485 | myisam_repair_threads=3, | ||
490 | 486 | sort_buffer_size=300000, | ||
491 | 487 | binlog_format=mixed, | ||
492 | 488 | keep_files_on_create=OFF, | ||
493 | 489 | max_join_size=3333330000000 FOR | ||
494 | 490 | CALL p1(); | ||
495 | 491 | END| | ||
496 | 492 | '' | ||
497 | 493 | '# Pre-STATEMENT variable value | ||
498 | 494 | SELECT @@myisam_sort_buffer_size, | ||
499 | 495 | @@myisam_repair_threads, | ||
500 | 496 | @@sort_buffer_size, | ||
501 | 497 | @@binlog_format, | ||
502 | 498 | @@keep_files_on_create, | ||
503 | 499 | @@max_join_size; | ||
504 | 500 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
505 | 501 | 500000 1 100000 MIXED 1 2222220000000 | ||
506 | 502 | '' | ||
507 | 503 | '' | ||
508 | 504 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
509 | 505 | myisam_repair_threads=2, | ||
510 | 506 | sort_buffer_size=200000, | ||
511 | 507 | binlog_format=row, | ||
512 | 508 | keep_files_on_create=OFF, | ||
513 | 509 | max_join_size=4444440000000 FOR | ||
514 | 510 | CALL p2(); | ||
515 | 511 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
516 | 512 | 400000 3 300000 MIXED 0 3333330000000 | ||
517 | 513 | '' | ||
518 | 514 | '# Post-STATEMENT | ||
519 | 515 | SELECT @@myisam_sort_buffer_size, | ||
520 | 516 | @@myisam_repair_threads, | ||
521 | 517 | @@sort_buffer_size, | ||
522 | 518 | @@binlog_format, | ||
523 | 519 | @@keep_files_on_create, | ||
524 | 520 | @@max_join_size; | ||
525 | 521 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
526 | 522 | 500000 1 100000 MIXED 1 2222220000000 | ||
527 | 523 | '' | ||
528 | 524 | '' | ||
529 | 525 | '#------------------Test 14-----------------------#' | ||
530 | 526 | '# set initial variable values | ||
531 | 527 | SET SESSION myisam_sort_buffer_size=500000, | ||
532 | 528 | myisam_repair_threads=1, | ||
533 | 529 | sort_buffer_size=100000, | ||
534 | 530 | binlog_format=mixed, | ||
535 | 531 | keep_files_on_create=ON, | ||
536 | 532 | max_join_size=2222220000000; | ||
537 | 533 | '' | ||
538 | 534 | '' | ||
539 | 535 | CREATE PROCEDURE p3() BEGIN | ||
540 | 536 | SELECT @@myisam_sort_buffer_size, | ||
541 | 537 | @@myisam_repair_threads, | ||
542 | 538 | @@sort_buffer_size, | ||
543 | 539 | @@binlog_format, | ||
544 | 540 | @@keep_files_on_create, | ||
545 | 541 | @@max_join_size; | ||
546 | 542 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
547 | 543 | myisam_repair_threads=2, | ||
548 | 544 | sort_buffer_size=220022, | ||
549 | 545 | binlog_format=row, | ||
550 | 546 | keep_files_on_create=ON, | ||
551 | 547 | max_join_size=2222220000000 FOR | ||
552 | 548 | CALL p2(); | ||
553 | 549 | END| | ||
554 | 550 | '' | ||
555 | 551 | '# Pre-STATEMENT variable value | ||
556 | 552 | SELECT @@myisam_sort_buffer_size, | ||
557 | 553 | @@myisam_repair_threads, | ||
558 | 554 | @@sort_buffer_size, | ||
559 | 555 | @@binlog_format, | ||
560 | 556 | @@keep_files_on_create, | ||
561 | 557 | @@max_join_size; | ||
562 | 558 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
563 | 559 | 500000 1 100000 MIXED 1 2222220000000 | ||
564 | 560 | '' | ||
565 | 561 | '' | ||
566 | 562 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
567 | 563 | myisam_repair_threads=2, | ||
568 | 564 | sort_buffer_size=200000, | ||
569 | 565 | binlog_format=row, | ||
570 | 566 | keep_files_on_create=OFF, | ||
571 | 567 | max_join_size=4444440000000 FOR | ||
572 | 568 | CALL p3(); | ||
573 | 569 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
574 | 570 | 400000 2 200000 ROW 0 4444440000000 | ||
575 | 571 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
576 | 572 | 400000 3 300000 MIXED 0 3333330000000 | ||
577 | 573 | '' | ||
578 | 574 | '# Post-STATEMENT | ||
579 | 575 | SELECT @@myisam_sort_buffer_size, | ||
580 | 576 | @@myisam_repair_threads, | ||
581 | 577 | @@sort_buffer_size, | ||
582 | 578 | @@binlog_format, | ||
583 | 579 | @@keep_files_on_create, | ||
584 | 580 | @@max_join_size; | ||
585 | 581 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
586 | 582 | 500000 1 100000 MIXED 1 2222220000000 | ||
587 | 583 | '' | ||
588 | 584 | '' | ||
589 | 585 | '' | ||
590 | 586 | '' | ||
591 | 587 | '#------------------Test 15-----------------------#' | ||
592 | 588 | '# set initial variable values | ||
593 | 589 | SET SESSION myisam_sort_buffer_size=500000, | ||
594 | 590 | myisam_repair_threads=1, | ||
595 | 591 | sort_buffer_size=100000, | ||
596 | 592 | binlog_format=mixed, | ||
597 | 593 | keep_files_on_create=ON, | ||
598 | 594 | max_join_size=2222220000000; | ||
599 | 595 | '' | ||
600 | 596 | '' | ||
601 | 597 | CREATE PROCEDURE p4() BEGIN | ||
602 | 598 | SELECT @@myisam_sort_buffer_size, | ||
603 | 599 | @@myisam_repair_threads, | ||
604 | 600 | @@sort_buffer_size, | ||
605 | 601 | @@binlog_format, | ||
606 | 602 | @@keep_files_on_create, | ||
607 | 603 | @@max_join_size; | ||
608 | 604 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
609 | 605 | myisam_repair_threads=2, | ||
610 | 606 | sort_buffer_size=220022, | ||
611 | 607 | binlog_format=row, | ||
612 | 608 | keep_files_on_create=ON, | ||
613 | 609 | max_join_size=2222220000000 FOR | ||
614 | 610 | SELECT @@myisam_sort_buffer_size, | ||
615 | 611 | @@myisam_repair_threads, | ||
616 | 612 | @@sort_buffer_size, | ||
617 | 613 | @@binlog_format, | ||
618 | 614 | @@keep_files_on_create, | ||
619 | 615 | @@max_join_size; | ||
620 | 616 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
621 | 617 | myisam_repair_threads=2, | ||
622 | 618 | sort_buffer_size=220022, | ||
623 | 619 | binlog_format=row, | ||
624 | 620 | keep_files_on_create=ON, | ||
625 | 621 | max_join_size=2222220000000 FOR | ||
626 | 622 | SELECT @@myisam_sort_buffer_size, | ||
627 | 623 | @@myisam_repair_threads, | ||
628 | 624 | @@sort_buffer_size, | ||
629 | 625 | @@binlog_format, | ||
630 | 626 | @@keep_files_on_create, | ||
631 | 627 | @@max_join_size; | ||
632 | 628 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
633 | 629 | myisam_repair_threads=2, | ||
634 | 630 | sort_buffer_size=220022, | ||
635 | 631 | binlog_format=row, | ||
636 | 632 | keep_files_on_create=ON, | ||
637 | 633 | max_join_size=2222220000000 FOR | ||
638 | 634 | SELECT @@myisam_sort_buffer_size, | ||
639 | 635 | @@myisam_repair_threads, | ||
640 | 636 | @@sort_buffer_size, | ||
641 | 637 | @@binlog_format, | ||
642 | 638 | @@keep_files_on_create, | ||
643 | 639 | @@max_join_size; | ||
644 | 640 | END| | ||
645 | 641 | '' | ||
646 | 642 | '# Pre-STATEMENT variable value | ||
647 | 643 | SELECT @@myisam_sort_buffer_size, | ||
648 | 644 | @@myisam_repair_threads, | ||
649 | 645 | @@sort_buffer_size, | ||
650 | 646 | @@binlog_format, | ||
651 | 647 | @@keep_files_on_create, | ||
652 | 648 | @@max_join_size; | ||
653 | 649 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
654 | 650 | 500000 1 100000 MIXED 1 2222220000000 | ||
655 | 651 | '' | ||
656 | 652 | '' | ||
657 | 653 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
658 | 654 | myisam_repair_threads=2, | ||
659 | 655 | sort_buffer_size=200000, | ||
660 | 656 | binlog_format=row, | ||
661 | 657 | keep_files_on_create=OFF, | ||
662 | 658 | max_join_size=4444440000000 FOR | ||
663 | 659 | CALL p4(); | ||
664 | 660 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
665 | 661 | 400000 2 200000 ROW 0 4444440000000 | ||
666 | 662 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
667 | 663 | 320000 2 220022 ROW 1 2222220000000 | ||
668 | 664 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
669 | 665 | 320000 2 220022 ROW 1 2222220000000 | ||
670 | 666 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
671 | 667 | 320000 2 220022 ROW 1 2222220000000 | ||
672 | 668 | '' | ||
673 | 669 | '# Post-STATEMENT | ||
674 | 670 | SELECT @@myisam_sort_buffer_size, | ||
675 | 671 | @@myisam_repair_threads, | ||
676 | 672 | @@sort_buffer_size, | ||
677 | 673 | @@binlog_format, | ||
678 | 674 | @@keep_files_on_create, | ||
679 | 675 | @@max_join_size; | ||
680 | 676 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
681 | 677 | 500000 1 100000 MIXED 1 2222220000000 | ||
682 | 678 | '' | ||
683 | 679 | '' | ||
684 | 680 | '#------------------Test 16-----------------------#' | ||
685 | 681 | '' | ||
686 | 682 | '# Pre-STATEMENT variable value | ||
687 | 683 | SELECT @@sql_mode; | ||
688 | 684 | @@sql_mode | ||
689 | 685 | |||
690 | 686 | '' | ||
691 | 687 | '' | ||
692 | 688 | SET STATEMENT sql_mode='ansi' FOR SELECT * FROM t1; | ||
693 | 689 | v1 v2 | ||
694 | 690 | 1 2 | ||
695 | 691 | 3 4 | ||
696 | 692 | '' | ||
697 | 693 | '# Post-STATEMENT | ||
698 | 694 | SELECT @@sql_mode; | ||
699 | 695 | @@sql_mode | ||
700 | 696 | |||
701 | 697 | '' | ||
702 | 698 | '' | ||
703 | 699 | '#------------------Test 17-----------------------#' | ||
704 | 700 | '# set initial variable values | ||
705 | 701 | SET SESSION myisam_sort_buffer_size=500000, | ||
706 | 702 | myisam_repair_threads=1, | ||
707 | 703 | sort_buffer_size=100000, | ||
708 | 704 | binlog_format=mixed, | ||
709 | 705 | keep_files_on_create=ON, | ||
710 | 706 | max_join_size=2222220000000; | ||
711 | 707 | '' | ||
712 | 708 | '# Pre-STATEMENT variable value | ||
713 | 709 | SELECT @@myisam_sort_buffer_size, | ||
714 | 710 | @@myisam_repair_threads, | ||
715 | 711 | @@sort_buffer_size, | ||
716 | 712 | @@binlog_format, | ||
717 | 713 | @@keep_files_on_create, | ||
718 | 714 | @@max_join_size; | ||
719 | 715 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
720 | 716 | 500000 1 100000 MIXED 1 2222220000000 | ||
721 | 717 | '' | ||
722 | 718 | '' | ||
723 | 719 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
724 | 720 | myisam_repair_threads=2, | ||
725 | 721 | sort_buffer_size=220022, | ||
726 | 722 | binlog_format=row, | ||
727 | 723 | keep_files_on_create=ON, | ||
728 | 724 | max_join_size=2222220000000 | ||
729 | 725 | FOR SET SESSION | ||
730 | 726 | myisam_sort_buffer_size=260000, | ||
731 | 727 | myisam_repair_threads=3, | ||
732 | 728 | sort_buffer_size=230013, | ||
733 | 729 | binlog_format=row, | ||
734 | 730 | keep_files_on_create=ON, | ||
735 | 731 | max_join_size=2323230000000; | ||
736 | 732 | '' | ||
737 | 733 | '# Post-STATEMENT | ||
738 | 734 | SELECT @@myisam_sort_buffer_size, | ||
739 | 735 | @@myisam_repair_threads, | ||
740 | 736 | @@sort_buffer_size, | ||
741 | 737 | @@binlog_format, | ||
742 | 738 | @@keep_files_on_create, | ||
743 | 739 | @@max_join_size; | ||
744 | 740 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
745 | 741 | 500000 1 100000 MIXED 1 2222220000000 | ||
746 | 742 | '' | ||
747 | 743 | '' | ||
748 | 744 | '#------------------Test 18-----------------------#' | ||
749 | 745 | '# set initial variable values | ||
750 | 746 | SET SESSION myisam_sort_buffer_size=500000, | ||
751 | 747 | myisam_repair_threads=1, | ||
752 | 748 | sort_buffer_size=100000, | ||
753 | 749 | binlog_format=mixed, | ||
754 | 750 | keep_files_on_create=ON, | ||
755 | 751 | max_join_size=2222220000000; | ||
756 | 752 | '' | ||
757 | 753 | '# Pre-STATEMENT variable value | ||
758 | 754 | SELECT @@myisam_sort_buffer_size, | ||
759 | 755 | @@myisam_repair_threads, | ||
760 | 756 | @@sort_buffer_size, | ||
761 | 757 | @@binlog_format, | ||
762 | 758 | @@keep_files_on_create, | ||
763 | 759 | @@max_join_size; | ||
764 | 760 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
765 | 761 | 500000 1 100000 MIXED 1 2222220000000 | ||
766 | 762 | '' | ||
767 | 763 | '' | ||
768 | 764 | CREATE PROCEDURE p5() BEGIN | ||
769 | 765 | SELECT @@myisam_sort_buffer_size, | ||
770 | 766 | @@myisam_repair_threads, | ||
771 | 767 | @@sort_buffer_size, | ||
772 | 768 | @@binlog_format, | ||
773 | 769 | @@keep_files_on_create, | ||
774 | 770 | @@max_join_size; | ||
775 | 771 | SET SESSION | ||
776 | 772 | myisam_sort_buffer_size=260000, | ||
777 | 773 | myisam_repair_threads=3, | ||
778 | 774 | sort_buffer_size=230013, | ||
779 | 775 | binlog_format=row, | ||
780 | 776 | keep_files_on_create=ON, | ||
781 | 777 | max_join_size=2323230000000; | ||
782 | 778 | SELECT @@myisam_sort_buffer_size, | ||
783 | 779 | @@myisam_repair_threads, | ||
784 | 780 | @@sort_buffer_size, | ||
785 | 781 | @@binlog_format, | ||
786 | 782 | @@keep_files_on_create, | ||
787 | 783 | @@max_join_size; | ||
788 | 784 | END| | ||
789 | 785 | '' | ||
790 | 786 | '' | ||
791 | 787 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
792 | 788 | myisam_repair_threads=2, | ||
793 | 789 | sort_buffer_size=200000, | ||
794 | 790 | binlog_format=row, | ||
795 | 791 | keep_files_on_create=OFF, | ||
796 | 792 | max_join_size=4444440000000 FOR | ||
797 | 793 | CALL p5(); | ||
798 | 794 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
799 | 795 | 400000 2 200000 ROW 0 4444440000000 | ||
800 | 796 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
801 | 797 | 260000 3 230013 ROW 1 2323230000000 | ||
802 | 798 | '' | ||
803 | 799 | '# Post-STATEMENT | ||
804 | 800 | SELECT @@myisam_sort_buffer_size, | ||
805 | 801 | @@myisam_repair_threads, | ||
806 | 802 | @@sort_buffer_size, | ||
807 | 803 | @@binlog_format, | ||
808 | 804 | @@keep_files_on_create, | ||
809 | 805 | @@max_join_size; | ||
810 | 806 | @@myisam_sort_buffer_size @@myisam_repair_threads @@sort_buffer_size @@binlog_format @@keep_files_on_create @@max_join_size | ||
811 | 807 | 500000 1 100000 MIXED 1 2222220000000 | ||
812 | 808 | '' | ||
813 | 809 | '# Cleanup' | ||
814 | 810 | DROP TABLE t1; | ||
815 | 811 | DROP PROCEDURE p1; | ||
816 | 812 | DROP PROCEDURE p2; | ||
817 | 813 | DROP PROCEDURE p3; | ||
818 | 814 | DROP PROCEDURE p4; | ||
819 | 815 | DROP PROCEDURE p5; | ||
820 | 0 | 816 | ||
821 | === added file 'Percona-Server/mysql-test/t/percona_statement_set.test' | |||
822 | --- Percona-Server/mysql-test/t/percona_statement_set.test 1970-01-01 00:00:00 +0000 | |||
823 | +++ Percona-Server/mysql-test/t/percona_statement_set.test 2012-04-26 09:29:20 +0000 | |||
824 | @@ -0,0 +1,778 @@ | |||
825 | 1 | --echo '# SET STATEMENT ..... FOR .... TEST' | ||
826 | 2 | ############################ STATEMENT_SET ############################# | ||
827 | 3 | # # | ||
828 | 4 | # Testing working functionality of SET STATEMENT # | ||
829 | 5 | # # | ||
830 | 6 | # # | ||
831 | 7 | # There is important documentation within # | ||
832 | 8 | # # | ||
833 | 9 | # # | ||
834 | 10 | # Author: Joe Lukas # | ||
835 | 11 | # Creation: # | ||
836 | 12 | # 2009-08-02 Implement this test as part of # | ||
837 | 13 | # WL#681 Per query variable settings # | ||
838 | 14 | # # | ||
839 | 15 | ######################################################################## | ||
840 | 16 | |||
841 | 17 | |||
842 | 18 | #################################################################### | ||
843 | 19 | # Set up current database # | ||
844 | 20 | #################################################################### | ||
845 | 21 | --echo '# Setup database' | ||
846 | 22 | CREATE TABLE t1 (v1 INT, v2 INT); | ||
847 | 23 | INSERT INTO t1 VALUES (1,2); | ||
848 | 24 | INSERT INTO t1 VALUES (3,4); | ||
849 | 25 | --echo '' | ||
850 | 26 | --echo '#------------------ STATEMENT Test 1 -----------------------#' | ||
851 | 27 | #################################################################### | ||
852 | 28 | # Checks with variable value type ulong # | ||
853 | 29 | #################################################################### | ||
854 | 30 | --echo '# Initialize variables to known setting' | ||
855 | 31 | SET SESSION sort_buffer_size=100000; | ||
856 | 32 | --echo '' | ||
857 | 33 | --echo '# Pre-STATEMENT variable value' | ||
858 | 34 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
859 | 35 | SET STATEMENT sort_buffer_size=150000 FOR SELECT * FROM t1; | ||
860 | 36 | --echo '' | ||
861 | 37 | --echo '# Post-STATEMENT variable value' | ||
862 | 38 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
863 | 39 | --echo '' | ||
864 | 40 | --echo '#------------------ STATEMENT Test 2 -----------------------#' | ||
865 | 41 | #################################################################### | ||
866 | 42 | # Checks for multiple set values inside STATEMENT ... FOR # | ||
867 | 43 | #################################################################### | ||
868 | 44 | --echo '# Initialize variables to known setting' | ||
869 | 45 | SET SESSION binlog_format=mixed; | ||
870 | 46 | SET SESSION sort_buffer_size=100000; | ||
871 | 47 | --echo '# Pre-STATEMENT variable value' | ||
872 | 48 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
873 | 49 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
874 | 50 | SET STATEMENT sort_buffer_size=150000, binlog_format=row | ||
875 | 51 | FOR SELECT * FROM t1; | ||
876 | 52 | --echo '# Post-STATEMENT variable value' | ||
877 | 53 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
878 | 54 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
879 | 55 | |||
880 | 56 | --echo '' | ||
881 | 57 | --echo '#------------------ STATEMENT Test 3 -----------------------#' | ||
882 | 58 | #################################################################### | ||
883 | 59 | # Check current variable value is stored in using stored # | ||
884 | 60 | # statements. # | ||
885 | 61 | #################################################################### | ||
886 | 62 | --echo '# set initial variable value, make prepared statement | ||
887 | 63 | SET SESSION binlog_format=row; | ||
888 | 64 | PREPARE stmt1 FROM 'SET STATEMENT binlog_format=row FOR SELECT * FROM t1'; | ||
889 | 65 | --echo '' | ||
890 | 66 | --echo '# Change variable setting' | ||
891 | 67 | SET SESSION binlog_format=mixed; | ||
892 | 68 | --echo '' | ||
893 | 69 | --echo '# Pre-STATEMENT variable value' | ||
894 | 70 | --echo '' | ||
895 | 71 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
896 | 72 | --echo '' | ||
897 | 73 | EXECUTE stmt1; | ||
898 | 74 | --echo '' | ||
899 | 75 | --echo '# Post-STATEMENT variable value' | ||
900 | 76 | SHOW SESSION VARIABLES LIKE 'binlog_format'; | ||
901 | 77 | |||
902 | 78 | --echo '' | ||
903 | 79 | DEALLOCATE PREPARE stmt1; | ||
904 | 80 | --echo '#------------------ STATEMENT Test 4 -----------------------#' | ||
905 | 81 | #################################################################### | ||
906 | 82 | # Check works with OPTIMIZE TABLE command # | ||
907 | 83 | # Checks works with a variable value of type INT # | ||
908 | 84 | # Checks works with variable type ULONGLONG # | ||
909 | 85 | #################################################################### | ||
910 | 86 | --echo '# set initial variable value, make prepared statement | ||
911 | 87 | SET SESSION myisam_sort_buffer_size=500000, myisam_repair_threads=1; | ||
912 | 88 | --echo '' | ||
913 | 89 | --echo '# Pre-STATEMENT variable value' | ||
914 | 90 | SHOW SESSION VARIABLES LIKE 'myisam_sort_buffer_size'; | ||
915 | 91 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
916 | 92 | --echo '' | ||
917 | 93 | SET STATEMENT myisam_sort_buffer_size=800000, | ||
918 | 94 | myisam_repair_threads=2 FOR OPTIMIZE TABLE t1; | ||
919 | 95 | --echo '' | ||
920 | 96 | --echo '# Post-STATEMENT variable value' | ||
921 | 97 | SHOW SESSION VARIABLES LIKE 'myisam_sort_buffer_size'; | ||
922 | 98 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
923 | 99 | |||
924 | 100 | --echo '' | ||
925 | 101 | --echo '#------------------ STATEMENT Test 5 -----------------------#' | ||
926 | 102 | #################################################################### | ||
927 | 103 | # Checks if variable reset after error in statement after FOR # | ||
928 | 104 | #################################################################### | ||
929 | 105 | --echo '# Initialize variables to known setting' | ||
930 | 106 | SET SESSION sort_buffer_size=100000; | ||
931 | 107 | --echo '' | ||
932 | 108 | --echo '# Pre-STATEMENT variable value' | ||
933 | 109 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
934 | 110 | --echo '' | ||
935 | 111 | --error ER_NO_SUCH_TABLE | ||
936 | 112 | SET STATEMENT sort_buffer_size=150000 FOR SELECT * FROM t2; | ||
937 | 113 | --echo '' | ||
938 | 114 | --echo '# Post-STATEMENT variable value' | ||
939 | 115 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
940 | 116 | |||
941 | 117 | --echo '' | ||
942 | 118 | --echo '#------------------ STATEMENT Test 6 -----------------------#' | ||
943 | 119 | #################################################################### | ||
944 | 120 | # Checks works with variable type MY_BOOL # | ||
945 | 121 | #################################################################### | ||
946 | 122 | --echo '# Initialize variables to known setting' | ||
947 | 123 | SET SESSION keep_files_on_create=ON; | ||
948 | 124 | --echo '' | ||
949 | 125 | --echo '# Pre-STATEMENT variable value' | ||
950 | 126 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
951 | 127 | --echo '' | ||
952 | 128 | SET STATEMENT keep_files_on_create=OFF FOR SELECT * FROM t1; | ||
953 | 129 | --echo '' | ||
954 | 130 | --echo '# Post-STATEMENT variable value' | ||
955 | 131 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
956 | 132 | |||
957 | 133 | --echo '' | ||
958 | 134 | --echo '#------------------ STATEMENT Test 7 -----------------------#' | ||
959 | 135 | #################################################################### | ||
960 | 136 | # Checks works with variable type HA_ROWS # | ||
961 | 137 | #################################################################### | ||
962 | 138 | --echo '# Initialize variables to known setting' | ||
963 | 139 | SET SESSION max_join_size=2222220000000; | ||
964 | 140 | --echo '' | ||
965 | 141 | --echo '# Pre-STATEMENT variable value' | ||
966 | 142 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
967 | 143 | --echo '' | ||
968 | 144 | SET STATEMENT max_join_size=1000000000000 FOR SELECT * FROM t1; | ||
969 | 145 | --echo '' | ||
970 | 146 | --echo '# Post-STATEMENT variable value' | ||
971 | 147 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
972 | 148 | |||
973 | 149 | --echo '' | ||
974 | 150 | --echo '#------------------Test 8-----------------------#' | ||
975 | 151 | #################################################################### | ||
976 | 152 | # Ensure variable of each type is set to proper value during # | ||
977 | 153 | # statement after FOR execution # | ||
978 | 154 | #################################################################### | ||
979 | 155 | --echo '# Initialize test variables' | ||
980 | 156 | SET SESSION myisam_sort_buffer_size=500000, | ||
981 | 157 | myisam_repair_threads=1, | ||
982 | 158 | sort_buffer_size = 200000, | ||
983 | 159 | max_join_size=2222220000000, | ||
984 | 160 | keep_files_on_create=ON; | ||
985 | 161 | |||
986 | 162 | --echo '' | ||
987 | 163 | --echo '# LONG ' | ||
988 | 164 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
989 | 165 | SET STATEMENT sort_buffer_size = 100000 | ||
990 | 166 | FOR SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
991 | 167 | SHOW SESSION VARIABLES LIKE 'sort_buffer_size'; | ||
992 | 168 | --echo '' | ||
993 | 169 | --echo '# MY_BOOL ' | ||
994 | 170 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
995 | 171 | SET STATEMENT keep_files_on_create=OFF | ||
996 | 172 | FOR SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
997 | 173 | SHOW SESSION VARIABLES LIKE 'keep_files_on_create'; | ||
998 | 174 | |||
999 | 175 | --echo '' | ||
1000 | 176 | --echo '# INT/LONG ' | ||
1001 | 177 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
1002 | 178 | SET STATEMENT myisam_repair_threads=2 | ||
1003 | 179 | FOR SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
1004 | 180 | SHOW SESSION VARIABLES LIKE 'myisam_repair_threads'; | ||
1005 | 181 | --echo '' | ||
1006 | 182 | --echo '# ULONGLONG ' | ||
1007 | 183 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
1008 | 184 | SET STATEMENT max_join_size=2000000000000 | ||
1009 | 185 | FOR SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
1010 | 186 | SHOW SESSION VARIABLES LIKE 'max_join_size'; | ||
1011 | 187 | |||
1012 | 188 | --echo '' | ||
1013 | 189 | --echo '#------------------Test 9-----------------------#' | ||
1014 | 190 | #################################################################### | ||
1015 | 191 | # No 1 - Check works with CREATE ... BEGIN ... END command # | ||
1016 | 192 | # Display variables during execution # | ||
1017 | 193 | # No 2 - Test with DROP command # | ||
1018 | 194 | #################################################################### | ||
1019 | 195 | --echo '# set initial variable values | ||
1020 | 196 | SET SESSION myisam_sort_buffer_size=500000, | ||
1021 | 197 | myisam_repair_threads=1, | ||
1022 | 198 | sort_buffer_size=100000, | ||
1023 | 199 | binlog_format=mixed, | ||
1024 | 200 | keep_files_on_create=ON, | ||
1025 | 201 | max_join_size=2222220000000; | ||
1026 | 202 | --echo '' | ||
1027 | 203 | --echo '' | ||
1028 | 204 | --echo '# Pre-STATEMENT variable value | ||
1029 | 205 | SELECT @@myisam_sort_buffer_size, | ||
1030 | 206 | @@myisam_repair_threads, | ||
1031 | 207 | @@sort_buffer_size, | ||
1032 | 208 | @@binlog_format, | ||
1033 | 209 | @@keep_files_on_create, | ||
1034 | 210 | @@max_join_size; | ||
1035 | 211 | --echo '' | ||
1036 | 212 | --echo '' | ||
1037 | 213 | DELIMITER |; | ||
1038 | 214 | CREATE FUNCTION myProc (cost DECIMAL(10,2)) | ||
1039 | 215 | RETURNS DECIMAL(10,2) | ||
1040 | 216 | |||
1041 | 217 | SQL SECURITY DEFINER | ||
1042 | 218 | |||
1043 | 219 | tax: BEGIN | ||
1044 | 220 | DECLARE order_tax DECIMAL(10,2); | ||
1045 | 221 | SET order_tax = cost * .05; | ||
1046 | 222 | RETURN order_tax; | ||
1047 | 223 | END| | ||
1048 | 224 | DELIMITER ;| | ||
1049 | 225 | --echo '' | ||
1050 | 226 | --echo '# During Execution values | ||
1051 | 227 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1052 | 228 | myisam_repair_threads=2, | ||
1053 | 229 | sort_buffer_size=200000, | ||
1054 | 230 | binlog_format=row, | ||
1055 | 231 | keep_files_on_create=OFF, | ||
1056 | 232 | max_join_size=4444440000000 FOR | ||
1057 | 233 | SELECT myProc(123.45); | ||
1058 | 234 | --echo '' | ||
1059 | 235 | --echo '# Post-STATEMENT No 1 variable value Pre-STATEMENT for No 2' | ||
1060 | 236 | SELECT @@myisam_sort_buffer_size, | ||
1061 | 237 | @@myisam_repair_threads, | ||
1062 | 238 | @@sort_buffer_size, | ||
1063 | 239 | @@binlog_format, | ||
1064 | 240 | @@keep_files_on_create, | ||
1065 | 241 | @@max_join_size; | ||
1066 | 242 | --echo '' | ||
1067 | 243 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1068 | 244 | myisam_repair_threads=2, | ||
1069 | 245 | sort_buffer_size=200000, | ||
1070 | 246 | binlog_format=row, | ||
1071 | 247 | keep_files_on_create=OFF, | ||
1072 | 248 | max_join_size=4444440000000 FOR | ||
1073 | 249 | DROP FUNCTION myProc; | ||
1074 | 250 | --echo '' | ||
1075 | 251 | --echo '# Post-STATEMENT No 2 variable value | ||
1076 | 252 | SELECT @@myisam_sort_buffer_size, | ||
1077 | 253 | @@myisam_repair_threads, | ||
1078 | 254 | @@sort_buffer_size, | ||
1079 | 255 | @@binlog_format, | ||
1080 | 256 | @@keep_files_on_create, | ||
1081 | 257 | @@max_join_size; | ||
1082 | 258 | |||
1083 | 259 | --echo '' | ||
1084 | 260 | --echo '#------------------Test 10-----------------------#' | ||
1085 | 261 | #################################################################### | ||
1086 | 262 | # No 1 - Check with PREPARE statement # | ||
1087 | 263 | # with STATEMENT inside with same variable as outside # | ||
1088 | 264 | # No 2 - Check with EXECUTE statement # | ||
1089 | 265 | #################################################################### | ||
1090 | 266 | --echo '# set initial variable values | ||
1091 | 267 | SET SESSION myisam_sort_buffer_size=500000, | ||
1092 | 268 | myisam_repair_threads=1, | ||
1093 | 269 | sort_buffer_size=100000, | ||
1094 | 270 | binlog_format=mixed, | ||
1095 | 271 | keep_files_on_create=ON, | ||
1096 | 272 | max_join_size=2222220000000; | ||
1097 | 273 | --echo '' | ||
1098 | 274 | --echo '# Pre-STATEMENT variable value | ||
1099 | 275 | SELECT @@myisam_sort_buffer_size, | ||
1100 | 276 | @@myisam_repair_threads, | ||
1101 | 277 | @@sort_buffer_size, | ||
1102 | 278 | @@binlog_format, | ||
1103 | 279 | @@keep_files_on_create, | ||
1104 | 280 | @@max_join_size; | ||
1105 | 281 | --echo '' | ||
1106 | 282 | --echo '' | ||
1107 | 283 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1108 | 284 | myisam_repair_threads=2, | ||
1109 | 285 | sort_buffer_size=200000, | ||
1110 | 286 | binlog_format=row, | ||
1111 | 287 | keep_files_on_create=OFF, | ||
1112 | 288 | max_join_size=4444440000000 FOR | ||
1113 | 289 | PREPARE stmt2 | ||
1114 | 290 | FROM 'SELECT * FROM t1'; | ||
1115 | 291 | --echo '' | ||
1116 | 292 | --echo 'Test No 1 Post Value & Test 2 Pre values' | ||
1117 | 293 | SELECT @@myisam_sort_buffer_size, | ||
1118 | 294 | @@myisam_repair_threads, | ||
1119 | 295 | @@sort_buffer_size, | ||
1120 | 296 | @@binlog_format, | ||
1121 | 297 | @@keep_files_on_create, | ||
1122 | 298 | @@max_join_size; | ||
1123 | 299 | --echo '' | ||
1124 | 300 | --echo '' | ||
1125 | 301 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1126 | 302 | myisam_repair_threads=2, | ||
1127 | 303 | sort_buffer_size=200000, | ||
1128 | 304 | binlog_format=row, | ||
1129 | 305 | keep_files_on_create=OFF, | ||
1130 | 306 | max_join_size=4444440000000 FOR | ||
1131 | 307 | EXECUTE stmt2; | ||
1132 | 308 | --echo '' | ||
1133 | 309 | --echo '# Post-STATEMENT No 2 | ||
1134 | 310 | SELECT @@myisam_sort_buffer_size, | ||
1135 | 311 | @@myisam_repair_threads, | ||
1136 | 312 | @@sort_buffer_size, | ||
1137 | 313 | @@binlog_format, | ||
1138 | 314 | @@keep_files_on_create, | ||
1139 | 315 | @@max_join_size; | ||
1140 | 316 | --echo '' | ||
1141 | 317 | DEALLOCATE PREPARE stmt2; | ||
1142 | 318 | --echo '' | ||
1143 | 319 | --echo '#------------------Test 11-----------------------#' | ||
1144 | 320 | #################################################################### | ||
1145 | 321 | # No 1 - Check with PREPARE statement # | ||
1146 | 322 | # check with different variable on inside PREPARE # | ||
1147 | 323 | # No 2 - Check with EXECUTE statement # | ||
1148 | 324 | #################################################################### | ||
1149 | 325 | --echo '# set initial variable values | ||
1150 | 326 | SET SESSION myisam_sort_buffer_size=500000, | ||
1151 | 327 | myisam_repair_threads=1, | ||
1152 | 328 | sort_buffer_size=100000, | ||
1153 | 329 | binlog_format=mixed, | ||
1154 | 330 | keep_files_on_create=ON, | ||
1155 | 331 | max_join_size=2222220000000; | ||
1156 | 332 | --echo '' | ||
1157 | 333 | --echo '' | ||
1158 | 334 | --echo '# Pre-STATEMENT variable value | ||
1159 | 335 | SELECT @@myisam_sort_buffer_size, | ||
1160 | 336 | @@myisam_repair_threads, | ||
1161 | 337 | @@sort_buffer_size, | ||
1162 | 338 | @@binlog_format, | ||
1163 | 339 | @@keep_files_on_create, | ||
1164 | 340 | @@max_join_size; | ||
1165 | 341 | --echo '' | ||
1166 | 342 | --echo '' | ||
1167 | 343 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1168 | 344 | myisam_repair_threads=2, | ||
1169 | 345 | sort_buffer_size=200000, | ||
1170 | 346 | keep_files_on_create=OFF, | ||
1171 | 347 | max_join_size=4444440000000 FOR | ||
1172 | 348 | PREPARE stmt1 FROM | ||
1173 | 349 | 'SET STATEMENT binlog_format=row FOR SELECT * FROM t1'; | ||
1174 | 350 | --echo '' | ||
1175 | 351 | --echo 'Test No 1 Post Value & Test 2 Pre values' | ||
1176 | 352 | SELECT @@myisam_sort_buffer_size, | ||
1177 | 353 | @@myisam_repair_threads, | ||
1178 | 354 | @@sort_buffer_size, | ||
1179 | 355 | @@binlog_format, | ||
1180 | 356 | @@keep_files_on_create, | ||
1181 | 357 | @@max_join_size; | ||
1182 | 358 | --echo '' | ||
1183 | 359 | --echo '' | ||
1184 | 360 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1185 | 361 | myisam_repair_threads=2, | ||
1186 | 362 | sort_buffer_size=200000, | ||
1187 | 363 | keep_files_on_create=OFF, | ||
1188 | 364 | max_join_size=4444440000000 FOR | ||
1189 | 365 | EXECUTE stmt1; | ||
1190 | 366 | --echo '' | ||
1191 | 367 | --echo '# Post-STATEMENT No 2 | ||
1192 | 368 | SELECT @@myisam_sort_buffer_size, | ||
1193 | 369 | @@myisam_repair_threads, | ||
1194 | 370 | @@sort_buffer_size, | ||
1195 | 371 | @@binlog_format, | ||
1196 | 372 | @@keep_files_on_create, | ||
1197 | 373 | @@max_join_size; | ||
1198 | 374 | --echo '' | ||
1199 | 375 | --echo '' | ||
1200 | 376 | --echo '#------------------Test 12-----------------------#' | ||
1201 | 377 | #################################################################### | ||
1202 | 378 | # No 1 - Check with PROCEDURE (show variables in procedure) # | ||
1203 | 379 | # No 2 - Check with CALL statement show variables in PROCEDURE # | ||
1204 | 380 | #################################################################### | ||
1205 | 381 | --echo '# set initial variable values | ||
1206 | 382 | SET SESSION myisam_sort_buffer_size=500000, | ||
1207 | 383 | myisam_repair_threads=1, | ||
1208 | 384 | sort_buffer_size=100000, | ||
1209 | 385 | binlog_format=mixed, | ||
1210 | 386 | keep_files_on_create=ON, | ||
1211 | 387 | max_join_size=2222220000000; | ||
1212 | 388 | --echo '' | ||
1213 | 389 | --echo '' | ||
1214 | 390 | --echo '# Pre-STATEMENT variable value | ||
1215 | 391 | SELECT @@myisam_sort_buffer_size, | ||
1216 | 392 | @@myisam_repair_threads, | ||
1217 | 393 | @@sort_buffer_size, | ||
1218 | 394 | @@binlog_format, | ||
1219 | 395 | @@keep_files_on_create, | ||
1220 | 396 | @@max_join_size; | ||
1221 | 397 | --echo '' | ||
1222 | 398 | --echo '' | ||
1223 | 399 | DELIMITER |; | ||
1224 | 400 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1225 | 401 | myisam_repair_threads=2, | ||
1226 | 402 | sort_buffer_size=200000, | ||
1227 | 403 | binlog_format=row, | ||
1228 | 404 | keep_files_on_create=OFF, | ||
1229 | 405 | max_join_size=4444440000000 FOR | ||
1230 | 406 | CREATE PROCEDURE p1() BEGIN | ||
1231 | 407 | SELECT @@myisam_sort_buffer_size, | ||
1232 | 408 | @@myisam_repair_threads, | ||
1233 | 409 | @@sort_buffer_size, | ||
1234 | 410 | @@binlog_format, | ||
1235 | 411 | @@keep_files_on_create, | ||
1236 | 412 | @@max_join_size; | ||
1237 | 413 | END| | ||
1238 | 414 | DELIMITER ;| | ||
1239 | 415 | --echo '' | ||
1240 | 416 | --echo 'Test No 1 Post Value & Test 2 Pre values' | ||
1241 | 417 | SELECT @@myisam_sort_buffer_size, | ||
1242 | 418 | @@myisam_repair_threads, | ||
1243 | 419 | @@sort_buffer_size, | ||
1244 | 420 | @@binlog_format, | ||
1245 | 421 | @@keep_files_on_create, | ||
1246 | 422 | @@max_join_size; | ||
1247 | 423 | --echo '' | ||
1248 | 424 | --echo '' | ||
1249 | 425 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1250 | 426 | myisam_repair_threads=2, | ||
1251 | 427 | sort_buffer_size=200000, | ||
1252 | 428 | binlog_format=row, | ||
1253 | 429 | keep_files_on_create=OFF, | ||
1254 | 430 | max_join_size=4444440000000 FOR | ||
1255 | 431 | CALL p1(); | ||
1256 | 432 | --echo '' | ||
1257 | 433 | --echo '# Post-STATEMENT No 2 | ||
1258 | 434 | SELECT @@myisam_sort_buffer_size, | ||
1259 | 435 | @@myisam_repair_threads, | ||
1260 | 436 | @@sort_buffer_size, | ||
1261 | 437 | @@binlog_format, | ||
1262 | 438 | @@keep_files_on_create, | ||
1263 | 439 | @@max_join_size; | ||
1264 | 440 | --echo '' | ||
1265 | 441 | --echo '' | ||
1266 | 442 | |||
1267 | 443 | --echo '#------------------Test 13-----------------------#' | ||
1268 | 444 | #################################################################### | ||
1269 | 445 | # Check PROCEDURE containing SET STATEMENT FOR # | ||
1270 | 446 | # p1() from test 12 will be used to display variables # | ||
1271 | 447 | #################################################################### | ||
1272 | 448 | --echo '# set initial variable values | ||
1273 | 449 | SET SESSION myisam_sort_buffer_size=500000, | ||
1274 | 450 | myisam_repair_threads=1, | ||
1275 | 451 | sort_buffer_size=100000, | ||
1276 | 452 | binlog_format=mixed, | ||
1277 | 453 | keep_files_on_create=ON, | ||
1278 | 454 | max_join_size=2222220000000; | ||
1279 | 455 | --echo '' | ||
1280 | 456 | --echo '' | ||
1281 | 457 | DELIMITER |; | ||
1282 | 458 | CREATE PROCEDURE p2() BEGIN | ||
1283 | 459 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1284 | 460 | myisam_repair_threads=3, | ||
1285 | 461 | sort_buffer_size=300000, | ||
1286 | 462 | binlog_format=mixed, | ||
1287 | 463 | keep_files_on_create=OFF, | ||
1288 | 464 | max_join_size=3333330000000 FOR | ||
1289 | 465 | CALL p1(); | ||
1290 | 466 | END| | ||
1291 | 467 | DELIMITER ;| | ||
1292 | 468 | --echo '' | ||
1293 | 469 | --echo '# Pre-STATEMENT variable value | ||
1294 | 470 | SELECT @@myisam_sort_buffer_size, | ||
1295 | 471 | @@myisam_repair_threads, | ||
1296 | 472 | @@sort_buffer_size, | ||
1297 | 473 | @@binlog_format, | ||
1298 | 474 | @@keep_files_on_create, | ||
1299 | 475 | @@max_join_size; | ||
1300 | 476 | --echo '' | ||
1301 | 477 | --echo '' | ||
1302 | 478 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1303 | 479 | myisam_repair_threads=2, | ||
1304 | 480 | sort_buffer_size=200000, | ||
1305 | 481 | binlog_format=row, | ||
1306 | 482 | keep_files_on_create=OFF, | ||
1307 | 483 | max_join_size=4444440000000 FOR | ||
1308 | 484 | CALL p2(); | ||
1309 | 485 | --echo '' | ||
1310 | 486 | --echo '# Post-STATEMENT | ||
1311 | 487 | SELECT @@myisam_sort_buffer_size, | ||
1312 | 488 | @@myisam_repair_threads, | ||
1313 | 489 | @@sort_buffer_size, | ||
1314 | 490 | @@binlog_format, | ||
1315 | 491 | @@keep_files_on_create, | ||
1316 | 492 | @@max_join_size; | ||
1317 | 493 | --echo '' | ||
1318 | 494 | --echo '' | ||
1319 | 495 | --echo '#------------------Test 14-----------------------#' | ||
1320 | 496 | #################################################################### | ||
1321 | 497 | # Check PROCEDURE containing compound SET STATEMENT FOR # | ||
1322 | 498 | # p2() will be used as compounding statement from test 13 # | ||
1323 | 499 | #################################################################### | ||
1324 | 500 | --echo '# set initial variable values | ||
1325 | 501 | SET SESSION myisam_sort_buffer_size=500000, | ||
1326 | 502 | myisam_repair_threads=1, | ||
1327 | 503 | sort_buffer_size=100000, | ||
1328 | 504 | binlog_format=mixed, | ||
1329 | 505 | keep_files_on_create=ON, | ||
1330 | 506 | max_join_size=2222220000000; | ||
1331 | 507 | --echo '' | ||
1332 | 508 | --echo '' | ||
1333 | 509 | DELIMITER |; | ||
1334 | 510 | CREATE PROCEDURE p3() BEGIN | ||
1335 | 511 | SELECT @@myisam_sort_buffer_size, | ||
1336 | 512 | @@myisam_repair_threads, | ||
1337 | 513 | @@sort_buffer_size, | ||
1338 | 514 | @@binlog_format, | ||
1339 | 515 | @@keep_files_on_create, | ||
1340 | 516 | @@max_join_size; | ||
1341 | 517 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
1342 | 518 | myisam_repair_threads=2, | ||
1343 | 519 | sort_buffer_size=220022, | ||
1344 | 520 | binlog_format=row, | ||
1345 | 521 | keep_files_on_create=ON, | ||
1346 | 522 | max_join_size=2222220000000 FOR | ||
1347 | 523 | CALL p2(); | ||
1348 | 524 | END| | ||
1349 | 525 | DELIMITER ;| | ||
1350 | 526 | --echo '' | ||
1351 | 527 | --echo '# Pre-STATEMENT variable value | ||
1352 | 528 | SELECT @@myisam_sort_buffer_size, | ||
1353 | 529 | @@myisam_repair_threads, | ||
1354 | 530 | @@sort_buffer_size, | ||
1355 | 531 | @@binlog_format, | ||
1356 | 532 | @@keep_files_on_create, | ||
1357 | 533 | @@max_join_size; | ||
1358 | 534 | --echo '' | ||
1359 | 535 | --echo '' | ||
1360 | 536 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1361 | 537 | myisam_repair_threads=2, | ||
1362 | 538 | sort_buffer_size=200000, | ||
1363 | 539 | binlog_format=row, | ||
1364 | 540 | keep_files_on_create=OFF, | ||
1365 | 541 | max_join_size=4444440000000 FOR | ||
1366 | 542 | CALL p3(); | ||
1367 | 543 | --echo '' | ||
1368 | 544 | --echo '# Post-STATEMENT | ||
1369 | 545 | SELECT @@myisam_sort_buffer_size, | ||
1370 | 546 | @@myisam_repair_threads, | ||
1371 | 547 | @@sort_buffer_size, | ||
1372 | 548 | @@binlog_format, | ||
1373 | 549 | @@keep_files_on_create, | ||
1374 | 550 | @@max_join_size; | ||
1375 | 551 | --echo '' | ||
1376 | 552 | --echo '' | ||
1377 | 553 | |||
1378 | 554 | --echo '' | ||
1379 | 555 | --echo '' | ||
1380 | 556 | --echo '#------------------Test 15-----------------------#' | ||
1381 | 557 | #################################################################### | ||
1382 | 558 | # Check PROCEDURE containing compound SET STATEMENT FOR # | ||
1383 | 559 | # call multiple SET STATEMENT .. FOR showing SELECT # | ||
1384 | 560 | #################################################################### | ||
1385 | 561 | --echo '# set initial variable values | ||
1386 | 562 | SET SESSION myisam_sort_buffer_size=500000, | ||
1387 | 563 | myisam_repair_threads=1, | ||
1388 | 564 | sort_buffer_size=100000, | ||
1389 | 565 | binlog_format=mixed, | ||
1390 | 566 | keep_files_on_create=ON, | ||
1391 | 567 | max_join_size=2222220000000; | ||
1392 | 568 | --echo '' | ||
1393 | 569 | --echo '' | ||
1394 | 570 | DELIMITER |; | ||
1395 | 571 | CREATE PROCEDURE p4() BEGIN | ||
1396 | 572 | SELECT @@myisam_sort_buffer_size, | ||
1397 | 573 | @@myisam_repair_threads, | ||
1398 | 574 | @@sort_buffer_size, | ||
1399 | 575 | @@binlog_format, | ||
1400 | 576 | @@keep_files_on_create, | ||
1401 | 577 | @@max_join_size; | ||
1402 | 578 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
1403 | 579 | myisam_repair_threads=2, | ||
1404 | 580 | sort_buffer_size=220022, | ||
1405 | 581 | binlog_format=row, | ||
1406 | 582 | keep_files_on_create=ON, | ||
1407 | 583 | max_join_size=2222220000000 FOR | ||
1408 | 584 | SELECT @@myisam_sort_buffer_size, | ||
1409 | 585 | @@myisam_repair_threads, | ||
1410 | 586 | @@sort_buffer_size, | ||
1411 | 587 | @@binlog_format, | ||
1412 | 588 | @@keep_files_on_create, | ||
1413 | 589 | @@max_join_size; | ||
1414 | 590 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
1415 | 591 | myisam_repair_threads=2, | ||
1416 | 592 | sort_buffer_size=220022, | ||
1417 | 593 | binlog_format=row, | ||
1418 | 594 | keep_files_on_create=ON, | ||
1419 | 595 | max_join_size=2222220000000 FOR | ||
1420 | 596 | SELECT @@myisam_sort_buffer_size, | ||
1421 | 597 | @@myisam_repair_threads, | ||
1422 | 598 | @@sort_buffer_size, | ||
1423 | 599 | @@binlog_format, | ||
1424 | 600 | @@keep_files_on_create, | ||
1425 | 601 | @@max_join_size; | ||
1426 | 602 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
1427 | 603 | myisam_repair_threads=2, | ||
1428 | 604 | sort_buffer_size=220022, | ||
1429 | 605 | binlog_format=row, | ||
1430 | 606 | keep_files_on_create=ON, | ||
1431 | 607 | max_join_size=2222220000000 FOR | ||
1432 | 608 | SELECT @@myisam_sort_buffer_size, | ||
1433 | 609 | @@myisam_repair_threads, | ||
1434 | 610 | @@sort_buffer_size, | ||
1435 | 611 | @@binlog_format, | ||
1436 | 612 | @@keep_files_on_create, | ||
1437 | 613 | @@max_join_size; | ||
1438 | 614 | END| | ||
1439 | 615 | DELIMITER ;| | ||
1440 | 616 | --echo '' | ||
1441 | 617 | --echo '# Pre-STATEMENT variable value | ||
1442 | 618 | SELECT @@myisam_sort_buffer_size, | ||
1443 | 619 | @@myisam_repair_threads, | ||
1444 | 620 | @@sort_buffer_size, | ||
1445 | 621 | @@binlog_format, | ||
1446 | 622 | @@keep_files_on_create, | ||
1447 | 623 | @@max_join_size; | ||
1448 | 624 | --echo '' | ||
1449 | 625 | --echo '' | ||
1450 | 626 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1451 | 627 | myisam_repair_threads=2, | ||
1452 | 628 | sort_buffer_size=200000, | ||
1453 | 629 | binlog_format=row, | ||
1454 | 630 | keep_files_on_create=OFF, | ||
1455 | 631 | max_join_size=4444440000000 FOR | ||
1456 | 632 | CALL p4(); | ||
1457 | 633 | --echo '' | ||
1458 | 634 | --echo '# Post-STATEMENT | ||
1459 | 635 | SELECT @@myisam_sort_buffer_size, | ||
1460 | 636 | @@myisam_repair_threads, | ||
1461 | 637 | @@sort_buffer_size, | ||
1462 | 638 | @@binlog_format, | ||
1463 | 639 | @@keep_files_on_create, | ||
1464 | 640 | @@max_join_size; | ||
1465 | 641 | |||
1466 | 642 | --echo '' | ||
1467 | 643 | --echo '' | ||
1468 | 644 | --echo '#------------------Test 16-----------------------#' | ||
1469 | 645 | #################################################################### | ||
1470 | 646 | # Test Effect on parsing # | ||
1471 | 647 | #################################################################### | ||
1472 | 648 | --echo '' | ||
1473 | 649 | --echo '# Pre-STATEMENT variable value | ||
1474 | 650 | SELECT @@sql_mode; | ||
1475 | 651 | --echo '' | ||
1476 | 652 | --echo '' | ||
1477 | 653 | SET STATEMENT sql_mode='ansi' FOR SELECT * FROM t1; | ||
1478 | 654 | |||
1479 | 655 | --echo '' | ||
1480 | 656 | --echo '# Post-STATEMENT | ||
1481 | 657 | SELECT @@sql_mode; | ||
1482 | 658 | --echo '' | ||
1483 | 659 | --echo '' | ||
1484 | 660 | --echo '#------------------Test 17-----------------------#' | ||
1485 | 661 | #################################################################### | ||
1486 | 662 | # Test effect of SET STATEMENT FOR with SET SESSION modifying # | ||
1487 | 663 | # the same variables as the SET STATEMENT # | ||
1488 | 664 | #################################################################### | ||
1489 | 665 | --echo '# set initial variable values | ||
1490 | 666 | SET SESSION myisam_sort_buffer_size=500000, | ||
1491 | 667 | myisam_repair_threads=1, | ||
1492 | 668 | sort_buffer_size=100000, | ||
1493 | 669 | binlog_format=mixed, | ||
1494 | 670 | keep_files_on_create=ON, | ||
1495 | 671 | max_join_size=2222220000000; | ||
1496 | 672 | --echo '' | ||
1497 | 673 | --echo '# Pre-STATEMENT variable value | ||
1498 | 674 | SELECT @@myisam_sort_buffer_size, | ||
1499 | 675 | @@myisam_repair_threads, | ||
1500 | 676 | @@sort_buffer_size, | ||
1501 | 677 | @@binlog_format, | ||
1502 | 678 | @@keep_files_on_create, | ||
1503 | 679 | @@max_join_size; | ||
1504 | 680 | --echo '' | ||
1505 | 681 | --echo '' | ||
1506 | 682 | SET STATEMENT myisam_sort_buffer_size=320000, | ||
1507 | 683 | myisam_repair_threads=2, | ||
1508 | 684 | sort_buffer_size=220022, | ||
1509 | 685 | binlog_format=row, | ||
1510 | 686 | keep_files_on_create=ON, | ||
1511 | 687 | max_join_size=2222220000000 | ||
1512 | 688 | FOR SET SESSION | ||
1513 | 689 | myisam_sort_buffer_size=260000, | ||
1514 | 690 | myisam_repair_threads=3, | ||
1515 | 691 | sort_buffer_size=230013, | ||
1516 | 692 | binlog_format=row, | ||
1517 | 693 | keep_files_on_create=ON, | ||
1518 | 694 | max_join_size=2323230000000; | ||
1519 | 695 | |||
1520 | 696 | --echo '' | ||
1521 | 697 | --echo '# Post-STATEMENT | ||
1522 | 698 | SELECT @@myisam_sort_buffer_size, | ||
1523 | 699 | @@myisam_repair_threads, | ||
1524 | 700 | @@sort_buffer_size, | ||
1525 | 701 | @@binlog_format, | ||
1526 | 702 | @@keep_files_on_create, | ||
1527 | 703 | @@max_join_size; | ||
1528 | 704 | |||
1529 | 705 | --echo '' | ||
1530 | 706 | --echo '' | ||
1531 | 707 | --echo '#------------------Test 18-----------------------#' | ||
1532 | 708 | #################################################################### | ||
1533 | 709 | # Test effect of SET SESSION inside a stored procedure with # | ||
1534 | 710 | # with a SET STATEMENT on outside variables # | ||
1535 | 711 | #################################################################### | ||
1536 | 712 | --echo '# set initial variable values | ||
1537 | 713 | SET SESSION myisam_sort_buffer_size=500000, | ||
1538 | 714 | myisam_repair_threads=1, | ||
1539 | 715 | sort_buffer_size=100000, | ||
1540 | 716 | binlog_format=mixed, | ||
1541 | 717 | keep_files_on_create=ON, | ||
1542 | 718 | max_join_size=2222220000000; | ||
1543 | 719 | --echo '' | ||
1544 | 720 | --echo '# Pre-STATEMENT variable value | ||
1545 | 721 | SELECT @@myisam_sort_buffer_size, | ||
1546 | 722 | @@myisam_repair_threads, | ||
1547 | 723 | @@sort_buffer_size, | ||
1548 | 724 | @@binlog_format, | ||
1549 | 725 | @@keep_files_on_create, | ||
1550 | 726 | @@max_join_size; | ||
1551 | 727 | --echo '' | ||
1552 | 728 | --echo '' | ||
1553 | 729 | DELIMITER |; | ||
1554 | 730 | CREATE PROCEDURE p5() BEGIN | ||
1555 | 731 | SELECT @@myisam_sort_buffer_size, | ||
1556 | 732 | @@myisam_repair_threads, | ||
1557 | 733 | @@sort_buffer_size, | ||
1558 | 734 | @@binlog_format, | ||
1559 | 735 | @@keep_files_on_create, | ||
1560 | 736 | @@max_join_size; | ||
1561 | 737 | SET SESSION | ||
1562 | 738 | myisam_sort_buffer_size=260000, | ||
1563 | 739 | myisam_repair_threads=3, | ||
1564 | 740 | sort_buffer_size=230013, | ||
1565 | 741 | binlog_format=row, | ||
1566 | 742 | keep_files_on_create=ON, | ||
1567 | 743 | max_join_size=2323230000000; | ||
1568 | 744 | SELECT @@myisam_sort_buffer_size, | ||
1569 | 745 | @@myisam_repair_threads, | ||
1570 | 746 | @@sort_buffer_size, | ||
1571 | 747 | @@binlog_format, | ||
1572 | 748 | @@keep_files_on_create, | ||
1573 | 749 | @@max_join_size; | ||
1574 | 750 | END| | ||
1575 | 751 | DELIMITER ;| | ||
1576 | 752 | --echo '' | ||
1577 | 753 | --echo '' | ||
1578 | 754 | SET STATEMENT myisam_sort_buffer_size=400000, | ||
1579 | 755 | myisam_repair_threads=2, | ||
1580 | 756 | sort_buffer_size=200000, | ||
1581 | 757 | binlog_format=row, | ||
1582 | 758 | keep_files_on_create=OFF, | ||
1583 | 759 | max_join_size=4444440000000 FOR | ||
1584 | 760 | CALL p5(); | ||
1585 | 761 | |||
1586 | 762 | --echo '' | ||
1587 | 763 | --echo '# Post-STATEMENT | ||
1588 | 764 | SELECT @@myisam_sort_buffer_size, | ||
1589 | 765 | @@myisam_repair_threads, | ||
1590 | 766 | @@sort_buffer_size, | ||
1591 | 767 | @@binlog_format, | ||
1592 | 768 | @@keep_files_on_create, | ||
1593 | 769 | @@max_join_size; | ||
1594 | 770 | |||
1595 | 771 | --echo '' | ||
1596 | 772 | --echo '# Cleanup' | ||
1597 | 773 | DROP TABLE t1; | ||
1598 | 774 | DROP PROCEDURE p1; | ||
1599 | 775 | DROP PROCEDURE p2; | ||
1600 | 776 | DROP PROCEDURE p3; | ||
1601 | 777 | DROP PROCEDURE p4; | ||
1602 | 778 | DROP PROCEDURE p5; | ||
1603 | 0 | 779 | ||
1604 | === modified file 'Percona-Server/sql/lex.h' | |||
1605 | --- Percona-Server/sql/lex.h 2012-04-18 23:26:01 +0000 | |||
1606 | +++ Percona-Server/sql/lex.h 2012-04-26 09:29:20 +0000 | |||
1607 | @@ -534,6 +534,7 @@ | |||
1608 | 534 | { "START", SYM(START_SYM)}, | 534 | { "START", SYM(START_SYM)}, |
1609 | 535 | { "STARTING", SYM(STARTING)}, | 535 | { "STARTING", SYM(STARTING)}, |
1610 | 536 | { "STARTS", SYM(STARTS_SYM)}, | 536 | { "STARTS", SYM(STARTS_SYM)}, |
1611 | 537 | { "STATEMENT", SYM(STATEMENT_SYM)}, | ||
1612 | 537 | { "STATUS", SYM(STATUS_SYM)}, | 538 | { "STATUS", SYM(STATUS_SYM)}, |
1613 | 538 | { "STOP", SYM(STOP_SYM)}, | 539 | { "STOP", SYM(STOP_SYM)}, |
1614 | 539 | { "STORAGE", SYM(STORAGE_SYM)}, | 540 | { "STORAGE", SYM(STORAGE_SYM)}, |
1615 | 540 | 541 | ||
1616 | === modified file 'Percona-Server/sql/set_var.cc' | |||
1617 | --- Percona-Server/sql/set_var.cc 2011-07-03 23:48:19 +0000 | |||
1618 | +++ Percona-Server/sql/set_var.cc 2012-04-26 09:29:20 +0000 | |||
1619 | @@ -797,3 +797,181 @@ | |||
1620 | 797 | return 0; | 797 | return 0; |
1621 | 798 | } | 798 | } |
1622 | 799 | 799 | ||
1623 | 800 | |||
1624 | 801 | /** | ||
1625 | 802 | set_stmt_get_reset_vars function will retrieve the current value of | ||
1626 | 803 | a SESSION variable and create a new set_var_base class item containing | ||
1627 | 804 | the value and necessary update & check functions to be used to reset the | ||
1628 | 805 | variable to a previous setting. | ||
1629 | 806 | |||
1630 | 807 | @param var set_var containing value of variable that will be change | ||
1631 | 808 | too and holds name, name length, SESSION variable type, and | ||
1632 | 809 | value_ptr() function to retrieve current value. | ||
1633 | 810 | |||
1634 | 811 | @param lex_var_list list of set_var_bases that are created to hold the | ||
1635 | 812 | previous values and the update & check functions to be | ||
1636 | 813 | used to return the variable to a previous setting | ||
1637 | 814 | |||
1638 | 815 | @return true if error occurs false if successful | ||
1639 | 816 | |||
1640 | 817 | */ | ||
1641 | 818 | |||
1642 | 819 | bool set_stmt_get_reset_vars( | ||
1643 | 820 | THD *thd, | ||
1644 | 821 | set_var * var, | ||
1645 | 822 | List<set_var_base> *lex_var_list) | ||
1646 | 823 | { | ||
1647 | 824 | bool res= false; | ||
1648 | 825 | set_var *old_var= NULL; | ||
1649 | 826 | LEX_STRING base; | ||
1650 | 827 | char str[var->var->name.length]; | ||
1651 | 828 | |||
1652 | 829 | strcpy(str, var->var->name.str); | ||
1653 | 830 | base.str= str; | ||
1654 | 831 | base.length= var->var->name.length; | ||
1655 | 832 | /* | ||
1656 | 833 | When per query variables are set, the "set_var" structure is created and | ||
1657 | 834 | pushed into array. During "mysql_execute_command" this array is used for | ||
1658 | 835 | preserving old variables values ans setting new values. But the main | ||
1659 | 836 | trouble here is to get the old variable value. The matter is we can | ||
1660 | 837 | operate only with "sys_var" structure which describes system variable. | ||
1661 | 838 | This structure contains "value_ptr" method which uses the offset to count | ||
1662 | 839 | the address of the variable. And the only field in "sys_var" which shows | ||
1663 | 840 | the length of a variable is "const SHOW_TYPE show_val_type;". The current | ||
1664 | 841 | implementation uses the "switch" for the "const SHOW_TYPE show_val_type" | ||
1665 | 842 | field and considers only "int" and "char" types. I don't like this | ||
1666 | 843 | approach because we have to add the processing of the new type into | ||
1667 | 844 | several places. But it seems there is no another way except using "switch" | ||
1668 | 845 | for all possible values of "SHOW_TYPE" enumeration. | ||
1669 | 846 | */ | ||
1670 | 847 | switch (var->var->show_type()) | ||
1671 | 848 | { | ||
1672 | 849 | case SHOW_INT: | ||
1673 | 850 | { | ||
1674 | 851 | uint value; | ||
1675 | 852 | Item_int *item; | ||
1676 | 853 | /* | ||
1677 | 854 | We don't need to lock LOCK_global_system_variables here, | ||
1678 | 855 | because it's impossible to have global-only variable in | ||
1679 | 856 | var parameter due to syntax rules. So | ||
1680 | 857 | SELECT STATEMENT GLOBAL variable_name FOR ... | ||
1681 | 858 | or | ||
1682 | 859 | SELECT STATEMENT @@global.variable_name FOR ... | ||
1683 | 860 | is a wrong syntax. | ||
1684 | 861 | */ | ||
1685 | 862 | value= *(uint*) var->var->value_ptr(thd, OPT_SESSION, &base); | ||
1686 | 863 | item= new Item_uint((ulonglong) value); | ||
1687 | 864 | old_var = new set_var(OPT_SESSION, var->var, &base, item); | ||
1688 | 865 | break; | ||
1689 | 866 | } | ||
1690 | 867 | case SHOW_LONG: | ||
1691 | 868 | { | ||
1692 | 869 | ulong value; | ||
1693 | 870 | Item_int *item; | ||
1694 | 871 | |||
1695 | 872 | value= *(ulong*) var->var->value_ptr(thd, OPT_SESSION, &base); | ||
1696 | 873 | item= new Item_uint((ulonglong) value); | ||
1697 | 874 | old_var= new set_var(OPT_SESSION, var->var, &base, item); | ||
1698 | 875 | break; | ||
1699 | 876 | } | ||
1700 | 877 | case SHOW_LONGLONG: | ||
1701 | 878 | { | ||
1702 | 879 | longlong value; | ||
1703 | 880 | Item_int *item; | ||
1704 | 881 | |||
1705 | 882 | value= *(longlong*) var->var->value_ptr(thd, OPT_SESSION, &base); | ||
1706 | 883 | item= new Item_int(value); | ||
1707 | 884 | old_var= new set_var(OPT_SESSION, var->var, &base, item); | ||
1708 | 885 | break; | ||
1709 | 886 | } | ||
1710 | 887 | case SHOW_HA_ROWS: | ||
1711 | 888 | { | ||
1712 | 889 | ha_rows value; | ||
1713 | 890 | Item_int *item; | ||
1714 | 891 | |||
1715 | 892 | value= *(ha_rows*) var->var->value_ptr(thd, OPT_SESSION, &base); | ||
1716 | 893 | item= new Item_int((longlong) value); | ||
1717 | 894 | old_var= new set_var(OPT_SESSION, var->var, &base, item); | ||
1718 | 895 | break; | ||
1719 | 896 | } | ||
1720 | 897 | case SHOW_MY_BOOL: | ||
1721 | 898 | { | ||
1722 | 899 | Item_int *item; | ||
1723 | 900 | item= new Item_int((int32) *(my_bool*) var->var->value_ptr(thd, | ||
1724 | 901 | OPT_SESSION, &base), 1); | ||
1725 | 902 | old_var= new set_var(OPT_SESSION, var->var, &base, item); | ||
1726 | 903 | break; | ||
1727 | 904 | } | ||
1728 | 905 | case SHOW_CHAR: | ||
1729 | 906 | { | ||
1730 | 907 | Item *item; | ||
1731 | 908 | char *str= (char*) var->var->value_ptr(thd, OPT_SESSION, &base); | ||
1732 | 909 | if (str) | ||
1733 | 910 | item= new Item_string(str, strlen(str), system_charset_info, | ||
1734 | 911 | DERIVATION_SYSCONST); | ||
1735 | 912 | else | ||
1736 | 913 | { | ||
1737 | 914 | item= new Item_null(); | ||
1738 | 915 | item->collation.set(system_charset_info, DERIVATION_SYSCONST); | ||
1739 | 916 | } | ||
1740 | 917 | old_var= new set_var(OPT_SESSION, var->var, &base, item); | ||
1741 | 918 | break; | ||
1742 | 919 | } | ||
1743 | 920 | default: | ||
1744 | 921 | my_error(ER_NOT_SUPPORTED_YET, MYF(0), base.str); | ||
1745 | 922 | } | ||
1746 | 923 | |||
1747 | 924 | if (old_var == NULL) | ||
1748 | 925 | res= true; | ||
1749 | 926 | else | ||
1750 | 927 | lex_var_list->push_back(old_var); | ||
1751 | 928 | |||
1752 | 929 | return res; | ||
1753 | 930 | } | ||
1754 | 931 | |||
1755 | 932 | |||
1756 | 933 | /** | ||
1757 | 934 | set_stmt_reset_vars function will check and update SESSION variables to the | ||
1758 | 935 | previous setting for SET STATEMENT ... FOR. Please use sql_set_variables | ||
1759 | 936 | for setting variables as this version is designed for SET STATEMENT and | ||
1760 | 937 | removes checks and procedures that should be followed in normal SET | ||
1761 | 938 | operations. This function will also do partial sets of any passing comment | ||
1762 | 939 | instead of all or nothing | ||
1763 | 940 | |||
1764 | 941 | @param var_list list of set_var_bases that contain previous SESSION | ||
1765 | 942 | variables that where previously changed temporarily and now | ||
1766 | 943 | need to be set back using the check and update functions. | ||
1767 | 944 | |||
1768 | 945 | @return true if error occurs false if successful | ||
1769 | 946 | |||
1770 | 947 | */ | ||
1771 | 948 | |||
1772 | 949 | bool set_stmt_reset_vars(THD *thd, List<set_var_base> *var_list) | ||
1773 | 950 | { | ||
1774 | 951 | int error; | ||
1775 | 952 | bool err= false; | ||
1776 | 953 | set_var_base *var; | ||
1777 | 954 | List_iterator_fast<set_var_base> it(*var_list); | ||
1778 | 955 | |||
1779 | 956 | thd->stmt_da->can_overwrite_status= true; | ||
1780 | 957 | |||
1781 | 958 | while ((var = it++)) | ||
1782 | 959 | { | ||
1783 | 960 | if (!var->check(thd)) //check variable update if valid | ||
1784 | 961 | error |= var->update(thd); //Returns 0, -1 or 1 | ||
1785 | 962 | else | ||
1786 | 963 | err= true; | ||
1787 | 964 | } | ||
1788 | 965 | /* | ||
1789 | 966 | We encountered some sort of error, but no message was sent. | ||
1790 | 967 | Send something semi-generic here since we don't know which | ||
1791 | 968 | assignment in the list caused the error. Do not enter | ||
1792 | 969 | if error is already existing as will cause crash since error | ||
1793 | 970 | is from statement after FOR loop. | ||
1794 | 971 | */ | ||
1795 | 972 | if (err && !thd->is_error()) | ||
1796 | 973 | my_error(ER_WRONG_ARGUMENTS, MYF(0), "SET"); | ||
1797 | 974 | thd->stmt_da->can_overwrite_status= false; | ||
1798 | 975 | var_list->empty(); // do some cleanup | ||
1799 | 976 | return err; | ||
1800 | 977 | } | ||
1801 | 800 | 978 | ||
1802 | === modified file 'Percona-Server/sql/set_var.h' | |||
1803 | --- Percona-Server/sql/set_var.h 2012-04-19 16:51:34 +0000 | |||
1804 | +++ Percona-Server/sql/set_var.h 2012-04-26 09:29:20 +0000 | |||
1805 | @@ -321,5 +321,10 @@ | |||
1806 | 321 | int sys_var_add_options(DYNAMIC_ARRAY *long_options, int parse_flags); | 321 | int sys_var_add_options(DYNAMIC_ARRAY *long_options, int parse_flags); |
1807 | 322 | void sys_var_end(void); | 322 | void sys_var_end(void); |
1808 | 323 | 323 | ||
1809 | 324 | bool set_stmt_get_reset_vars(THD *thd, | ||
1810 | 325 | set_var * var, | ||
1811 | 326 | List<set_var_base> *lex_var_list); | ||
1812 | 327 | bool set_stmt_reset_vars(THD *thd, List<set_var_base> *var_list); | ||
1813 | 328 | |||
1814 | 324 | #endif | 329 | #endif |
1815 | 325 | 330 | ||
1816 | 326 | 331 | ||
1817 | === modified file 'Percona-Server/sql/sql_lex.cc' | |||
1818 | --- Percona-Server/sql/sql_lex.cc 2012-04-19 16:51:34 +0000 | |||
1819 | +++ Percona-Server/sql/sql_lex.cc 2012-04-26 09:29:20 +0000 | |||
1820 | @@ -372,6 +372,7 @@ | |||
1821 | 372 | lex->value_list.empty(); | 372 | lex->value_list.empty(); |
1822 | 373 | lex->update_list.empty(); | 373 | lex->update_list.empty(); |
1823 | 374 | lex->set_var_list.empty(); | 374 | lex->set_var_list.empty(); |
1824 | 375 | lex->stmt_set_list.empty(); | ||
1825 | 375 | lex->param_list.empty(); | 376 | lex->param_list.empty(); |
1826 | 376 | lex->view_list.empty(); | 377 | lex->view_list.empty(); |
1827 | 377 | lex->prepared_stmt_params.empty(); | 378 | lex->prepared_stmt_params.empty(); |
1828 | 378 | 379 | ||
1829 | === modified file 'Percona-Server/sql/sql_lex.h' | |||
1830 | --- Percona-Server/sql/sql_lex.h 2012-04-19 16:51:34 +0000 | |||
1831 | +++ Percona-Server/sql/sql_lex.h 2012-04-26 09:29:20 +0000 | |||
1832 | @@ -39,6 +39,7 @@ | |||
1833 | 39 | class partition_info; | 39 | class partition_info; |
1834 | 40 | class Event_parse_data; | 40 | class Event_parse_data; |
1835 | 41 | class set_var_base; | 41 | class set_var_base; |
1836 | 42 | class set_var; | ||
1837 | 42 | class sys_var; | 43 | class sys_var; |
1838 | 43 | class Item_func_match; | 44 | class Item_func_match; |
1839 | 44 | class Alter_drop; | 45 | class Alter_drop; |
1840 | @@ -2279,6 +2280,10 @@ | |||
1841 | 2279 | List<Item> *insert_list,field_list,value_list,update_list; | 2280 | List<Item> *insert_list,field_list,value_list,update_list; |
1842 | 2280 | List<List_item> many_values; | 2281 | List<List_item> many_values; |
1843 | 2281 | List<set_var_base> var_list; | 2282 | List<set_var_base> var_list; |
1844 | 2283 | /* | ||
1845 | 2284 | Variables list for SET STATEMENT expression. | ||
1846 | 2285 | */ | ||
1847 | 2286 | List<set_var> stmt_set_list; | ||
1848 | 2282 | List<Item_func_set_user_var> set_var_list; // in-query assignment list | 2287 | List<Item_func_set_user_var> set_var_list; // in-query assignment list |
1849 | 2283 | List<Item_param> param_list; | 2288 | List<Item_param> param_list; |
1850 | 2284 | List<LEX_STRING> view_list; // view list (list of field names in view) | 2289 | List<LEX_STRING> view_list; // view list (list of field names in view) |
1851 | 2285 | 2290 | ||
1852 | === modified file 'Percona-Server/sql/sql_parse.cc' | |||
1853 | --- Percona-Server/sql/sql_parse.cc 2012-04-19 16:51:34 +0000 | |||
1854 | +++ Percona-Server/sql/sql_parse.cc 2012-04-26 09:29:20 +0000 | |||
1855 | @@ -1989,6 +1989,8 @@ | |||
1856 | 1989 | int | 1989 | int |
1857 | 1990 | mysql_execute_command(THD *thd) | 1990 | mysql_execute_command(THD *thd) |
1858 | 1991 | { | 1991 | { |
1859 | 1992 | List<set_var_base> stmt_reset_list; | ||
1860 | 1993 | Item* stmt_free_list= NULL; | ||
1861 | 1992 | int res= FALSE; | 1994 | int res= FALSE; |
1862 | 1993 | int up_result= 0; | 1995 | int up_result= 0; |
1863 | 1994 | LEX *lex= thd->lex; | 1996 | LEX *lex= thd->lex; |
1864 | @@ -2205,6 +2207,60 @@ | |||
1865 | 2205 | DEBUG_SYNC(thd,"before_execute_sql_command"); | 2207 | DEBUG_SYNC(thd,"before_execute_sql_command"); |
1866 | 2206 | #endif | 2208 | #endif |
1867 | 2207 | 2209 | ||
1868 | 2210 | if (!lex->stmt_set_list.is_empty()) | ||
1869 | 2211 | { | ||
1870 | 2212 | List<set_var_base> lex_var_list; | ||
1871 | 2213 | List_iterator_fast<set_var> it(lex->stmt_set_list); | ||
1872 | 2214 | set_var *var; | ||
1873 | 2215 | |||
1874 | 2216 | while ((var= it++)) | ||
1875 | 2217 | { | ||
1876 | 2218 | if (set_stmt_get_reset_vars(thd, var, &stmt_reset_list)) | ||
1877 | 2219 | { | ||
1878 | 2220 | my_error(ER_WRONG_ARGUMENTS, MYF(0), "SET"); | ||
1879 | 2221 | goto error; | ||
1880 | 2222 | } | ||
1881 | 2223 | lex_var_list.push_back(var); | ||
1882 | 2224 | } | ||
1883 | 2225 | |||
1884 | 2226 | if (!(res= sql_set_variables(thd, &lex_var_list))) | ||
1885 | 2227 | { | ||
1886 | 2228 | /* | ||
1887 | 2229 | If the previous command was a SET ONE_SHOT, we don't want to forget | ||
1888 | 2230 | about the ONE_SHOT property of that SET. So we use a |= instead of = . | ||
1889 | 2231 | */ | ||
1890 | 2232 | thd->one_shot_set |= lex->one_shot_set; | ||
1891 | 2233 | } | ||
1892 | 2234 | else | ||
1893 | 2235 | { | ||
1894 | 2236 | /* | ||
1895 | 2237 | We encountered some sort of error, but no message was sent. | ||
1896 | 2238 | Send something semi-generic here since we don't know which | ||
1897 | 2239 | assignment in the list caused the error. | ||
1898 | 2240 | */ | ||
1899 | 2241 | if (!thd->is_error()) | ||
1900 | 2242 | my_error(ER_WRONG_ARGUMENTS, MYF(0), "SET"); | ||
1901 | 2243 | goto error; | ||
1902 | 2244 | } | ||
1903 | 2245 | /* | ||
1904 | 2246 | In set_stmt_reset_vars function the instances of class Item are created. | ||
1905 | 2247 | This instances are put into thd->free_list to be freed after query | ||
1906 | 2248 | execution. But when PREPARE or EXECUTE commands are used the | ||
1907 | 2249 | thd->free_list is cleaned up inside of Prepared_statement::prepare and | ||
1908 | 2250 | Prepared_statement::execute respectively. So the instances of | ||
1909 | 2251 | class Item that are used fot restoring per query variables values | ||
1910 | 2252 | can be freed before restoring operation. To avoid it in case of | ||
1911 | 2253 | PREPARE or EXECUTE commands processing the thd->free_list | ||
1912 | 2254 | is preserved in local variable to be restored after commands processing. | ||
1913 | 2255 | */ | ||
1914 | 2256 | if(lex->sql_command == SQLCOM_EXECUTE || lex->sql_command == SQLCOM_PREPARE) | ||
1915 | 2257 | { | ||
1916 | 2258 | stmt_free_list = thd->free_list; | ||
1917 | 2259 | thd->free_list = 0; | ||
1918 | 2260 | } | ||
1919 | 2261 | lex_var_list.empty(); | ||
1920 | 2262 | } | ||
1921 | 2263 | |||
1922 | 2208 | switch (lex->sql_command) { | 2264 | switch (lex->sql_command) { |
1923 | 2209 | 2265 | ||
1924 | 2210 | case SQLCOM_SHOW_EVENTS: | 2266 | case SQLCOM_SHOW_EVENTS: |
1925 | @@ -4581,6 +4637,22 @@ | |||
1926 | 4581 | my_ok(thd); | 4637 | my_ok(thd); |
1927 | 4582 | break; | 4638 | break; |
1928 | 4583 | } | 4639 | } |
1929 | 4640 | |||
1930 | 4641 | if (!stmt_reset_list.is_empty()) /* reset variables for SET STATEMENT */ | ||
1931 | 4642 | { | ||
1932 | 4643 | /* re-attach items to free_list for clean out later */ | ||
1933 | 4644 | if(lex->sql_command == SQLCOM_EXECUTE || lex->sql_command == SQLCOM_PREPARE) | ||
1934 | 4645 | thd->free_list= stmt_free_list; | ||
1935 | 4646 | |||
1936 | 4647 | if (set_stmt_reset_vars(thd, &stmt_reset_list)) | ||
1937 | 4648 | { | ||
1938 | 4649 | thd_proc_info(thd, "query end"); | ||
1939 | 4650 | res= TRUE; | ||
1940 | 4651 | goto finish; | ||
1941 | 4652 | } | ||
1942 | 4653 | } | ||
1943 | 4654 | |||
1944 | 4655 | |||
1945 | 4584 | thd_proc_info(thd, "query end"); | 4656 | thd_proc_info(thd, "query end"); |
1946 | 4585 | 4657 | ||
1947 | 4586 | /* | 4658 | /* |
1948 | @@ -4599,6 +4671,18 @@ | |||
1949 | 4599 | goto finish; | 4671 | goto finish; |
1950 | 4600 | 4672 | ||
1951 | 4601 | error: | 4673 | error: |
1952 | 4674 | |||
1953 | 4675 | if (!stmt_reset_list.is_empty()) | ||
1954 | 4676 | { | ||
1955 | 4677 | |||
1956 | 4678 | /* | ||
1957 | 4679 | re-attach items to free_list for clean out later | ||
1958 | 4680 | */ | ||
1959 | 4681 | if (lex->sql_command == SQLCOM_EXECUTE || lex->sql_command == SQLCOM_PREPARE) | ||
1960 | 4682 | thd->free_list= stmt_free_list; | ||
1961 | 4683 | set_stmt_reset_vars(thd, &stmt_reset_list); | ||
1962 | 4684 | } | ||
1963 | 4685 | |||
1964 | 4602 | res= TRUE; | 4686 | res= TRUE; |
1965 | 4603 | 4687 | ||
1966 | 4604 | finish: | 4688 | finish: |
1967 | 4605 | 4689 | ||
1968 | === modified file 'Percona-Server/sql/sql_prepare.cc' | |||
1969 | --- Percona-Server/sql/sql_prepare.cc 2012-04-19 16:51:34 +0000 | |||
1970 | +++ Percona-Server/sql/sql_prepare.cc 2012-04-26 09:29:20 +0000 | |||
1971 | @@ -3717,9 +3717,13 @@ | |||
1972 | 3717 | /* | 3717 | /* |
1973 | 3718 | If the free_list is not empty, we'll wrongly free some externally | 3718 | If the free_list is not empty, we'll wrongly free some externally |
1974 | 3719 | allocated items when cleaning up after validation of the prepared | 3719 | allocated items when cleaning up after validation of the prepared |
1976 | 3720 | statement. | 3720 | statement. The exception is the case of SET STATEMENT using. When |
1977 | 3721 | it is used the free_list is preserved in local variable in | ||
1978 | 3722 | mysq_execute_command to avoid free the data for restoring values of | ||
1979 | 3723 | system variables. | ||
1980 | 3721 | */ | 3724 | */ |
1982 | 3722 | DBUG_ASSERT(thd->free_list == NULL); | 3725 | if(thd->lex->stmt_set_list.is_empty()) |
1983 | 3726 | DBUG_ASSERT(thd->free_list == NULL); | ||
1984 | 3723 | 3727 | ||
1985 | 3724 | /* | 3728 | /* |
1986 | 3725 | Install the metadata observer. If some metadata version is | 3729 | Install the metadata observer. If some metadata version is |
1987 | 3726 | 3730 | ||
1988 | === modified file 'Percona-Server/sql/sql_yacc.yy' | |||
1989 | --- Percona-Server/sql/sql_yacc.yy 2012-04-19 16:51:34 +0000 | |||
1990 | +++ Percona-Server/sql/sql_yacc.yy 2012-04-26 09:29:20 +0000 | |||
1991 | @@ -781,10 +781,10 @@ | |||
1992 | 781 | 781 | ||
1993 | 782 | %pure_parser /* We have threads */ | 782 | %pure_parser /* We have threads */ |
1994 | 783 | /* | 783 | /* |
1996 | 784 | Currently there are 168 shift/reduce conflicts. | 784 | Currently there are 169 shift/reduce conflicts. |
1997 | 785 | We should not introduce new conflicts any more. | 785 | We should not introduce new conflicts any more. |
1998 | 786 | */ | 786 | */ |
2000 | 787 | %expect 168 | 787 | %expect 169 |
2001 | 788 | 788 | ||
2002 | 789 | /* | 789 | /* |
2003 | 790 | Comments for TOKENS. | 790 | Comments for TOKENS. |
2004 | @@ -1294,6 +1294,7 @@ | |||
2005 | 1294 | %token STARTING | 1294 | %token STARTING |
2006 | 1295 | %token STARTS_SYM | 1295 | %token STARTS_SYM |
2007 | 1296 | %token START_SYM /* SQL-2003-R */ | 1296 | %token START_SYM /* SQL-2003-R */ |
2008 | 1297 | %token STATEMENT_SYM | ||
2009 | 1297 | %token STATUS_SYM | 1298 | %token STATUS_SYM |
2010 | 1298 | %token NOLOCK_SYM /* SHOW SLAVE STATUS NOLOCK */ | 1299 | %token NOLOCK_SYM /* SHOW SLAVE STATUS NOLOCK */ |
2011 | 1299 | %token STDDEV_SAMP_SYM /* SQL-2003-N */ | 1300 | %token STDDEV_SAMP_SYM /* SQL-2003-N */ |
2012 | @@ -12780,6 +12781,7 @@ | |||
2013 | 12780 | | SQL_NO_CACHE_SYM {} | 12781 | | SQL_NO_CACHE_SYM {} |
2014 | 12781 | | SQL_THREAD {} | 12782 | | SQL_THREAD {} |
2015 | 12782 | | STARTS_SYM {} | 12783 | | STARTS_SYM {} |
2016 | 12784 | | STATEMENT_SYM {} | ||
2017 | 12783 | | STATUS_SYM {} | 12785 | | STATUS_SYM {} |
2018 | 12784 | | STORAGE_SYM {} | 12786 | | STORAGE_SYM {} |
2019 | 12785 | | STRING_SYM {} | 12787 | | STRING_SYM {} |
2020 | @@ -12835,7 +12837,8 @@ | |||
2021 | 12835 | /* Option functions */ | 12837 | /* Option functions */ |
2022 | 12836 | 12838 | ||
2023 | 12837 | set: | 12839 | set: |
2025 | 12838 | SET opt_option | 12840 | SET statement_set {} |
2026 | 12841 | | SET opt_option | ||
2027 | 12839 | { | 12842 | { |
2028 | 12840 | LEX *lex=Lex; | 12843 | LEX *lex=Lex; |
2029 | 12841 | lex->sql_command= SQLCOM_SET_OPTION; | 12844 | lex->sql_command= SQLCOM_SET_OPTION; |
2030 | @@ -12854,6 +12857,37 @@ | |||
2031 | 12854 | | OPTION {} | 12857 | | OPTION {} |
2032 | 12855 | ; | 12858 | ; |
2033 | 12856 | 12859 | ||
2034 | 12860 | statement_set: | ||
2035 | 12861 | STATEMENT_SYM | ||
2036 | 12862 | { | ||
2037 | 12863 | LEX *lex= Lex; | ||
2038 | 12864 | mysql_init_select(lex); | ||
2039 | 12865 | } | ||
2040 | 12866 | simple_option_type_list FOR_SYM statement {} | ||
2041 | 12867 | ; | ||
2042 | 12868 | |||
2043 | 12869 | simple_option_type_value: | ||
2044 | 12870 | internal_variable_name equal set_expr_or_default | ||
2045 | 12871 | { | ||
2046 | 12872 | if(!$1.var) | ||
2047 | 12873 | { | ||
2048 | 12874 | my_parse_error(ER(ER_SYNTAX_ERROR)); | ||
2049 | 12875 | MYSQL_YYABORT; | ||
2050 | 12876 | } | ||
2051 | 12877 | LEX *lex= Lex; | ||
2052 | 12878 | set_var *var= new set_var(OPT_SESSION, $1.var, &$1.base_name, $3); | ||
2053 | 12879 | |||
2054 | 12880 | if (var == NULL) | ||
2055 | 12881 | MYSQL_YYABORT; | ||
2056 | 12882 | lex->stmt_set_list.push_back(var); | ||
2057 | 12883 | } | ||
2058 | 12884 | ; | ||
2059 | 12885 | |||
2060 | 12886 | simple_option_type_list: | ||
2061 | 12887 | simple_option_type_value | ||
2062 | 12888 | | simple_option_type_list ',' simple_option_type_value | ||
2063 | 12889 | ; | ||
2064 | 12890 | |||
2065 | 12857 | option_value_list: | 12891 | option_value_list: |
2066 | 12858 | option_type_value | 12892 | option_type_value |
2067 | 12859 | | option_value_list ',' option_type_value | 12893 | | option_value_list ',' option_type_value |
The lp:percona-server is now a proper branch instead of set of patches, please submit direct code changes instead of a new patch.
Also, please merge all the revisions into a single revision with a descriptive commit comment (see history of lp:mysql-server for examples of comments)