Search This Blog

10 November 2007

10 Minute HOW-TO

This question seems to crop up again and again... In the words of one comment to my blog: "I've downloaded your External Language Stored Procedures package and am interested in trying out the JAVA part. Would appreciate if you could explain how use the downloaded stuff."

Ok, on my download page, I have provided 2 different downloads which are automatically created from our source repository. A source patch which may be applied to a current mysql-6.0 tree and a tarball snapshot of the work repository. The source snapshot is not as friendly to build as the official MySQL source downloads as it is somewhat raw and unfinished - you will need certain GNU tools installed on your computer to make use of it. As a minimum, you will need the following:
  • GNU autoconf version 2.52 - I have version 2.61
  • GNU automake 1.08 - I have version 1.10
  • GNU libtool 1.4 - I have version 1.5.24
  • GNU bison 1.8 - I have version 2.3
  • GNU make - I have version 3.81

The simplest first and only step you may use is the BUILD scripts ... locate a build script for you and simply execute it such as:
$ ./BUILD/compile-ppc-debug-max-no-ndb
If you have any specific configure requirements, you may do:
$ ./BUILD/
$ ./configure <your configure options here>
There are also options available in most of the standard compile scripts too. For example "--just-print" would display the commands which the script would execute or "--just-configure" would stop the build immediately after completing the configure script. Almost always, I would use one of the standard scripts.

Now on to the minimum requirements of the External Language Stored Procedures work which Eric and myself are hacking with... There is a small wiki page available at MySQL Forge but it needs further embellishment:
  • The Java plug-in probably requires JDK 1.4 however JDK 1.3 may work. Supported JDKs include JDKs from Apple, Sun, IBM and Blackdown. Please send an email to Eric or myself if you experience any problems on your setup.
  • The XML-RPC plug-in requires the xmlrpc-c library available from their Sourceforge site. As a minimum, you should use no less than version 1.03 ... version 1.06 is better but I have not tried their newer alphas.
  • The Perl plug-in will require a properly configured Perl runtime with multithreading configured.... If you want to check, run "perl -V" and check what it says about usethreads, useithreads and usemultiplicity. For example, if a line like the following appears, you are ok:
        usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    However, if you see a line like the next line, the Perl plugin should not even attempt to compile:
        usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    Unfortunately, most Linux distros will compile your Perl without support for threads.
    I should mention that the code for the Perl plug-in is incomplete so any attempt to actually use it will crash for now.

Eric and I have submitted a talk on our External Language Stored Procedures work for the MySQL Users Conference 2008 so if we are all lucky, there may be a presentation about this project. They have received more than 300 presentation proposals and I am sure that almost all of them are excellent presentations from seasoned presenters, so... Fingers crossed!

For all those curious and adventurous, please do download the code and have fun!


Ondra said...

Having stored procedures written in Java sounds interesting, but I did not manage to compile with Visual Studio 2008 (although I managed to compile the official MySQL sources). Build fails upon calling cl.exe.

Can anyone kindly share the Win32 binaries for testing? Thanks

Antony said...

Alas, support for plug-ins on Windows is currently incomplete.
I hope to be able to address this in the future.

Ondra said...

Thanks for info.

One more question please:

Have a look at,83910,203956#msg-203956

From the point of MySQL developer, do you think that something like that has a chance to appear some day in MySQL, considering MySQL's (Sun's?) priorities and internal code structure?

Thanks, Ondra