Index: docs/xmlsitemap.php
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/xmlsitemap/docs/xmlsitemap.php,v
retrieving revision 1.2.2.1
diff -u -p -r1.2.2.1 xmlsitemap.php
--- docs/xmlsitemap.php	21 Nov 2007 16:33:11 -0000	1.2.2.1
+++ docs/xmlsitemap.php	26 Nov 2007 21:40:22 -0000
@@ -60,9 +60,9 @@ function hook_xmlsitemap_links($type = N
         LEFT JOIN {xmlsitemap_user_role} xur ON xur.rid = ur.rid
         LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
         LEFT JOIN {url_alias} ua ON ua.pid = xu.pid
-        WHERE (xu.priority_override IS NULL OR xu.priority_override >= 0)
-        AND u.uid <> %d
-        GROUP BY u.uid HAVING MIN(xur.priority) <> -1
+        WHERE (xu.priority_override IS NULL OR xu.priority_override >= 0) AND u.uid <> %d
+        GROUP BY u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, ua.dst
+        HAVING MIN(xur.priority) <> -1
       ", _xmlsitemap_user_frontpage());
       // Create link array for each profile.
       while ($user = db_fetch_object($result)) {
@@ -84,6 +84,7 @@ function hook_xmlsitemap_links($type = N
         $loc[$key] = $link['#loc'];
       }
       array_multisort($uid, $loc, $links);
+      break;
     case 'xml':
       // Retrieve an XML site map.
       $links = example_sitemap();
@@ -183,6 +184,7 @@ function hook_xmlsitemap_engines($op, $t
       if (strpos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') !== FALSE) {
         return t('!sitemap downloaded by Google.', array('!sitemap' => $type));
       }
+      break;
   }
 }
 
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.9
diff -u -p -r1.1.2.9 xmlsitemap_node.install
--- xmlsitemap_node/xmlsitemap_node.install	20 Nov 2007 15:07:12 -0000	1.1.2.9
+++ xmlsitemap_node/xmlsitemap_node.install	26 Nov 2007 21:40:22 -0000
@@ -54,7 +54,7 @@ function _xmlsitemap_node_gsitemap_repla
       case 'pgsql':
         db_query("
           UPDATE {xmlsitemap_node} SET pid = {url_alias}.pid FROM {url_alias}
-          WHERE {xmlsitemap_node}.pid IS NULL AND {url_alias}.src = CONCAT('node/', {xmlsitemap_node}.nid)
+          WHERE {xmlsitemap_node}.pid IS NULL AND {url_alias}.src = 'node/' || {xmlsitemap_node}.nid
         ");
         break;
     }
@@ -86,27 +86,54 @@ function xmlsitemap_node_enable() {
   if ($weight !== FALSE) {
     db_query("UPDATE {system} SET weight = %d WHERE type = 'module' AND name = 'xmlsitemap_node'", ++$weight);
   }
-  db_query("
-    UPDATE {xmlsitemap_node} xn, {node} n
-    SET xn.previously_changed = xn.last_changed, xn.last_changed = n.changed
-    WHERE xn.nid = n.nid AND xn.last_changed <> n.changed
-  ");
-  db_query("
-    UPDATE {xmlsitemap_node} xn, {node} n, {node_comment_statistics} s
-    SET xn.last_comment = s.last_comment_timestamp
-    WHERE xn.nid = s.nid
-  ");
-  db_query("
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      db_query("
+        UPDATE {xmlsitemap_node} xn INNER JOIN {node} n ON xn.nid = n.nid LEFT JOIN {node_comment_statistics} s ON s.nid = xn.nid
+        SET xn.previously_changed = xn.last_changed, xn.last_changed = n.changed, xn.last_comment = s.last_comment_timestamp
+        WHERE xn.nid = n.nid AND (xn.last_changed <> n.changed OR xn.last_comment <> s.last_comment_timestamp)
+      ");
+      break;
+    case 'pgsql':
+      db_query("
+        UPDATE {xmlsitemap_node} SET previously_changed = last_changed, last_changed = {node}.changed, last_comment = {node_comment_statistics}.last_comment_timestamp
+        FROM {node} LEFT JOIN {node_comment_statistics} ON {node_comment_statistics}.nid = nid
+        WHERE nid = {node}.nid AND (last_changed <> {node}.changed OR last_comment <> {node_comment_statistics}.last_comment_timestamp)
+      ");
+      break;
+  }
+  db_query(_xmlsitemap_node_insert_query());
+  xmlsitemap_update_sitemap();
+}
+
+/**
+ * Build SQL query for populating the xmlsitemap_node table.
+ * @return Query string
+ */
+function _xmlsitemap_node_insert_query() {
+  $query = "
     INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
     SELECT n.nid, ua.pid, 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
-    LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)
-    LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
-    WHERE xn.nid IS NULL AND (c.timestamp < s.last_comment_timestamp OR s.comment_count <= 1)
-    GROUP BY n.nid
-  ");
-  xmlsitemap_update_sitemap();
+    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";
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $query .= "
+        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)";
+      break;
+    case 'pgsql':
+      $query .= "
+        LEFT JOIN {url_alias} ua ON ua.src = 'node/' || n.nid";
+      break;
+  }
+  $query .= "
+    WHERE xn.nid IS NULL
+    GROUP BY n.nid, ua.pid, n.changed, s.last_comment_timestamp
+  ";
+  return $query;
 }
 
 /**
@@ -140,16 +167,7 @@ function xmlsitemap_node_update_1() {
   }
   if (!empty($bad_nids)) {
     $ret[] = update_sql("DELETE FROM {xmlsitemap_node} WHERE nid IN (". db_escape_string(implode(', ', $bad_nids)) .")");
-    $ret[] = update_sql("
-      INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
-      SELECT n.nid, ua.pid, 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
-      LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)
-      LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
-      WHERE xn.nid IS NULL AND (c.timestamp < s.last_comment_timestamp OR s.comment_count <= 1)
-      GROUP BY n.nid
-    ");
+    $ret[] = update_sql(_xmlsitemap_node_insert_query());
     xmlsitemap_update_sitemap();
   }
   return $ret;
@@ -160,17 +178,7 @@ function xmlsitemap_node_update_1() {
  * Add missing nodes.
  */
 function xmlsitemap_node_update_2() {
-  $ret = array();
-  $ret[] = update_sql("
-    INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
-    SELECT n.nid, ua.pid, 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
-    LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)
-    LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
-    WHERE xn.nid IS NULL AND (c.timestamp < s.last_comment_timestamp OR s.comment_count <= 1)
-    GROUP BY n.nid
-  ");
+  $ret = array(update_sql(_xmlsitemap_node_insert_query()));
   xmlsitemap_update_sitemap();
   return $ret;
 }
@@ -186,17 +194,19 @@ function xmlsitemap_node_update_3() {
     case 'mysql':
     case 'mysqli':
       $ret[] = update_sql("
-        UPDATE {xmlsitemap_node} xn, {url_alias} ua SET xn.pid = ua.pid
-        WHERE xn.pid IS NULL AND ua.src = CONCAT('node/', xn.nid)
+        UPDATE {xmlsitemap_node} xn
+        INNER JOIN {node} n ON n.nid = xn.nid
+        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', xn.nid) AND xn.pid IS NULL
+        SET xn.last_changed = n.changed, xn.pid = ua.pid
       ");
-      $ret[] = update_sql("UPDATE {xmlsitemap_node} xn, {node} n SET xn.last_changed = n.changed WHERE n.nid = xn.nid");
       break;
     case 'pgsql':
       $ret[] = update_sql("
-        UPDATE {xmlsitemap_node} SET pid = {url_alias}.pid FROM {url_alias}
-        WHERE {xmlsitemap_node}.pid IS NULL AND {url_alias}.src = CONCAT('node/', {xmlsitemap_node}.nid)
+        UPDATE {xmlsitemap_node}
+        SET pid = {url_alias}.pid, last_changed = {node}.changed
+        FROM {node} LEFT JOIN {url_alias} ON {url_alias}.src = 'node/' || nid AND pid IS NULL
+        WHERE {node}.nid = nid
       ");
-      $ret[] = update_sql("UPDATE {xmlsitemap_node} SET last_changed = {node}.changed FROM {node} WHERE {node}.nid = {xmlsitemap_node}.nid");
       break;
   }
   $ret = array_merge($ret, xmlsitemap_node_update_2());
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.10
diff -u -p -r1.1.2.10 xmlsitemap_node.module
--- xmlsitemap_node/xmlsitemap_node.module	21 Nov 2007 16:33:11 -0000	1.1.2.10
+++ xmlsitemap_node/xmlsitemap_node.module	26 Nov 2007 21:40:22 -0000
@@ -256,29 +256,51 @@ function xmlsitemap_node_nodeapi(&$node,
       break;
     case 'insert':
       $node->priority_override = isset($node->priority_override) ? $node->priority_override : 'NULL';
-      db_query("
+      $query = "
         INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, priority_override)
         SELECT %d, ua.pid, %d, %s
-        FROM {node} n
-        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', %d)
+        FROM {node} n";
+      switch ($GLOBALS['db_type']) {
+        case 'mysql':
+        case 'mysqli':
+          $query .= "
+            LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', %d)";
+          break;
+        case 'pgsql':
+          $query .= "
+            LEFT JOIN {url_alias} ua ON ua.src = 'node/' || %d";
+          break;
+      }
+      $query .= "
         LIMIT 0, 1
-      ", $node->nid, $node->changed, $node->priority_override, $node->nid);
+      ";
+      db_query($query, $node->nid, $node->changed, $node->priority_override, $node->nid);
       if ($node->status) {
         xmlsitemap_update_sitemap();
       }
       break;
     case 'update':
-      $pid = db_result(db_query("SELECT pid FROM {url_alias} WHERE src = CONCAT('node/', %d)", $node->nid));
-      $pid = empty($pid) ? 'NULL' : $pid;
       if (!isset($node->priority_override)) {
         $priority = db_result(db_query("SELECT priority_override FROM {xmlsitemap_node} WHERE nid = %d", $node->nid));
         $node->priority_override = isset($priority) && $priority !== FALSE ? $priority : 'NULL';
       }
-      db_query("
-        UPDATE {xmlsitemap_node}
-        SET pid = %s, previously_changed = last_changed, last_changed = %d, priority_override = %s
-        WHERE nid = %d
-      ", $pid, $node->changed, $node->priority_override, $node->nid);
+      switch ($GLOBALS['db_type']) {
+        case 'mysql':
+        case 'mysqli':
+          db_query("
+            UPDATE {xmlsitemap_node} xn LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', xn.nid)
+            SET xn.pid = ua.pid, xn.previously_changed = xn.last_changed, xn.last_changed = %d, xn.priority_override = %s
+            WHERE xn.nid = %d
+          ", $node->changed, $node->priority_override, $node->nid);
+          break;
+        case 'pgsql':
+          db_query("
+            UPDATE {xmlsitemap_node}
+            SET pid = {url_alias}.pid, previously_changed = last_changed, last_changed = %d, priority_override = %s
+            FROM {url_alias} WHERE nid = %d AND ({url_alias}.src = 'node/' || nid OR {url_alias}.src IS NULL)
+          ", $node->changed, $node->priority_override, $node->nid);
+          break;
+      }
       if ($node->status || $node->xmlsitemap_node_status) {
         xmlsitemap_update_sitemap();
       }
@@ -342,16 +364,28 @@ function xmlsitemap_node_node_type($op, 
  */
 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))) {
-    db_query("
+    $query = "
       INSERT INTO {xmlsitemap_node} (nid, pid, last_changed, last_comment, previous_comment)
       SELECT n.nid, ua.pid, 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
-      LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)
-      LEFT JOIN {xmlsitemap_node} xn ON xn.nid = n.nid
-      WHERE xn.nid IS NULL AND (c.timestamp < s.last_comment_timestamp OR s.comment_count <= 1)
-      GROUP BY 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";
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        $query .= "
+          LEFT JOIN {url_alias} ua ON ua.src = CONCAT('node/', n.nid)";
+        break;
+      case 'pgsql':
+        $query .= "
+          LEFT JOIN {url_alias} ua ON ua.src = 'node/' || n.nid";
+        break;
+    }
+    $query .= "
+      WHERE xn.nid IS NULL
+      GROUP BY n.nid, ua.pid, 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.2
diff -u -p -r1.1.2.2 xmlsitemap_term.install
--- xmlsitemap_term/xmlsitemap_term.install	20 Nov 2007 15:07:12 -0000	1.1.2.2
+++ xmlsitemap_term/xmlsitemap_term.install	26 Nov 2007 21:40:22 -0000
@@ -38,13 +38,25 @@ function xmlsitemap_term_enable() {
   if ($weight !== FALSE) {
     db_query("UPDATE {system} SET weight = %d WHERE type = 'module' AND name = 'xmlsitemap_term'", ++$weight);
   }
-  db_query("
+  $query = "
     INSERT INTO {xmlsitemap_term} (tid, last_changed, pid)
     SELECT td.tid, %d, ua.pid FROM {term_data} td
-    LEFT JOIN {url_alias} ua ON ua.src = CONCAT('taxonomy/term/', td.tid) OR ua.src = CONCAT('forum/', td.tid)
-    LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+    LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid";
+  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)";
+      break;
+    case 'pgsql':
+      $query .= "
+        LEFT JOIN {url_alias} ua ON ua.src = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid";
+      break;
+  }
+  $query .= "
     WHERE xt.tid IS NULL
-  ", time());
+  ";
+  db_query($query, time());
   xmlsitemap_update_sitemap();
 }
 
@@ -87,8 +99,8 @@ function xmlsitemap_term_update_1() {
         UPDATE {xmlsitemap_term} SET pid = {url_alias}.pid FROM {url_alias}
         WHERE {xmlsitemap_term}.pid IS NULL
         AND (
-          {url_alias}.src = CONCAT('taxonomy/term/', {xmlsitemap_term}.tid)
-          OR {url_alias}.src = CONCAT('forum/', {xmlsitemap_term}.tid)
+          {url_alias}.src = 'taxonomy/term/' || {xmlsitemap_term}.tid
+          OR {url_alias}.src = 'forum/' || {xmlsitemap_term}.tid
         )
       ");
       break;
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.4
diff -u -p -r1.1.2.4 xmlsitemap_term.module
--- xmlsitemap_term/xmlsitemap_term.module	19 Nov 2007 22:13:25 -0000	1.1.2.4
+++ xmlsitemap_term/xmlsitemap_term.module	26 Nov 2007 21:40:23 -0000
@@ -57,7 +57,7 @@ function _xmlsitemap_term_links($exclude
     LEFT JOIN {vocabulary} v ON v.vid = td.vid
     LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
     LEFT JOIN {url_alias} ua ON ua.pid = xt.pid
-    WHERE (td.vid NOT IN ('". implode("', '", $excludes) ."') OR xt.priority_override >= 0)
+    WHERE (td.vid NOT IN (". (empty($excludes) ? 'NULL' : implode(', ', $excludes)) .") OR xt.priority_override >= 0)
     AND td.tid <> %d
   ", 'td', 'tid'), _xmlsitemap_term_frontpage());
   while ($term = db_fetch_object($result)) {
@@ -230,13 +230,25 @@ function xmlsitemap_term_taxonomy($op, $
  */
 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))) {
-    db_query("
+    $query = "
       INSERT INTO {xmlsitemap_term} (tid, last_changed, pid)
       SELECT td.tid, %d, ua.pid FROM {term_data} td
-      LEFT JOIN {url_alias} ua ON ua.src = CONCAT('taxonomy/term/', td.tid) OR ua.src = CONCAT('forum/', td.tid)
-      LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+      LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid";
+    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)";
+        break;
+      case 'pgsql':
+        $query .= "
+          LEFT JOIN {url_alias} ua ON ua.src = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid";
+        break;
+    }
+    $query .= "
       WHERE xt.tid IS NULL
-    ", time());
+    ";
+    db_query($query, time());
     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.3
diff -u -p -r1.1.2.3 xmlsitemap_user.install
--- xmlsitemap_user/xmlsitemap_user.install	20 Nov 2007 15:07:12 -0000	1.1.2.3
+++ xmlsitemap_user/xmlsitemap_user.install	26 Nov 2007 21:40:23 -0000
@@ -48,13 +48,25 @@ function xmlsitemap_user_enable() {
   if ($weight !== FALSE) {
     db_query("UPDATE {system} SET weight = %d WHERE type = 'module' AND name = 'xmlsitemap_user'", ++$weight);
   }
-  db_query("
+  $query = "
     INSERT INTO {xmlsitemap_user} (uid, last_changed, pid)
     SELECT u.uid, u.created, ua.pid FROM {users} u
-    LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)
-    LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+    LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid";
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $query .= "
+        LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)";
+      break;
+    case 'pgsql':
+      $query .= "
+        LEFT JOIN {url_alias} ua ON ua.src = 'user/' || u.uid";
+      break;
+  }
+  $query .= "
     WHERE u.uid <> 0 AND xu.uid IS NULL
-  ", time());
+  ";
+  db_query($query, time());
   db_query("
     INSERT INTO {xmlsitemap_user_role} (rid)
     SELECT r.rid FROM {role} r
@@ -96,7 +108,7 @@ function xmlsitemap_user_update_1() {
     case 'pgsql':
       $ret[] = update_sql("
         UPDATE {xmlsitemap_user} SET pid = {url_alias}.pid FROM {url_alias}
-        WHERE {xmlsitemap_user}.pid IS NULL AND ua.src = CONCAT('user/', {xmlsitemap_user}.uid)
+        WHERE {xmlsitemap_user}.pid IS NULL AND ua.src = 'user/' || {xmlsitemap_user}.uid
       ");
       break;
   }
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.6
diff -u -p -r1.1.2.6 xmlsitemap_user.module
--- xmlsitemap_user/xmlsitemap_user.module	21 Nov 2007 16:33:11 -0000	1.1.2.6
+++ xmlsitemap_user/xmlsitemap_user.module	26 Nov 2007 21:40:23 -0000
@@ -40,7 +40,8 @@ function _xmlsitemap_user_links() {
     LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
     LEFT JOIN {url_alias} ua ON ua.pid = xu.pid
     WHERE (xu.priority_override IS NULL OR xu.priority_override >= 0) AND u.uid <> %d AND u.uid > 0
-    GROUP BY u.uid HAVING MIN(xur.priority) <> -1 OR COUNT(*) = 1 AND %f <> -1
+    GROUP BY u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, alias
+    HAVING MIN(xur.priority) <> -1 OR COUNT(*) = 1 AND %f <> -1
   ", _xmlsitemap_user_frontpage(), variable_get('xmlsitemap_user_default_priority', 0.1));
   while ($user = db_fetch_object($result)) {
     $age = time() - $user->last_changed;
@@ -236,13 +237,25 @@ function xmlsitemap_user_user($op, &$edi
  */
 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))) {
-    db_query("
+    $query = "
       INSERT INTO {xmlsitemap_user} (uid, last_changed, pid)
       SELECT u.uid, u.created, ua.pid FROM {users} u
-      LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)
-      LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+      LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid";
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        $query .= "
+          LEFT JOIN {url_alias} ua ON ua.src = CONCAT('user/', u.uid)";
+        break;
+      case 'pgsql':
+        $query .= "
+          LEFT JOIN {url_alias} ua ON ua.src = 'user/' || u.uid";
+        break;
+    }
+    $query .= "
       WHERE u.uid <> 0 AND xu.uid IS NULL
-    ", time());
+    ";
+    db_query($query, time());
     xmlsitemap_update_sitemap();
   }
 }
