From 75fad91cf544e9b6598fa30574290d6a6e73f033 Mon Sep 17 00:00:00 2001
From: Dries Buytaert <dries@buytaert.net>
Date: Mon, 29 Aug 2005 19:32:55 +0000
Subject: [PATCH]  - Patch #22911 by Cvgbe: fixed table locking in PostgreSQL. 
 You'll have to     use db_lock_table() and db_unlock_tables() for your code
 to be compatible.

---
 includes/database.mysql.inc | 15 +++++++++++++++
 includes/database.pgsql.inc | 16 ++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc
index f13636b90983..2f771d9e689a 100644
--- a/includes/database.mysql.inc
+++ b/includes/database.mysql.inc
@@ -269,6 +269,21 @@ function db_escape_string($text) {
   return addslashes($text);
 }
 
+/**
+ * Lock a table.
+ */
+function db_lock_table($table) {
+  db_query('LOCK TABLES {%s} WRITE', $table);
+}
+
+/**
+ * Unlock all locked tables.
+ */
+function db_unlock_tables() {
+  db_query('UNLOCK TABLES');
+}
+
+
 /**
  * @} End of "ingroup database".
  */
diff --git a/includes/database.pgsql.inc b/includes/database.pgsql.inc
index 12070dd304d6..33c960a20221 100644
--- a/includes/database.pgsql.inc
+++ b/includes/database.pgsql.inc
@@ -255,6 +255,22 @@ function db_escape_string($text) {
   return pg_escape_string($text);
 }
 
+/**
+ * Lock a table.
+ * This function automatically starts a transaction.
+ */
+function db_lock_table($table) {
+  db_query('BEGIN; LOCK TABLE {%s} IN EXCLUSIVE MODE', $table);
+}
+
+/**
+ * Unlock all locked tables.
+ * This function automatically commits a transation.
+ */
+function db_unlock_tables() {
+  db_query('COMMIT');
+}
+
 /**
  * @} End of "ingroup database".
  */
-- 
GitLab