ID: 44351
User updated by: bero at arklinux dot org
Reported By: bero at arklinux dot org
Status: Open
Bug Type: Compile Failure
Operating System: Ark Linux
PHP Version: 5.2.6RC1
New Comment:
last_error and last_errno have been renamed to client_last_error and
client_last_errno respectively in current mysql 5.1.x builds, causing
this.
Here's a fix:
--- php-5.2.6RC1/ext/mysqli/mysqli_api.c.ark 2008-03-06
17:47:10.000000000 +0000
+++ php-5.2.6RC1/ext/mysqli/mysqli_api.c 2008-03-06
17:57:43.000000000 +0000
@@ -1373,8 +1373,13 @@
stmt->stmt = NULL;
/* restore error messages */
+#if MYSQL_VERSION_ID >= 50123
+ mysql->mysql->net.client_last_errno =
last_errno;
+ memcpy(mysql->mysql->net.client_last_error,
last_error, MYSQL_ERRMSG_SIZE);
+#else
mysql->mysql->net.last_errno = last_errno;
memcpy(mysql->mysql->net.last_error,
last_error, MYSQL_ERRMSG_SIZE);
+#endif
memcpy(mysql->mysql->net.sqlstate, sqlstate,
SQLSTATE_LENGTH+1);
}
}
@@ -1453,8 +1458,13 @@
if
(mysql_real_connect(mysql->mysql,hostname,username,passwd,dbname,port,socket,flags)
== NULL) {
php_mysqli_set_error(mysql_errno(mysql->mysql), (char
*) mysql_error(mysql->mysql) TSRMLS_CC);
+#if MYSQL_VERSION_ID >= 50123
+ php_mysqli_throw_sql_exception(
mysql->mysql->net.sqlstate, mysql->mysql->net.client_last_errno
TSRMLS_CC,
+
"%s", mysql->mysql->net.client_last_error);
+#else
php_mysqli_throw_sql_exception(
mysql->mysql->net.sqlstate, mysql->mysql->net.last_errno TSRMLS_CC,
"%s", mysql->mysql->net.last_error);
+#endif
/* change status */
MYSQLI_SET_STATUS(&mysql_link,
MYSQLI_STATUS_INITIALIZED);
--- php-5.2.6RC1/ext/mysqli/mysqli_nonapi.c.ark 2008-03-06
17:58:00.000000000 +0000
+++ php-5.2.6RC1/ext/mysqli/mysqli_nonapi.c 2008-03-06
17:59:37.000000000 +0000
@@ -106,8 +106,13 @@
if
(mysql_real_connect(mysql->mysql,hostname,username,passwd,dbname,port,socket,CLIENT_MULTI_RESULTS)
== NULL) {
/* Save error messages */
+#if MYSQL_VERSION_ID >= 50123
+ php_mysqli_throw_sql_exception(
mysql->mysql->net.sqlstate, mysql->mysql->net.client_last_errno
TSRMLS_CC,
+
"%s", mysql->mysql->net.client_last_error);
+#else
php_mysqli_throw_sql_exception(
mysql->mysql->net.sqlstate, mysql->mysql->net.last_errno TSRMLS_CC,
"%s", mysql->mysql->net.last_error);
+#endif
php_mysqli_set_error(mysql_errno(mysql->mysql), (char
*) mysql_error(mysql->mysql) TSRMLS_CC);
@@ -212,9 +217,14 @@
MYSQLI_DISABLE_MQ;
/* restore error information */
+#if MYSQL_VERSION_ID >= 50123
+ strcpy(mysql->mysql->net.client_last_error, s_error);
+ mysql->mysql->net.client_last_errno = s_errno;
+#else
strcpy(mysql->mysql->net.last_error, s_error);
- strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
mysql->mysql->net.last_errno = s_errno;
+#endif
+ strcpy(mysql->mysql->net.sqlstate, s_sqlstate);
RETURN_FALSE;
}
@@ -266,8 +276,13 @@
result = (resultmode == MYSQLI_USE_RESULT) ?
mysql_use_result(mysql->mysql) : mysql_store_result(mysql->mysql);
if (!result) {
+#if MYSQL_VERSION_ID >= 50123
+
php_mysqli_throw_sql_exception(mysql->mysql->net.sqlstate,
mysql->mysql->net.client_last_errno TSRMLS_CC,
+
"%s", mysql->mysql->net.client_last_error);
+#else
php_mysqli_throw_sql_exception(mysql->mysql->net.sqlstate,
mysql->mysql->net.last_errno TSRMLS_CC,
"%s", mysql->mysql->net.last_error);
+#endif
RETURN_FALSE;
}
--- php-5.2.6RC1/ext/mysqli/php_mysqli.h.ark 2008-03-06
17:53:55.000000000 +0000
+++ php-5.2.6RC1/ext/mysqli/php_mysqli.h 2008-03-06
17:55:42.000000000 +0000
@@ -291,10 +291,17 @@
#define MYSQLI_REPORT_CLOSE 8
#define MYSQLI_REPORT_ALL 255
+#if MYSQL_VERSION_ID >= 50123
+#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \
+if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) &&
mysql->net.client_last_errno) { \
+ php_mysqli_report_error(mysql->net.sqlstate,
mysql->net.client_last_errno, mysql->net.client_last_error TSRMLS_CC);
\
+}
+#else
#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \
if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql->net.last_errno)
{ \
php_mysqli_report_error(mysql->net.sqlstate,
mysql->net.last_errno, mysql->net.last_error TSRMLS_CC); \
}
+#endif
#define MYSQLI_REPORT_STMT_ERROR(stmt) \
if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && stmt->last_errno) { \
Previous Comments:
------------------------------------------------------------------------
[2008-03-06 16:59:29] bero at arklinux dot org
Description:
------------
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_change_user':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:420: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:420: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:420: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_kill':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1152: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1152: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1152: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_ping':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1333: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1333: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1333: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_prepare':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1376: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1377: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1383: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1383: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1383: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_real_connect':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1456: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1457: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_real_query':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1495: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1495: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1495: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_select_db':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1764: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1764: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:1764: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_store_result':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2061: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2061: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2061: error:
'NET' has no member named 'last_error'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c: In function
'zif_mysqli_use_result':
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2115: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2115: error:
'NET' has no member named 'last_errno'
/usr/src/ark/BUILD/php-5.2.6RC1/ext/mysqli/mysqli_api.c:2115: error:
'NET' has no member named 'last_error'
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44351&edit=1