diff options
author | Dries Buytaert <dries@buytaert.net> | 2009-02-22 16:31:24 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2009-02-22 16:31:24 +0000 |
commit | e1652e99b61577ac42d6d6618420c872c0e42435 (patch) | |
tree | 23e8385467e826fd97ab434c5201d7a96a810567 /includes/database/query.inc | |
parent | 916b11afabacf5b7e142ce3fe370a24a80c15b3e (diff) | |
download | brdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.gz brdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.bz2 |
- Patch #374940 by Dave Reid et al: fixed MergeQuery problem.
Diffstat (limited to 'includes/database/query.inc')
-rw-r--r-- | includes/database/query.inc | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/includes/database/query.inc b/includes/database/query.inc index 9f8c1b991..7186c5a6a 100644 --- a/includes/database/query.inc +++ b/includes/database/query.inc @@ -676,14 +676,17 @@ class MergeQuery extends Query { unset($update_fields[$exclude_field]); } } - $update = $this->connection->update($this->table, $this->queryOptions)->fields($update_fields); - foreach ($this->keyFields as $field => $value) { - $update->condition($field, $value); - } - foreach ($this->expressionFields as $field => $expression) { - $update->expression($field, $expression['expression'], $expression['arguments']); + if ($update_fields || $this->expressionFields) { + // Only run the update if there are no fields or expressions to update. + $update = $this->connection->update($this->table, $this->queryOptions)->fields($update_fields); + foreach ($this->keyFields as $field => $value) { + $update->condition($field, $value); + } + foreach ($this->expressionFields as $field => $expression) { + $update->expression($field, $expression['expression'], $expression['arguments']); + } + $update->execute(); } - $update->execute(); } else { // If there is no existing record, run an insert query. |