- GD:
. Added TGA read support. (cmb)
+- MySQLi:
+ . Fixed bug #67348 (Reading $dbc->stat modifies $dbc->affected_rows).
+ (Derick)
+
- Opcache:
. Fixed bug #78106 (Path resolution fails if opcache disabled during request).
(Nikita)
zend_declare_property_null(ce, "insert_id", sizeof("insert_id") - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(ce, "server_info", sizeof("server_info") - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(ce, "server_version", sizeof("server_version") - 1, ZEND_ACC_PUBLIC);
- zend_declare_property_null(ce, "stat", sizeof("stat") - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(ce, "sqlstate", sizeof("sqlstate") - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(ce, "protocol_version", sizeof("protocol_version") - 1, ZEND_ACC_PUBLIC);
zend_declare_property_null(ce, "thread_id", sizeof("thread_id") - 1, ZEND_ACC_PUBLIC);
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), zend_ulong, ZEND_ULONG_FMT)
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), zend_ulong, ZEND_ULONG_FMT)
-/* {{{ property link_stat_read */
-static zval *link_stat_read(mysqli_object *obj, zval *retval)
-{
- MY_MYSQL *mysql;
-
- ZVAL_NULL(retval);
-
-#if defined(MYSQLI_USE_MYSQLND)
- CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
-#else
- CHECK_STATUS(MYSQLI_STATUS_VALID);
-#endif
-
- mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
-
- if (mysql) {
-#if defined(MYSQLI_USE_MYSQLND)
- zend_string * stat_msg;
- if (mysqlnd_stat(mysql->mysql, &stat_msg) == PASS) {
- ZVAL_STR(retval, stat_msg);
- }
-#else
- char * stat_msg;
- if ((stat_msg = (char *)mysql_stat(mysql->mysql))) {
- ZVAL_STRING(retval, stat_msg);
- }
-#endif
- }
- return retval;
-}
-/* }}} */
-
/* result properties */
/* {{{ property result_type_read */
{"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL},
{"server_info", sizeof("server_info") - 1, link_server_info_read, NULL},
{"server_version", sizeof("server_version") - 1, link_server_version_read, NULL},
- {"stat", sizeof("stat") - 1, link_stat_read, NULL},
{"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL},
{"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL},
{"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL},
string(%d) "%s"
["server_version"]=>
int(%d)
- ["stat"]=>
- string(%d) "Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d"
["sqlstate"]=>
string(5) "00000"
["protocol_version"]=>
bool(false)
["server_version"]=>
bool(false)
- ["stat"]=>
- NULL
["sqlstate"]=>
bool(false)
["protocol_version"]=>
+++ /dev/null
---TEST--
-Bug #55859 mysqli->stat property access gives error
---SKIPIF--
-<?php
-require_once('skipif.inc');
-require_once('skipifconnectfailure.inc');
-?>
---FILE--
-<?php
- require_once("connect.inc");
-
- if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
- printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
- }
- var_dump(soundex(mysqli_stat($link)) === soundex($link->stat));
- echo "done!";
-?>
---EXPECT--
-bool(true)
-done!
<?php
/*
Default values are "localhost", "root",
- database "stest" and empty password.
+ database "test" and empty password.
Change the MYSQL_TEST environment values
if you want to use another configuration
*/
'set_charset' => true,
'set_opt' => true,
'ssl_set' => true,
- 'stat' => true,
+ 'stat' => true,
'stmt_init' => true,
'store_result' => true,
'thread_safe' => true,
"server_info" => true,
"server_version" => true,
"sqlstate" => true,
- "stat" => true,
"thread_id" => true,
"warning_count" => true,
);
$mysqli->sqlstate, gettype($mysqli->sqlstate),
mysqli_sqlstate($link), gettype(mysqli_sqlstate($link)));
- assert(soundex(mysqli_stat($link)) == soundex($mysqli->stat));
- printf("mysqli->stat = '%s'/%s ('%s'/%s)\n",
- $mysqli->stat, gettype($mysqli->stat),
- mysqli_stat($link), gettype(mysqli_stat($link)));
-
assert(mysqli_get_host_info($link) === $mysqli->host_info);
printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
$mysqli->host_info, gettype($mysqli->host_info),
mysqli->field_count = '0'/integer ('0'/integer)
mysqli->insert_id = '0'/integer ('0'/integer)
mysqli->sqlstate = '00000'/string ('00000'/string)
-mysqli->stat = 'Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string ('Uptime: %d Threads: %d Questions: %d Slow queries: %d Opens: %d Flush tables: %d Open tables: %d Queries per second avg: %d.%d'/string)
mysqli->host_info = '%s'/string ('%s'/string)
mysqli->info = ''/NULL (''/NULL)
mysqli->thread_id = '%d'/integer ('%d'/integer)
server_info = 'false'
server_version = 'false'
sqlstate = 'false'
-stat = 'false'
thread_id = 'false'
warning_count = 'false'
insert_id = 'false'
server_info = 'false'
server_version = 'false'
-stat = 'false'
sqlstate = 'false'
protocol_version = 'false'
thread_id = 'false'
server_info = 'false'
server_version = 'false'
sqlstate = 'false'
-stat = 'false'
thread_id = 'false'
warning_count = 'false'
insert_id = 'false'
server_info = 'false'
server_version = 'false'
-stat = 'false'
sqlstate = 'false'
protocol_version = 'false'
thread_id = 'false'
isDefault: yes
Modifiers: 1
-Inspecting property 'stat'
-isPublic: yes
-isPrivate: no
-isProtected: no
-isStatic: no
-isDefault: yes
-Modifiers: 1
-
Inspecting property 'thread_id'
isPublic: yes
isPrivate: no
Default property 'server_info'
Default property 'server_version'
Default property 'sqlstate'
-Default property 'stat'
Default property 'thread_id'
Default property 'warning_count'
done!
if ($link->info != 'Records: 6 Duplicates: 0 Warnings: 0') {
printf("[008] mysqlnd used to be more verbose and used to support SELECT\n");
}
- if ($link->stat != NULL) {
- printf("[009] NULL expected because of error.\n");
- }
} else {
if ($link->info != NULL) {
printf("[008] Time for wonders - libmysql has started to support SELECT, change test\n");
string(%d) "%s"
["server_version"]=>
int(%d)
- ["stat"]=>
- %s
["sqlstate"]=>
string(5) "HY000"
["protocol_version"]=>
bool(false)
["server_version"]=>
bool(false)
- ["stat"]=>
- bool(false)
["sqlstate"]=>
bool(false)
["protocol_version"]=>