summaryrefslogtreecommitdiff
path: root/includes/database/mysql
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-02-22 16:31:24 +0000
committerDries Buytaert <dries@buytaert.net>2009-02-22 16:31:24 +0000
commite1652e99b61577ac42d6d6618420c872c0e42435 (patch)
tree23e8385467e826fd97ab434c5201d7a96a810567 /includes/database/mysql
parent916b11afabacf5b7e142ce3fe370a24a80c15b3e (diff)
downloadbrdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.gz
brdo-e1652e99b61577ac42d6d6618420c872c0e42435.tar.bz2
- Patch #374940 by Dave Reid et al: fixed MergeQuery problem.
Diffstat (limited to 'includes/database/mysql')
-rw-r--r--includes/database/mysql/query.inc6
1 files changed, 6 insertions, 0 deletions
diff --git a/includes/database/mysql/query.inc b/includes/database/mysql/query.inc
index 751137602..d5cb36505 100644
--- a/includes/database/mysql/query.inc
+++ b/includes/database/mysql/query.inc
@@ -143,6 +143,12 @@ class MergeQuery_mysql extends MergeQuery {
}
}
+ // If the merge query has no fields to update, add the first key as an
+ // update field so the query will not fail if a duplicate key is found.
+ if (!$update_fields && !$this->expressionFields) {
+ $update_fields = array_slice($this->keyFields, 0, 1, TRUE);
+ }
+
$insert_fields = $this->insertFields + $this->keyFields;
$query = "INSERT INTO {" . $this->table . '} (' . implode(', ', array_keys($insert_fields)) . ') VALUES ';