mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Add NEWS entry for #9841 Add a temporary fix for insufficient buffer size in mysqlnd (#9835) mysqli_query throws warning despite using silenced error mode (#9842)
This commit is contained in:
commit
ec1f58c871
4 changed files with 82 additions and 2 deletions
|
@ -1000,6 +1000,7 @@ PHP_METHOD(mysqli_result, __construct)
|
|||
}
|
||||
|
||||
if (!result) {
|
||||
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -744,8 +744,7 @@ PHP_FUNCTION(mysqli_query)
|
|||
break;
|
||||
}
|
||||
if (!result) {
|
||||
php_mysqli_throw_sql_exception((char *)mysql_sqlstate(mysql->mysql), mysql_errno(mysql->mysql),
|
||||
"%s", mysql_error(mysql->mysql));
|
||||
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
|
|
79
ext/mysqli/tests/gh9841.phpt
Normal file
79
ext/mysqli/tests/gh9841.phpt
Normal file
|
@ -0,0 +1,79 @@
|
|||
--TEST--
|
||||
Bug GH-9841 (mysqli_query throws warning despite using silenced error mode)
|
||||
--EXTENSIONS--
|
||||
mysqli
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once 'skipifconnectfailure.inc';
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require_once 'connect.inc';
|
||||
|
||||
mysqli_report(MYSQLI_REPORT_OFF);
|
||||
|
||||
$mysqli = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
||||
|
||||
$mysqli->query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual");
|
||||
|
||||
$mysqli->query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual", MYSQLI_ASYNC);
|
||||
$mysqli->reap_async_query();
|
||||
|
||||
$mysqli->real_query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual");
|
||||
$result = new mysqli_result($mysqli);
|
||||
|
||||
// now make sure the errors are thrown when not using silent mode
|
||||
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
|
||||
|
||||
try {
|
||||
$mysqli->query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual");
|
||||
} catch (mysqli_sql_exception $e) {
|
||||
echo $e->getMessage()."\n";
|
||||
}
|
||||
|
||||
$mysqli->query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual", MYSQLI_ASYNC);
|
||||
try {
|
||||
$mysqli->reap_async_query();
|
||||
} catch (mysqli_sql_exception $e) {
|
||||
echo $e->getMessage()."\n";
|
||||
}
|
||||
|
||||
$mysqli->real_query("SELECT (
|
||||
SELECT 1 AS val
|
||||
UNION ALL
|
||||
SELECT 2
|
||||
) FROM dual");
|
||||
try {
|
||||
$result = new mysqli_result($mysqli);
|
||||
} catch (mysqli_sql_exception $e) {
|
||||
echo $e->getMessage()."\n";
|
||||
}
|
||||
|
||||
print "done!";
|
||||
?>
|
||||
--EXPECTF--
|
||||
Subquery returns more than 1 row
|
||||
Subquery returns more than 1 row
|
||||
Subquery returns more than 1 row
|
||||
done!
|
|
@ -301,6 +301,7 @@ mysqlnd_read_packet_header_and_body(MYSQLND_PACKET_HEADER * packet_header,
|
|||
if (buf_size < packet_header->size) {
|
||||
DBG_ERR_FMT("Packet buffer %zu wasn't big enough %zu, %zu bytes will be unread",
|
||||
buf_size, packet_header->size, packet_header->size - buf_size);
|
||||
SET_CLIENT_ERROR(error_info, CR_INVALID_BUFFER_USE, UNKNOWN_SQLSTATE, "Packet buffer wasn't big enough; as a workaround consider increasing value of net_cmd_buffer_size");
|
||||
DBG_RETURN(FAIL);
|
||||
}
|
||||
if (FAIL == pfc->data->m.receive(pfc, vio, buf, packet_header->size, stats, error_info)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue