Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ PHP 8.6 UPGRADE NOTES
5. Changed Functions
========================================

- mysqli:
. The return structure of mysqli_get_charset() no longer contains
the undocumented "comment" element. The value of "charsetnr" is
now set to a constant 0 as this number was an implementation detail
that should not have been exposed to the public.

- OpenSSL:
. Output of openssl_x509_parse() contains criticalExtensions listing all
critical certificate extensions.
Expand Down
14 changes: 5 additions & 9 deletions ext/mysqli/mysqli_nonapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -965,8 +965,8 @@ PHP_FUNCTION(mysqli_get_charset)
{
MY_MYSQL *mysql;
zval *mysql_link;
const char *name = NULL, *collation = NULL, *dir = NULL, *comment = NULL;
uint32_t minlength, maxlength, number, state;
const char *name = NULL, *collation = NULL;
uint32_t minlength, maxlength;
const MYSQLND_CHARSET *cs;

if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
Expand All @@ -984,19 +984,15 @@ PHP_FUNCTION(mysqli_get_charset)
collation = cs->collation;
minlength = cs->char_minlen;
maxlength = cs->char_maxlen;
number = cs->nr;
comment = cs->comment;
state = 1; /* all charsets are compiled in */
object_init(return_value);

add_property_string(return_value, "charset", (name) ? (char *)name : "");
add_property_string(return_value, "collation",(collation) ? (char *)collation : "");
add_property_string(return_value, "dir", (dir) ? (char *)dir : "");
add_property_string(return_value, "dir", ""); /* Kept for backward compatibility */
add_property_long(return_value, "min_length", minlength);
add_property_long(return_value, "max_length", maxlength);
add_property_long(return_value, "number", number);
add_property_long(return_value, "state", state);
add_property_string(return_value, "comment", (comment) ? (char *)comment : "");
add_property_long(return_value, "number", 0); /* Kept for backward compatibility */
add_property_long(return_value, "state", 1); /* Kept for backward compatibility */
}
/* }}} */

Expand Down
4 changes: 0 additions & 4 deletions ext/mysqli/tests/mysqli_fetch_field.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@ require_once 'skipifconnectfailure.inc';
/* label column, result set charset */
$tmp = mysqli_fetch_field($res);
var_dump($tmp);
if ($tmp->charsetnr != $charsetInfo->number) {
printf("[004] Expecting charset %s/%d got %d\n",
$charsetInfo->charset, $charsetInfo->number, $tmp->charsetnr);
}
if ($tmp->db != $db) {
printf("011] Expecting database '%s' got '%s'\n",
$db, $tmp->db);
Expand Down
4 changes: 0 additions & 4 deletions ext/mysqli/tests/mysqli_fetch_field_oo.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ require_once 'skipifconnectfailure.inc';

$tmp = $res->fetch_field();
var_dump($tmp);
if ($tmp->charsetnr != $charsetInfo->number) {
printf("[005] Expecting charset %s/%d got %d\n",
$charsetInfo->charset, $charsetInfo->number, $tmp->charsetnr);
}
if ($tmp->db != $db) {
printf("[007] Expecting database '%s' got '%s'\n",
$db, $tmp->db);
Expand Down
10 changes: 0 additions & 10 deletions ext/mysqli/tests/mysqli_fetch_fields.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,6 @@ require_once 'skipifconnectfailure.inc';
$fields = mysqli_fetch_fields($res);
foreach ($fields as $k => $field) {
var_dump($field);
switch ($k) {
case 1:
/* label column, result set charset */
if ($field->charsetnr != $charsetInfo->number) {
printf("[004] Expecting charset %s/%d got %d\n",
$charsetInfo->charset,
$charsetInfo->number, $field->charsetnr);
}
break;
}
}

mysqli_free_result($res);
Expand Down
4 changes: 0 additions & 4 deletions ext/mysqli/tests/mysqli_field_seek.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@ require_once 'skipifconnectfailure.inc';
$field = mysqli_fetch_field($res);
var_dump($field);
/* label column, result set charset */
if ($field->charsetnr != $charsetInfo->number) {
printf("[004] Expecting charset %s/%d got %d\n",
$charsetInfo->charset, $charsetInfo->number, $field->charsetnr);
}
if ($field->length != $charsetInfo->max_length) {
printf("[005] Expecting length %d got %d\n",
$charsetInfo->max_length, $field->max_length);
Expand Down
17 changes: 8 additions & 9 deletions ext/mysqli/tests/mysqli_get_charset.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ require_once 'skipifconnectfailure.inc';
exit(1);
}

// On some servers the default collation is not what we expect,
// so we need to set it explicitly to make sure that the test is deterministic.
mysqli_set_charset($link, 'utf8mb4');
if (!$res = mysqli_query($link, "SET NAMES utf8mb4 COLLATE 'utf8mb4_general_ci'"))
printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));

if (!$res = mysqli_query($link, 'SELECT @@character_set_connection AS charset, @@collation_connection AS collation'))
printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
$tmp = mysqli_fetch_assoc($res);
Expand All @@ -27,13 +33,6 @@ require_once 'skipifconnectfailure.inc';
if (!mysqli_fetch_assoc($res))
printf("[010] Cannot fetch Maxlen and/or Comment, test will fail: $sql\n");

if (!$res = mysqli_query($link, sprintf("SHOW COLLATION LIKE '%s'", $collation_connection)))
printf("[011] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
$tmp = mysqli_fetch_assoc($res);
mysqli_free_result($res);
if (!($id = $tmp['Id']))
printf("[012] Cannot fetch Id/Number, test will fail\n");

if (!$res = mysqli_query($link, sprintf("SHOW VARIABLES LIKE 'character_sets_dir'")))
printf("[013] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
$tmp = mysqli_fetch_assoc($res);
Expand Down Expand Up @@ -66,8 +65,8 @@ require_once 'skipifconnectfailure.inc';

if (!isset($charset->number) ||
!is_int($charset->number) ||
($charset->number !== (int)$id))
printf("[021] Expecting int/%d, got %s/%s\n", $id, gettype($charset->number), $charset->number);
($charset->number !== 0))
printf("[021] Expecting int/%d, got %s/%s\n", 0, gettype($charset->number), $charset->number);

if (!isset($charset->state) ||
!is_int($charset->state))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,6 @@ require_once 'skipifconnectfailure.inc';
Label column, result set charset.
All of the following columns are "too hot" - too server dependent
*/
if ($field->charsetnr != $charsetInfo->number) {
printf("[004] Expecting charset %s/%d got %d\n",
$charsetInfo->charset,
$charsetInfo->number, $field->charsetnr);
}
if ($field->length != $charsetInfo->max_length) {
printf("[005] Expecting length %d got %d\n",
$charsetInfo->max_length, $field->max_length);
Expand Down
Loading
Loading