? split_update.patch
Index: xmlsitemap_node/xmlsitemap_node.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.install,v
retrieving revision 1.1.2.12
diff -u -p -r1.1.2.12 xmlsitemap_node.install
--- xmlsitemap_node/xmlsitemap_node.install	8 Jan 2008 05:13:27 -0000	1.1.2.12
+++ xmlsitemap_node/xmlsitemap_node.install	19 Jan 2008 23:48:23 -0000
@@ -107,6 +107,7 @@ function xmlsitemap_node_enable() {
       break;
   }
   db_query(_xmlsitemap_node_insert_query());
+  db_query(_xmlsitemap_node_updatepid_query());
   xmlsitemap_update_sitemap();
 }
 
@@ -115,27 +116,41 @@ function xmlsitemap_node_enable() {
  * @return Query string
  */
 function _xmlsitemap_node_insert_query() {
-  $query = "
+  return "
     INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
-    SELECT n.nid, MAX(ua.pid), n.changed, s.last_comment_timestamp, MAX(c.timestamp) FROM {node} n
+    SELECT n.nid, 0, n.changed, s.last_comment_timestamp, MAX(c.timestamp) FROM {node} n
     LEFT JOIN {node_comment_statistics} s ON s.nid = n.nid
     LEFT OUTER JOIN {comments} c ON c.nid = n.nid AND c.timestamp < s.last_comment_timestamp
-    LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid";
+    LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
+    WHERE xn.nid IS NULL
+    GROUP BY n.nid, n.changed, s.last_comment_timestamp
+  ";
+}
+
+/**
+ * Build SQL query for updating pids in xmlsitemap_node table.
+ * @return Query string
+ */
+function _xmlsitemap_node_updatepid_query() {
   switch ($GLOBALS['db_type']) {
     case 'mysql':
     case 'mysqli':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)";
+      $query = "
+        UPDATE {xmlsitemap_node} xn INNER JOIN {url_alias} ua ON
+        ua.src = CONCAT('node/', xn.nid)
+        SET xn.pid = ua.pid
+        WHERE xn.pid = 0
+      ";
       break;
     case 'pgsql':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = 'node/' || n.nid";
+      $query = "
+        UPDATE {xmlsitemap_node} xn
+        SET pid = {url_alias}.pid
+        FROM {url_alias} ua
+        WHERE ua.src = 'node/' || xn.nid AND xn.pid = 0
+      ";
       break;
   }
-  $query .= "
-    WHERE xn.nid IS NULL
-    GROUP BY n.nid, n.changed, s.last_comment_timestamp
-  ";
   return $query;
 }
 
Index: xmlsitemap_node/xmlsitemap_node.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_node/xmlsitemap_node.module,v
retrieving revision 1.1.2.15
diff -u -p -r1.1.2.15 xmlsitemap_node.module
--- xmlsitemap_node/xmlsitemap_node.module	8 Jan 2008 05:13:28 -0000	1.1.2.15
+++ xmlsitemap_node/xmlsitemap_node.module	19 Jan 2008 23:48:23 -0000
@@ -366,27 +366,34 @@ function xmlsitemap_node_cron() {
   if (db_result(db_query_range("SELECT COUNT(*) FROM {node} n LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid WHERE xn.nid IS NULL", 0, 1))) {
     $query = "
       INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
-      SELECT n.nid, MAX(ua.pid), n.changed, s.last_comment_timestamp, MAX(c.timestamp) FROM {node} n
+      SELECT n.nid, 0, n.changed, s.last_comment_timestamp, MAX(c.timestamp) FROM {node} n
       LEFT JOIN {node_comment_statistics} s ON s.nid = n.nid
       LEFT OUTER JOIN {comments} c ON c.nid = n.nid AND c.timestamp < s.last_comment_timestamp
-      LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid";
+      LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
+      WHERE xn.nid IS NULL
+      GROUP BY n.nid, n.changed, s.last_comment_timestamp
+    ";
+    db_query($query);
     switch ($GLOBALS['db_type']) {
       case 'mysql':
       case 'mysqli':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)";
+        $query = "
+          UPDATE {xmlsitemap_node} xn INNER JOIN {url_alias} ua ON
+          ua.src = CONCAT('node/', xn.nid)
+          SET xn.pid = ua.pid
+          WHERE xn.pid = 0
+        ";
         break;
       case 'pgsql':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = 'node/' || n.nid";
+        $query = "
+          UPDATE {xmlsitemap_node} xn
+          SET pid = {url_alias}.pid
+          FROM {url_alias} ua
+          WHERE {url_alias}.src = 'node/' || xn.nid AND xn.pid = 0
+        ";
         break;
     }
-    $query .= "
-      WHERE xn.nid IS NULL
-      GROUP BY n.nid, n.changed, s.last_comment_timestamp
-    ";
     db_query($query);
     xmlsitemap_update_sitemap();
   }
 }
-
Index: xmlsitemap_term/xmlsitemap_term.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_term/xmlsitemap_term.install,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 xmlsitemap_term.install
--- xmlsitemap_term/xmlsitemap_term.install	6 Dec 2007 17:22:21 -0000	1.1.2.3
+++ xmlsitemap_term/xmlsitemap_term.install	19 Jan 2008 23:48:23 -0000
@@ -40,23 +40,32 @@ function xmlsitemap_term_enable() {
   }
   $query = "
     INSERT INTO {xmlsitemap_term} (tid, last_changed, pid)
-    SELECT td.tid, %d, ua.pid FROM {term_data} td
-    LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid";
+    SELECT td.tid, %d, 0 FROM {term_data} td
+    LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+    WHERE xt.tid IS NULL
+  ";
+  db_query($query, time());
   switch ($GLOBALS['db_type']) {
     case 'mysql':
     case 'mysqli':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('taxonomy/term/', td.tid) OR ua.src = CONCAT('forum/', td.tid)";
+      $query = "
+        UPDATE {xmlsitemap_term} xt INNER JOIN {url_alias} ua ON
+        ua.src = CONCAT('taxonomy/term/', xt.tid) OR ua.src = CONCAT('forum/', xt.tid)
+        SET xt.pid = ua.pid
+        WHERE xt.pid = 0
+      ";
       break;
     case 'pgsql':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid";
+      $query = "
+        UPDATE {xmlsitemap_term} xt
+        SET pid = {url_alias}.pid
+        FROM {url_alias} ua
+        WHERE ua.src = 'taxonomy/term/' || xt.tid
+          OR ua.src = 'forum/' || xt.tid AND xt.pid = 0
+      ";
       break;
   }
-  $query .= "
-    WHERE xt.tid IS NULL
-  ";
-  db_query($query, time());
+  db_query($query);
   xmlsitemap_update_sitemap();
 }
 
Index: xmlsitemap_term/xmlsitemap_term.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_term/xmlsitemap_term.module,v
retrieving revision 1.1.2.8
diff -u -p -r1.1.2.8 xmlsitemap_term.module
--- xmlsitemap_term/xmlsitemap_term.module	13 Dec 2007 02:18:30 -0000	1.1.2.8
+++ xmlsitemap_term/xmlsitemap_term.module	19 Jan 2008 23:48:24 -0000
@@ -232,23 +232,32 @@ function xmlsitemap_term_cron() {
   if (db_result(db_query_range("SELECT COUNT(*) FROM {term_data} td LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid WHERE xt.tid IS NULL", 0, 1))) {
     $query = "
       INSERT INTO {xmlsitemap_term} (tid, last_changed, pid)
-      SELECT td.tid, %d, ua.pid FROM {term_data} td
-      LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid";
+      SELECT td.tid, %d, 0 FROM {term_data} td
+      LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+      WHERE xt.tid IS NULL
+    ";
+    db_query($query, time());
     switch ($GLOBALS['db_type']) {
       case 'mysql':
       case 'mysqli':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = CONCAT('taxonomy/term/', td.tid) OR ua.src = CONCAT('forum/', td.tid)";
+        $query = "
+          UPDATE {xmlsitemap_term} xt INNER JOIN {url_alias} ua ON
+          ua.src = CONCAT('taxonomy/term/', xt.tid) OR ua.src = CONCAT('forum/', xt.tid)
+          SET xt.pid = ua.pid
+          WHERE xt.pid = 0
+        ";
         break;
       case 'pgsql':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid";
+        $query = "
+          UPDATE {xmlsitemap_term} xt
+          SET pid = {url_alias}.pid
+          FROM {url_alias} ua
+          WHERE ua.src = 'taxonomy/term/' || xt.tid
+            OR ua.src = 'forum/' || xt.tid AND xt.pid = 0
+        ";
         break;
     }
-    $query .= "
-      WHERE xt.tid IS NULL
-    ";
-    db_query($query, time());
+    db_query($query);
     xmlsitemap_update_sitemap();
   }
 }
Index: xmlsitemap_user/xmlsitemap_user.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_user/xmlsitemap_user.install,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 xmlsitemap_user.install
--- xmlsitemap_user/xmlsitemap_user.install	6 Dec 2007 17:22:22 -0000	1.1.2.4
+++ xmlsitemap_user/xmlsitemap_user.install	19 Jan 2008 23:48:24 -0000
@@ -50,23 +50,30 @@ function xmlsitemap_user_enable() {
   }
   $query = "
     INSERT INTO {xmlsitemap_user} (uid, last_changed, pid)
-    SELECT u.uid, u.created, ua.pid FROM {users} u
-    LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid";
+    SELECT u.uid, u.created, 0 FROM {users} u
+    LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+    WHERE u.uid <> 0 AND xu.uid IS NULL
+  ";
+  db_query($query, time());
   switch ($GLOBALS['db_type']) {
     case 'mysql':
     case 'mysqli':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)";
+      $query = "
+        UPDATE {xmlsitemap_user} xu INNER JOIN {url_alias} ua ON
+        ua.src = CONCAT('user/', xu.uid)
+        SET xu.pid = ua.pid
+        WHERE xu.pid = 0
+        ";
       break;
     case 'pgsql':
-      $query .= "
-        LEFT JOIN {url_alias} ua ON ua.src = 'user/' || u.uid";
+      $query = "
+        UPDATE {xmlsitemap_user} xu
+        SET pid = {url_alias}.pid
+        FROM {url_alias} ua WHERE ua.src = 'user/' || xu.uid AND xu.pid = 0
+      ";
       break;
   }
-  $query .= "
-    WHERE u.uid <> 0 AND xu.uid IS NULL
-  ";
-  db_query($query, time());
+  db_query($query);
   db_query("
     INSERT INTO {xmlsitemap_user_role} (rid)
     SELECT r.rid FROM {role} r
Index: xmlsitemap_user/xmlsitemap_user.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/xmlsitemap_user/xmlsitemap_user.module,v
retrieving revision 1.1.2.10
diff -u -p -r1.1.2.10 xmlsitemap_user.module
--- xmlsitemap_user/xmlsitemap_user.module	10 Dec 2007 03:15:12 -0000	1.1.2.10
+++ xmlsitemap_user/xmlsitemap_user.module	19 Jan 2008 23:48:24 -0000
@@ -240,24 +240,30 @@ function xmlsitemap_user_cron() {
   if (db_result(db_query_range("SELECT COUNT(*) FROM {users} u LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid WHERE u.uid <> 0 AND xu.uid IS NULL", 0, 1))) {
     $query = "
       INSERT INTO {xmlsitemap_user} (uid, last_changed, pid)
-      SELECT u.uid, u.created, ua.pid FROM {users} u
-      LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid";
+      SELECT u.uid, u.created, 0 FROM {users} u
+      LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+      WHERE u.uid <> 0 AND xu.uid IS NULL
+    ";
+    db_query($query, time());
     switch ($GLOBALS['db_type']) {
       case 'mysql':
       case 'mysqli':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)";
+        $query = "
+          UPDATE {xmlsitemap_user} xu INNER JOIN {url_alias} ua ON
+          ua.src = CONCAT('user/', xu.uid)
+          SET xu.pid = ua.pid
+          WHERE xu.pid = 0
+          ";
         break;
       case 'pgsql':
-        $query .= "
-          LEFT JOIN {url_alias} ua ON ua.src = 'user/' || u.uid";
+        $query = "
+          UPDATE {xmlsitemap_user} xu
+          SET pid = {url_alias}.pid
+          FROM {url_alias} ua WHERE ua.src = 'user/' || xu.uid AND xu.pid = 0
+        ";
         break;
     }
-    $query .= "
-      WHERE u.uid <> 0 AND xu.uid IS NULL
-    ";
-    db_query($query, time());
+    db_query($query);
     xmlsitemap_update_sitemap();
   }
 }
-
