Bug #79872 [Opn]: Semantic Language inconsistency when using commit and 2 statements.

From: 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

« previous php.bugs (#228109) next »