summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2005-08-29 19:32:55 +0000
committerDries Buytaert <dries@buytaert.net>2005-08-29 19:32:55 +0000
commit75fad91cf544e9b6598fa30574290d6a6e73f033 (patch)
tree39b033a0c93e9bb59f9fee6cfa112d087e0bb557
parent8ae8865abca6f118808ec56223f6741b8444bbe5 (diff)
downloadbrdo-75fad91cf544e9b6598fa30574290d6a6e73f033.tar.gz
brdo-75fad91cf544e9b6598fa30574290d6a6e73f033.tar.bz2
- 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.
-rw-r--r--includes/database.mysql.inc15
-rw-r--r--includes/database.pgsql.inc16
2 files changed, 31 insertions, 0 deletions
diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc
index f13636b90..2f771d9e6 100644
--- a/includes/database.mysql.inc
+++ b/includes/database.mysql.inc
@@ -270,6 +270,21 @@ function db_escape_string($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 12070dd30..33c960a20 100644
--- a/includes/database.pgsql.inc
+++ b/includes/database.pgsql.inc
@@ -256,6 +256,22 @@ function db_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".
*/