max_allowed_packet=16777216 causes test failure on ext/mysqli/tests/mysqli_real_connect_compression_error.phpt
未关闭
还没有人认领这个 Issue。
Bug
Extension: mysqlnd
Status: Verified
- 主要语言
- C
- 星标
- 40.4k
- 派生
- 8.2k
- 平均合并
- 2 天 13 小时
- 30 天内合并 PR
- 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
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 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