=== modified file 'modules/system/system.install'
--- modules/system/system.install	2007-05-21 02:06:00 +0000
+++ modules/system/system.install	2007-05-22 06:04:12 +0000
@@ -304,8 +304,10 @@ function system_install() {
         filepath varchar(255) NOT NULL default '',
         filemime varchar(255) NOT NULL default '',
         filesize int unsigned NOT NULL default 0,
+        module varchar(255) NOT NULL default '',
         PRIMARY KEY (fid),
-        KEY nid (nid)
+        KEY module_nid (module, nid),
+        KEY filepath (filepath(64))
       ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
 
       db_query("CREATE TABLE {file_revisions} (
@@ -824,9 +826,11 @@ function system_install() {
         filepath varchar(255) NOT NULL default '',
         filemime varchar(255) NOT NULL default '',
         filesize int_unsigned NOT NULL default 0,
+        module varchar(255) NOT NULL default '',
         PRIMARY KEY (fid)
       )");
-      db_query("CREATE INDEX {files}_nid_idx ON {files} (nid)");
+      db_query("CREATE INDEX {files}_module_nid_idx ON {files} (module, nid)");
+      db_query("CREATE INDEX {files}_filepath_idx on {files} (filepath)");
 
       db_query("CREATE TABLE {file_revisions} (
         fid int_unsigned NOT NULL default 0,
@@ -4091,6 +4095,36 @@ function system_update_6018() {
 }
 
 /**
+ * Add module field to files table, assign all existing files to the upload
+ * module; Index the filepath field.
+ */
+function system_update_6019() {
+  $ret = array();
+
+  switch ($GLOBALS['db_type']) {
+    case 'pgsql':
+      db_add_column($ret, 'files', 'module', 'varchar(255)', array('default' => "'upload'", 'not null' => TRUE));
+      $ret[] = update_sql("ALTER TABLE {files} DROP CONSTRAINT {files}_pkey");
+      $ret[] = update_sql("DROP INDEX {files}_nid_idx");
+      $ret[] = update_sql("ALTER TABLE {files} ADD PRIMARY KEY (fid)");
+      $ret[] = update_sql("CREATE INDEX {files}_module_nid_idx ON {files} (module, nid)");
+      $ret[] = update_sql("CREATE INDEX {files}_filepath_idx ON {files} (filepath)");
+      break;
+    case 'mysql':
+    case 'mysqli':
+      $ret[] = update_sql("ALTER TABLE {files} ADD module varchar(255) NOT NULL default 'upload'");
+      $ret[] = update_sql("ALTER TABLE {files} DROP PRIMARY KEY");
+      $ret[] = update_sql("ALTER TABLE {files} DROP INDEX nid");
+      $ret[] = update_sql("ALTER TABLE {files} ADD PRIMARY KEY (fid)");
+      $ret[] = update_sql("ALTER TABLE {files} ADD INDEX module (module, nid)");
+      $ret[] = update_sql("ALTER TABLE {files} ADD INDEX filepath (filepath(64))");
+      break;
+  }
+
+  return $ret;
+}
+
+/**
  * @} End of "defgroup updates-5.x-to-6.x"
  * The next series of updates should start at 7000.
  */

=== modified file 'modules/upload/upload.module'
--- modules/upload/upload.module	2007-05-14 13:51:28 +0000
+++ modules/upload/upload.module	2007-05-21 21:38:09 +0000
@@ -616,7 +616,7 @@ function theme_upload_attachments($files
  *   The amount of disk space used by the user in bytes.
  */
 function upload_space_used($uid) {
-  return db_result(db_query('SELECT SUM(filesize) FROM {files} f INNER JOIN {node} n ON f.nid = n.nid WHERE n.uid = %d', $uid));
+  return db_result(db_query("SELECT SUM(filesize) FROM {files} f INNER JOIN {node} n ON f.nid = n.nid WHERE f.module = 'upload' AND n.uid = %d", $uid));
 }
 
 /**
@@ -626,7 +626,7 @@ function upload_space_used($uid) {
  *   The amount of disk space used by uploaded files in bytes.
  */
 function upload_total_space_used() {
-  return db_result(db_query('SELECT SUM(filesize) FROM {files}'));
+  return db_result(db_query("SELECT SUM(filesize) FROM {files} WHERE module = 'upload'"));
 }
 
 /**
@@ -722,7 +722,7 @@ function upload_save(&$node) {
     elseif (strpos($file->fid, 'upload') !== FALSE) {
       if ($file = file_save_upload($file, $file->filename)) {
         $file->fid = db_next_id('{files}_fid');
-        db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
+        db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize, module) VALUES (%d, %d, '%s', '%s', '%s', %d, 'upload')", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
         db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description);
         // Tell other modules where the file was stored.
         $node->files[$fid] = $file;
@@ -744,7 +744,7 @@ function upload_save(&$node) {
 
 function upload_delete($node) {
   $files = array();
-  $result = db_query('SELECT * FROM {files} WHERE nid = %d', $node->nid);
+  $result = db_query("SELECT * FROM {files} WHERE module = 'upload' AND nid = %d", $node->nid);
   while ($file = db_fetch_object($result)) {
     $files[$file->fid] = $file;
   }
@@ -756,7 +756,7 @@ function upload_delete($node) {
   }
 
   // Delete all files associated with the node
-  db_query('DELETE FROM {files} WHERE nid = %d', $node->nid);
+  db_query("DELETE FROM {files} WHERE module = 'upload' AND nid = %d", $node->nid);
 }
 
 function upload_delete_revision($node) {
@@ -861,7 +861,7 @@ function upload_load($node) {
   $files = array();
 
   if ($node->vid) {
-    $result = db_query('SELECT * FROM {files} f INNER JOIN {file_revisions} r ON f.fid = r.fid WHERE r.vid = %d ORDER BY f.fid', $node->vid);
+    $result = db_query("SELECT * FROM {files} f INNER JOIN {file_revisions} r ON f.fid = r.fid WHERE r.vid = %d AND f.module = 'upload' ORDER BY f.fid", $node->vid);
     while ($file = db_fetch_object($result)) {
       $files[$file->fid] = $file;
     }

