Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
5 / 5 |
| Truncate | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
6 | |
100.00% |
5 / 5 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
| compile | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| compiled | |
100.00% |
1 / 1 |
1 | |
100.00% |
0 / 0 |
|||
| execute | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| __toString | |
100.00% |
1 / 1 |
2 | |
100.00% |
0 / 0 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Database\Query\Truncate. | |
| */ | |
| namespace Drupal\Core\Database\Query; | |
| use Drupal\Core\Database\Database; | |
| use Drupal\Core\Database\Connection; | |
| /** | |
| * General class for an abstracted TRUNCATE operation. | |
| */ | |
| class Truncate extends Query { | |
| /** | |
| * The table to truncate. | |
| * | |
| * @var string | |
| */ | |
| protected $table; | |
| /** | |
| * Constructs a Truncate query object. | |
| * | |
| * @param \Drupal\Core\Database\Connection $connection | |
| * A Connection object. | |
| * @param string $table | |
| * Name of the table to associate with this query. | |
| * @param array $options | |
| * Array of database options. | |
| */ | |
| public function __construct(Connection $connection, $table, array $options = array()) { | |
| $options['return'] = Database::RETURN_AFFECTED; | |
| parent::__construct($connection, $options); | |
| $this->table = $table; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function compile(Connection $connection, PlaceholderInterface $queryPlaceholder) { | |
| return $this->condition->compile($connection, $queryPlaceholder); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function compiled() { | |
| return $this->condition->compiled(); | |
| } | |
| /** | |
| * Executes the TRUNCATE query. | |
| * | |
| * @return | |
| * Return value is dependent on the database type. | |
| */ | |
| public function execute() { | |
| return $this->connection->query((string) $this, array(), $this->queryOptions); | |
| } | |
| /** | |
| * Implements PHP magic __toString method to convert the query to a string. | |
| * | |
| * @return string | |
| * The prepared statement. | |
| */ | |
| public function __toString() { | |
| // Create a sanitized comment string to prepend to the query. | |
| $comments = $this->connection->makeComment($this->comments); | |
| // In most cases, TRUNCATE is not a transaction safe statement as it is a | |
| // DDL statement which results in an implicit COMMIT. When we are in a | |
| // transaction, fallback to the slower, but transactional, DELETE. | |
| // PostgreSQL also locks the entire table for a TRUNCATE strongly reducing | |
| // the concurrency with other transactions. | |
| if ($this->connection->inTransaction()) { | |
| return $comments . 'DELETE FROM {' . $this->connection->escapeTable($this->table) . '}'; | |
| } | |
| else { | |
| return $comments . 'TRUNCATE {' . $this->connection->escapeTable($this->table) . '} '; | |
| } | |
| } | |
| } |