Skip to content

Commit 5795621

Browse files
committed
Fixed bug #67348: Reading $dbc->stat modifies $dbc->affected_rows
1 parent 152ccfb commit 5795621

11 files changed

+6
-87
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ PHP NEWS
1515
- GD:
1616
. Added TGA read support. (cmb)
1717

18+
- MySQLi:
19+
. Fixed bug #67348 (Reading $dbc->stat modifies $dbc->affected_rows).
20+
(Derick)
21+
1822
- Opcache:
1923
. Fixed bug #78106 (Path resolution fails if opcache disabled during request).
2024
(Nikita)

ext/mysqli/mysqli.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,6 @@ PHP_MINIT_FUNCTION(mysqli)
634634
zend_declare_property_null(ce, "insert_id", sizeof("insert_id") - 1, ZEND_ACC_PUBLIC);
635635
zend_declare_property_null(ce, "server_info", sizeof("server_info") - 1, ZEND_ACC_PUBLIC);
636636
zend_declare_property_null(ce, "server_version", sizeof("server_version") - 1, ZEND_ACC_PUBLIC);
637-
zend_declare_property_null(ce, "stat", sizeof("stat") - 1, ZEND_ACC_PUBLIC);
638637
zend_declare_property_null(ce, "sqlstate", sizeof("sqlstate") - 1, ZEND_ACC_PUBLIC);
639638
zend_declare_property_null(ce, "protocol_version", sizeof("protocol_version") - 1, ZEND_ACC_PUBLIC);
640639
zend_declare_property_null(ce, "thread_id", sizeof("thread_id") - 1, ZEND_ACC_PUBLIC);

ext/mysqli/mysqli_prop.c

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -234,38 +234,6 @@ MYSQLI_MAP_PROPERTY_FUNC_STRING(link_sqlstate_read, mysql_sqlstate, MYSQLI_GET_M
234234
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_thread_id_read, mysql_thread_id, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), zend_ulong, ZEND_ULONG_FMT)
235235
MYSQLI_MAP_PROPERTY_FUNC_LONG(link_warning_count_read, mysql_warning_count, MYSQLI_GET_MYSQL(MYSQLI_STATUS_VALID), zend_ulong, ZEND_ULONG_FMT)
236236

237-
/* {{{ property link_stat_read */
238-
static zval *link_stat_read(mysqli_object *obj, zval *retval)
239-
{
240-
MY_MYSQL *mysql;
241-
242-
ZVAL_NULL(retval);
243-
244-
#if defined(MYSQLI_USE_MYSQLND)
245-
CHECK_STATUS(MYSQLI_STATUS_INITIALIZED);
246-
#else
247-
CHECK_STATUS(MYSQLI_STATUS_VALID);
248-
#endif
249-
250-
mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr;
251-
252-
if (mysql) {
253-
#if defined(MYSQLI_USE_MYSQLND)
254-
zend_string * stat_msg;
255-
if (mysqlnd_stat(mysql->mysql, &stat_msg) == PASS) {
256-
ZVAL_STR(retval, stat_msg);
257-
}
258-
#else
259-
char * stat_msg;
260-
if ((stat_msg = (char *)mysql_stat(mysql->mysql))) {
261-
ZVAL_STRING(retval, stat_msg);
262-
}
263-
#endif
264-
}
265-
return retval;
266-
}
267-
/* }}} */
268-
269237
/* result properties */
270238

271239
/* {{{ property result_type_read */
@@ -435,7 +403,6 @@ const mysqli_property_entry mysqli_link_property_entries[] = {
435403
{"insert_id", sizeof("insert_id") - 1, link_insert_id_read, NULL},
436404
{"server_info", sizeof("server_info") - 1, link_server_info_read, NULL},
437405
{"server_version", sizeof("server_version") - 1, link_server_version_read, NULL},
438-
{"stat", sizeof("stat") - 1, link_stat_read, NULL},
439406
{"sqlstate", sizeof("sqlstate") - 1, link_sqlstate_read, NULL},
440407
{"protocol_version",sizeof("protocol_version") - 1, link_protocol_version_read, NULL},
441408
{"thread_id", sizeof("thread_id") - 1, link_thread_id_read, NULL},

ext/mysqli/tests/bug34810.phpt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,6 @@ object(mysqli)#%d (%d) {
9292
string(%d) "%s"
9393
["server_version"]=>
9494
int(%d)
95-
["stat"]=>
96-
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"
9795
["sqlstate"]=>
9896
string(5) "00000"
9997
["protocol_version"]=>
@@ -132,8 +130,6 @@ object(mysqli)#%d (%d) {
132130
bool(false)
133131
["server_version"]=>
134132
bool(false)
135-
["stat"]=>
136-
NULL
137133
["sqlstate"]=>
138134
bool(false)
139135
["protocol_version"]=>

ext/mysqli/tests/bug55859.phpt

Lines changed: 0 additions & 20 deletions
This file was deleted.

ext/mysqli/tests/connect.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
/*
33
Default values are "localhost", "root",
4-
database "stest" and empty password.
4+
database "test" and empty password.
55
Change the MYSQL_TEST environment values
66
if you want to use another configuration
77
*/

ext/mysqli/tests/mysqli_class_mysqli_interface.phpt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ require_once('skipifconnectfailure.inc');
5353
'set_charset' => true,
5454
'set_opt' => true,
5555
'ssl_set' => true,
56-
'stat' => true,
56+
'stat' => true,
5757
'stmt_init' => true,
5858
'store_result' => true,
5959
'thread_safe' => true,
@@ -109,7 +109,6 @@ require_once('skipifconnectfailure.inc');
109109
"server_info" => true,
110110
"server_version" => true,
111111
"sqlstate" => true,
112-
"stat" => true,
113112
"thread_id" => true,
114113
"warning_count" => true,
115114
);
@@ -200,11 +199,6 @@ require_once('skipifconnectfailure.inc');
200199
$mysqli->sqlstate, gettype($mysqli->sqlstate),
201200
mysqli_sqlstate($link), gettype(mysqli_sqlstate($link)));
202201

203-
assert(soundex(mysqli_stat($link)) == soundex($mysqli->stat));
204-
printf("mysqli->stat = '%s'/%s ('%s'/%s)\n",
205-
$mysqli->stat, gettype($mysqli->stat),
206-
mysqli_stat($link), gettype(mysqli_stat($link)));
207-
208202
assert(mysqli_get_host_info($link) === $mysqli->host_info);
209203
printf("mysqli->host_info = '%s'/%s ('%s'/%s)\n",
210204
$mysqli->host_info, gettype($mysqli->host_info),
@@ -288,7 +282,6 @@ mysqli->error = ''/string (''/string)
288282
mysqli->field_count = '0'/integer ('0'/integer)
289283
mysqli->insert_id = '0'/integer ('0'/integer)
290284
mysqli->sqlstate = '00000'/string ('00000'/string)
291-
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)
292285
mysqli->host_info = '%s'/string ('%s'/string)
293286
mysqli->info = ''/NULL (''/NULL)
294287
mysqli->thread_id = '%d'/integer ('%d'/integer)

ext/mysqli/tests/mysqli_class_mysqli_properties_no_conn.phpt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ protocol_version = 'false'
160160
server_info = 'false'
161161
server_version = 'false'
162162
sqlstate = 'false'
163-
stat = 'false'
164163
thread_id = 'false'
165164
warning_count = 'false'
166165

@@ -179,7 +178,6 @@ info = 'false'
179178
insert_id = 'false'
180179
server_info = 'false'
181180
server_version = 'false'
182-
stat = 'false'
183181
sqlstate = 'false'
184182
protocol_version = 'false'
185183
thread_id = 'false'
@@ -233,7 +231,6 @@ protocol_version = 'false'
233231
server_info = 'false'
234232
server_version = 'false'
235233
sqlstate = 'false'
236-
stat = 'false'
237234
thread_id = 'false'
238235
warning_count = 'false'
239236

@@ -252,7 +249,6 @@ info = 'false'
252249
insert_id = 'false'
253250
server_info = 'false'
254251
server_version = 'false'
255-
stat = 'false'
256252
sqlstate = 'false'
257253
protocol_version = 'false'
258254
thread_id = 'false'

ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,14 +1317,6 @@ isStatic: no
13171317
isDefault: yes
13181318
Modifiers: 1
13191319

1320-
Inspecting property 'stat'
1321-
isPublic: yes
1322-
isPrivate: no
1323-
isProtected: no
1324-
isStatic: no
1325-
isDefault: yes
1326-
Modifiers: 1
1327-
13281320
Inspecting property 'thread_id'
13291321
isPublic: yes
13301322
isPrivate: no
@@ -1356,7 +1348,6 @@ Default property 'protocol_version'
13561348
Default property 'server_info'
13571349
Default property 'server_version'
13581350
Default property 'sqlstate'
1359-
Default property 'stat'
13601351
Default property 'thread_id'
13611352
Default property 'warning_count'
13621353
done!

ext/mysqli/tests/mysqli_kill.phpt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ require_once('skipifconnectfailure.inc');
4444
if ($link->info != 'Records: 6 Duplicates: 0 Warnings: 0') {
4545
printf("[008] mysqlnd used to be more verbose and used to support SELECT\n");
4646
}
47-
if ($link->stat != NULL) {
48-
printf("[009] NULL expected because of error.\n");
49-
}
5047
} else {
5148
if ($link->info != NULL) {
5249
printf("[008] Time for wonders - libmysql has started to support SELECT, change test\n");
@@ -123,8 +120,6 @@ object(mysqli)#%d (%d) {
123120
string(%d) "%s"
124121
["server_version"]=>
125122
int(%d)
126-
["stat"]=>
127-
%s
128123
["sqlstate"]=>
129124
string(5) "HY000"
130125
["protocol_version"]=>

0 commit comments

Comments
 (0)