From 9d6182d8d00b99a608b49ae47a5ccd03187802fe Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Sun, 11 Oct 2009 13:43:37 +0000
Subject: - Patch #597556 by Berdir: return status to indicate executed query
 in MergeQuery::execute().

---
 includes/database/mysql/query.inc | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

(limited to 'includes/database/mysql')

diff --git a/includes/database/mysql/query.inc b/includes/database/mysql/query.inc
index 09878f96d..7ea48c8ac 100644
--- a/includes/database/mysql/query.inc
+++ b/includes/database/mysql/query.inc
@@ -133,9 +133,14 @@ class MergeQuery_mysql extends MergeQuery {
       $values[':db_update_placeholder_' . ($max_placeholder++)] = $value;
     }
 
-    $last_insert_id = $this->connection->query((string)$this, $values, $this->queryOptions);
 
-    return $last_insert_id;
+    // MySQL's INSERT ... ON DUPLICATE KEY UPDATE queries return 1
+    // (MergeQuery::STATUS_INSERT) for an INSERT operation or 2
+    // (MergeQuery::STATUS_UPDATE) for an UPDATE operation.
+    //
+    // @link http ://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html
+    $this->queryOptions['return'] = Database::RETURN_AFFECTED;
+    return $this->connection->query((string)$this, $values, $this->queryOptions);
   }
 
 
-- 
cgit v1.2.3