| Bug #17261 | Passing a variable from a stored procedure to UDF crashes mysqld | ||
|---|---|---|---|
| Submitted: | 9 Feb 2006 4:10 | Modified: | 22 Mar 2006 17:27 |
| Reporter: | Dmitry Apresian | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S3 (Non-critical) |
| Version: | 5.0.18 | OS: | Linux (Fedora Core 4) |
| Assigned to: | Magnus Blåudd | CPU Architecture: | Any |
[9 Feb 2006 7:29]
Jorge del Conde
Thanks for your bug report. Reproduced following the udf example found here: http://dev.mysql.com/doc/refman/5.0/en/udf-compiling.html
[15 Feb 2006 13:19]
Magnus Blåudd
Found these two interesting comments in our online reference manual. "Anthony Ball on April 21 2003 10:36am After much time trying to track a problem on solaris(2.7, gcc 2.9-gnupro-99r1) I found that I needed -c -shared as compiler options. Almost everything worked without the -c, but strangely, any time I tried to use double quoted strings in the code they got turned into empty strings." "Leonard Cuff on August 3 2005 1:02am On Mac OS X 10.4 (Tiger), the following incantations were needed, in order to build a "shared object" file. export MACOSX_DEPLOYMENT_TARGET="10.4" gcc -c myfunction.c gcc -bundle -o myfunction.so myfunction.o -undefined dynamic_lookup "
[15 Feb 2006 16:10]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/2655
[15 Feb 2006 16:11]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/2656
[21 Feb 2006 13:23]
Magnus Blåudd
Related to bug#11835
[10 Mar 2006 9:41]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/3687
[22 Mar 2006 11:32]
Magnus Blåudd
Pushed a patch to 5.0.20 and 5.1.8 that passes a pointer to a buffer instead of a NULL pointer to the function val_str in item_func.cc Also pushed test cases for udf's. So to test wheter your server can handle udf's, run "cd mysql-test; ./mysql-test-run.pl --do-test=udf". The test should pass if udf's are supported and working and will be skipped if udf's are not supported by the mysqld.
[22 Mar 2006 17:27]
Mike Hillyer
Documented:
<listitem>
<para>
Stored procedures that call UDFs and pass local string
variables caused server crashes. (Bug #17261)
</para>
</listitem>
[5 Apr 2006 9:13]
Alexander Nozdrin
BUG#18193 has been marked as a duplicate of this bug.

Description: When a UDF that takes one or more string parameters is called from a stored procedure with a local variable as parameter, mysqld crashes How to repeat: 1. Create a UDF function that takes a string argument (can use metaphon from udf_example) 2. Create a stored procedure like this: CREATE PROCEDURE `XXX1`(in testval varchar(10)) begin select metaphon(testval); end call XXX1('hello'); or like this CREATE PROCEDURE `XXX2`() begin declare testval varchar(10); set testval = 'hello'; select metaphon(testval); end call XXX2(); Suggested fix: I have found a workaround where instead of calling with the variable directly I call substring(testval, 1) and that works, but it shouldn't be necessary.