Patrick Galbraith wrote:

>Steve,
>
>With your patch for 2.9015, I get these errors:
>
>[...]
>/usr/local/mysql/include/my_global.h:463: error: redefinition of 
>`my_socket'
>/usr/local/mysql/include/mysql.h:52: error: `my_socket' previously 
>declared here
>[...]
>/usr/local/mysql/include/my_global.h:735: error: redefinition of `gptr'
>/usr/local/mysql/include/mysql.h:46: error: `gptr' previously declared 
>here
>/usr/local/mysql/include/my_global.h:779: error: redefinition of 
>`my_ulonglong'
>/usr/local/mysql/include/mysql.h:114: error: `my_ulonglong' previously 
>declared here
>/usr/local/mysql/include/my_global.h:841: error: redefinition of 
>`my_bool'
>/usr/local/mysql/include/mysql.h:37: error: `my_bool' previously 
>declared here
>[...]
>  
>
All of your errors are clashes between two of MySQL's own header files!  
All of the clashes between MySQL and Perl header files were only 
warnings (which is what I found too).  So perhaps MySQL has a 
configuration problem itself on your OS?

Take the first one, for example -- my_socket.  On Win32 dbdimp.h 
includes mysql.h, which defines my_socket as SOCKET if my_socket_defined 
isn't already defined.  My patched dbdimp.h then includes my_global.h, 
which includes config-win.h.  That also defines my_socket as SOCKET, and 
defines both Socket_defined and my_socket_defined.  Then my_global.h 
skips the "typedef int my_socket" because Socket_defined is already 
defined.  In your case it looks like the redefinition in my_global.h is 
happening instead of skipping...

Perhaps there is fault somewhere in all this on your OS, or perhaps 
simply including my_global.h *before* mysql.h would sort it out for 
you?  It still works OK for me, with just the MySQL/Perl clash warnings.

>I took out 'lldata', which isn't needed (not used), and switched to 
>matching each char for each case, and that fixes the problem. 
>
Well, that's even easier, then!

>I've 
>looked in the perl API and don't see (!Perl_ibcmp(pTHX_ searchptr, 
>"SHOW ", 5))
>  anywhere - how can I use this? I saw a ibcmp_utf8, but that wasn't 
>what I was looking for in this case.
>
Unfortunately, quite a few public Perl API functions are not documented 
in the perlapi manpage.  However, the function does exist (it is defined 
in util.c) and is public.  You can tell that it is public because its 
entry in embed.fnc reads:

Ap    |I32    |ibcmp        |const char* a|const char* b|I32 len

where the initial "A" there means that it is part of the public API (see 
the notes at the top of that file).

- Steve


------------------------------------------------
Radan Computational Ltd.

The information contained in this message and any files transmitted with it are 
confidential and intended for the addressee(s) only.  If you have received this 
message in error or there are any problems, please notify the sender 
immediately.  The unauthorized use, disclosure, copying or alteration of this 
message is strictly forbidden.  Note that any views or opinions presented in 
this email are solely those of the author and do not necessarily represent 
those of Radan Computational Ltd.  The recipient(s) of this message should 
check it and any attached files for viruses: Radan Computational will accept no 
liability for any damage caused by any virus transmitted by this email.

Reply via email to