Problem/Motivation

This issue is part of #2454513: [meta] Make Drupal 8 work with SQLite

Drupal\system\Tests\Database\LoggingTest is currently failing on SQLite because Drupal\Core\Database\StatementPrefetch uses $dbh to refer to the PDO Connection object, while Drupal\Core\Database\Statement uses it to refer to the Drupal connection object.

Proposed resolution

Change Drupal\Core\Database\StatementPrefetch::$dbh to reference a Drupal connection object, just like Drupal\Core\Database\Statement::$dbh does.

Remaining tasks

Review.

User interface changes

Nope.

API changes

Drupal\Core\Database\StatementPrefetch::$dbh now references the Drupal connection object and Drupal\Core\Database\StatementPrefetch::$connection is renamed to $pdoConnection and it references the PDO connection object.

CommentFileSizeAuthor
#3 interdiff.txt1.44 KBamateescu
#3 2486831-3.patch2.51 KBamateescu
#1 2486831.patch2.51 KBamateescu
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

amateescu’s picture

Status: Active » Needs review
Parent issue: » #2454513: [meta] Make Drupal 8 work with SQLite
FileSize
2.51 KB

And a patch.

Here's the output of a test run for the Database group. Drupal\system\Tests\Database\LoggingTest is included in there and it passes now.

Drupal test run
---------------

Tests to be run:
  - Drupal\system\Tests\Database\AlterTest
  - Drupal\system\Tests\Database\BasicSyntaxTest
  - Drupal\system\Tests\Database\CaseSensitivityTest
  - Drupal\system\Tests\Database\ConnectionTest
  - Drupal\system\Tests\Database\ConnectionUnitTest
  - Drupal\system\Tests\Database\DatabaseExceptionWrapperTest
  - Drupal\system\Tests\Database\DeleteTruncateTest
  - Drupal\system\Tests\Database\FetchTest
  - Drupal\system\Tests\Database\InsertDefaultsTest
  - Drupal\system\Tests\Database\InsertLobTest
  - Drupal\system\Tests\Database\InsertTest
  - Drupal\system\Tests\Database\InvalidDataTest
  - Drupal\system\Tests\Database\LoggingTest
  - Drupal\system\Tests\Database\MergeTest
  - Drupal\system\Tests\Database\NextIdTest
  - Drupal\system\Tests\Database\QueryTest
  - Drupal\system\Tests\Database\RangeQueryTest
  - Drupal\system\Tests\Database\RegressionTest
  - Drupal\system\Tests\Database\SchemaTest
  - Drupal\system\Tests\Database\SelectCloneTest
  - Drupal\system\Tests\Database\SelectComplexTest
  - Drupal\system\Tests\Database\SelectOrderedTest
  - Drupal\system\Tests\Database\SelectPagerDefaultTest
  - Drupal\system\Tests\Database\SelectSubqueryTest
  - Drupal\system\Tests\Database\SelectTableSortDefaultTest
  - Drupal\system\Tests\Database\SelectTest
  - Drupal\system\Tests\Database\SerializeQueryTest
  - Drupal\system\Tests\Database\TaggingTest
  - Drupal\system\Tests\Database\TemporaryQueryTest
  - Drupal\system\Tests\Database\TransactionTest
  - Drupal\system\Tests\Database\UpdateComplexTest
  - Drupal\system\Tests\Database\UpdateLobTest
  - Drupal\system\Tests\Database\UpdateTest

Test run started:
  Monday, May 11, 2015 - 18:51

Test summary
------------

Drupal\system\Tests\Database\CaseSensitivityTest               4 passes                                      
Drupal\system\Tests\Database\ConnectionTest                   24 passes                                                                                                                                                           
Drupal\system\Tests\Database\ConnectionUnitTest                7 passes                                                                                                                                                           
Drupal\system\Tests\Database\BasicSyntaxTest                  23 passes                                                                                                                                                           
Drupal\system\Tests\Database\AlterTest                        34 passes                                                                                                                                                           
Drupal\system\Tests\Database\DatabaseExceptionWrapperTest      2 passes                                                                                                                                                           
Drupal\system\Tests\Database\DeleteTruncateTest               12 passes                                                                                                                                                           
Drupal\system\Tests\Database\InsertLobTest                     7 passes                                                                                                                                                           
Drupal\system\Tests\Database\InsertDefaultsTest               10 passes                                                                                                                                                           
Drupal\system\Tests\Database\InvalidDataTest                   4 passes                                                                                                                                                           
Drupal\system\Tests\Database\FetchTest                        41 passes                                                                                                                                                           
Drupal\system\Tests\Database\LoggingTest                      24 passes                                                                                                                                                           
Drupal\system\Tests\Database\InsertTest                       30 passes                                                                                                                                                           
Drupal\system\Tests\Database\NextIdTest                        4 passes                                                                                                                                                           
Drupal\system\Tests\Database\RangeQueryTest                    4 passes                                                                                                                                                           
Drupal\system\Tests\Database\MergeTest                        52 passes                                                                                                                                                           
Drupal\system\Tests\Database\QueryTest                        15 passes                                                                                                                                                           
Drupal\system\Tests\Database\RegressionTest                   15 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectCloneTest                   4 passes                                                                                                                                                           
Drupal\system\Tests\Database\SchemaTest                      743 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectOrderedTest                17 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectSubqueryTest               19 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectComplexTest                94 passes                                                                                                                                                           
Drupal\system\Tests\Database\SerializeQueryTest                3 passes                                                                                                                                                           
Drupal\system\Tests\Database\TaggingTest                      28 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectTest                      106 passes                                                                                                                                                           
Drupal\system\Tests\Database\TransactionTest                  55 passes                                                                                                                                                           
Drupal\system\Tests\Database\TemporaryQueryTest                7 passes                            1 messages                                                                                                                     
Drupal\system\Tests\Database\SelectTableSortDefaultTest       30 passes                            9 messages                                                                                                                     
Drupal\system\Tests\Database\UpdateLobTest                     7 passes                                                                                                                                                           
Drupal\system\Tests\Database\UpdateComplexTest                35 passes                                                                                                                                                           
Drupal\system\Tests\Database\UpdateTest                       35 passes                                                                                                                                                           
Drupal\system\Tests\Database\SelectPagerDefaultTest           22 passes                            6 messages                                                                                                                     

Test run duration: 34 sec
dawehner’s picture

  1. +++ b/core/lib/Drupal/Core/Database/StatementPrefetch.php
    @@ -32,20 +30,18 @@ class StatementPrefetch implements \Iterator, StatementInterface {
       public $dbh;
    

    Short variables names are always a good idea ... do you mind open a novice follow to rename this to drupalDatabaseConnection?

  2. +++ b/core/lib/Drupal/Core/Database/StatementPrefetch.php
    @@ -32,20 +30,18 @@ class StatementPrefetch implements \Iterator, StatementInterface {
    +  protected $PDOConnection;
    

    usually we don't start with uppercase ... what about using pdoConnection? This looks a little bit nicer.

amateescu’s picture

FileSize
2.51 KB
1.44 KB

Thanks for taking a look at the patch.

1. We cannot change $dbh because Drupal\Core\Database\Statement extends PDOStatement which is the one that provides the $dbh variable, and the entire point of this issue is to bring Drupal\Core\Database\StatementPrefetch inline with Drupal\Core\Database\Statement :)
2. That's a good point, renamed according to your suggestion.

Berdir’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community

Makes sense, patch looks good.

catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 8.0.x, thanks!

  • catch committed 60fbc1d on 8.0.x
    Issue #2486831 by amateescu: The $dbh and $connection members are mixed...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.