~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/r/udf.result

  • Committer: Brian Aker
  • Date: 2008-07-08 00:20:35 UTC
  • Revision ID: brian@tangent.org-20080708002035-h0tsf9idk63f4d6s
Main binary now named drizzled

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
drop table if exists t1;
2
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
3
 
CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB";
4
 
CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
5
 
ERROR HY000: Can't find symbol 'myfunc_nonexist' in library
6
 
CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
7
 
CREATE FUNCTION sequence RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
8
 
CREATE FUNCTION lookup RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
9
 
CREATE FUNCTION reverse_lookup
10
 
RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
11
 
CREATE AGGREGATE FUNCTION avgcost
12
 
RETURNS REAL SONAME "UDF_EXAMPLE_LIB";
13
 
select myfunc_double();
14
 
ERROR HY000: Can't initialize function 'myfunc_double'; myfunc_double must have at least one argument
15
 
select myfunc_double(1);
16
 
myfunc_double(1)
17
 
49.00
18
 
select myfunc_double(78654);
19
 
myfunc_double(78654)
20
 
54.00
21
 
select myfunc_nonexist();
22
 
ERROR 42000: FUNCTION test.myfunc_nonexist does not exist
23
 
select myfunc_int();
24
 
myfunc_int()
25
 
0
26
 
select lookup();
27
 
ERROR HY000: Can't initialize function 'lookup'; Wrong arguments to lookup;  Use the source
28
 
select lookup("127.0.0.1");
29
 
lookup("127.0.0.1")
30
 
127.0.0.1
31
 
select lookup(127,0,0,1);
32
 
ERROR HY000: Can't initialize function 'lookup'; Wrong arguments to lookup;  Use the source
33
 
select lookup("localhost");
34
 
lookup("localhost")
35
 
127.0.0.1
36
 
select reverse_lookup();
37
 
ERROR HY000: Can't initialize function 'reverse_lookup'; Wrong number of arguments to reverse_lookup;  Use the source
38
 
select reverse_lookup("127.0.0.1");
39
 
select reverse_lookup(127,0,0,1);
40
 
select reverse_lookup("localhost");
41
 
reverse_lookup("localhost")
42
 
NULL
43
 
select avgcost();
44
 
ERROR HY000: Can't initialize function 'avgcost'; wrong number of arguments: AVGCOST() requires two arguments
45
 
select avgcost(100,23.76);
46
 
ERROR HY000: Can't initialize function 'avgcost'; wrong argument type: AVGCOST() requires an INT and a REAL
47
 
create table t1(sum int, price float(24));
48
 
insert into t1 values(100, 50.00), (100, 100.00);
49
 
select avgcost(sum, price) from t1;
50
 
avgcost(sum, price)
51
 
75.0000
52
 
delete from t1;
53
 
insert into t1 values(100, 54.33), (200, 199.99);
54
 
select avgcost(sum, price) from t1;
55
 
avgcost(sum, price)
56
 
151.4367
57
 
drop table t1;
58
 
select metaphon('hello');
59
 
metaphon('hello')
60
 
HL
61
 
CREATE PROCEDURE `XXX1`(in testval varchar(10))
62
 
begin
63
 
select metaphon(testval);
64
 
end//
65
 
call XXX1('hello');
66
 
metaphon(testval)
67
 
HL
68
 
drop procedure xxx1;
69
 
CREATE PROCEDURE `XXX2`()
70
 
begin
71
 
declare testval varchar(10);
72
 
set testval = 'hello';
73
 
select metaphon(testval);
74
 
end//
75
 
call XXX2();
76
 
metaphon(testval)
77
 
HL
78
 
drop procedure xxx2;
79
 
CREATE TABLE bug19904(n INT, v varchar(10));
80
 
INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
81
 
SELECT myfunc_double(n) AS f FROM bug19904;
82
 
f
83
 
49.00
84
 
50.00
85
 
NULL
86
 
51.00
87
 
52.00
88
 
SELECT metaphon(v) AS f FROM bug19904;
89
 
f
90
 
ON
91
 
TW
92
 
NULL
93
 
0R
94
 
FR
95
 
DROP TABLE bug19904;
96
 
CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse
97
 
RETURNS STRING SONAME "should_not_parse.so";
98
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS STRING SONAME "should_not_parse.so"' at line 2
99
 
CREATE DEFINER=someone@somewhere FUNCTION should_not_parse
100
 
RETURNS STRING SONAME "should_not_parse.so";
101
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS STRING SONAME "should_not_parse.so"' at line 2
102
 
create table t1(f1 int);
103
 
insert into t1 values(1),(2);
104
 
explain select myfunc_int(f1) from t1 order by 1;
105
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
106
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using temporary; Using filesort
107
 
drop table t1;
108
 
CREATE TABLE t1(a INT, b INT);
109
 
INSERT INTO t1 values (1,1),(2,2);
110
 
CREATE FUNCTION fn(a int) RETURNS int DETERMINISTIC
111
 
BEGIN
112
 
RETURN a;
113
 
END
114
 
||
115
 
CREATE VIEW v1 AS SELECT a, fn(MIN(b)) as c FROM t1 GROUP BY a;
116
 
SELECT myfunc_int(a AS attr_name) FROM t1;
117
 
myfunc_int(a AS attr_name)
118
 
1
119
 
2
120
 
EXPLAIN EXTENDED SELECT myfunc_int(a AS attr_name) FROM t1;
121
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
122
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  
123
 
Warnings:
124
 
Note    1003    select myfunc_int(`test`.`t1`.`a` AS `attr_name`) AS `myfunc_int(a AS attr_name)` from `test`.`t1`
125
 
EXPLAIN EXTENDED SELECT myfunc_int(a) FROM t1;
126
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
127
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  
128
 
Warnings:
129
 
Note    1003    select myfunc_int(`test`.`t1`.`a` AS `a`) AS `myfunc_int(a)` from `test`.`t1`
130
 
SELECT a,c FROM v1;
131
 
a       c
132
 
1       1
133
 
2       2
134
 
SELECT a, fn(MIN(b) xx) as c FROM t1 GROUP BY a;
135
 
ERROR 42000: Incorrect parameters in the call to stored function 'fn'
136
 
SELECT myfunc_int(fn(MIN(b) xx)) as c FROM t1 GROUP BY a;
137
 
ERROR 42000: Incorrect parameters in the call to stored function 'fn'
138
 
SELECT myfunc_int(test.fn(MIN(b) xx)) as c FROM t1 GROUP BY a;
139
 
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xx)) as c FROM t1 GROUP BY a' at line 1
140
 
SELECT myfunc_int(fn(MIN(b)) xx) as c FROM t1 GROUP BY a;
141
 
c
142
 
1
143
 
2
144
 
SELECT myfunc_int(test.fn(MIN(b)) xx) as c FROM t1 GROUP BY a;
145
 
c
146
 
1
147
 
2
148
 
EXPLAIN EXTENDED SELECT myfunc_int(MIN(b) xx) as c FROM t1 GROUP BY a;
149
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
150
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using temporary; Using filesort
151
 
Warnings:
152
 
Note    1003    select myfunc_int(min(`test`.`t1`.`b`) AS `xx`) AS `c` from `test`.`t1` group by `test`.`t1`.`a`
153
 
EXPLAIN EXTENDED SELECT test.fn(MIN(b)) as c FROM t1 GROUP BY a;
154
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
155
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using temporary; Using filesort
156
 
Warnings:
157
 
Note    1003    select `test`.`fn`(min(`test`.`t1`.`b`)) AS `c` from `test`.`t1` group by `test`.`t1`.`a`
158
 
EXPLAIN EXTENDED SELECT myfunc_int(fn(MIN(b))) as c FROM t1 GROUP BY a;
159
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
160
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using temporary; Using filesort
161
 
Warnings:
162
 
Note    1003    select myfunc_int(`fn`(min(`test`.`t1`.`b`)) AS `fn(MIN(b))`) AS `c` from `test`.`t1` group by `test`.`t1`.`a`
163
 
EXPLAIN EXTENDED SELECT myfunc_int(test.fn(MIN(b))) as c FROM t1 GROUP BY a;
164
 
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
165
 
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using temporary; Using filesort
166
 
Warnings:
167
 
Note    1003    select myfunc_int(`test`.`fn`(min(`test`.`t1`.`b`)) AS `test.fn(MIN(b))`) AS `c` from `test`.`t1` group by `test`.`t1`.`a`
168
 
SELECT myfunc_int(MIN(b) xx) as c FROM t1 GROUP BY a;
169
 
c
170
 
1
171
 
2
172
 
SELECT test.fn(MIN(b)) as c FROM t1 GROUP BY a;
173
 
c
174
 
1
175
 
2
176
 
SELECT myfunc_int(fn(MIN(b))) as c FROM t1 GROUP BY a;
177
 
c
178
 
1
179
 
2
180
 
SELECT myfunc_int(test.fn(MIN(b))) as c FROM t1 GROUP BY a;
181
 
c
182
 
1
183
 
2
184
 
DROP VIEW v1;
185
 
DROP TABLE t1;
186
 
DROP FUNCTION fn;
187
 
End of 5.0 tests.
188
 
select myfunc_double(3);
189
 
myfunc_double(3)
190
 
51.00
191
 
select myfunc_double(3 AS three);
192
 
myfunc_double(3 AS three)
193
 
51.00
194
 
select myfunc_double(abs(3));
195
 
myfunc_double(abs(3))
196
 
51.00
197
 
select myfunc_double(abs(3) AS named_param);
198
 
myfunc_double(abs(3) AS named_param)
199
 
51.00
200
 
select abs(myfunc_double(3));
201
 
abs(myfunc_double(3))
202
 
51.00
203
 
select abs(myfunc_double(3 AS three));
204
 
abs(myfunc_double(3 AS three))
205
 
51.00
206
 
select myfunc_double(abs(3 AS wrong));
207
 
ERROR 42000: Incorrect parameters in the call to native function 'abs'
208
 
select abs(myfunc_double(3) AS wrong);
209
 
ERROR 42000: Incorrect parameters in the call to native function 'abs'
210
 
drop function if exists pi;
211
 
CREATE FUNCTION pi RETURNS STRING SONAME "should_not_parse.so";
212
 
ERROR HY000: This function 'pi' has the same name as a native function
213
 
DROP FUNCTION IF EXISTS metaphon;
214
 
CREATE FUNCTION metaphon(a int) RETURNS int
215
 
return 0;
216
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
217
 
DROP FUNCTION metaphon;
218
 
DROP FUNCTION metaphon;
219
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
220
 
CREATE FUNCTION metaphon(a int) RETURNS int
221
 
return 0;
222
 
ERROR HY000: Function 'metaphon' already exists
223
 
CREATE FUNCTION test.metaphon(a int) RETURNS int
224
 
return 0;
225
 
ERROR HY000: Function 'metaphon' already exists
226
 
DROP FUNCTION metaphon;
227
 
DROP FUNCTION myfunc_double;
228
 
DROP FUNCTION myfunc_nonexist;
229
 
ERROR 42000: FUNCTION test.myfunc_nonexist does not exist
230
 
DROP FUNCTION myfunc_int;
231
 
DROP FUNCTION sequence;
232
 
DROP FUNCTION lookup;
233
 
DROP FUNCTION reverse_lookup;
234
 
DROP FUNCTION avgcost;
235
 
select * from mysql.func;
236
 
name    ret     dl      type
237
 
CREATE FUNCTION is_const RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
238
 
select IS_const(3);
239
 
IS_const(3)
240
 
const
241
 
drop function IS_const;
242
 
select * from mysql.func;
243
 
name    ret     dl      type
244
 
select is_const(3);
245
 
ERROR 42000: FUNCTION test.is_const does not exist
246
 
CREATE FUNCTION is_const RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
247
 
select
248
 
is_const(3) as const,
249
 
is_const(3.14) as const,
250
 
is_const('fnord') as const,
251
 
is_const(2+3) as const,
252
 
is_const(rand()) as 'nc rand()',
253
 
is_const(sin(3.14)) as const,
254
 
is_const(upper('test')) as const;
255
 
const   const   const   const   nc rand()       const   const
256
 
const   const   const   const   not const       const   const
257
 
create table bug18761 (n int);
258
 
insert into bug18761 values (null),(2);
259
 
select
260
 
is_const(3) as const,
261
 
is_const(3.14) as const,
262
 
is_const('fnord') as const,
263
 
is_const(2+3) as const,
264
 
is_const(2+n) as 'nc  2+n  ',
265
 
is_const(sin(n)) as 'nc sin(n)',
266
 
is_const(sin(3.14)) as const,
267
 
is_const(upper('test')) as const,
268
 
is_const(rand()) as 'nc rand()',
269
 
is_const(n) as 'nc   n   ',
270
 
is_const(is_const(n)) as 'nc ic?(n)',
271
 
is_const(is_const('c')) as const
272
 
from
273
 
bug18761;
274
 
const   const   const   const   nc  2+n         nc sin(n)       const   const   nc rand()       nc   n          nc ic?(n)       const
275
 
const   const   const   const   not const       not const       const   const   not const       not const       not const       const
276
 
const   const   const   const   not const       not const       const   const   not const       not const       not const       const
277
 
drop table bug18761;
278
 
select is_const((1,2,3));
279
 
ERROR 21000: Operand should contain 1 column(s)
280
 
drop function if exists is_const;
281
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
282
 
CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB";
283
 
CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
284
 
create function f1(p1 varchar(255))
285
 
returns varchar(255)
286
 
begin
287
 
return metaphon(p1);
288
 
end//
289
 
create function f2(p1 varchar(255))
290
 
returns double
291
 
begin
292
 
return myfunc_double(p1);
293
 
end//
294
 
create function f3(p1 varchar(255))
295
 
returns double
296
 
begin
297
 
return myfunc_int(p1);
298
 
end//
299
 
select f3(NULL);
300
 
f3(NULL)
301
 
0
302
 
select f2(NULL);
303
 
f2(NULL)
304
 
NULL
305
 
select f1(NULL);
306
 
f1(NULL)
307
 
NULL
308
 
drop function f1;
309
 
drop function f2;
310
 
drop function f3;
311
 
drop function metaphon;
312
 
drop function myfunc_double;
313
 
drop function myfunc_int;
314
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
315
 
create table t1 (a char);
316
 
set GLOBAL query_cache_size=1355776;
317
 
reset query cache;
318
 
select metaphon('MySQL') from t1;
319
 
metaphon('MySQL')
320
 
show status like "Qcache_hits";
321
 
Variable_name   Value
322
 
Qcache_hits     0
323
 
show status like "Qcache_queries_in_cache";
324
 
Variable_name   Value
325
 
Qcache_queries_in_cache 0
326
 
select metaphon('MySQL') from t1;
327
 
metaphon('MySQL')
328
 
show status like "Qcache_hits";
329
 
Variable_name   Value
330
 
Qcache_hits     0
331
 
show status like "Qcache_queries_in_cache";
332
 
Variable_name   Value
333
 
Qcache_queries_in_cache 0
334
 
drop table t1;
335
 
drop function metaphon;
336
 
set GLOBAL query_cache_size=default;
337
 
DROP DATABASE IF EXISTS mysqltest;
338
 
CREATE DATABASE mysqltest;
339
 
USE mysqltest;
340
 
DROP DATABASE mysqltest;
341
 
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
342
 
DROP FUNCTION metaphon;
343
 
USE test;
344
 
CREATE TABLE const_len_bug (
345
 
str_const varchar(4000),
346
 
result1 varchar(4000),
347
 
result2 varchar(4000)
348
 
);
349
 
CREATE TRIGGER check_const_len_trigger BEFORE INSERT ON const_len_bug FOR EACH ROW BEGIN
350
 
set NEW.str_const = 'bar';
351
 
set NEW.result2 = check_const_len(NEW.str_const);
352
 
END |
353
 
CREATE PROCEDURE check_const_len_sp (IN str_const VARCHAR(4000))
354
 
BEGIN
355
 
DECLARE result VARCHAR(4000);
356
 
SET result = check_const_len(str_const);
357
 
insert into const_len_bug values(str_const, result, "");
358
 
END |
359
 
CREATE FUNCTION check_const_len RETURNS string SONAME "UDF_EXAMPLE_LIB";
360
 
CALL check_const_len_sp("foo");
361
 
SELECT * from const_len_bug;
362
 
str_const       result1 result2
363
 
bar     Correct length  Correct length
364
 
DROP FUNCTION check_const_len;
365
 
DROP PROCEDURE check_const_len_sp;
366
 
DROP TRIGGER check_const_len_trigger;
367
 
DROP TABLE const_len_bug;
368
 
CREATE FUNCTION sequence RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB";
369
 
CREATE TABLE t1 (a INT);
370
 
CREATE TABLE t2 (a INT PRIMARY KEY);
371
 
INSERT INTO t1 VALUES (4),(3),(2),(1);
372
 
INSERT INTO t2 SELECT * FROM t1;
373
 
SELECT sequence() AS seq, a FROM t1 ORDER BY seq ASC;
374
 
seq     a
375
 
1       4
376
 
2       3
377
 
3       2
378
 
4       1
379
 
SELECT sequence() AS seq, a FROM t1 ORDER BY seq DESC;
380
 
seq     a
381
 
4       1
382
 
3       2
383
 
2       3
384
 
1       4
385
 
SELECT * FROM t1 WHERE a = sequence();
386
 
a
387
 
SELECT * FROM t2 WHERE a = sequence();
388
 
a
389
 
1
390
 
2
391
 
3
392
 
4
393
 
DROP FUNCTION sequence;
394
 
DROP TABLE t1,t2;
395
 
End of 5.0 tests.