Joost van der Sluis wrote:
If you need more help, let me know. (Or else, send in the patch!)
I've tried several things with the mysql connection, with the following
results so far:
After understanding what a VARCHAR is (namely some sort of shortstring with a
fixed maximum length), I wanted first to know whether a newer MySQL server
reports proper field lengths for fields like 'FORMAT(mydoublefield,3) AS
myalias', so I switched to a 4.1 server.
However this didn't work, because I needed a newer client also, because the
older client didn't support the newer authentication protocol requested by the
server (according to the error message I got).
So I used a newer libMySQL.dll file and adjusted mysql4dyn to accepting this
version. But now I got a authentication error for user [EMAIL PROTECTED]
However I didn't connect as user ODBC?!?
The I figured out the TMySQLConnection object connected twice to the database,
once in ConnectToServer and once in PrepareStatement. The second time it tries
to fetch the Host, UserName, Password from the FMySQL:PMySQL field. But there
seem to be nil values in there... and I guess MySQL somehow tries user ODBC
because no username is given.
I also tried loading the newer dll statically, but then I had to comment out a
lot more functions in mysql4 and mysql4_com than before, in particular some
slave, master and the hash_password functions.
So my findings are:
- the fpc mysql headers contain way too much function headers, which causes
'entry point of function blablabla not found' error when statically loading the
library. I think it's better only to try to import the functions which are also
documented as part of the C API at http://dev.mysql.com/doc/mysql/en/c.html.
- the fpc headers contain declarations of structs (records) that are not in the
MySQL documentation. The only struct described there is the MYSQL_FIELD struct
(or: TMySQL record), besides the other types of which no members are listed.
Perhaps using the other structs isn't very safe and prone to change.
- mysql4dyn only accepts a 4.0 library and no a 4.1 library; I hope this can be
made more flexible...
I understand the fpc team has become tired of mysql header changes and
incompatibilities, but this problem does not seem to exist with e.g. the php
mysql interface. Maybe the problems can be solved by only importing and
functions that are also in the documentation. (This would require manual action
instead of simply applying h2pas to mysql.h)
Do you think this is an approach with a chance to success?
MySQL is widely used and therefore it would be nice if it can be supported by
fpc. (In fact, I've seen people asking things about mysql on the Lazarus
mailing list several times)
After getting the mysql headers right and 'compatible', I could try to create a
better TMySQLConnection.
Regards,
Bram
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel