php / php/php-src

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

オープン
#10,063 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Bug Extension: mysqlnd Status: Verified
主要言語
C
スター
40.4k
フォーク
8.1k
平均マージ
2日 13時間
マージ済み PR(30日)
96

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、MariaDB または MySQL に対して、max_allowed_packet=16777216 を指定して、ext/mysqli/tests/mysqli_real_connect_compression_error.phpt 用に提供されている run-tests.php コマンドを実行します。テスト出力を Bug #80107 および関連する issue #6136、#6144、#10062 と併せて確認します。圧縮エラーテストが、報告された出力差分なしに、期待される "test pass" の結果を生成すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
mysql, php
領域
databases, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。