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.