Bug #334 UDF can't work

Submitted: 27 Apr 2003 0:17 Modified: 16 May 2003 18:16
Reporter: Meng Wang Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: User-defined functions ( UDF ) Severity:S4 (Feature request)
Version:4.0.12 / 4.1.0 OS:Windows (windows 2000 / XP)
Assigned to: CPU Architecture:Any

[27 Apr 2003 0:17] Meng Wang
Description:
i hava use UDF in windows, the UDF librayr compile as a dll. 

i use qurey ::

CREATE FUNCTION valid_date RETURNS STRING SONAME "udf.dll";

mysql response ::

can't find function 'valid_date' in librayr.

i complie 'udf_example.cpp' some as  can't work too.i can't try in MySQL v3.x.

this a bugs or other?

please help me.

thanks.. :)

HeartIcy
HeartIcy@163.com

How to repeat:
[16 May 2003 18:16] MySQL Verification Team
Sorry this isn't a bug.
Below I pasted a sample I did sometime ago for another user:

Ok. Assuming you have VC++ and the source distribution and a server running,
I will create a UDF that returns a name:

Note: the sample is ugly, but the purpose here is to show you how
to handle the UDF.

- Open the mysqld.dsw workspace.
- Add New project to the workspace
- Project name: my_udf
- Select Win32 Dynamic-Link Library
- Click OK
- Select An Empty DLL project
- Click Finish
- Click OK
- Add a new file called my_udf.cpp to the project:

#include <stdlib.h>
#include <winsock.h>
#include <mysql.h>

extern "C" {
char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
		     char *error);
}

char *my_name(UDF_INIT *initid, UDF_ARGS *args, char *is_null,
		     char *error)
{
    char * me = "my name";

    return me;
}

- Type Ctrl+N for to create a new file.
- Select text type
- File name: my_udf.def
- Edit the above file with the below contents:
LIBRARY         UDF_EXAMPLE
DESCRIPTION             'Example Using UDF with VC++'
VERSION         1.0
EXPORTS
        my_name

- Right Click the my_udf project and select Settings
- Click the C/C++ tab
- Select General in the Category Combo
- Add the macro HAVE_DLOPEN to the PreProcessor definition
- Select Preprocessor in the Category Combo
- Add the include path to the text box: Additional Include directories
  e.g: ../include
- Press F7 for to build the DLL.

- Copy the my_udf.dll to the environment path directory:
  \winnt\system32 for example.

- Start the mysql client and issue:

C:\mysql-udf\bin>mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.52-max-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE FUNCTION my_name RETURNS STRING SONAME "my_udf.dll";
Query OK, 0 rows affected (0.08 sec)

mysql> select my_name();

mysql> drop function my_name;
Query OK, 0 rows affected (0.00 sec)

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.038 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.