php / php/php-src

max_allowed_packet=16777216 causes test failure on ext/mysqli/tests/mysqli_real_connect_compression_error.phpt

Open
#10,063 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Extension: mysqlnd Status: Verified
Dominant language
C
Stars
40.4k
Forks
8.1k
Avg merge
2d 13h
Merged PRs (30d)
96

Description

Description

From #6136 / #6144

@nikic, I totally agree with "the protocol is pretty ridiculous".

  • smaller than 16M skips as expected
  • max_allowed_packet=16777216 +1024; (the smallest increment is 1k) passes
  • max_allowed_packet=16777216 generates the test output difference.

16777216 happens to be the MariaDB default: https://mariadb.com/kb/en/server-system-variables/#max_allowed_packet

The following code:

$ sapi/cli/php -d mysqli.allow_local_infile=On run-tests.php -P -q           -j$(/usr/bin/nproc)           -g FAIL,XFAIL,BORK,WARN,LEAK,XLEAK,SKIP           --offline           --show-diff           --show-slow 1000           --set-timeout 120 ext/mysqli/tests/mysqli_real_connect_compression_error.phpt

Resulted in this output:

=====================================================================
PHP         : /home/dan/repos/PHP-8.0/sapi/cli/php 
PHP_SAPI    : cli
PHP_VERSION : 8.1.14-dev
ZEND_VERSION: 4.1.14-dev
PHP_OS      : Linux - Linux localhost.localdomain 6.1.0-0.rc7.51.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 28 15:47:37 UTC 2022 x86_64
INI actual  : /home/dan/repos/PHP-8.0
More .INIs  :  
---------------------------------------------------------------------
PHP         : /home/dan/repos/PHP-8.0/sapi/cgi/php-cgi 
PHP_SAPI    : cgi-fcgi
PHP_VERSION : 8.1.14-dev
ZEND_VERSION: 4.1.14-dev
PHP_OS      : Linux - Linux localhost.localdomain 6.1.0-0.rc7.51.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 28 15:47:37 UTC 2022 x86_64
INI actual  : /home/dan/repos/PHP-8.0
More .INIs  : 
--------------------------------------------------------------------- 
---------------------------------------------------------------------
PHP         : /home/dan/repos/PHP-8.0/sapi/phpdbg/phpdbg 
PHP_SAPI    : phpdbg
PHP_VERSION : 8.1.14-dev
ZEND_VERSION: 4.1.14-dev
PHP_OS      : Linux - Linux localhost.localdomain 6.1.0-0.rc7.51.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 28 15:47:37 UTC 2022 x86_64
INI actual  : /home/dan/repos/PHP-8.0
More .INIs  : 
---------------------------------------------------------------------
CWD         : /home/dan/repos/PHP-8.0
Extra dirs  : 
VALGRIND    : Not used
=====================================================================
Running selected tests.

========DIFF========
001+ array(1) {
002+   [0]=>
003+   array(3) {
004+     ["errno"]=>
005+     int(1153)
006+     ["sqlstate"]=>
007+     string(5) "08S01"
008+     ["error"]=>
009+     string(51) "Got a packet bigger than 'max_allowed_packet' bytes"
010+   }
001- array(0) {
     }
012+ 
013+ Warning: Packets out of order. Expected 3 received 2. Packet size=64 in /home/dan/repos/PHP-8.0/ext/mysqli/tests/mysqli_real_connect_compression_error.php on line 27
003- array(0) {
004- }
014+ array(1) {
015+   [0]=>
016+   array(3) {
017+     ["errno"]=>
018+     int(2006)
019+     ["sqlstate"]=>
020+     string(5) "HY000"
021+     ["error"]=>
022+     string(26) "MySQL server has gone away"
023+   }
024+ }
========DONE========
FAIL Bug #80107 mysqli_query() fails for ~16 MB long query when compression is enabled [ext/mysqli/tests/mysqli_real_connect_compression_error.phpt] 

Tested against MariaDB-10.3.38(in dev), and MySQL 5.7.40.

Blocks #10062.

But I expected this output instead:

test pass.

PHP Version

PHP-8.1-2f6b9e6c639c37405e45094bd9c8f2f3b3f377d3

Operating System

Fedora 36

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the provided run-tests.php command for ext/mysqli/tests/mysqli_real_connect_compression_error.phpt with max_allowed_packet=16777216 against MariaDB or MySQL. Read the test output alongside Bug #80107 and the related issues #6136, #6144, and #10062. Done means the compression error test produces the expected "test pass" result without the reported output difference.

Written by the indexing model from the issue text.

Assessment

Tech stack
mysql, php
Domain
databases, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.