Jess Portnoy wrote:
Reason is MYSQL_VERSION_ID is defined here:
ext/mysqlnd/mysqlnd_libmysql_compat.h:#define
MYSQL_VERSION_ID MYSQLND_VERSION_ID
And then, included here:
ext/mysqli/mysqli_mysqlnd.h:#include
"ext/mysqlnd/mysqlnd_libmysql_compat.h"
Same is done with MySQL and PDO_MYSQL.
May the source be with you,
Best regards,
Jess Portnoy
MYSQL_VERSION_ID is also defined by libmysql/MySQL server. Only if you
use pre-5.0 libmysql headers this should not compile. the bit_xxxx
macros are specific to mysqlnd, not exposed by libmysql.
Andrey
Jess Portnoy wrote:
Hi Andrey,
Yes, it compiled just fine with my patch.
Even loaded :)
May the source be with you,
Best regards,
Jess Portnoy
Andrey Hristov wrote:
Hi Jess,
does it compile after that, because I guess it doesn't. We use some
macros from that header file to be able to handle bit types correctly
in mysqli, when libmysql is used.
#if MYSQL_VERSION_ID > 50002
if (mysql_fetch_field_direct(result, i)->type == MYSQL_TYPE_BIT) {
my_ulonglong llval;
char tmp[22];
switch (field_len[i]) {
case 8:llval = (my_ulonglong) bit_uint8korr(row[i]);break;
case 7:llval = (my_ulonglong) bit_uint7korr(row[i]);break;
case 6:llval = (my_ulonglong) bit_uint6korr(row[i]);break;
case 5:llval = (my_ulonglong) bit_uint5korr(row[i]);break;
case 4:llval = (my_ulonglong) bit_uint4korr(row[i]);break;
case 3:llval = (my_ulonglong) bit_uint3korr(row[i]);break;
case 2:llval = (my_ulonglong) bit_uint2korr(row[i]);break;
case 1:llval = (my_ulonglong) uint1korr(row[i]);break;
}
....
#endif
Best,
Andrey
Jess Portnoy wrote:
Hello all,
My configure command is as follows:
./configure --disable-xml --disable-dom --disable-libxml
--disable-simplexml --without-pear --disable-xmlreader
--disable-xmlwriter --without-iconv
I then archive the result and use it to build various PHP
extensions, among which MySQLi.
Since I did not configure with mysqlnd, I do not have ext/mysqlnd
copied onto $PHP_PREFIX/include/php/ext, causing this following code
to fail compilation:
#include "ext/mysqlnd/mysqlnd_portability.h"
Attached is a suggested patch for php-5.3.1/ext/mysqli/mysqli.c and
php-5.3.1/ext/mysqli/mysqli_api.c, basically:
+#ifdef MYSQLI_USE_MYSQLND
#include "ext/mysqlnd/mysqlnd_portability.h"
+#endif
Thanks in advance,
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php