From f894091b7cba3adb111a4bb5c29661bf1a12f00b Mon Sep 17 00:00:00 2001
From: Jan Dittberner <jan@dittberner.info>
Date: Fri, 23 Oct 2009 13:21:02 +0200
Subject: [PATCH] patch for update 9 on PostgreSQL (fixes #383728)

---
 i18n.install |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/i18n.install b/i18n.install
index 5b1020d..e174389 100644
--- a/i18n.install
+++ b/i18n.install
@@ -77,10 +77,22 @@ function i18n_update_9() {
   }
   // Set module weight for it to run after core modules
   $items[] = update_sql("UPDATE {system} SET weight = 10 WHERE name = 'i18n' AND type = 'module'");
-  // Move node language and trid into node table
-  $items[] = update_sql("UPDATE {node} n INNER JOIN {i18n_node} i ON n.nid = i.nid SET n.language = i.language, n.tnid = i.trid");
-  // Upgrade tnid's so they match one of the nodes nid's to avoid future conflicts when translating existing nodes
-  $items[] = update_sql("UPDATE {node} n SET n.tnid = (SELECT MIN(i.nid) FROM {i18n_node} i WHERE i.trid = n.tnid) WHERE n.tnid > 0");
+  switch ($GLOBALS['db_type']) {
+  case 'mysql':
+  case 'mysqli':
+    // Move node language and trid into node table
+    $items[] = update_sql("UPDATE {node} n INNER JOIN {i18n_node} i ON n.nid = i.nid SET n.language = i.language, n.tnid = i.trid");
+    // Upgrade tnid's so they match one of the nodes nid's to avoid
+    // future conflicts when translating existing nodes
+    $items[] = update_sql("UPDATE {node} n SET n.tnid = (SELECT MIN(i.nid) FROM {i18n_node} i WHERE i.trid = n.tnid) WHERE n.tnid > 0");
+    break;
+  case 'pgsql':
+    // Move node language and trid into node table
+    $items[] = update_sql("UPDATE {node} SET language = {i18n_node}.language, tnid = {i18n_node}.trid FROM {i18n_node} WHERE {node}.nid = {i18n_node}.nid");
+    // Upgrade tnid's so they match one of the nodes nid's to avoid
+    // future conflicts when translating existing nodes
+    $items[] = update_sql("UPDATE {node} SET tnid = (SELECT MIN(i.nid) FROM {i18n_node} i WHERE i.trid = {node}.tnid) WHERE tnid > 0");
+  }
   return $items;
 }
 
-- 
1.6.3.3

