Index: nodequeue/nodequeue_generate.module
===================================================================
--- nodequeue/nodequeue_generate.module	(revision 1785)
+++ nodequeue/nodequeue_generate.module	(revision 1791)
@@ -137,7 +137,7 @@
 **/
 function nodequeue_generate_rehash($vids) {
   // Delete existing smartqueue taxonomy subqueues
-  db_query("DELETE ns FROM nodequeue_subqueue ns INNER JOIN nodequeue_queue nq ON ns.qid=nq.qid WHERE nq.owner = 'smartqueue_taxonomy'");
+  db_query("DELETE ns FROM {nodequeue_subqueue} ns INNER JOIN {nodequeue_queue} nq ON ns.qid=nq.qid WHERE nq.owner = 'smartqueue_taxonomy'");
 
   // Re-add those subqueues
   $node = new stdClass;
Index: nodequeue/nodequeue.install
===================================================================
--- nodequeue/nodequeue.install	(revision 1785)
+++ nodequeue/nodequeue.install	(revision 1791)
@@ -100,8 +100,8 @@
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_roles}_qid_idx' => array('qid'),
-      '{nodequeue_roles}_rid_idx' => array('rid'),
+      'qid' => array('qid'),
+      'rid' => array('rid'),
     ), // indexes
   ); // nodequeue_roles
   $schema['nodequeue_types'] = array(
@@ -122,11 +122,12 @@
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_types}_qid_idx' => array('qid'),
-      '{nodequeue_types}_type_idx' => array('type'),
+      'qid' => array('qid'),
+      'type' => array('type'),
     ), // indexes
+    'primary key' => array('qid', 'type'),
   ); // nodequeue_types
-  
+
   // Subqueues are minor queues that inherit all of the properties of
   // the parent queue. A parent queue must have at least 1 subqueue
   // to do anything. Reference is for the use of whatever is creating
@@ -163,9 +164,9 @@
     ), // fields
     'primary key' => array('sqid'),
     'indexes' => array(
-      '{nodequeue_subqueue}_qid_idx' => array('qid'),
-      '{nodequeue_subqueue}_reference_idx' => array('reference'),
-      '{nodequeue_subqueue}_title_idx' => array('title'),
+      'qid' => array('qid'),
+      'reference' => array('reference'),
+      'title' => array('title'),
     ), // indexes
   ); // nodequeue_subqueue
 
@@ -205,19 +206,21 @@
       ),
     ), // fields
     'indexes' => array(
-      '{nodequeue_nodes}_sqid_idx' => array('sqid', 'position'),
-      '{nodequeue_subqueue}_nid_idx' => array('nid'),
-      '{nodequeue_nodes}_qid_nid_idx' => array('qid', 'nid'),
+      'sqid' => array('sqid', 'position'),
+      'nid' => array('nid'),
+      'qid_nid' => array('qid', 'nid'),
     ), // indexes
   ); // nodequeue_nodes
-  
+
   return $schema;
 }
 
 // TODO: Figure out what to fix here?
 function nodequeue_update_1() {
   if ($GLOBALS['db_type'] == 'pgsql') {
-    db_query("CREATE SEQUENCE nodequeue_queue_qid_seq INCREMENT 1 START 1");
+    // check if there are table-name prefixes !
+    $prefix = (!empty($GLOBALS['db_prefix']) ? $GLOBALS['db_prefix'] : '');
+    db_query("CREATE SEQUENCE {$prefix}nodequeue_queue_qid_seq INCREMENT 1 START 1");
   }
 }
 
@@ -238,11 +241,11 @@
   //$ret[] = update_sql("ALTER TABLE {nodequeue_queue} ADD COLUMN link VARCHAR(40) DEFAULT '' NOT NULL");
   //$ret[] = update_sql("ALTER TABLE {nodequeue_queue} ADD COLUMN link_remove VARCHAR(40) DEFAULT '' NOT NULL");
 
-  db_add_index($ret, 'nodequeue_roles', "{nodequeue_roles}_qid", array('qid'));
-  db_add_index($ret, "nodequeue_roles", "{nodequeue_roles}_rid", array('rid'));
-  db_add_index($ret, "nodequeue_types", "{nodequeue_types}_qid", array('qid'));
-  db_add_index($ret, "nodequeue_nodes", "{nodequeue_nodes}_qid", array('qid', 'position'));
-  db_add_index($ret, "nodequeue_nodes", "{nodequeue_nodes}_nid", array('nid'));
+  db_add_index($ret, 'nodequeue_roles', "qid", array('qid'));
+  db_add_index($ret, "nodequeue_roles", "rid", array('rid'));
+  db_add_index($ret, "nodequeue_types", "qid", array('qid'));
+  db_add_index($ret, "nodequeue_nodes", "qid", array('qid', 'position'));
+  db_add_index($ret, "nodequeue_nodes", "nid", array('nid'));
   //$ret[] = update_sql("CREATE INDEX {nodequeue_roles}_qid_idx ON {nodequeue_roles} (qid)");
   //$ret[] = update_sql("CREATE INDEX {nodequeue_roles}_rid_idx ON {nodequeue_roles} (rid)");
   //$ret[] = update_sql("CREATE INDEX {nodequeue_types}_qid_idx ON {nodequeue_types} (qid)");
@@ -280,7 +283,7 @@
 
   // Create the nodequeue_subqueue table.
   $ret[] = update_sql("UPDATE {nodequeue_queue} SET owner = 'nodequeue', show_in_ui = 1, show_in_tab = 1, show_in_links = 1, reference = 0");
-  
+
   db_create_table($ret, 'nodequeue_subqueue', array(
     'description' => t('Subqueues are minor queues that inherit all of the properties of the parent queue. A parent queue must have at least 1 subqueue to do anything. Reference is for the use of whatever is creating the subqueues in order to link it to some other ID easily.'),
     'fields' => array(
@@ -311,9 +314,9 @@
     ), // fields
     'primary key' => array('sqid'),
     'indexes' => array(
-      '{nodequeue_subqueue}_qid_idx' => array('qid'),
-      '{nodequeue_subqueue}_reference_idx' => array('reference'),
-      '{nodequeue_subqueue}_title_idx' => array('title'),
+      'qid' => array('qid'),
+      'reference' => array('reference'),
+      'title' => array('title'),
     ), // indexes
   ));
 
@@ -328,7 +331,7 @@
   // Transform the nodequeue_nodes table.
   db_add_field($ret, 'nodequeue_nodes', 'sqid', array('type' => 'int'));
   $ret[] = update_sql("UPDATE {nodequeue_nodes} SET sqid = qid");
-  db_add_index($ret, 'nodequeue_nodes', '{nodequeue_nodes}_sqid', array('sqid', 'position'));
+  db_add_index($ret, 'nodequeue_nodes', 'sqid', array('sqid', 'position'));
   //$ret[] = update_sql("CREATE INDEX {nodequeue_nodes}_sqid_idx ON {nodequeue_nodes} (sqid, position)");
 
   return $ret;
@@ -410,7 +413,7 @@
  */
 function nodequeue_update_6004() {
   $ret = array();
-  db_add_index($ret, 'nodequeue_nodes', '{nodequeue_nodes}_qid_nid_idx', array('qid', 'nid'));
+  db_add_index($ret, 'nodequeue_nodes', 'qid_nid', array('qid', 'nid'));
   return $ret;
 }
 
Index: nodequeue/nodequeue.module
===================================================================
--- nodequeue/nodequeue.module	(revision 1785)
+++ nodequeue/nodequeue.module	(revision 1791)
@@ -1390,7 +1390,7 @@
     $node_status_sql = ' AND (n.status = 1 || n.uid = %d)';
   }
 
-  $query_restricted = db_query(db_rewrite_sql("SELECT DISTINCT(n.nid) FROM {node} n LEFT JOIN {nodequeue_nodes} nq ON nq.nid = n.nid WHERE nq.sqid = %d $node_status_sql ORDER BY nq.position ASC"), $sqid, $account->uid);
+  $query_restricted = db_query(db_rewrite_sql("SELECT DISTINCT(n.nid), nq.position FROM {node} n LEFT JOIN {nodequeue_nodes} nq ON nq.nid = n.nid WHERE nq.sqid = %d $node_status_sql ORDER BY nq.position ASC"), $sqid, $account->uid);
   while ($result_restricted = db_fetch_object($query_restricted)) {
     $nids_visible[$result_restricted->nid] = $result_restricted->nid;
   }
@@ -1664,7 +1664,7 @@
 
   if (!empty($to_load)) {
     $placeholders = db_placeholders($to_load, 'int');
-    $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN ($placeholders) GROUP BY q.qid", $to_load);
+    $result = db_query("SELECT q.*, COUNT(s.sqid) AS subqueues FROM {nodequeue_queue} q LEFT JOIN {nodequeue_subqueue} s ON q.qid = s.qid WHERE q.qid IN ($placeholders) GROUP BY q.qid, q.title, q.subqueue_title, q.size, q.link, q.link_remove, q.owner, q.show_in_ui, q.show_in_tab, q.show_in_links, q.reference, q.reverse, q.i18n", $to_load);
     while ($queue = db_fetch_object($result)) {
       $loaded[$queue->qid] = $queue;
       // ensure valid defaults:
@@ -1750,7 +1750,7 @@
   if (!empty($to_load)) {
     $placeholders = db_placeholders($to_load, 'int');
 
-    $result = db_query("SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.sqid IN ($placeholders) GROUP BY s.sqid", $to_load);
+    $result = db_query("SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.sqid IN ($placeholders) GROUP BY s.sqid, s.qid, s.reference, s.title", $to_load);
     while ($obj = db_fetch_object($result)) {
       // Sometimes we want to get to subqueues by reference, sometimes by sqid.
       // sqid is always unique, but reference is sometimes more readily available.
@@ -1803,7 +1803,7 @@
     return array();
   }
 
-  $query = "SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.qid IN (". db_placeholders($qids, 'int') .") GROUP BY s.sqid";
+  $query = "SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE s.qid IN (". db_placeholders($qids, 'int') .") GROUP BY s.sqid, s.qid, s.reference, s.title";
   if ($page_size) {
     $result = pager_query($query, $page_size, 0, $qids);
   }
@@ -1867,10 +1867,12 @@
       if ($where) {
         $where .= ' OR ';
       }
-      $where .= 's.qid = %d AND s.reference IN ('. implode(', ', $key_list) .')';
+      // make sure each condition stands on its own, if you chain boolean OR
+      // FIXME: psql requires key_list to have same type as s.reference (var_char)
+      $where .= ' ( s.qid = %d AND s.reference IN ('. implode(', ', $key_list) .') ) ';
     }
 
-    $result = db_query("SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE $where GROUP BY s.sqid", $values);
+    $result = db_query("SELECT s.*, COUNT(n.position) AS count FROM {nodequeue_subqueue} s LEFT JOIN {nodequeue_nodes} n ON n.sqid = s.sqid WHERE $where GROUP BY s.sqid, s.qid, s.reference, s.title", $values);
 
     while ($subqueue = db_fetch_object($result)) {
       $cache[$subqueue->qid][$subqueue->reference] = $subqueues[$subqueue->sqid] = $subqueue;
