Bug #79872 [Opn]: Semantic Language inconsistency when using commit and 2 statements.
| From: | brian at statagroup dot com | Date: | Sat, 18 Jul 2020 13:49:45 +0000 |
| Subject: | Bug #79872 [Opn]: Semantic Language inconsistency when using commit and 2 statements. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-228109@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79872&edit=1
ID: 79872
User updated by: brian at statagroup dot com
Reported by: brian at statagroup dot com
Summary: Semantic Language inconsistency when using commit
and 2 statements.
Status: Open
Type: Bug
Package: PDO MySQL
Operating System: Linux
PHP Version: master-Git-2020-07-18 (Git)
Block user comment: N
Private report: N
New Comment:
fixing email address
Previous Comments:
------------------------------------------------------------------------
[2020-07-18 13:46:49] brian at statagroup dot com
Description:
------------
Hypothetically there is no difference between what these two examples do (except for the
introduction of a variable).
ex1.
$statement = $connection->prepare($sql);
$statement->execute();
ex2.
$connection->prepare($sql)->execute();
In practice, the first example fails under specific and reproducible conditions.
Test script:
---------------
I've created a full demonstration of the issue on github using PHP docker images.
https://github.com/Incognito/php-pdo_mysql-defect-evidence
$connection = new PDO('mysql:host=db;port=3306;dbname=mysql', 'root',
'example', []);
$connection->prepare('DROP TABLE IF EXISTS pdo_bug_test;')->execute();
$connection->prepare('CREATE TABLE pdo_bug_test (value1 VARCHAR(10), value2
INT);')->execute();
$connection->beginTransaction();
$sql = 'INSERT INTO pdo_bug_test (value1, value2) VALUES (1, 2);';
$sql .= 'INSERT INTO pdo_bug_test (value1, value2) VALUES (3, 4);';
$statement = $connection->prepare($sql); $statement->execute();
$result = $connection->commit();
Expected result:
----------------
I expect the two examples to work exactly the same. In practice this difference is introduced on
versions of PHP which contain commit 51cdd3dc50af88461d83aec0fac1dca83400b58f .
This means 5.6 works the same for both examples. However, 7.0.23, 7.1.9, and 7.2.0 are the releases
that introduce this change in the git tree.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79872&edit=1