Index: trunk/ippTools/share/Makefile.am
===================================================================
--- trunk/ippTools/share/Makefile.am	(revision 23742)
+++ trunk/ippTools/share/Makefile.am	(revision 23765)
@@ -92,4 +92,11 @@
      difftool_skyfile.sql \
      difftool_todiffskyfile.sql \
+     disttool_definebyquery_camera.sql \
+     disttool_definebyquery_chip.sql \
+     disttool_definebyquery_diff.sql \
+     disttool_definebyquery_fake.sql \
+     disttool_definebyquery_raw.sql \
+     disttool_definebyquery_stack.sql \
+     disttool_definebyquery_warp.sql \
      disttool_pendingcomponent.sql \
      disttool_processedcomponent.sql \
Index: trunk/ippTools/share/disttool_definebyquery_camera.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_camera.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_camera.sql	(revision 23765)
@@ -0,0 +1,18 @@
+SELECT
+    'cam' as stage,
+    camRun.cam_id as stage_id,
+    rawExp.exp_name as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM camRun 
+JOIN chipRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'camera' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'camera' AND camRun.cam_id = distRun.stage_id
+    -- JOIN hook %s
+WHERE distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL      -- no existing distRun 
+    AND ((!distTarget.clean  AND camRun.state = 'full') OR (distTarget.clean AND camRun.state = 'cleaned'))
Index: trunk/ippTools/share/disttool_definebyquery_chip.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_chip.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_chip.sql	(revision 23765)
@@ -0,0 +1,17 @@
+SELECT
+    'chip' as stage,
+    chipRun.chip_id as stage_id,
+    rawExp.exp_name as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM chipRun
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'chip' AND rawExp.obs_mode = distTarget.obs_mode 
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distTarget.stage = 'chip' AND distRun.stage_id = chipRun.chip_id
+    -- JOIN hook %s
+WHERE distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL      -- no existing distRun 
+    AND ((chipRun.state = 'full') OR (distTarget.clean AND chipRun.state = 'cleaned'))
Index: trunk/ippTools/share/disttool_definebyquery_diff.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_diff.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_diff.sql	(revision 23765)
@@ -0,0 +1,25 @@
+SELECT DISTINCT
+    'diff' as stage,
+    diffRun.diff_id AS stage_id,
+    rawExp.exp_name as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM diffRun
+JOIN diffInputSkyfile using(diff_id)
+JOIN warpRun on diffInputSkyfile.warp1 = warpRun.warp_id
+JOIN fakeRun USING(fake_id)
+JOIN camRun USING(cam_id)
+JOIN chipRun USING(exp_id, chip_id)
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'diff' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'diff' AND (distRun.stage_id = diff_id)
+    -- JOIN hook %s
+WHERE  distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL
+    AND ((diffRun.state = 'full') OR (distTarget.clean AND diffRun.state = 'cleaned'))
+
+
+
Index: trunk/ippTools/share/disttool_definebyquery_fake.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_fake.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_fake.sql	(revision 23765)
@@ -0,0 +1,18 @@
+SELECT
+    'fake' as stage,
+    fakeRun.fake_id AS stage_id,
+    rawExp.exp_name as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM fakeRun
+JOIN camRun USING(cam_id) -- ON fakeRun.cam_id = camRun.cam_id
+JOIN chipRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'fake' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'fake' AND (distRun.stage_id = fake_id)
+WHERE  distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL
+    AND ((fakeRun.state = 'full') OR (distTarget.clean AND fakeRun.state = 'cleaned'))
Index: trunk/ippTools/share/disttool_definebyquery_raw.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_raw.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_raw.sql	(revision 23765)
@@ -0,0 +1,17 @@
+SELECT DISTINCT     -- we use distinct to handle multiple chip runs. Distribution will find right chipRun
+    'raw' AS stage,
+    rawExp.exp_id AS stage_id,
+    rawExp.exp_name AS run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM rawExp
+JOIN chipRun USING(exp_id)
+JOIN distTarget ON distTarget.obs_mode = rawExp.obs_mode AND distTarget.stage = 'raw'
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'raw' AND distRun.stage_id = exp_id
+    -- JOIN hook for magicked stuff %s
+WHERE distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL      -- no existing distRun
+
Index: trunk/ippTools/share/disttool_definebyquery_select.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_select.sql	(revision 23742)
+++ 	(revision )
@@ -1,124 +1,0 @@
--- Maybe it would be better to split the query into multiple modes
--- the way it is outstanding rawExp's to bundle will block other stages
--- from being processed
-SELECT
-    stage,
-    stage_id,
-    obs_mode,
-    clean
-FROM (
-    SELECT DISTINCT     -- we use distinct to handle multiple chip runs. Distribution will find right one
-        'raw' AS stage,
-        rawExp.exp_id AS stage_id,
-        rawExp.obs_mode,
-        distTarget.clean
-    FROM rawExp
-    JOIN chipRun USING(exp_id)
-    JOIN distTarget ON distTarget.obs_mode = rawExp.obs_mode AND distTarget.stage = 'raw'
-    JOIN rcInterest USING(target_id)
-    LEFT JOIN distRun ON distRun.stage = 'raw' AND distRun.stage_id = exp_id
-    WHERE distTarget.state = 'enabled'
-        AND rcInterest.state = 'enabled'
-        AND chipRun.state = 'full'       -- Note: we need a completed chip stage magicDSRun because we
-                                         -- need the mask file to NAN masked pixels
-        -- to support cameras that don't need magic disttool adds the magicked restriction 
-        -- \nAND rawExp.magicked AND chipRun.magicked here:
-        -- raw magicked HOOK %s
-        AND distRun.dist_id IS NULL      -- no existing distRun 
-    -- raw where hook %s
-
-UNION
-    SELECT
-        'chip' as stage,
-        chipRun.chip_id as stage_id,
-        rawExp.obs_mode,
-        distTarget.clean
-    FROM chipRun
-    JOIN rawExp USING(exp_id)
-    JOIN distTarget ON distTarget.stage = 'chip' AND rawExp.obs_mode = distTarget.obs_mode 
-    JOIN rcInterest USING(target_id)
-    LEFT JOIN distRun ON distTarget.stage = 'chip' AND distRun.stage_id = chipRun.chip_id
-    WHERE distTarget.state = 'enabled'
-        AND rcInterest.state = 'enabled'
-        AND distRun.dist_id IS NULL      -- no existing distRun 
-        AND ((!distTarget.clean AND (chipRun.state = 'full')
-            -- If camera requires files to be magicked before distibution
-            -- the following gets added by disttool
-            AND chipRun.magicked 
-            -- chip magicked HOOK %s
-           ) 
-           OR (distTarget.clean AND chipRun.state = 'cleaned'))
-    -- chip where hook %s
-
-UNION
-    SELECT
-        'cam' as stage,
-        camRun.cam_id as stage_id,
-        rawExp.obs_mode,
-        distTarget.clean
-    FROM camRun 
-    JOIN chipRun USING(chip_id)
-    JOIN rawExp USING(exp_id)
-    JOIN distTarget ON distTarget.stage = 'cam' AND rawExp.obs_mode = distTarget.obs_mode
-    JOIN rcInterest USING(target_id)
-    LEFT JOIN distRun ON distRun.stage = 'cam' AND camRun.cam_id = distRun.stage_id
-    WHERE distTarget.state = 'enabled'
-        AND rcInterest.state = 'enabled'
-        AND distRun.dist_id IS NULL      -- no existing distRun 
-        AND ((!distTarget.clean  AND camRun.state = 'full'
-            -- need magicked chip run because camera mask are destreaked by chip destreaking
-            -- the following line
-            -- AND chipRun.magicked
-            -- cam magicked HOOK %s
-             )
-            OR (distTarget.clean AND camRun.state = 'cleaned')
-        )
-    -- cam where hook %s
-
-UNION
-    SELECT
-        'fake' as stage,
-        fakeRun.fake_id as stage_id,
-        rawExp.obs_mode,
-        distTarget.clean
-    FROM fakeRun
-    JOIN camRun USING(cam_id)
-    JOIN chipRun USING(chip_id)
-    JOIN rawExp USING(exp_id)
-    JOIN distTarget ON rawExp.obs_mode = distTarget.obs_mode AND distTarget.stage = 'fake'
-    JOIN rcInterest USING(target_id)
-    LEFT JOIN distRun ON distRun.stage = 'fake' AND camRun.cam_id = distRun.stage_id
-    WHERE distTarget.state = 'enabled'
-        AND rcInterest.state = 'enabled'
-        AND distRun.dist_id IS NULL      -- no existing distRun 
-        AND ((fakeRun.state = 'full') OR (distTarget.clean AND fakeRun.state = 'cleaned'))
-    -- fake where hook %s
-
-UNION
-    SELECT
-        'warp' as stage,
-        warpRun.warp_id AS stage_id,
-        rawExp.obs_mode,
-        distTarget.clean
-    FROM warpRun
-    JOIN fakeRun USING(fake_id)
-    JOIN camRun ON fakeRun.cam_id = camRun.cam_id
-    JOIN chipRun USING(chip_id)
-    JOIN rawExp USING(exp_id)
-    JOIN distTarget ON distTarget.stage = 'warp' AND rawExp.obs_mode = distTarget.obs_mode
-    JOIN rcInterest USING(target_id)
-    LEFT JOIN distRun ON distRun.stage = 'warp' AND (distRun.stage_id = warp_id)
-    WHERE  distTarget.state = 'enabled'
-        AND rcInterest.state = 'enabled'
-        AND distRun.dist_id IS NULL
-        AND ((warpRun.state = 'full' 
-            --  AND warpRun.magicked
-            -- warp magicked hook %s
-             ) 
-            OR (distTarget.clean AND warpRun.state = 'cleaned')
-        )
-        -- warp where hook %s
-) as foo
-
-
-
Index: trunk/ippTools/share/disttool_definebyquery_stack.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_stack.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_stack.sql	(revision 23765)
@@ -0,0 +1,23 @@
+SELECT DISTINCT
+    'stack' as stage,
+    stackRun.stack_id AS stage_id,
+    -- run tag in the form 'stack.$skycell_id.$stack_id'
+    CONCAT('stack.', stackRun.skycell_id, '.', convert(stackRun.stack_id, CHAR)) as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM stackRun
+JOIN stackInputSkyfile using(stack_id)
+JOIN warpRun USING(warp_id)
+JOIN fakeRun USING(fake_id)
+JOIN camRun USING(cam_id)
+JOIN chipRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'stack' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'stack' AND (distRun.stage_id = stack_id)
+    -- JOIN hook %s
+WHERE  distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL
+    AND ((stackRun.state = 'full') OR (distTarget.clean AND stackRun.state = 'cleaned'))
Index: trunk/ippTools/share/disttool_definebyquery_warp.sql
===================================================================
--- trunk/ippTools/share/disttool_definebyquery_warp.sql	(revision 23765)
+++ trunk/ippTools/share/disttool_definebyquery_warp.sql	(revision 23765)
@@ -0,0 +1,22 @@
+SELECT
+    'warp' as stage,
+    warpRun.warp_id AS stage_id,
+    rawExp.exp_name as run_tag,
+    rawExp.obs_mode,
+    distTarget.target_id,
+    distTarget.clean
+FROM warpRun
+JOIN fakeRun USING(fake_id)
+JOIN camRun ON fakeRun.cam_id = camRun.cam_id
+JOIN chipRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+JOIN distTarget ON distTarget.stage = 'warp' AND rawExp.obs_mode = distTarget.obs_mode
+JOIN rcInterest USING(target_id)
+LEFT JOIN distRun ON distRun.stage = 'warp' AND (distRun.stage_id = warp_id)
+WHERE  distTarget.state = 'enabled'
+    AND rcInterest.state = 'enabled'
+    AND distRun.dist_id IS NULL
+    AND ((warpRun.state = 'full') OR (distTarget.clean AND warpRun.state = 'cleaned'))
+
+
+
