Index: /trunk/ippTools/share/chiptool_setimfiletoupdate.sql
===================================================================
--- /trunk/ippTools/share/chiptool_setimfiletoupdate.sql	(revision 28021)
+++ /trunk/ippTools/share/chiptool_setimfiletoupdate.sql	(revision 28022)
@@ -1,4 +1,7 @@
 UPDATE chipRun
     JOIN chipProcessedImfile USING(chip_id)
+    LEFT JOIN magicDSRun ON (stage_id = chip_id AND stage = 'chip')
+    LEFT JOIN magicDSFile ON (magicDSRun.magic_ds_id = magicDSFile.magic_ds_id
+                              AND component = class_id)
 SET chipRun.state = 'update', 
     chipProcessedImfile.data_state = 'update'
@@ -7,2 +10,6 @@
     AND (chipRun.state = 'cleaned' OR chipRun.state = 'update')
     AND (chipProcessedImfile.data_state = 'cleaned')
+    -- don't queue update if the associated magicDSFile exists
+    AND (chipRun.magicked = 0 
+      OR (magicDSRun.state = 'cleaned' OR magicDSRun.state = 'new')
+            AND magicDSFile.component IS NULL)
Index: /trunk/ippTools/share/difftool_setskyfiletoupdate.sql
===================================================================
--- /trunk/ippTools/share/difftool_setskyfiletoupdate.sql	(revision 28021)
+++ /trunk/ippTools/share/difftool_setskyfiletoupdate.sql	(revision 28022)
@@ -1,4 +1,7 @@
 UPDATE diffRun
     JOIN diffSkyfile USING(diff_id)
+    LEFT JOIN magicDSRun ON (stage_id = diff_id AND stage = 'diff')
+    LEFT JOIN magicDSFile ON (magicDSRun.magic_ds_id = magicDSFile.magic_ds_id
+                              AND component = skycell_id)
 SET diffRun.state = 'update', 
     diffSkyfile.data_state = 'update'
@@ -7,2 +10,6 @@
     AND (diffRun.state = 'cleaned' OR diffRun.state = 'update')
     AND (diffSkyfile.data_state = 'cleaned')
+    -- don't queue update if the associated magicDSFile still exists
+    AND (diffRun.magicked = 0 
+      OR (magicDSRun.state = 'cleaned' OR magicDSRun.state = 'new')
+            AND magicDSFile.component IS NULL)
Index: /trunk/ippTools/share/warptool_setskyfiletoupdate.sql
===================================================================
--- /trunk/ippTools/share/warptool_setskyfiletoupdate.sql	(revision 28021)
+++ /trunk/ippTools/share/warptool_setskyfiletoupdate.sql	(revision 28022)
@@ -1,4 +1,7 @@
 UPDATE warpRun
     JOIN warpSkyfile USING(warp_id)
+    LEFT JOIN magicDSRun ON (stage_id = warp_id AND stage = 'warp')
+    LEFT JOIN magicDSFile ON (magicDSRun.magic_ds_id = magicDSFile.magic_ds_id
+                              AND component = skycell_id)
 SET warpRun.state = 'update', 
     warpSkyfile.data_state = 'update'
@@ -7,2 +10,5 @@
     AND (warpRun.state = 'cleaned' OR warpRun.state = 'update')
     AND (warpSkyfile.data_state = 'cleaned')
+    AND (warpRun.magicked = 0
+      OR (magicDSRun.state = 'cleaned' OR magicDSRun.state = 'new')
+      AND magicDSFile.component IS NULL)
