function EndOfTransactionQueriesTest::isStatementRelatedToTable

Same name in other branches
  1. 11.x core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php \Drupal\KernelTests\Core\Cache\EndOfTransactionQueriesTest::isStatementRelatedToTable()

Determines if a statement is relative to a specified table.

Non-core database drivers can override this method if they have different patterns to identify table related statements.

Parameters

string $statement: The query statement.

string $tableName: The table name, Drupal style, without curly brackets or prefix.

Return value

bool TRUE if the statement is relative to the table, FALSE otherwise.

1 call to EndOfTransactionQueriesTest::isStatementRelatedToTable()
EndOfTransactionQueriesTest::getStatementsForTable in core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php
Filters statements by table name.

File

core/tests/Drupal/KernelTests/Core/Cache/EndOfTransactionQueriesTest.php, line 181

Class

EndOfTransactionQueriesTest
Tests delaying of cache tag invalidation queries to the end of transactions.

Namespace

Drupal\KernelTests\Core\Cache

Code

protected static function isStatementRelatedToTable(string $statement, string $tableName) : bool {
    $realTableIdentifier = Database::getConnection()->prefixTables('{' . $tableName . '}');
    $pattern = '/.*(INTO|FROM|UPDATE)( |\\n)' . preg_quote($realTableIdentifier, '/') . '/';
    return preg_match($pattern, $statement) === 1 ? TRUE : FALSE;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.