Index: database/updates.inc
===================================================================
RCS file: /cvs/drupal/drupal/database/updates.inc,v
retrieving revision 1.75
diff -u -r1.75 updates.inc
--- database/updates.inc	16 Nov 2004 18:46:48 -0000	1.75
+++ database/updates.inc	22 Nov 2004 10:27:51 -0000
@@ -89,6 +89,7 @@
   "2004-10-31: first update since Drupal 4.5.0 release" => "update_110",
   "2004-11-07" => "update_111",
   "2004-11-15" => "update_112"
+  "2004-11-22" => "update_113"
 );
 
 function update_32() {
@@ -1795,49 +1796,11 @@
   if ($GLOBALS['db_type'] == 'mysql') {
     $ret[] = update_sql("ALTER TABLE {forum} DROP shadow");
     $ret[] = update_sql('ALTER TABLE {node} ADD INDEX node_status_type (status, type, nid)');
-
-    $ret[] = update_sql("CREATE TABLE {node_comment_statistics} (
-      nid int(10) unsigned NOT NULL auto_increment,
-      cid int(10) unsigned NOT NULL default '0',
-      last_comment_timestamp int(11) NOT NULL default '0',
-      last_comment_name varchar(60) default NULL,
-      last_comment_uid int(10) NOT NULL default '0',
-      comment_count int(10) unsigned NOT NULL default '0',
-      PRIMARY KEY (nid),
-      KEY node_comment_timestamp (last_comment_timestamp)
-      ) TYPE=MyISAM");
-    $ret[] = update_sql("INSERT INTO {node_comment_statistics} (nid, cid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, 0, n.created, NULL, n.uid, 0 FROM {node} n");
-
-    $ret[] = update_sql("CREATE TABLE {forum_conv_temp} (
-      nid int(10) unsigned NOT NULL default '0',
-      cid int(10) unsigned NOT NULL default '0',
-      comment_count int(10) unsigned NOT NULL default '0',
-      PRIMARY KEY (nid)
-      )");
-
-    $ret[] = update_sql('INSERT INTO {forum_conv_temp} SELECT f.nid, MAX(c.cid), COUNT(c.nid) FROM {forum} f INNER JOIN {comments} c ON f.nid = c.nid WHERE c.status = 0 GROUP BY f.nid');
-
-    /* This would be faster but only works with MySQL 4.0.4 or higher
-    $ret[] = update_sql('UPDATE {node_comment_statistics} n, {forum_conv_temp} t, {comments} c SET n.comment_count = t.comment_count, n.last_comment_timestamp = c.timestamp, n.last_comment_name = c.name, n.last_comment_uid = c.uid, n.cid = t.cid WHERE t.cid = c.cid AND n.nid = t.nid');
-    */
   }
   else {
     // PostgreSQL is incapable of dropping columns in all but the latest versions.
     $ret[] = update_sql("CREATE INDEX {node}_status_type_idx ON {node} (status, type, nid)");
 
-
-    $ret[] = update_sql("CREATE TABLE {node}_comment_statistics (
-      nid integer NOT NULL,
-      cid integer NOT NULL default '0',
-      last_comment_timestamp integer NOT NULL default '0',
-      last_comment_name varchar(60)  default NULL,
-      last_comment_uid integer NOT NULL default '0',
-      comment_count integer NOT NULL default '0',
-      PRIMARY KEY (nid)
-    )");
-
-    $ret[] = update_sql("SELECT f.nid, MAX(c.cid) as cid, COUNT(c.nid) as comment_count INTO TEMPORARY {forum_conv_temp} FROM {forum} f INNER JOIN {comments} c ON f.nid = c.nid WHERE c.status = 0 GROUP BY f.nid");
-
     $ret[] = update_sql("CREATE FUNCTION \"if\"(integer, text, text) RETURNS text AS '
       BEGIN
         IF $1 THEN
@@ -1850,13 +1813,6 @@
       ' LANGUAGE 'plpgsql'");
   }
 
-  $commentupdates = db_query("SELECT t.nid, t.cid, t.comment_count, c.timestamp, c.name, c.uid FROM {forum_conv_temp} t INNER JOIN {comments} c ON t.cid = c.cid");
-  while ($commentrecord = db_fetch_object($commentupdates)) {
-    db_query("UPDATE {node_comment_statistics} SET comment_count = %d, last_comment_timestamp = %d, last_comment_name = '%s', last_comment_uid = %d, cid = %d WHERE nid = %d", $commentrecord->comment_count, $commentrecord->timestamp, $commentrecord->name, $commentrecord->uid, $commentrecord->cid, $commentrecord->nid);
-  }
-
-  $ret[] = update_sql("DROP TABLE {forum_conv_temp}");
-
   return $ret;
 }
 
@@ -1987,6 +1943,50 @@
     hostname varchar(128) NOT NULL default '',
     timestamp int(11) NOT NULL default '0'
   );");
+
+  return $ret;
+}
+
+function update_113() {
+  $ret = array();
+
+  if ($GLOBALS['db_type'] == 'mysql') {
+    // redo update_105, correctly creating node_comment_statistics
+    $ret[] = update_sql("DROP TABLE {node_comment_statistics}");
+
+    $ret[] = update_sql("CREATE TABLE {node_comment_statistics} (
+      nid int(10) unsigned NOT NULL auto_increment,
+      last_comment_timestamp int(11) NOT NULL default '0',
+      last_comment_name varchar(60) default NULL,
+      last_comment_uid int(10) NOT NULL default '0',
+      comment_count int(10) unsigned NOT NULL default '0',
+      PRIMARY KEY (nid),
+      KEY node_comment_timestamp (last_comment_timestamp)
+      ) TYPE=MyISAM");
+  }
+
+  else {
+    // also drop incorrectly named table for PostgreSQL
+    $ret[] = update_sql("DROP TABLE {node}_comment_statistics");
+    
+    $ret[] = update_sql("CREATE TABLE {node_comment_statistics} (
+      nid integer NOT NULL,
+      last_comment_timestamp integer NOT NULL default '0',
+      last_comment_name varchar(60)  default NULL,
+      last_comment_uid integer NOT NULL default '0',
+      comment_count integer NOT NULL default '0',
+      PRIMARY KEY (nid)
+    )");
+  }
+
+  // initialize table
+  $ret[] = update_sql("INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) SELECT n.nid, 0, NULL, 0, 0 FROM {node} n");
+  
+  // fill table
+  $comment_updates = db_query("SELECT c.nid, c.timestamp, c.name, c.uid, COUNT(c.nid) as comment_count FROM {comments} c INNER JOIN {node} n ON c.nid = n.nid WHERE c.status = 0 GROUP BY c.nid");
+  while ($comment_record = db_fetch_object($comment_updates)) {
+    $ret[] = update_sql("UPDATE {node_comment_statistics} SET comment_count = $comment_record->comment_count, last_comment_timestamp = $comment_record->timestamp, last_comment_name = '$comment_record->name', last_comment_uid = $comment_record->uid WHERE nid = $comment_record->nid");
+  }
 
   return $ret;
 }
Index: database/database.mysql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.mysql,v
retrieving revision 1.159
diff -u -r1.159 database.mysql
--- database/database.mysql	16 Nov 2004 18:46:48 -0000	1.159
+++ database/database.mysql	22 Nov 2004 10:29:08 -0000
@@ -200,7 +200,6 @@
 
 CREATE TABLE node_comment_statistics (
   nid int(10) unsigned NOT NULL auto_increment,
-  cid int(10) unsigned NOT NULL default '0',
   last_comment_timestamp int(11) NOT NULL default '0',
   last_comment_name varchar(60)  default NULL,
   last_comment_uid int(10) NOT NULL default '0',
Index: database/database.pgsql
===================================================================
RCS file: /cvs/drupal/drupal/database/database.pgsql,v
retrieving revision 1.95
diff -u -r1.95 database.pgsql
--- database/database.pgsql	16 Nov 2004 18:46:48 -0000	1.95
+++ database/database.pgsql	22 Nov 2004 10:29:02 -0000
@@ -201,7 +201,6 @@
 
 CREATE TABLE node_comment_statistics (
   nid integer NOT NULL,
-  cid integer NOT NULL default '0',
   last_comment_timestamp integer NOT NULL default '0',
   last_comment_name varchar(60)  default NULL,
   last_comment_uid integer NOT NULL default '0',
