diff -u -r xmlsitemap.orig/docs/xmlsitemap.php xmlsitemap/docs/xmlsitemap.php
--- xmlsitemap.orig/docs/xmlsitemap.php	2007-11-21 17:33:11.000000000 +0100
+++ xmlsitemap/docs/xmlsitemap.php	2007-11-25 21:58:56.000000000 +0100
@@ -53,17 +53,35 @@
       break;
     case 'user':
       // Load profiles.
-      $result = db_query("
-        SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority), ua.dst AS alias
-        FROM {users} u
-        LEFT JOIN {users_roles} ur ON ur.uid = u.uid
-        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
-      ", _xmlsitemap_user_frontpage());
+      switch ($GLOBALS['db_type']) {
+        case 'mysql':
+        case 'mysqli':
+          $result = db_query("
+            SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority), ua.dst AS alias
+            FROM {users} u
+            LEFT JOIN {users_roles} ur ON ur.uid = u.uid
+            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
+          ", _xmlsitemap_user_frontpage());
+          break;
+        case 'pgsql':
+          $result = db_query("
+            SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority), ua.dst AS alias
+            FROM {users} u
+            LEFT JOIN {users_roles} ur ON ur.uid = u.uid
+            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, xu.last_changed, xu.previously_changed, xu.priority_override, ua.dst HAVING MIN(xur.priority) <> -1
+          ");
+          break;
+      }
       // Create link array for each profile.
       while ($user = db_fetch_object($result)) {
         $age = time() - $user->last_changed;
diff -u -r xmlsitemap.orig/xmlsitemap_node/xmlsitemap_node.install xmlsitemap/xmlsitemap_node/xmlsitemap_node.install
--- xmlsitemap.orig/xmlsitemap_node/xmlsitemap_node.install	2007-11-20 16:07:12.000000000 +0100
+++ xmlsitemap/xmlsitemap_node/xmlsitemap_node.install	2007-11-25 21:58:28.000000000 +0100
@@ -54,7 +54,7 @@
       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,26 +86,55 @@
   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("
-    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
-  ");
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      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("
+        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
+      ");
+      break;
+    case 'pgsql':
+      db_query("
+        UPDATE {xmlsitemap_node}
+        SET previously_changed = last_changed, last_changed = n.changed
+        FROM {node} n
+        WHERE {xmlsitemap_node}.nid = n.nid AND {xmlsitemap_node}.last_changed <> n.changed
+      ");
+      db_query("
+        UPDATE {xmlsitemap_node}
+        SET last_comment = s.last_comment_timestamp
+        FROM {node_comment_statistics} s
+        WHERE {xmlsitemap_node}.nid = s.nid
+      ");
+      db_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 = '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, ua.pid, n.changed, s.last_comment_timestamp
+      ");
+      break;
+  }
   xmlsitemap_update_sitemap();
 }
 
@@ -140,16 +169,33 @@
   }
   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
-    ");
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        $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
+        ");
+        break;
+      case 'pgsql':
+        $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 = '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, ua.pid, n.changed, s.last_comment_timestamp
+        ");
+        break;
+    }
     xmlsitemap_update_sitemap();
   }
   return $ret;
@@ -161,16 +207,33 @@
  */
 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
-  ");
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $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
+      ");
+      break;
+    case 'pgsql':
+      $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 = '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, ua.pid, n.changed, s.last_comment_timestamp
+      ");
+      break;
+  }
   xmlsitemap_update_sitemap();
   return $ret;
 }
@@ -194,7 +257,7 @@
     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)
+        WHERE {xmlsitemap_node}.pid IS NULL AND {url_alias}.src = 'node/' || {xmlsitemap_node}.nid
       ");
       $ret[] = update_sql("UPDATE {xmlsitemap_node} SET last_changed = {node}.changed FROM {node} WHERE {node}.nid = {xmlsitemap_node}.nid");
       break;
diff -u -r xmlsitemap.orig/xmlsitemap_node/xmlsitemap_node.module xmlsitemap/xmlsitemap_node/xmlsitemap_node.module
--- xmlsitemap.orig/xmlsitemap_node/xmlsitemap_node.module	2007-11-21 17:33:11.000000000 +0100
+++ xmlsitemap/xmlsitemap_node/xmlsitemap_node.module	2007-11-25 21:54:18.000000000 +0100
@@ -256,19 +256,41 @@
       break;
     case 'insert':
       $node->priority_override = isset($node->priority_override) ? $node->priority_override : 'NULL';
-      db_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)
-        LIMIT 0, 1
-      ", $node->nid, $node->changed, $node->priority_override, $node->nid);
+      switch ($GLOBALS['db_type']) {
+        case 'mysql':
+        case 'mysqli':
+          db_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)
+            LIMIT 0, 1
+          ", $node->nid, $node->changed, $node->priority_override, $node->nid);
+          break;
+        case 'pgsql':
+          db_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 = 'node/' || %d
+            LIMIT 0, 1
+          ", $node->nid, $node->changed, $node->priority_override, $node->nid);
+          break;
+      }
       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));
+      switch ($GLOBALS['db_type']) {
+        case 'mysql':
+        case 'mysqli':
+          $pid = db_result(db_query("SELECT pid FROM {url_alias} WHERE src = CONCAT('node/', %d)", $node->nid));
+          break;
+        case 'pgsql':
+          $pid = db_result(db_query("SELECT pid FROM {url_alias} WHERE src = 'node/' || %d", $node->nid));
+          break;
+      }
       $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));
@@ -342,16 +364,33 @@
  */
 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("
-      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
-    ");
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        db_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
+        ");
+        break;
+      case 'pgsql':
+        db_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 = '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, ua.pid, n.changed, s.last_comment_timestamp
+        ");
+        break;
+    }
     xmlsitemap_update_sitemap();
   }
 }
diff -u -r xmlsitemap.orig/xmlsitemap_term/xmlsitemap_term.install xmlsitemap/xmlsitemap_term/xmlsitemap_term.install
--- xmlsitemap.orig/xmlsitemap_term/xmlsitemap_term.install	2007-11-20 16:07:12.000000000 +0100
+++ xmlsitemap/xmlsitemap_term/xmlsitemap_term.install	2007-11-25 21:37:19.000000000 +0100
@@ -38,13 +38,27 @@
   if ($weight !== FALSE) {
     db_query("UPDATE {system} SET weight = %d WHERE type = 'module' AND name = 'xmlsitemap_term'", ++$weight);
   }
-  db_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
-    WHERE xt.tid IS NULL
-  ", time());
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      db_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
+        WHERE xt.tid IS NULL
+      ", time());
+      break;
+    case 'pgsql':
+      db_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 = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid
+        LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+        WHERE xt.tid IS NULL
+      ", time());
+      break;
+  }
   xmlsitemap_update_sitemap();
 }
 
@@ -87,8 +101,8 @@
         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;
diff -u -r xmlsitemap.orig/xmlsitemap_term/xmlsitemap_term.module xmlsitemap/xmlsitemap_term/xmlsitemap_term.module
--- xmlsitemap.orig/xmlsitemap_term/xmlsitemap_term.module	2007-11-19 23:13:25.000000000 +0100
+++ xmlsitemap/xmlsitemap_term/xmlsitemap_term.module	2007-11-25 22:15:09.000000000 +0100
@@ -51,15 +51,43 @@
  */
 function _xmlsitemap_term_links($excludes = array()) {
   $links = array();
-  $result = db_query(db_rewrite_sql("
-    SELECT td.*, v.module, xt.last_changed, xt.previously_changed, xt.priority_override, ua.dst AS alias
-    FROM {term_data} td
-    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)
-    AND td.tid <> %d
-  ", 'td', 'tid'), _xmlsitemap_term_frontpage());
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $result = db_query(db_rewrite_sql("
+        SELECT td.*, v.module, xt.last_changed, xt.previously_changed, xt.priority_override, ua.dst AS alias
+        FROM {term_data} td
+        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)
+        AND td.tid <> %d
+      ", 'td', 'tid'), _xmlsitemap_term_frontpage());
+      break;
+    case 'pgsql':
+      if (empty($excludes)) {
+        $result = db_query(db_rewrite_sql("
+          SELECT td.*, v.module, xt.last_changed, xt.previously_changed, xt.priority_override, ua.dst AS alias
+          FROM {term_data} td
+          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 xt.priority_override >= 0
+          AND td.tid <> %d
+        ", 'td', 'tid'), _xmlsitemap_term_frontpage());
+      } else {
+        $result = db_query(db_rewrite_sql("
+          SELECT td.*, v.module, xt.last_changed, xt.previously_changed, xt.priority_override, ua.dst AS alias
+          FROM {term_data} td
+          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)
+          AND td.tid <> %d
+        ", 'td', 'tid'), _xmlsitemap_term_frontpage());
+      }
+      break;
+  }
   while ($term = db_fetch_object($result)) {
     if ($term->module == 'forum') {
       $url = xmlsitemap_url("forum/$term->tid", $term->alias, NULL, NULL, TRUE);
@@ -230,13 +258,27 @@
  */
 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("
-      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
-      WHERE xt.tid IS NULL
-    ", time());
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        db_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
+          WHERE xt.tid IS NULL
+        ", time());
+        break;
+      case 'pgsql':
+        db_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 = 'taxonomy/term/' || td.tid OR ua.src = 'forum/' || td.tid
+          LEFT JOIN {xmlsitemap_term} xt ON xt.tid = td.tid
+          WHERE xt.tid IS NULL
+        ", time());
+        break;
+    }
     xmlsitemap_update_sitemap();
   }
 }
diff -u -r xmlsitemap.orig/xmlsitemap_user/xmlsitemap_user.install xmlsitemap/xmlsitemap_user/xmlsitemap_user.install
--- xmlsitemap.orig/xmlsitemap_user/xmlsitemap_user.install	2007-11-20 16:07:12.000000000 +0100
+++ xmlsitemap/xmlsitemap_user/xmlsitemap_user.install	2007-11-25 22:00:59.000000000 +0100
@@ -48,13 +48,27 @@
   if ($weight !== FALSE) {
     db_query("UPDATE {system} SET weight = %d WHERE type = 'module' AND name = 'xmlsitemap_user'", ++$weight);
   }
-  db_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
-    WHERE u.uid <> 0 AND xu.uid IS NULL
-  ", time());
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      db_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
+        WHERE u.uid <> 0 AND xu.uid IS NULL
+      ", time());
+      break;
+    case 'pgsql':
+      db_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 = 'user/' || u.uid
+        LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+        WHERE u.uid <> 0 AND xu.uid IS NULL
+      ", time());
+      break;
+  }
   db_query("
     INSERT INTO {xmlsitemap_user_role} (rid)
     SELECT r.rid FROM {role} r
@@ -96,7 +110,7 @@
     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;
   }
diff -u -r xmlsitemap.orig/xmlsitemap_user/xmlsitemap_user.module xmlsitemap/xmlsitemap_user/xmlsitemap_user.module
--- xmlsitemap.orig/xmlsitemap_user/xmlsitemap_user.module	2007-11-21 17:33:11.000000000 +0100
+++ xmlsitemap/xmlsitemap_user/xmlsitemap_user.module	2007-11-25 21:13:17.000000000 +0100
@@ -32,16 +32,33 @@
  */
 function _xmlsitemap_user_links() {
   $links = array();
-  $result = db_query("
-    SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority) as priority, ua.dst AS alias
-    FROM {users} u
-    LEFT JOIN {users_roles} ur ON ur.uid = u.uid
-    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 AND u.uid > 0
-    GROUP BY u.uid HAVING MIN(xur.priority) <> -1 OR COUNT(*) = 1 AND %f <> -1
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      $result = db_query("
+        SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority) as priority, ua.dst AS alias
+        FROM {users} u
+        LEFT JOIN {users_roles} ur ON ur.uid = u.uid
+        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 AND u.uid > 0
+        GROUP BY u.uid HAVING MIN(xur.priority) <> -1 OR COUNT(*) = 1 AND %f <> -1
   ", _xmlsitemap_user_frontpage(), variable_get('xmlsitemap_user_default_priority', 0.1));
+      break;
+    case 'pgsql':
+      $result = db_query("
+        SELECT u.uid, xu.last_changed, xu.previously_changed, xu.priority_override, SUM(xur.priority) as priority, ua.dst AS alias
+        FROM {users} u
+        LEFT JOIN {users_roles} ur ON ur.uid = u.uid
+        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 AND u.uid > 0
+        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));
+      break;
+  }
   while ($user = db_fetch_object($result)) {
     $age = time() - $user->last_changed;
     $interval = empty($user->previously_changed) ? 0 : $user->last_changed - $user->previously_changed;
@@ -236,13 +253,27 @@
  */
 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("
-      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
-      WHERE u.uid <> 0 AND xu.uid IS NULL
-    ", time());
+    switch ($GLOBALS['db_type']) {
+      case 'mysql':
+      case 'mysqli':
+        db_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
+          WHERE u.uid <> 0 AND xu.uid IS NULL
+        ", time());
+        break;
+      case 'pgsql':
+        db_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 = 'user/' || u.uid
+          LEFT JOIN {xmlsitemap_user} xu ON xu.uid = u.uid
+          WHERE u.uid <> 0 AND xu.uid IS NULL
+        ", time());
+        break;
+    }
     xmlsitemap_update_sitemap();
   }
 }
