--- archive.pages.inc.orig	Thu Jun 05 10:17:09 2008
+++ archive.pages.inc	Thu Jun 05 11:33:13 2008
@@ -174,10 +174,16 @@
     $end = 0;
   }
   if ($start && $end) {
-    $result = db_query(db_rewrite_sql('SELECT t.type, t.name, COUNT(n.nid) AS node_count FROM {node} n INNER JOIN {node_type} t ON t.type = n.type WHERE n.status = 1 AND t.type IN ("'. join($types, '", "') .'") AND n.created BETWEEN %d AND %d GROUP BY n.type ORDER BY n.created'), $start - $date->tz, $end - $date->tz);
+    $result = db_query(db_rewrite_sql("SELECT t.type, t.name, COUNT(n.nid) AS node_count FROM {node} n INNER JOIN {node_type} t ON t.type = n.type WHERE n.status = 1 AND t.type IN ('". join($types, "', '") ."') AND n.created BETWEEN %d AND %d GROUP BY n.type ORDER BY n.created"), $start - $date->tz, $end - $date->tz);
   }
   else {
-    $result = db_query(db_rewrite_sql('SELECT t.type, t.name, COUNT(n.nid) AS node_count FROM {node} n INNER JOIN {node_type} t ON t.type = n.type WHERE n.status = 1 AND t.type IN ("'. join($types, '", "') .'") GROUP BY n.type ORDER BY n.created'));
+    if ( $GLOBALS['db_type'] == "pgsql" ) {
+      // PostgreSQL does not support the syntax that MySQL allows.
+      $result = db_query(db_rewrite_sql("SELECT r.type, r.name, COUNT(r.nid) AS node_count FROM (SELECT t.type, t.name, n.nid FROM {node} n INNER JOIN {node_type} t USING (type) WHERE n.status = 1 AND t.type IN ('". join($types, "', '") ."') ORDER BY n.created) AS r GROUP BY r.type, r.name"));
+
+    } else {
+      $result = db_query(db_rewrite_sql("SELECT t.type, t.name, COUNT(n.nid) AS node_count FROM {node} n INNER JOIN {node_type} t ON t.type = n.type WHERE n.status = 1 AND t.type IN ('". join($types, "', '") ."') GROUP BY n.type ORDER BY n.created"));
+    }
   }
   
   $n_types = array();
