~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to mysql-test/r/sp-vars.result

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
DROP PROCEDURE IF EXISTS sp_vars_check_dflt;
 
2
DROP PROCEDURE IF EXISTS sp_vars_check_assignment;
 
3
DROP FUNCTION IF EXISTS sp_vars_check_ret1;
 
4
DROP FUNCTION IF EXISTS sp_vars_check_ret2;
 
5
DROP FUNCTION IF EXISTS sp_vars_check_ret3;
 
6
DROP FUNCTION IF EXISTS sp_vars_check_ret4;
 
7
DROP FUNCTION IF EXISTS sp_vars_div_zero;
 
8
SET @@sql_mode = 'ansi';
 
9
CREATE PROCEDURE sp_vars_check_dflt()
 
10
BEGIN
 
11
DECLARE v1 TINYINT DEFAULT 1e200;
 
12
DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;
 
13
DECLARE v2 TINYINT DEFAULT -1e200;
 
14
DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;
 
15
DECLARE v3 TINYINT DEFAULT 300;
 
16
DECLARE v3u TINYINT UNSIGNED DEFAULT 300;
 
17
DECLARE v4 TINYINT DEFAULT -300;
 
18
DECLARE v4u TINYINT UNSIGNED DEFAULT -300;
 
19
DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;
 
20
DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;
 
21
DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;
 
22
DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;
 
23
DECLARE v7 TINYINT DEFAULT '10';
 
24
DECLARE v8 TINYINT DEFAULT '10 ';
 
25
DECLARE v9 TINYINT DEFAULT ' 10 ';
 
26
DECLARE v10 TINYINT DEFAULT 'String 10 ';
 
27
DECLARE v11 TINYINT DEFAULT 'String10';
 
28
DECLARE v12 TINYINT DEFAULT '10 String';
 
29
DECLARE v13 TINYINT DEFAULT '10String';
 
30
DECLARE v14 TINYINT DEFAULT concat('10', ' ');
 
31
DECLARE v15 TINYINT DEFAULT concat(' ', '10');
 
32
DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');
 
33
DECLARE v17 DECIMAL(64, 2) DEFAULT 12;
 
34
DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;
 
35
DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;
 
36
DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;
 
37
SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;
 
38
SELECT v5, v5u, v6, v6u;
 
39
SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;
 
40
SELECT v17, v18, v19, v20;
 
41
END|
 
42
CREATE PROCEDURE sp_vars_check_assignment()
 
43
BEGIN
 
44
DECLARE i1, i2, i3, i4 TINYINT;
 
45
DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;
 
46
DECLARE d1, d2, d3 DECIMAL(64, 2);
 
47
SET i1 = 1e200;
 
48
SET i2 = -1e200;
 
49
SET i3 = 300;
 
50
SET i4 = -300;
 
51
SELECT i1, i2, i3, i4;
 
52
SET i1 = 10 * 10 * 10;
 
53
SET i2 = -10 * 10 * 10;
 
54
SET i3 = sign(10 * 10) * 10 * 20;
 
55
SET i4 = sign(-10 * 10) * -10 * 20;
 
56
SELECT i1, i2, i3, i4;
 
57
SET u1 = 1e200;
 
58
SET u2 = -1e200;
 
59
SET u3 = 300;
 
60
SET u4 = -300;
 
61
SELECT u1, u2, u3, u4;
 
62
SET u1 = 10 * 10 * 10;
 
63
SET u2 = -10 * 10 * 10;
 
64
SET u3 = sign(10 * 10) * 10 * 20;
 
65
SET u4 = sign(-10 * 10) * -10 * 20;
 
66
SELECT u1, u2, u3, u4;
 
67
SET d1 = 1234;
 
68
SET d2 = 1234.12;
 
69
SET d3 = 1234.1234;
 
70
SELECT d1, d2, d3;
 
71
SET d1 = 12 * 100 + 34;
 
72
SET d2 = 12 * 100 + 34 + 0.12;
 
73
SET d3 = 12 * 100 + 34 + 0.1234;
 
74
SELECT d1, d2, d3;
 
75
END|
 
76
CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
 
77
BEGIN
 
78
RETURN 1e200;
 
79
END|
 
80
CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
 
81
BEGIN
 
82
RETURN 10 * 10 * 10;
 
83
END|
 
84
CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
 
85
BEGIN
 
86
RETURN 'Hello, world';
 
87
END|
 
88
CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
 
89
BEGIN
 
90
RETURN 12 * 10 + 34 + 0.1234;
 
91
END|
 
92
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
 
93
BEGIN
 
94
DECLARE div_zero INTEGER;
 
95
SELECT 1/0 INTO div_zero;
 
96
RETURN div_zero;
 
97
END|
 
98
 
 
99
---------------------------------------------------------------
 
100
Calling the routines, created in ANSI mode.
 
101
---------------------------------------------------------------
 
102
 
 
103
CALL sp_vars_check_dflt();
 
104
v1      v1u     v2      v2u     v3      v3u     v4      v4u
 
105
127     255     -128    0       127     255     -128    0
 
106
v5      v5u     v6      v6u
 
107
127     255     -128    0
 
108
v7      v8      v9      v10     v11     v12     v13     v14     v15     v16
 
109
10      10      10      0       0       10      10      10      10      0
 
110
v17     v18     v19     v20
 
111
12.00   12.12   12.00   12.12
 
112
Warnings:
 
113
Warning 1264    Out of range value for column 'v1' at row 1
 
114
Warning 1264    Out of range value for column 'v1u' at row 1
 
115
Warning 1264    Out of range value for column 'v2' at row 1
 
116
Warning 1264    Out of range value for column 'v2u' at row 1
 
117
Warning 1264    Out of range value for column 'v3' at row 1
 
118
Warning 1264    Out of range value for column 'v3u' at row 1
 
119
Warning 1264    Out of range value for column 'v4' at row 1
 
120
Warning 1264    Out of range value for column 'v4u' at row 1
 
121
Warning 1264    Out of range value for column 'v5' at row 1
 
122
Warning 1264    Out of range value for column 'v5u' at row 1
 
123
Warning 1264    Out of range value for column 'v6' at row 1
 
124
Warning 1264    Out of range value for column 'v6u' at row 1
 
125
Warning 1366    Incorrect integer value: 'String 10 ' for column 'v10' at row 1
 
126
Warning 1366    Incorrect integer value: 'String10' for column 'v11' at row 1
 
127
Warning 1265    Data truncated for column 'v12' at row 1
 
128
Warning 1265    Data truncated for column 'v13' at row 1
 
129
Warning 1366    Incorrect integer value: 'Hello, world' for column 'v16' at row 1
 
130
Note    1265    Data truncated for column 'v18' at row 1
 
131
Note    1265    Data truncated for column 'v20' at row 1
 
132
CALL sp_vars_check_assignment();
 
133
i1      i2      i3      i4
 
134
127     -128    127     -128
 
135
i1      i2      i3      i4
 
136
127     -128    127     127
 
137
u1      u2      u3      u4
 
138
255     0       255     0
 
139
u1      u2      u3      u4
 
140
255     0       200     200
 
141
d1      d2      d3
 
142
1234.00 1234.12 1234.12
 
143
d1      d2      d3
 
144
1234.00 1234.12 1234.12
 
145
Warnings:
 
146
Warning 1264    Out of range value for column 'i1' at row 1
 
147
Warning 1264    Out of range value for column 'i2' at row 1
 
148
Warning 1264    Out of range value for column 'i3' at row 1
 
149
Warning 1264    Out of range value for column 'i4' at row 1
 
150
Warning 1264    Out of range value for column 'i1' at row 1
 
151
Warning 1264    Out of range value for column 'i2' at row 1
 
152
Warning 1264    Out of range value for column 'i3' at row 1
 
153
Warning 1264    Out of range value for column 'i4' at row 1
 
154
Warning 1264    Out of range value for column 'u1' at row 1
 
155
Warning 1264    Out of range value for column 'u2' at row 1
 
156
Warning 1264    Out of range value for column 'u3' at row 1
 
157
Warning 1264    Out of range value for column 'u4' at row 1
 
158
Warning 1264    Out of range value for column 'u1' at row 1
 
159
Warning 1264    Out of range value for column 'u2' at row 1
 
160
Note    1265    Data truncated for column 'd3' at row 1
 
161
Note    1265    Data truncated for column 'd3' at row 1
 
162
SELECT sp_vars_check_ret1();
 
163
sp_vars_check_ret1()
 
164
127
 
165
Warnings:
 
166
Warning 1264    Out of range value for column 'sp_vars_check_ret1()' at row 1
 
167
SELECT sp_vars_check_ret2();
 
168
sp_vars_check_ret2()
 
169
127
 
170
Warnings:
 
171
Warning 1264    Out of range value for column 'sp_vars_check_ret2()' at row 1
 
172
SELECT sp_vars_check_ret3();
 
173
sp_vars_check_ret3()
 
174
0
 
175
Warnings:
 
176
Warning 1366    Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
 
177
SELECT sp_vars_check_ret4();
 
178
sp_vars_check_ret4()
 
179
154.12
 
180
Warnings:
 
181
Note    1265    Data truncated for column 'sp_vars_check_ret4()' at row 1
 
182
SELECT sp_vars_div_zero();
 
183
sp_vars_div_zero()
 
184
NULL
 
185
SET @@sql_mode = 'traditional';
 
186
 
 
187
---------------------------------------------------------------
 
188
Calling in TRADITIONAL mode the routines, created in ANSI mode.
 
189
---------------------------------------------------------------
 
190
 
 
191
CALL sp_vars_check_dflt();
 
192
v1      v1u     v2      v2u     v3      v3u     v4      v4u
 
193
127     255     -128    0       127     255     -128    0
 
194
v5      v5u     v6      v6u
 
195
127     255     -128    0
 
196
v7      v8      v9      v10     v11     v12     v13     v14     v15     v16
 
197
10      10      10      0       0       10      10      10      10      0
 
198
v17     v18     v19     v20
 
199
12.00   12.12   12.00   12.12
 
200
Warnings:
 
201
Warning 1264    Out of range value for column 'v1' at row 1
 
202
Warning 1264    Out of range value for column 'v1u' at row 1
 
203
Warning 1264    Out of range value for column 'v2' at row 1
 
204
Warning 1264    Out of range value for column 'v2u' at row 1
 
205
Warning 1264    Out of range value for column 'v3' at row 1
 
206
Warning 1264    Out of range value for column 'v3u' at row 1
 
207
Warning 1264    Out of range value for column 'v4' at row 1
 
208
Warning 1264    Out of range value for column 'v4u' at row 1
 
209
Warning 1264    Out of range value for column 'v5' at row 1
 
210
Warning 1264    Out of range value for column 'v5u' at row 1
 
211
Warning 1264    Out of range value for column 'v6' at row 1
 
212
Warning 1264    Out of range value for column 'v6u' at row 1
 
213
Warning 1366    Incorrect integer value: 'String 10 ' for column 'v10' at row 1
 
214
Warning 1366    Incorrect integer value: 'String10' for column 'v11' at row 1
 
215
Warning 1265    Data truncated for column 'v12' at row 1
 
216
Warning 1265    Data truncated for column 'v13' at row 1
 
217
Warning 1366    Incorrect integer value: 'Hello, world' for column 'v16' at row 1
 
218
Note    1265    Data truncated for column 'v18' at row 1
 
219
Note    1265    Data truncated for column 'v20' at row 1
 
220
CALL sp_vars_check_assignment();
 
221
i1      i2      i3      i4
 
222
127     -128    127     -128
 
223
i1      i2      i3      i4
 
224
127     -128    127     127
 
225
u1      u2      u3      u4
 
226
255     0       255     0
 
227
u1      u2      u3      u4
 
228
255     0       200     200
 
229
d1      d2      d3
 
230
1234.00 1234.12 1234.12
 
231
d1      d2      d3
 
232
1234.00 1234.12 1234.12
 
233
Warnings:
 
234
Warning 1264    Out of range value for column 'i1' at row 1
 
235
Warning 1264    Out of range value for column 'i2' at row 1
 
236
Warning 1264    Out of range value for column 'i3' at row 1
 
237
Warning 1264    Out of range value for column 'i4' at row 1
 
238
Warning 1264    Out of range value for column 'i1' at row 1
 
239
Warning 1264    Out of range value for column 'i2' at row 1
 
240
Warning 1264    Out of range value for column 'i3' at row 1
 
241
Warning 1264    Out of range value for column 'i4' at row 1
 
242
Warning 1264    Out of range value for column 'u1' at row 1
 
243
Warning 1264    Out of range value for column 'u2' at row 1
 
244
Warning 1264    Out of range value for column 'u3' at row 1
 
245
Warning 1264    Out of range value for column 'u4' at row 1
 
246
Warning 1264    Out of range value for column 'u1' at row 1
 
247
Warning 1264    Out of range value for column 'u2' at row 1
 
248
Note    1265    Data truncated for column 'd3' at row 1
 
249
Note    1265    Data truncated for column 'd3' at row 1
 
250
SELECT sp_vars_check_ret1();
 
251
sp_vars_check_ret1()
 
252
127
 
253
Warnings:
 
254
Warning 1264    Out of range value for column 'sp_vars_check_ret1()' at row 1
 
255
SELECT sp_vars_check_ret2();
 
256
sp_vars_check_ret2()
 
257
127
 
258
Warnings:
 
259
Warning 1264    Out of range value for column 'sp_vars_check_ret2()' at row 1
 
260
SELECT sp_vars_check_ret3();
 
261
sp_vars_check_ret3()
 
262
0
 
263
Warnings:
 
264
Warning 1366    Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
 
265
SELECT sp_vars_check_ret4();
 
266
sp_vars_check_ret4()
 
267
154.12
 
268
Warnings:
 
269
Note    1265    Data truncated for column 'sp_vars_check_ret4()' at row 1
 
270
SELECT sp_vars_div_zero();
 
271
sp_vars_div_zero()
 
272
NULL
 
273
DROP PROCEDURE sp_vars_check_dflt;
 
274
DROP PROCEDURE sp_vars_check_assignment;
 
275
DROP FUNCTION sp_vars_check_ret1;
 
276
DROP FUNCTION sp_vars_check_ret2;
 
277
DROP FUNCTION sp_vars_check_ret3;
 
278
DROP FUNCTION sp_vars_check_ret4;
 
279
DROP FUNCTION sp_vars_div_zero;
 
280
CREATE PROCEDURE sp_vars_check_dflt()
 
281
BEGIN
 
282
DECLARE v1 TINYINT DEFAULT 1e200;
 
283
DECLARE v1u TINYINT UNSIGNED DEFAULT 1e200;
 
284
DECLARE v2 TINYINT DEFAULT -1e200;
 
285
DECLARE v2u TINYINT UNSIGNED DEFAULT -1e200;
 
286
DECLARE v3 TINYINT DEFAULT 300;
 
287
DECLARE v3u TINYINT UNSIGNED DEFAULT 300;
 
288
DECLARE v4 TINYINT DEFAULT -300;
 
289
DECLARE v4u TINYINT UNSIGNED DEFAULT -300;
 
290
DECLARE v5 TINYINT DEFAULT 10 * 10 * 10;
 
291
DECLARE v5u TINYINT UNSIGNED DEFAULT 10 * 10 * 10;
 
292
DECLARE v6 TINYINT DEFAULT -10 * 10 * 10;
 
293
DECLARE v6u TINYINT UNSIGNED DEFAULT -10 * 10 * 10;
 
294
DECLARE v7 TINYINT DEFAULT '10';
 
295
DECLARE v8 TINYINT DEFAULT '10 ';
 
296
DECLARE v9 TINYINT DEFAULT ' 10 ';
 
297
DECLARE v10 TINYINT DEFAULT 'String 10 ';
 
298
DECLARE v11 TINYINT DEFAULT 'String10';
 
299
DECLARE v12 TINYINT DEFAULT '10 String';
 
300
DECLARE v13 TINYINT DEFAULT '10String';
 
301
DECLARE v14 TINYINT DEFAULT concat('10', ' ');
 
302
DECLARE v15 TINYINT DEFAULT concat(' ', '10');
 
303
DECLARE v16 TINYINT DEFAULT concat('Hello, ', 'world');
 
304
DECLARE v17 DECIMAL(64, 2) DEFAULT 12;
 
305
DECLARE v18 DECIMAL(64, 2) DEFAULT 12.123;
 
306
DECLARE v19 DECIMAL(64, 2) DEFAULT 11 + 1;
 
307
DECLARE v20 DECIMAL(64, 2) DEFAULT 12 + 0.123;
 
308
SELECT v1, v1u, v2, v2u, v3, v3u, v4, v4u;
 
309
SELECT v5, v5u, v6, v6u;
 
310
SELECT v7, v8, v9, v10, v11, v12, v13, v14, v15, v16;
 
311
SELECT v17, v18, v19, v20;
 
312
END|
 
313
CREATE PROCEDURE sp_vars_check_assignment()
 
314
BEGIN
 
315
DECLARE i1, i2, i3, i4 TINYINT;
 
316
DECLARE u1, u2, u3, u4 TINYINT UNSIGNED;
 
317
DECLARE d1, d2, d3 DECIMAL(64, 2);
 
318
SET i1 = 1e200;
 
319
SET i2 = -1e200;
 
320
SET i3 = 300;
 
321
SET i4 = -300;
 
322
SELECT i1, i2, i3, i4;
 
323
SET i1 = 10 * 10 * 10;
 
324
SET i2 = -10 * 10 * 10;
 
325
SET i3 = sign(10 * 10) * 10 * 20;
 
326
SET i4 = sign(-10 * 10) * -10 * 20;
 
327
SELECT i1, i2, i3, i4;
 
328
SET u1 = 1e200;
 
329
SET u2 = -1e200;
 
330
SET u3 = 300;
 
331
SET u4 = -300;
 
332
SELECT u1, u2, u3, u4;
 
333
SET u1 = 10 * 10 * 10;
 
334
SET u2 = -10 * 10 * 10;
 
335
SET u3 = sign(10 * 10) * 10 * 20;
 
336
SET u4 = sign(-10 * 10) * -10 * 20;
 
337
SELECT u1, u2, u3, u4;
 
338
SET d1 = 1234;
 
339
SET d2 = 1234.12;
 
340
SET d3 = 1234.1234;
 
341
SELECT d1, d2, d3;
 
342
SET d1 = 12 * 100 + 34;
 
343
SET d2 = 12 * 100 + 34 + 0.12;
 
344
SET d3 = 12 * 100 + 34 + 0.1234;
 
345
SELECT d1, d2, d3;
 
346
END|
 
347
CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
 
348
BEGIN
 
349
RETURN 1e200;
 
350
END|
 
351
CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
 
352
BEGIN
 
353
RETURN 10 * 10 * 10;
 
354
END|
 
355
CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
 
356
BEGIN
 
357
RETURN 'Hello, world';
 
358
END|
 
359
CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
 
360
BEGIN
 
361
RETURN 12 * 10 + 34 + 0.1234;
 
362
END|
 
363
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
 
364
BEGIN
 
365
DECLARE div_zero INTEGER;
 
366
SELECT 1/0 INTO div_zero;
 
367
RETURN div_zero;
 
368
END|
 
369
 
 
370
---------------------------------------------------------------
 
371
Calling the routines, created in TRADITIONAL mode.
 
372
---------------------------------------------------------------
 
373
 
 
374
CALL sp_vars_check_dflt();
 
375
ERROR 22003: Out of range value for column 'v1' at row 1
 
376
CALL sp_vars_check_assignment();
 
377
ERROR 22003: Out of range value for column 'i1' at row 1
 
378
SELECT sp_vars_check_ret1();
 
379
ERROR 22003: Out of range value for column 'sp_vars_check_ret1()' at row 1
 
380
SELECT sp_vars_check_ret2();
 
381
ERROR 22003: Out of range value for column 'sp_vars_check_ret2()' at row 1
 
382
SELECT sp_vars_check_ret3();
 
383
ERROR HY000: Incorrect integer value: 'Hello, world' for column 'sp_vars_check_ret3()' at row 1
 
384
SELECT sp_vars_check_ret4();
 
385
sp_vars_check_ret4()
 
386
154.12
 
387
Warnings:
 
388
Note    1265    Data truncated for column 'sp_vars_check_ret4()' at row 1
 
389
SELECT sp_vars_div_zero();
 
390
ERROR 22012: Division by 0
 
391
SET @@sql_mode = 'ansi';
 
392
DROP PROCEDURE sp_vars_check_dflt;
 
393
DROP PROCEDURE sp_vars_check_assignment;
 
394
DROP FUNCTION sp_vars_check_ret1;
 
395
DROP FUNCTION sp_vars_check_ret2;
 
396
DROP FUNCTION sp_vars_check_ret3;
 
397
DROP FUNCTION sp_vars_check_ret4;
 
398
DROP FUNCTION sp_vars_div_zero;
 
399
 
 
400
---------------------------------------------------------------
 
401
BIT data type tests
 
402
---------------------------------------------------------------
 
403
 
 
404
DROP PROCEDURE IF EXISTS p1;
 
405
CREATE PROCEDURE p1()
 
406
BEGIN
 
407
DECLARE v1 BIT;
 
408
DECLARE v2 BIT(1);
 
409
DECLARE v3 BIT(3) DEFAULT b'101';
 
410
DECLARE v4 BIT(64) DEFAULT 0x5555555555555555;
 
411
DECLARE v5 BIT(3);
 
412
DECLARE v6 BIT(64);
 
413
DECLARE v7 BIT(8) DEFAULT 128;
 
414
DECLARE v8 BIT(8) DEFAULT '128';
 
415
DECLARE v9 BIT(8) DEFAULT ' 128';
 
416
DECLARE v10 BIT(8) DEFAULT 'x 128';
 
417
SET v1 = v4;
 
418
SET v2 = 0;
 
419
SET v5 = v4; # check overflow
 
420
SET v6 = v3; # check padding
 
421
SELECT HEX(v1);
 
422
SELECT HEX(v2);
 
423
SELECT HEX(v3);
 
424
SELECT HEX(v4);
 
425
SELECT HEX(v5);
 
426
SELECT HEX(v6);
 
427
SELECT HEX(v7);
 
428
SELECT HEX(v8);
 
429
SELECT HEX(v9);
 
430
SELECT HEX(v10);
 
431
END|
 
432
CALL p1();
 
433
HEX(v1)
 
434
1
 
435
HEX(v2)
 
436
0
 
437
HEX(v3)
 
438
5
 
439
HEX(v4)
 
440
5555555555555555
 
441
HEX(v5)
 
442
7
 
443
HEX(v6)
 
444
5
 
445
HEX(v7)
 
446
80
 
447
HEX(v8)
 
448
FF
 
449
HEX(v9)
 
450
FF
 
451
HEX(v10)
 
452
FF
 
453
Warnings:
 
454
Warning 1264    Out of range value for column 'v8' at row 1
 
455
Warning 1264    Out of range value for column 'v9' at row 1
 
456
Warning 1264    Out of range value for column 'v10' at row 1
 
457
Warning 1264    Out of range value for column 'v1' at row 1
 
458
Warning 1264    Out of range value for column 'v5' at row 1
 
459
DROP PROCEDURE p1;
 
460
 
 
461
---------------------------------------------------------------
 
462
CASE expression tests.
 
463
---------------------------------------------------------------
 
464
 
 
465
DROP PROCEDURE IF EXISTS p1;
 
466
Warnings:
 
467
Note    1305    PROCEDURE p1 does not exist
 
468
DROP PROCEDURE IF EXISTS p2;
 
469
Warnings:
 
470
Note    1305    PROCEDURE p2 does not exist
 
471
DROP TABLE IF EXISTS t1;
 
472
Warnings:
 
473
Note    1051    Unknown table 't1'
 
474
CREATE TABLE t1(log_msg VARCHAR(1024));
 
475
CREATE PROCEDURE p1(arg VARCHAR(255))
 
476
BEGIN
 
477
INSERT INTO t1 VALUES('p1: step1');
 
478
CASE arg * 10
 
479
WHEN 10 * 10 THEN
 
480
INSERT INTO t1 VALUES('p1: case1: on 10');
 
481
WHEN 10 * 10 + 10 * 10 THEN
 
482
BEGIN
 
483
CASE arg / 10
 
484
WHEN 1 THEN
 
485
INSERT INTO t1 VALUES('p1: case1: case2: on 1');
 
486
WHEN 2 THEN
 
487
BEGIN
 
488
DECLARE i TINYINT DEFAULT 10;
 
489
WHILE i > 0 DO
 
490
INSERT INTO t1 VALUES(CONCAT('p1: case1: case2: loop: i: ', i));
 
491
CASE MOD(i, 2)
 
492
WHEN 0 THEN
 
493
INSERT INTO t1 VALUES('p1: case1: case2: loop: i is even');
 
494
WHEN 1 THEN
 
495
INSERT INTO t1 VALUES('p1: case1: case2: loop: i is odd');
 
496
ELSE
 
497
INSERT INTO t1 VALUES('p1: case1: case2: loop: ERROR');
 
498
END CASE;
 
499
SET i = i - 1;
 
500
END WHILE;
 
501
END;
 
502
ELSE
 
503
INSERT INTO t1 VALUES('p1: case1: case2: ERROR');
 
504
END CASE;
 
505
CASE arg
 
506
WHEN 10 THEN
 
507
INSERT INTO t1 VALUES('p1: case1: case3: on 10');
 
508
WHEN 20 THEN
 
509
INSERT INTO t1 VALUES('p1: case1: case3: on 20');
 
510
ELSE
 
511
INSERT INTO t1 VALUES('p1: case1: case3: ERROR');
 
512
END CASE;
 
513
END;
 
514
ELSE
 
515
INSERT INTO t1 VALUES('p1: case1: ERROR');
 
516
END CASE;
 
517
CASE arg * 10
 
518
WHEN 10 * 10 THEN
 
519
INSERT INTO t1 VALUES('p1: case4: on 10');
 
520
WHEN 10 * 10 + 10 * 10 THEN
 
521
BEGIN
 
522
CASE arg / 10
 
523
WHEN 1 THEN
 
524
INSERT INTO t1 VALUES('p1: case4: case5: on 1');
 
525
WHEN 2 THEN
 
526
BEGIN
 
527
DECLARE i TINYINT DEFAULT 10;
 
528
WHILE i > 0 DO
 
529
INSERT INTO t1 VALUES(CONCAT('p1: case4: case5: loop: i: ', i));
 
530
CASE MOD(i, 2)
 
531
WHEN 0 THEN
 
532
INSERT INTO t1 VALUES('p1: case4: case5: loop: i is even');
 
533
WHEN 1 THEN
 
534
INSERT INTO t1 VALUES('p1: case4: case5: loop: i is odd');
 
535
ELSE
 
536
INSERT INTO t1 VALUES('p1: case4: case5: loop: ERROR');
 
537
END CASE;
 
538
SET i = i - 1;
 
539
END WHILE;
 
540
END;
 
541
ELSE
 
542
INSERT INTO t1 VALUES('p1: case4: case5: ERROR');
 
543
END CASE;
 
544
CASE arg
 
545
WHEN 10 THEN
 
546
INSERT INTO t1 VALUES('p1: case4: case6: on 10');
 
547
WHEN 20 THEN
 
548
INSERT INTO t1 VALUES('p1: case4: case6: on 20');
 
549
ELSE
 
550
INSERT INTO t1 VALUES('p1: case4: case6: ERROR');
 
551
END CASE;
 
552
END;
 
553
ELSE
 
554
INSERT INTO t1 VALUES('p1: case4: ERROR');
 
555
END CASE;
 
556
END|
 
557
CREATE PROCEDURE p2()
 
558
BEGIN
 
559
DECLARE i TINYINT DEFAULT 3;
 
560
WHILE i > 0 DO
 
561
IF MOD(i, 2) = 0 THEN
 
562
SET @_test_session_var = 10;
 
563
ELSE
 
564
SET @_test_session_var = 'test';
 
565
END IF;
 
566
CASE @_test_session_var
 
567
WHEN 10 THEN
 
568
INSERT INTO t1 VALUES('p2: case: numerical type');
 
569
WHEN 'test' THEN
 
570
INSERT INTO t1 VALUES('p2: case: string type');
 
571
ELSE
 
572
INSERT INTO t1 VALUES('p2: case: ERROR');
 
573
END CASE;
 
574
SET i = i - 1;
 
575
END WHILE;
 
576
END|
 
577
CALL p1(10);
 
578
CALL p1(20);
 
579
CALL p2();
 
580
SELECT * FROM t1;
 
581
log_msg
 
582
p1: step1
 
583
p1: case1: on 10
 
584
p1: case4: on 10
 
585
p1: step1
 
586
p1: case1: case2: loop: i: 10
 
587
p1: case1: case2: loop: i is even
 
588
p1: case1: case2: loop: i: 9
 
589
p1: case1: case2: loop: i is odd
 
590
p1: case1: case2: loop: i: 8
 
591
p1: case1: case2: loop: i is even
 
592
p1: case1: case2: loop: i: 7
 
593
p1: case1: case2: loop: i is odd
 
594
p1: case1: case2: loop: i: 6
 
595
p1: case1: case2: loop: i is even
 
596
p1: case1: case2: loop: i: 5
 
597
p1: case1: case2: loop: i is odd
 
598
p1: case1: case2: loop: i: 4
 
599
p1: case1: case2: loop: i is even
 
600
p1: case1: case2: loop: i: 3
 
601
p1: case1: case2: loop: i is odd
 
602
p1: case1: case2: loop: i: 2
 
603
p1: case1: case2: loop: i is even
 
604
p1: case1: case2: loop: i: 1
 
605
p1: case1: case2: loop: i is odd
 
606
p1: case1: case3: on 20
 
607
p1: case4: case5: loop: i: 10
 
608
p1: case4: case5: loop: i is even
 
609
p1: case4: case5: loop: i: 9
 
610
p1: case4: case5: loop: i is odd
 
611
p1: case4: case5: loop: i: 8
 
612
p1: case4: case5: loop: i is even
 
613
p1: case4: case5: loop: i: 7
 
614
p1: case4: case5: loop: i is odd
 
615
p1: case4: case5: loop: i: 6
 
616
p1: case4: case5: loop: i is even
 
617
p1: case4: case5: loop: i: 5
 
618
p1: case4: case5: loop: i is odd
 
619
p1: case4: case5: loop: i: 4
 
620
p1: case4: case5: loop: i is even
 
621
p1: case4: case5: loop: i: 3
 
622
p1: case4: case5: loop: i is odd
 
623
p1: case4: case5: loop: i: 2
 
624
p1: case4: case5: loop: i is even
 
625
p1: case4: case5: loop: i: 1
 
626
p1: case4: case5: loop: i is odd
 
627
p1: case4: case6: on 20
 
628
p2: case: string type
 
629
p2: case: numerical type
 
630
p2: case: string type
 
631
DROP PROCEDURE p1;
 
632
DROP PROCEDURE p2;
 
633
DROP TABLE t1;
 
634
 
 
635
---------------------------------------------------------------
 
636
BUG#14161
 
637
---------------------------------------------------------------
 
638
 
 
639
DROP TABLE IF EXISTS t1;
 
640
DROP PROCEDURE IF EXISTS p1;
 
641
CREATE TABLE t1(col BIGINT UNSIGNED);
 
642
INSERT INTO t1 VALUE(18446744073709551614);
 
643
CREATE PROCEDURE p1(IN arg BIGINT UNSIGNED)
 
644
BEGIN
 
645
SELECT arg;
 
646
SELECT * FROM t1;
 
647
SELECT * FROM t1 WHERE col = arg;
 
648
END|
 
649
CALL p1(18446744073709551614);
 
650
arg
 
651
18446744073709551614
 
652
col
 
653
18446744073709551614
 
654
col
 
655
18446744073709551614
 
656
DROP TABLE t1;
 
657
DROP PROCEDURE p1;
 
658
 
 
659
---------------------------------------------------------------
 
660
BUG#13705
 
661
---------------------------------------------------------------
 
662
 
 
663
DROP PROCEDURE IF EXISTS p1;
 
664
CREATE PROCEDURE p1(x VARCHAR(10), y CHAR(3)) READS SQL DATA
 
665
BEGIN
 
666
SELECT x, y;
 
667
END|
 
668
CALL p1('alpha', 'abc');
 
669
x       y
 
670
alpha   abc
 
671
CALL p1('alpha', 'abcdef');
 
672
x       y
 
673
alpha   abc
 
674
Warnings:
 
675
Warning 1265    Data truncated for column 'y' at row 1
 
676
DROP PROCEDURE p1;
 
677
 
 
678
---------------------------------------------------------------
 
679
BUG#13675
 
680
---------------------------------------------------------------
 
681
 
 
682
DROP PROCEDURE IF EXISTS p1;
 
683
DROP TABLE IF EXISTS t1;
 
684
CREATE PROCEDURE p1(x DATETIME)
 
685
BEGIN
 
686
CREATE TABLE t1 SELECT x;
 
687
SHOW CREATE TABLE t1;
 
688
DROP TABLE t1;
 
689
END|
 
690
CALL p1(NOW());
 
691
Table   Create Table
 
692
t1      CREATE TABLE "t1" (
 
693
  "x" datetime DEFAULT NULL
 
694
)
 
695
CALL p1('test');
 
696
Table   Create Table
 
697
t1      CREATE TABLE "t1" (
 
698
  "x" datetime DEFAULT NULL
 
699
)
 
700
Warnings:
 
701
Warning 1264    Out of range value for column 'x' at row 1
 
702
DROP PROCEDURE p1;
 
703
 
 
704
---------------------------------------------------------------
 
705
BUG#12976
 
706
---------------------------------------------------------------
 
707
 
 
708
DROP TABLE IF EXISTS t1;
 
709
DROP PROCEDURE IF EXISTS p1;
 
710
DROP PROCEDURE IF EXISTS p2;
 
711
CREATE TABLE t1(b BIT(1));
 
712
INSERT INTO t1(b) VALUES(b'0'), (b'1');
 
713
CREATE PROCEDURE p1()
 
714
BEGIN
 
715
SELECT HEX(b),
 
716
b = 0,
 
717
b = FALSE,
 
718
b IS FALSE,
 
719
b = 1,
 
720
b = TRUE,
 
721
b IS TRUE
 
722
FROM t1;
 
723
END|
 
724
CREATE PROCEDURE p2()
 
725
BEGIN
 
726
DECLARE vb BIT(1);
 
727
SELECT b INTO vb FROM t1 WHERE b = 0;
 
728
SELECT HEX(vb),
 
729
vb = 0,
 
730
vb = FALSE,
 
731
vb IS FALSE,
 
732
vb = 1,
 
733
vb = TRUE,
 
734
vb IS TRUE;
 
735
SELECT b INTO vb FROM t1 WHERE b = 1;
 
736
SELECT HEX(vb),
 
737
vb = 0,
 
738
vb = FALSE,
 
739
vb IS FALSE,
 
740
vb = 1,
 
741
vb = TRUE,
 
742
vb IS TRUE;
 
743
END|
 
744
call p1();
 
745
HEX(b)  b = 0   b = FALSE       b IS FALSE      b = 1   b = TRUE        b IS TRUE
 
746
 
 
747
0       1       1       1       0       0       0
 
748
1       0       0       0       1       1       1
 
749
call p2();
 
750
HEX(vb) vb = 0  vb = FALSE      vb IS FALSE     vb = 1  vb = TRUE       vb IS TRUE
 
751
0       1       1       1       0       0       0
 
752
HEX(vb) vb = 0  vb = FALSE      vb IS FALSE     vb = 1  vb = TRUE       vb IS TRUE
 
753
1       0       0       0       1       1       1
 
754
DROP TABLE t1;
 
755
DROP PROCEDURE p1;
 
756
DROP PROCEDURE p2;
 
757
DROP TABLE IF EXISTS table_12976_a;
 
758
DROP TABLE IF EXISTS table_12976_b;
 
759
DROP PROCEDURE IF EXISTS proc_12976_a;
 
760
DROP PROCEDURE IF EXISTS proc_12976_b;
 
761
CREATE TABLE table_12976_a (val bit(1));
 
762
CREATE TABLE table_12976_b(
 
763
appname varchar(15),
 
764
emailperm bit not null default 1,
 
765
phoneperm bit not null default 0);
 
766
insert into table_12976_b values ('A', b'1', b'1'), ('B', b'0', b'0');
 
767
CREATE PROCEDURE proc_12976_a()
 
768
BEGIN
 
769
declare localvar bit(1);
 
770
SELECT val INTO localvar FROM table_12976_a;
 
771
SELECT coalesce(localvar, 1)+1, coalesce(val, 1)+1 FROM table_12976_a;
 
772
END||
 
773
CREATE PROCEDURE proc_12976_b(
 
774
name varchar(15),
 
775
out ep bit,
 
776
out msg varchar(10))
 
777
BEGIN
 
778
SELECT emailperm into ep FROM table_12976_b where (appname = name);
 
779
IF ep is true THEN
 
780
SET msg = 'True';
 
781
ELSE
 
782
SET msg = 'False';
 
783
END IF;
 
784
END||
 
785
INSERT table_12976_a VALUES (0);
 
786
call proc_12976_a();
 
787
coalesce(localvar, 1)+1 coalesce(val, 1)+1
 
788
1       1
 
789
UPDATE table_12976_a set val=1;
 
790
call proc_12976_a();
 
791
coalesce(localvar, 1)+1 coalesce(val, 1)+1
 
792
2       2
 
793
call proc_12976_b('A', @ep, @msg);
 
794
select @ep, @msg;
 
795
@ep     @msg
 
796
1       True
 
797
call proc_12976_b('B', @ep, @msg);
 
798
select @ep, @msg;
 
799
@ep     @msg
 
800
0       False
 
801
DROP TABLE table_12976_a;
 
802
DROP TABLE table_12976_b;
 
803
DROP PROCEDURE proc_12976_a;
 
804
DROP PROCEDURE proc_12976_b;
 
805
 
 
806
---------------------------------------------------------------
 
807
BUG#9572
 
808
---------------------------------------------------------------
 
809
 
 
810
DROP PROCEDURE IF EXISTS p1;
 
811
DROP PROCEDURE IF EXISTS p2;
 
812
DROP PROCEDURE IF EXISTS p3;
 
813
DROP PROCEDURE IF EXISTS p4;
 
814
DROP PROCEDURE IF EXISTS p5;
 
815
DROP PROCEDURE IF EXISTS p6;
 
816
SET @@sql_mode = 'traditional';
 
817
CREATE PROCEDURE p1()
 
818
BEGIN
 
819
DECLARE v TINYINT DEFAULT 1e200;
 
820
SELECT v;
 
821
END|
 
822
CREATE PROCEDURE p2()
 
823
BEGIN
 
824
DECLARE v DECIMAL(5) DEFAULT 1e200;
 
825
SELECT v;
 
826
END|
 
827
CREATE PROCEDURE p3()
 
828
BEGIN
 
829
DECLARE v CHAR(5) DEFAULT 'abcdef';
 
830
SELECT v LIKE 'abc___';
 
831
END|
 
832
CREATE PROCEDURE p4(arg VARCHAR(2))
 
833
BEGIN
 
834
DECLARE var VARCHAR(1);
 
835
SET var := arg;
 
836
SELECT arg, var;
 
837
END|
 
838
CREATE PROCEDURE p5(arg CHAR(2))
 
839
BEGIN
 
840
DECLARE var CHAR(1);
 
841
SET var := arg;
 
842
SELECT arg, var;
 
843
END|
 
844
CREATE PROCEDURE p6(arg DECIMAL(2))
 
845
BEGIN
 
846
DECLARE var DECIMAL(1);
 
847
SET var := arg;
 
848
SELECT arg, var;
 
849
END|
 
850
CALL p1();
 
851
ERROR 22003: Out of range value for column 'v' at row 1
 
852
CALL p2();
 
853
ERROR 22003: Out of range value for column 'v' at row 1
 
854
CALL p3();
 
855
ERROR 22001: Data too long for column 'v' at row 1
 
856
CALL p4('aaa');
 
857
ERROR 22001: Data too long for column 'arg' at row 1
 
858
CALL p5('aa');
 
859
ERROR 22001: Data too long for column 'var' at row 1
 
860
CALL p6(10);
 
861
ERROR 22003: Out of range value for column 'var' at row 1
 
862
SET @@sql_mode = 'ansi';
 
863
DROP PROCEDURE p1;
 
864
DROP PROCEDURE p2;
 
865
DROP PROCEDURE p3;
 
866
DROP PROCEDURE p4;
 
867
DROP PROCEDURE p5;
 
868
DROP PROCEDURE p6;
 
869
 
 
870
---------------------------------------------------------------
 
871
BUG#9078
 
872
---------------------------------------------------------------
 
873
 
 
874
DROP PROCEDURE IF EXISTS p1;
 
875
CREATE PROCEDURE p1 (arg DECIMAL(64,2))
 
876
BEGIN
 
877
DECLARE var DECIMAL(64,2);
 
878
SET var = arg;
 
879
SELECT var;
 
880
END|
 
881
CALL p1(1929);
 
882
var
 
883
1929.00
 
884
CALL p1(1929.00);
 
885
var
 
886
1929.00
 
887
CALL p1(1929.003);
 
888
var
 
889
1929.00
 
890
Warnings:
 
891
Note    1265    Data truncated for column 'arg' at row 1
 
892
DROP PROCEDURE p1;
 
893
 
 
894
---------------------------------------------------------------
 
895
BUG#8768
 
896
---------------------------------------------------------------
 
897
 
 
898
DROP FUNCTION IF EXISTS f1;
 
899
CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
 
900
BEGIN
 
901
RETURN arg;
 
902
END|
 
903
SELECT f1(-2500);
 
904
f1(-2500)
 
905
0
 
906
Warnings:
 
907
Warning 1264    Out of range value for column 'arg' at row 1
 
908
SET @@sql_mode = 'traditional';
 
909
SELECT f1(-2500);
 
910
ERROR 22003: Out of range value for column 'arg' at row 1
 
911
DROP FUNCTION f1;
 
912
CREATE FUNCTION f1(arg TINYINT UNSIGNED) RETURNS TINYINT
 
913
BEGIN
 
914
RETURN arg;
 
915
END|
 
916
SELECT f1(-2500);
 
917
ERROR 22003: Out of range value for column 'arg' at row 1
 
918
SET @@sql_mode = 'ansi';
 
919
DROP FUNCTION f1;
 
920
 
 
921
---------------------------------------------------------------
 
922
BUG#8769
 
923
---------------------------------------------------------------
 
924
 
 
925
DROP FUNCTION IF EXISTS f1;
 
926
CREATE FUNCTION f1(arg MEDIUMINT) RETURNS MEDIUMINT
 
927
BEGIN
 
928
RETURN arg;
 
929
END|
 
930
SELECT f1(8388699);
 
931
f1(8388699)
 
932
8388607
 
933
Warnings:
 
934
Warning 1264    Out of range value for column 'arg' at row 1
 
935
SET @@sql_mode = 'traditional';
 
936
SELECT f1(8388699);
 
937
ERROR 22003: Out of range value for column 'arg' at row 1
 
938
DROP FUNCTION f1;
 
939
CREATE FUNCTION f1(arg MEDIUMINT) RETURNS MEDIUMINT
 
940
BEGIN
 
941
RETURN arg;
 
942
END|
 
943
SELECT f1(8388699);
 
944
ERROR 22003: Out of range value for column 'arg' at row 1
 
945
SET @@sql_mode = 'ansi';
 
946
DROP FUNCTION f1;
 
947
 
 
948
---------------------------------------------------------------
 
949
BUG#8702
 
950
---------------------------------------------------------------
 
951
 
 
952
DROP PROCEDURE IF EXISTS p1;
 
953
DROP TABLE IF EXISTS t1;
 
954
CREATE TABLE t1(col VARCHAR(255));
 
955
INSERT INTO t1(col) VALUES('Hello, world!');
 
956
CREATE PROCEDURE p1()
 
957
BEGIN
 
958
DECLARE sp_var INTEGER;
 
959
SELECT col INTO sp_var FROM t1 LIMIT 1;
 
960
SET @user_var = sp_var;
 
961
SELECT sp_var;
 
962
SELECT @user_var;
 
963
END|
 
964
CALL p1();
 
965
sp_var
 
966
0
 
967
@user_var
 
968
0
 
969
Warnings:
 
970
Warning 1366    Incorrect integer value: 'Hello, world!' for column 'sp_var' at row 1
 
971
DROP PROCEDURE p1;
 
972
DROP TABLE t1;
 
973
 
 
974
---------------------------------------------------------------
 
975
BUG#12903
 
976
---------------------------------------------------------------
 
977
 
 
978
DROP FUNCTION IF EXISTS f1;
 
979
DROP TABLE IF EXISTS t1;
 
980
CREATE TABLE t1(txt VARCHAR(255));
 
981
CREATE FUNCTION f1(arg VARCHAR(255)) RETURNS VARCHAR(255)
 
982
BEGIN
 
983
DECLARE v1 VARCHAR(255);
 
984
DECLARE v2 VARCHAR(255);
 
985
SET v1 = CONCAT(LOWER(arg), UPPER(arg));
 
986
SET v2 = CONCAT(LOWER(v1), UPPER(v1));
 
987
INSERT INTO t1 VALUES(v1), (v2);
 
988
RETURN CONCAT(LOWER(arg), UPPER(arg));
 
989
END|
 
990
SELECT f1('_aBcDe_');
 
991
f1('_aBcDe_')
 
992
_abcde__ABCDE_
 
993
SELECT * FROM t1;
 
994
txt
 
995
_abcde__ABCDE_
 
996
_abcde__abcde__ABCDE__ABCDE_
 
997
DROP FUNCTION f1;
 
998
DROP TABLE t1;
 
999
 
 
1000
---------------------------------------------------------------
 
1001
BUG#13808
 
1002
---------------------------------------------------------------
 
1003
 
 
1004
DROP PROCEDURE IF EXISTS p1;
 
1005
DROP PROCEDURE IF EXISTS p2;
 
1006
DROP FUNCTION IF EXISTS f1;
 
1007
CREATE PROCEDURE p1(arg ENUM('a', 'b'))
 
1008
BEGIN
 
1009
SELECT arg;
 
1010
END|
 
1011
CREATE PROCEDURE p2(arg ENUM('a', 'b'))
 
1012
BEGIN
 
1013
DECLARE var ENUM('c', 'd') DEFAULT arg;
 
1014
SELECT arg, var;
 
1015
END|
 
1016
CREATE FUNCTION f1(arg ENUM('a', 'b')) RETURNS ENUM('c', 'd')
 
1017
BEGIN
 
1018
RETURN arg;
 
1019
END|
 
1020
CALL p1('c');
 
1021
arg
 
1022
 
 
1023
Warnings:
 
1024
Warning 1265    Data truncated for column 'arg' at row 1
 
1025
CALL p2('a');
 
1026
arg     var
 
1027
a       
 
1028
Warnings:
 
1029
Warning 1265    Data truncated for column 'var' at row 1
 
1030
SELECT f1('a');
 
1031
f1('a')
 
1032
 
 
1033
Warnings:
 
1034
Warning 1265    Data truncated for column 'f1('a')' at row 1
 
1035
DROP PROCEDURE p1;
 
1036
DROP PROCEDURE p2;
 
1037
DROP FUNCTION f1;
 
1038
 
 
1039
---------------------------------------------------------------
 
1040
BUG#13909
 
1041
---------------------------------------------------------------
 
1042
 
 
1043
DROP PROCEDURE IF EXISTS p1;
 
1044
DROP PROCEDURE IF EXISTS p2;
 
1045
CREATE PROCEDURE p1(arg VARCHAR(255))
 
1046
BEGIN
 
1047
SELECT CHARSET(arg);
 
1048
END|
 
1049
CREATE PROCEDURE p2(arg VARCHAR(255) CHARACTER SET UTF8)
 
1050
BEGIN
 
1051
SELECT CHARSET(arg);
 
1052
END|
 
1053
CALL p1('t');
 
1054
CHARSET(arg)
 
1055
latin1
 
1056
CALL p1(_UTF8 't');
 
1057
CHARSET(arg)
 
1058
latin1
 
1059
CALL p2('t');
 
1060
CHARSET(arg)
 
1061
utf8
 
1062
CALL p2(_LATIN1 't');
 
1063
CHARSET(arg)
 
1064
utf8
 
1065
DROP PROCEDURE p1;
 
1066
DROP PROCEDURE p2;
 
1067
 
 
1068
---------------------------------------------------------------
 
1069
BUG#14188
 
1070
---------------------------------------------------------------
 
1071
 
 
1072
DROP PROCEDURE IF EXISTS p1;
 
1073
CREATE PROCEDURE p1(arg1 BINARY(2), arg2 VARBINARY(2))
 
1074
BEGIN
 
1075
DECLARE var1 BINARY(2) DEFAULT 0x41;
 
1076
DECLARE var2 VARBINARY(2) DEFAULT 0x42;
 
1077
SELECT HEX(arg1), HEX(arg2);
 
1078
SELECT HEX(var1), HEX(var2);
 
1079
END|
 
1080
CALL p1(0x41, 0x42);
 
1081
HEX(arg1)       HEX(arg2)
 
1082
4100    42
 
1083
HEX(var1)       HEX(var2)
 
1084
4100    42
 
1085
DROP PROCEDURE p1;
 
1086
 
 
1087
---------------------------------------------------------------
 
1088
BUG#15148
 
1089
---------------------------------------------------------------
 
1090
 
 
1091
DROP PROCEDURE IF EXISTS p1;
 
1092
DROP TABLE IF EXISTS t1;
 
1093
CREATE TABLE t1(col1 TINYINT, col2 TINYINT);
 
1094
INSERT INTO t1 VALUES(1, 2), (11, 12);
 
1095
CREATE PROCEDURE p1(arg TINYINT)
 
1096
BEGIN
 
1097
SELECT arg;
 
1098
END|
 
1099
CALL p1((1, 2));
 
1100
ERROR 21000: Operand should contain 1 column(s)
 
1101
CALL p1((SELECT * FROM t1 LIMIT 1));
 
1102
ERROR 21000: Operand should contain 1 column(s)
 
1103
CALL p1((SELECT col1, col2 FROM t1 LIMIT 1));
 
1104
ERROR 21000: Operand should contain 1 column(s)
 
1105
DROP PROCEDURE p1;
 
1106
DROP TABLE t1;
 
1107
 
 
1108
---------------------------------------------------------------
 
1109
BUG#13613
 
1110
---------------------------------------------------------------
 
1111
 
 
1112
DROP PROCEDURE IF EXISTS p1;
 
1113
DROP FUNCTION IF EXISTS f1;
 
1114
CREATE PROCEDURE p1(x VARCHAR(50))
 
1115
BEGIN
 
1116
SET x = SUBSTRING(x, 1, 3);
 
1117
SELECT x;
 
1118
END|
 
1119
CREATE FUNCTION f1(x VARCHAR(50)) RETURNS VARCHAR(50)
 
1120
BEGIN
 
1121
RETURN SUBSTRING(x, 1, 3);
 
1122
END|
 
1123
CALL p1('abcdef');
 
1124
x
 
1125
abc
 
1126
SELECT f1('ABCDEF');
 
1127
f1('ABCDEF')
 
1128
ABC
 
1129
DROP PROCEDURE p1;
 
1130
DROP FUNCTION f1;
 
1131
 
 
1132
---------------------------------------------------------------
 
1133
BUG#13665
 
1134
---------------------------------------------------------------
 
1135
 
 
1136
DROP FUNCTION IF EXISTS f1;
 
1137
CREATE FUNCTION f1() RETURNS VARCHAR(20000)
 
1138
BEGIN
 
1139
DECLARE var VARCHAR(2000);
 
1140
SET var = '';
 
1141
SET var = CONCAT(var, 'abc');
 
1142
SET var = CONCAT(var, '');
 
1143
RETURN var;
 
1144
END|
 
1145
SELECT f1();
 
1146
f1()
 
1147
abc
 
1148
DROP FUNCTION f1;
 
1149
DROP PROCEDURE IF EXISTS p1;
 
1150
CREATE PROCEDURE p1()
 
1151
BEGIN
 
1152
DECLARE v_char VARCHAR(255);
 
1153
DECLARE v_text TEXT DEFAULT '';
 
1154
SET v_char = 'abc';
 
1155
SET v_text = v_char;
 
1156
SET v_char = 'def';
 
1157
SET v_text = concat(v_text, '|', v_char);
 
1158
SELECT v_text;
 
1159
END|
 
1160
CALL p1();
 
1161
v_text
 
1162
abc|def
 
1163
DROP PROCEDURE p1;
 
1164
DROP PROCEDURE IF EXISTS bug27415_text_test|
 
1165
DROP PROCEDURE IF EXISTS bug27415_text_test2|
 
1166
CREATE PROCEDURE bug27415_text_test(entity_id_str_in text)
 
1167
BEGIN
 
1168
DECLARE str_remainder text;
 
1169
SET str_remainder = entity_id_str_in;
 
1170
select 'before substr', str_remainder;
 
1171
SET str_remainder = SUBSTRING(str_remainder, 3);
 
1172
select 'after substr', str_remainder;
 
1173
END|
 
1174
CREATE PROCEDURE bug27415_text_test2(entity_id_str_in text)
 
1175
BEGIN
 
1176
DECLARE str_remainder text;
 
1177
DECLARE str_remainder2 text;
 
1178
SET str_remainder2 = entity_id_str_in;
 
1179
select 'before substr', str_remainder2;
 
1180
SET str_remainder = SUBSTRING(str_remainder2, 3);
 
1181
select 'after substr', str_remainder;
 
1182
END|
 
1183
CALL bug27415_text_test('a,b,c')|
 
1184
before substr   str_remainder
 
1185
before substr   a,b,c
 
1186
after substr    str_remainder
 
1187
after substr    b,c
 
1188
CALL bug27415_text_test('a,b,c')|
 
1189
before substr   str_remainder
 
1190
before substr   a,b,c
 
1191
after substr    str_remainder
 
1192
after substr    b,c
 
1193
CALL bug27415_text_test2('a,b,c')|
 
1194
before substr   str_remainder2
 
1195
before substr   a,b,c
 
1196
after substr    str_remainder
 
1197
after substr    b,c
 
1198
CALL bug27415_text_test('a,b,c')|
 
1199
before substr   str_remainder
 
1200
before substr   a,b,c
 
1201
after substr    str_remainder
 
1202
after substr    b,c
 
1203
DROP PROCEDURE bug27415_text_test|
 
1204
DROP PROCEDURE bug27415_text_test2|
 
1205
drop function if exists f1;
 
1206
drop table if exists t1;
 
1207
create function f1() returns int 
 
1208
begin
 
1209
if @a=1 then set @b='abc';
 
1210
else set @b=1;
 
1211
end if;
 
1212
set @a=1;
 
1213
return 0;
 
1214
end|
 
1215
create table t1 (a int)|
 
1216
insert into t1 (a) values (1), (2)|
 
1217
set @b=1|
 
1218
set @a=0|
 
1219
select f1(), @b from t1|
 
1220
f1()    @b
 
1221
0       1
 
1222
0       0
 
1223
set @b:='test'|
 
1224
set @a=0|
 
1225
select f1(), @b from t1|
 
1226
f1()    @b
 
1227
0       1
 
1228
0       abc
 
1229
drop function f1;
 
1230
drop table t1;