Re: mysqli tests breaking

From: Date: Mon, 05 Sep 2011 13:28:13 +0000
Subject: Re: mysqli tests breaking
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On 09/05/2011 03:19 PM, Ulf Wendel wrote:
No mysqlnd-libmysql BC break here. Metadata and libmysql - there's hardly a better example why mysqlnd should be set as a default. With libmysql as a default, PHP 5.4 will have a "randomly" crashing default configuration. https://bugs.php.net/bug.php?id=55001 http://bugs.mysql.com/bug.php?id=62350 (Note how the issue is there, then gone and then back again depending on version...) Am 02.09.2011 19:19, schrieb Stas Malyshev:
EXPLAIN - metadata [ext/mysqli/tests/mysqli_explain_metadata.phpt] The reason is that plain SQL and prepared SQL return different data - catalog field sometimes is "def", sometimes NULL in MYSQL_FIELD structure returned by mysql_fetch_field_direct(). It may be mysql bug in which case test should be SKIPed for versions that have this bug.
And, yet again metadata... PASS EXPLAIN - metadata [ext/mysqli/tests/mysqli_explain_metadata.phpt] libmysql 5.1.49 @ MySQL 5.1.49 libmysql 5.5.15 @ MySQL 5.1.49 libmysql 5.6.2-m5 @ MySQL 5.1.49 mysqlnd @ MySQL 5.1.49 mysqlnd @ MySQL 5.1.37 FAIL libmysql 5.1.37 @ MySQL 5.1.37 ... always use the latest and greatest. Libmysql bug, exact version range is not known to me. Feel free to change the test to be skipped during SKIPIF, for example, like this: require(connect.inc) if (!IS_MYSQLND && libmysql_version > ... && libmysql_version < ...) die(skip libmysql bug) At the first look, I can't find a related bug report at bugs.php.net. Looks like few people compare PS and non-PS metadata for EXPLAIN in their application.
this is exactly what I mean. If there was a bug in a previous version and you try to use it, what do you want to see? SKIP or FAIL? I vote with 2 hands for FAIL, because so I can easily spot problems when migrating to a new version of PHP on my platform. If the test is made to PASS, it should not be skipped unless it is not possible to run it - like if it tests mysqli functions which are not available in libmysql's build. But otherwise let it go, and if it FAILs, this is outside of our problem. WE _should_ not try to hide problems of third party software. Our tests don't test only PHP, they test the whole platform they run on to convince the end user that he can rely on the results of PHP on this configuration.
Ulf
Andrey

Thread (23 messages)

« previous php.internals (#55222) next »