class UpdateQuery_sqlite

SQLite specific implementation of UpdateQuery.

SQLite counts all the rows that match the conditions as modified, even if they will not be affected by the query. We workaround this by ensuring that we don't select those rows.

A query like this one: UPDATE test SET col1 = 'newcol1', col2 = 'newcol2' WHERE tid = 1 will become: UPDATE test SET col1 = 'newcol1', col2 = 'newcol2' WHERE tid = 1 AND (col1 <> 'newcol1' OR col2 <> 'newcol2')

Hierarchy

Expanded class hierarchy of UpdateQuery_sqlite

Related topics

File

drupal/includes/database/sqlite/query.inc, line 65
Query code for SQLite embedded database engine.

View source
class UpdateQuery_sqlite extends UpdateQuery {
  public function execute() {
    if (!empty($this->queryOptions['sqlite_return_matched_rows'])) {
      return parent::execute();
    }

    // Get the fields used in the update query.
    $fields = $this->expressionFields + $this->fields;

    // Add the inverse of the fields to the condition.
    $condition = new DatabaseCondition('OR');
    foreach ($fields as $field => $data) {
      if (is_array($data)) {

        // The field is an expression.
        $condition
          ->where($field . ' <> ' . $data['expression']);
        $condition
          ->isNull($field);
      }
      elseif (!isset($data)) {

        // The field will be set to NULL.
        $condition
          ->isNotNull($field);
      }
      else {
        $condition
          ->condition($field, $data, '<>');
        $condition
          ->isNull($field);
      }
    }
    if (count($condition)) {
      $condition
        ->compile($this->connection, $this);
      $this->condition
        ->where((string) $condition, $condition
        ->arguments());
    }
    return parent::execute();
  }

}

Members

Name Modifierssort descending Type Description Overrides
UpdateQuery::$table protected property The table to update.
UpdateQuery::$fields protected property An array of fields that will be updated.
UpdateQuery::$arguments protected property An array of values to update to.
UpdateQuery::$condition protected property The condition object for this query.
UpdateQuery::$expressionFields protected property Array of fields to update to an expression in case of a duplicate record.
Query::$connection protected property The connection object on which to run this query.
Query::$connectionTarget protected property The target of the connection object.
Query::$connectionKey protected property The key of the connection object.
Query::$queryOptions protected property The query options to pass on to the connection object.
Query::$uniqueIdentifier protected property A unique identifier for this query object.
Query::$nextPlaceholder protected property The placeholder counter.
Query::$comments protected property An array of comments that can be prepended to a query.
UpdateQuery_sqlite::execute public function Executes the UPDATE query. Overrides UpdateQuery::execute
UpdateQuery::__construct public function Constructs an UpdateQuery object. Overrides Query::__construct
UpdateQuery::condition public function Implements QueryConditionInterface::condition(). Overrides QueryConditionInterface::condition
UpdateQuery::isNull public function Implements QueryConditionInterface::isNull(). Overrides QueryConditionInterface::isNull
UpdateQuery::isNotNull public function Implements QueryConditionInterface::isNotNull(). Overrides QueryConditionInterface::isNotNull
UpdateQuery::exists public function Implements QueryConditionInterface::exists(). Overrides QueryConditionInterface::exists
UpdateQuery::notExists public function Implements QueryConditionInterface::notExists(). Overrides QueryConditionInterface::notExists
UpdateQuery::conditions public function Implements QueryConditionInterface::conditions(). Overrides QueryConditionInterface::conditions
UpdateQuery::arguments public function Implements QueryConditionInterface::arguments(). Overrides QueryConditionInterface::arguments
UpdateQuery::where public function Implements QueryConditionInterface::where(). Overrides QueryConditionInterface::where
UpdateQuery::compile public function Implements QueryConditionInterface::compile(). Overrides QueryConditionInterface::compile
UpdateQuery::compiled public function Implements QueryConditionInterface::compiled(). Overrides QueryConditionInterface::compiled
UpdateQuery::fields public function Adds a set of field->value pairs to be updated.
UpdateQuery::expression public function Specifies fields to be updated as an expression.
UpdateQuery::__toString public function Implements PHP magic __toString method to convert the query to a string. Overrides Query::__toString
Query::__sleep public function Implements the magic __sleep function to disconnect from the database.
Query::__wakeup public function Implements the magic __wakeup function to reconnect to the database.
Query::__clone public function Implements the magic __clone function. 1
Query::uniqueIdentifier public function Returns a unique identifier for this object. Overrides QueryPlaceholderInterface::uniqueIdentifier
Query::nextPlaceholder public function Gets the next placeholder value for this query object. Overrides QueryPlaceholderInterface::nextPlaceholder
Query::comment public function Adds a comment to the query.
Query::getComments public function Returns a reference to the comments array for the query.