Skip to content

Fixed tests failing on MariaDB #13500

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: PHP-8.2
Choose a base branch
from
Open
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
1 change: 1 addition & 0 deletions ext/mysqli/tests/gh8978.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ mysqli
--SKIPIF--
<?php
require_once 'skipifconnectfailure.inc';
if (getenv('IS_MARIADB_TEST')) die('skip have not yet configured MariaDB to use SSL');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll skip it for now since it seems like it will take more time.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is skipping a good idea? Maybe expect failure instead? What exactly is the issue with this test?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whether SSL is enabled is indicated by the bits in capability_flags.

packet->server_capabilities = uint2korr(p);

For MySQL, it is turned on without any special settings, but for MariaDB, it is turned off by default.

That is, the if block that should be checked in this test is not reached.

if (server_has_ssl == FALSE) {

It seemed like it would take a while to figure out how to turn this on, so I thought I'd just skip it first and follow up later.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! I will try this method locally.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MariaDB11.4 seems to enable SSL by default, which means it behaves the same as MySQL.
https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-4/#ssltls

Therefore, by fixing the MariaDB used for CI to 11.4 or later, there is no need to configure SSL.
However, there is a new issue #13628, so I will wait until it is resolved before proceeding with this PR.

?>
--FILE--
<?php
Expand Down
4 changes: 2 additions & 2 deletions ext/mysqli/tests/mysqli_stmt_execute_stored_proc.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ if (mysqli_get_server_version($link) <= 50000) {
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
printf("[009] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));

if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(40)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
/* no result set, one output parameter */
if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
printf("[011] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
Expand Down Expand Up @@ -68,7 +68,7 @@ if (mysqli_get_server_version($link) <= 50000) {
if (!mysqli_query($link, 'DROP PROCEDURE IF EXISTS p'))
printf("[019] [%d] %s.\n", mysqli_errno($link), mysqli_error($link));

if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(40)) BEGIN SELECT VERSION() INTO ver_param; END;')) {
// no result set, one output parameter
if (!$stmt = mysqli_prepare($link, 'CALL p(@version)'))
printf("[020] Cannot prepare CALL, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
Expand Down
2 changes: 1 addition & 1 deletion ext/mysqli/tests/mysqli_store_result_copy.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ mysqlnd.fetch_data_copy=0
if (mysqli_get_server_version($link) > 50000) {
// let's try to play with stored procedures
mysqli_real_query($link, 'DROP PROCEDURE IF EXISTS p');
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) READS SQL DATA BEGIN SELECT id FROM test WHERE id >= 100 ORDER BY id; SELECT id + 1, label FROM test WHERE id > 0 AND id < 3 ORDER BY id; SELECT VERSION() INTO ver_param;
if (mysqli_real_query($link, 'CREATE PROCEDURE p(OUT ver_param VARCHAR(40)) READS SQL DATA BEGIN SELECT id FROM test WHERE id >= 100 ORDER BY id; SELECT id + 1, label FROM test WHERE id > 0 AND id < 3 ORDER BY id; SELECT VERSION() INTO ver_param;
END;')) {
mysqli_multi_query($link, "CALL p(@version)");
do {
Expand Down
4 changes: 2 additions & 2 deletions ext/pdo_mysql/tests/bug76815.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ $pdo = MySQLPDOTest::factory();
$pdo->query('DROP FUNCTION IF EXISTS tst');
$pdo->query('DROP PROCEDURE IF EXISTS tst2');
?>
--EXPECT--
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'tst()' at row 1
--EXPECTF--
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'tst()' at row %d
Ok.
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/pdo_mysql_stmt_nextrowset.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ if (!MySQLPDOTest::isPDOMySQLnd())
while ($stmt->fetch()) ;

$db->exec('DROP PROCEDURE IF EXISTS p');
$db->exec('CREATE PROCEDURE p(OUT ver_param VARCHAR(25)) BEGIN SELECT VERSION() INTO ver_param; END;');
$db->exec('CREATE PROCEDURE p(OUT ver_param VARCHAR(40)) BEGIN SELECT VERSION() INTO ver_param; END;');
$db->exec('CALL p(@VERSION)');
$stmt = $db->query('SELECT @VERSION as _version');
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
Expand Down