--- orig/acidfree/acidfree.module	2007-08-14 14:02:38.000000000 -0400
+++ patched/acidfree/acidfree.module	2007-09-15 13:52:28.000000000 -0400
@@ -1915,7 +1908,20 @@
     }
     // Create count query. Drupal's pager function does not build the query properly
     $clauses = "FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE $include_albums tn.tid = %d AND n.status = 1";
-    $query = db_rewrite_sql("SELECT DISTINCT(n.nid), n.title, n.created " . $clauses.' ORDER BY '. $order);
+    $fields = 'DISTINCT(n.nid), n.title, n.created';
+
+    // Postgres requires that fields specified in ORDER BY clauses must also appear in the SELECT list.
+    if ($GLOBALS['db_type'] == 'pgsql') {
+      foreach(explode(',',$order) as $orderclause) {
+        $orderclause = explode(' ',trim($orderclause));
+        $orderfield = $orderclause[0];
+        if (!preg_match('/\b' . $orderfield . '\b/',$fields)) {
+          $fields .= ", $orderfield";
+        }
+      }
+    }
+
+    $query = db_rewrite_sql("SELECT $fields $clauses ORDER BY $order");
     $count_query = db_rewrite_sql("SELECT COUNT(DISTINCT(n.nid)) " . $clauses);
     if ($limit == -1) {
         $kids = db_query($query, $tid);
@@ -2553,8 +2563,23 @@
     $nid = $offset_lookup[$acidfree_pid][$offset];
     if (! $nid) {
         // Create count query. Drupal's pager function does not build the query properly
-        $clauses = 'SELECT DISTINCT(n.nid) FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.type <> \'acidfree\' AND tn.tid = %d AND n.status = 1 ORDER BY '. $pager_sort . " LIMIT 1 OFFSET %d";
-        $query = db_rewrite_sql($clauses);
+        $clauses = 'FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.type <> \'acidfree\' AND tn.tid = %d AND n.status = 1';
+        $order = $pager_sort;
+        $limit = 'LIMIT 1 OFFSET %d';
+        $fields = 'DISTINCT(n.nid), n.title, n.created';
+
+        // Postgres requires that fields specified in ORDER BY clauses must also appear in the SELECT list.
+        if ($GLOBALS['db_type'] == 'pgsql') {
+          foreach(explode(',',$order) as $orderclause) {
+            $orderclause = explode(' ',trim($orderclause));
+            $orderfield = $orderclause[0];
+            if (!preg_match('/\b' . $orderfield . '\b/',$fields)) {
+              $fields .= ", $orderfield";
+            }
+          }
+        }
+
+        $query = db_rewrite_sql("SELECT $fields $clauses ORDER BY $order $limit");
         $nid = db_result(db_query($query, $acidfree_pid, $offset));
         $offset_lookup[$acidfree_pid][$offset] = $nid;
         $parents = taxonomy_node_get_terms($nid);
