From b0a6099918f7e8631647575432ff133a4c111a8e Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Wed, 15 Apr 2009 13:30:17 +0000
Subject: [PATCH] - Patch #432128 by Berdir: adding some babysitting code to
 insert queries -- don't execute query when there are no values.

---
 includes/database/mysql/query.inc  | 5 +++++
 includes/database/pgsql/query.inc  | 5 +++++
 includes/database/query.inc        | 5 +++++
 includes/database/sqlite/query.inc | 4 ++++
 4 files changed, 19 insertions(+)

diff --git a/includes/database/mysql/query.inc b/includes/database/mysql/query.inc
index d5cb36505045..c9a3a51cec91 100644
--- a/includes/database/mysql/query.inc
+++ b/includes/database/mysql/query.inc
@@ -20,6 +20,11 @@ public function execute() {
       return NULL;
     }
 
+    // Don't execute query without values.
+    if (!isset($this->insertValues[0]) && count($this->insertFields) > 0) {
+      return NULL;
+    }
+
     $last_insert_id = 0;
 
     $max_placeholder = 0;
diff --git a/includes/database/pgsql/query.inc b/includes/database/pgsql/query.inc
index 98d412ae629e..a0f97b1b4628 100644
--- a/includes/database/pgsql/query.inc
+++ b/includes/database/pgsql/query.inc
@@ -24,6 +24,11 @@ public function execute() {
     if (count($this->insertFields) + count($this->defaultFields) == 0) {
       return NULL;
     }
+    
+    // Don't execute query without values.
+    if (!isset($this->insertValues[0]) && count($this->insertFields) > 0) {
+      return NULL;
+    }
 
     $stmt = $this->connection->prepareQuery((string)$this);
 
diff --git a/includes/database/query.inc b/includes/database/query.inc
index 226ab5a01ffe..8267d27c6ae2 100644
--- a/includes/database/query.inc
+++ b/includes/database/query.inc
@@ -428,6 +428,11 @@ public function execute() {
       return NULL;
     }
 
+    // Don't execute query without values.
+    if (!isset($this->insertValues[0]) && count($this->insertFields) > 0) {
+      return NULL;
+    }
+
     // Each insert happens in its own query in the degenerate case. However,
     // we wrap it in a transaction so that it is atomic where possible. On many
     // databases, such as SQLite, this is also a notable performance boost.
diff --git a/includes/database/sqlite/query.inc b/includes/database/sqlite/query.inc
index fb73d329760b..aff32802fc5d 100644
--- a/includes/database/sqlite/query.inc
+++ b/includes/database/sqlite/query.inc
@@ -19,6 +19,10 @@ public function execute() {
     if (count($this->insertFields) + count($this->defaultFields) == 0) {
       return NULL;
     }
+    // Don't execute query without values.
+    if (!isset($this->insertValues[0]) && count($this->insertFields) > 0) {
+      return NULL;
+    }
     if (count($this->insertFields)) {
       return parent::execute();
     }
-- 
GitLab