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