You are here

public function SqlsrvTest::testParameterLimit in Drupal driver for SQL Server and SQL Azure 8.2

Same name and namespace in other branches
  1. 4.2.x tests/src/Kernel/SqlsrvTest.php \Drupal\Tests\sqlsrv\Kernel\SqlsrvTest::testParameterLimit()
  2. 3.0.x tests/src/Kernel/SqlsrvTest.php \Drupal\Tests\sqlsrv\Kernel\SqlsrvTest::testParameterLimit()
  3. 3.1.x tests/src/Kernel/SqlsrvTest.php \Drupal\Tests\sqlsrv\Kernel\SqlsrvTest::testParameterLimit()
  4. 4.0.x tests/src/Kernel/SqlsrvTest.php \Drupal\Tests\sqlsrv\Kernel\SqlsrvTest::testParameterLimit()
  5. 4.1.x tests/src/Kernel/SqlsrvTest.php \Drupal\Tests\sqlsrv\Kernel\SqlsrvTest::testParameterLimit()

Test the 2100 parameter limit per query.

File

tests/src/Kernel/SqlsrvTest.php, line 22

Class

SqlsrvTest
Test behavior that is unique to the Sql Server Driver.

Namespace

Drupal\Tests\sqlsrv\Kernel

Code

public function testParameterLimit() {
  $values = [];
  for ($x = 0; $x < 2200; $x++) {
    $values[] = uniqid(strval($x), TRUE);
  }
  $query = $this->connection
    ->select('test_task', 't');
  $query
    ->addExpression('COUNT(task)', 'num');
  $query
    ->where('t.task IN (:data)', [
    ':data' => $values,
  ]);
  $result = NULL;

  // If > 2100 we can get SQL Exception! The driver must handle that.
  try {
    $result = $query
      ->execute()
      ->fetchField();
  } catch (\Exception $err) {
  }
  $this
    ->assertEqual($result, 0, 'Returned the correct number of total rows.');
}