Skip to content

Commit

Permalink
Update the export command to use a PHP8-safe PDO transaction commit path
Browse files Browse the repository at this point in the history
  • Loading branch information
Kyle McGrogan authored and alquerci committed Jul 3, 2024
1 parent da5a25d commit ae17cc6
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/Doctrine/Export.php
Original file line number Diff line number Diff line change
Expand Up @@ -1221,7 +1221,7 @@ public function exportClasses(array $classes)
}
}

$connection->commit();
Doctrine_Transaction_Helper::commitIfInTransaction($connection);
}
}

Expand Down
47 changes: 47 additions & 0 deletions lib/Doctrine/Transaction/TransactionHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/

/**
* Doctrine_Transaction_Helper
*
* @package Doctrine
* @subpackage Transaction
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.org
* @since 1.4
* @version $Revision$
* @author Kyle McGrogan <[email protected]>
*/
final class Doctrine_Transaction_Helper
{
public static function commitIfInTransaction(Doctrine_Connection $connection): void
{
$handler = $connection->getDbh();

// Attempt to commit while no transaction is running results in exception since PHP 8 + pdo_mysql combination
if ($handler instanceof PDO && !$handler->inTransaction()) {
return;
}

$connection->commit();
}
}

0 comments on commit ae17cc6

Please sign in to comment.