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