mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +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) {
|
if (!result) {
|
||||||
|
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -744,8 +744,7 @@ PHP_FUNCTION(mysqli_query)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!result) {
|
if (!result) {
|
||||||
php_mysqli_throw_sql_exception((char *)mysql_sqlstate(mysql->mysql), mysql_errno(mysql->mysql),
|
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
|
||||||
"%s", mysql_error(mysql->mysql));
|
|
||||||
RETURN_FALSE;
|
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) {
|
if (buf_size < packet_header->size) {
|
||||||
DBG_ERR_FMT("Packet buffer %zu wasn't big enough %zu, %zu bytes will be unread",
|
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);
|
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);
|
DBG_RETURN(FAIL);
|
||||||
}
|
}
|
||||||
if (FAIL == pfc->data->m.receive(pfc, vio, buf, packet_header->size, stats, error_info)) {
|
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