function DeleteQuery_sqlite::execute

Overrides DeleteQuery::execute

File

includes/database/sqlite/query.inc, line 107

Class

DeleteQuery_sqlite
SQLite specific implementation of DeleteQuery.

Code

public function execute() {
    // When the WHERE is omitted from a DELETE statement and the table being
    // deleted has no triggers, SQLite uses an optimization to erase the entire
    // table content without having to visit each row of the table individually.
    // Prior to SQLite 3.6.5, SQLite does not return the actual number of rows
    // deleted by that optimized "truncate" optimization. But we want to return
    // the number of rows affected, so we calculate it directly.
    if (!count($this->condition)) {
        $total_rows = $this->connection
            ->query('SELECT COUNT(*) FROM {' . $this->connection
            ->escapeTable($this->table) . '}')
            ->fetchField();
        parent::execute();
        return $total_rows;
    }
    else {
        return parent::execute();
    }
}

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