Index: trunk/ippTools/share/magicdstool_getskycells.sql
===================================================================
--- trunk/ippTools/share/magicdstool_getskycells.sql	(revision 27503)
+++ trunk/ippTools/share/magicdstool_getskycells.sql	(revision 27518)
@@ -1,5 +1,6 @@
+-- Input warps
 SELECT DISTINCT
     diffSkyfile.diff_id,
-    diffRun.tess_id, 
+    diffRun.tess_id,
     diffSkyfile.skycell_id,
     diffSkyfile.path_base,
@@ -8,5 +9,5 @@
 JOIN magicRun USING(magic_id)
 JOIN magicInputSkyfile USING(magic_id)
-JOIN diffRun ON magicRun.diff_id = diffRun.diff_id
+JOIN diffRun USING(diff_id)
 JOIN diffSkyfile
     ON magicRun.diff_id = diffSkyfile.diff_id
@@ -17,4 +18,5 @@
     -- Want input warps only
     AND diffInputSkyfile.warp1 IS NOT NULL
+    AND magicRun.inverse = 0
 JOIN warpSkyCellMap
     ON warpSkyCellMap.warp_id = diffInputSkyfile.warp1
@@ -27,3 +29,34 @@
     diffSkyfile.fault = 0
     AND diffSkyfile.quality = 0
-    AND magic_ds_id = %lld
+    -- WHERE hook %s
+UNION
+-- Reference warps
+SELECT DISTINCT
+    diffSkyfile.diff_id,
+    diffRun.tess_id,
+    diffSkyfile.skycell_id,
+    diffSkyfile.path_base,
+    diffSkyfile.data_state
+FROM magicDSRun
+JOIN magicRun USING(magic_id)
+JOIN magicInputSkyfile USING(magic_id)
+JOIN diffRun USING(diff_id)
+JOIN diffSkyfile
+    ON magicRun.diff_id = diffSkyfile.diff_id
+    AND magicInputSkyfile.node = diffSkyfile.skycell_id
+JOIN diffInputSkyfile
+    ON diffInputSkyfile.diff_id = diffSkyfile.diff_id
+    AND diffInputSkyfile.skycell_id = diffSkyfile.skycell_id
+    AND diffInputSkyfile.warp2 IS NOT NULL
+    AND magicRun.inverse = 1
+JOIN warpSkyCellMap
+    ON warpSkyCellMap.warp_id = diffInputSkyfile.warp2
+    AND warpSkyCellMap.skycell_id = diffInputSkyfile.skycell_id
+JOIN warpSkyfile
+    ON warpSkyfile.warp_id = warpSkyCellMap.warp_id
+    AND warpSkyfile.skycell_id = warpSkyCellMap.skycell_id
+    AND warpSkyfile.quality = 0
+WHERE
+    diffSkyfile.fault = 0
+    AND diffSkyfile.quality = 0
+    -- WHERE hook %s
Index: trunk/ippTools/src/magicdstool.c
===================================================================
--- trunk/ippTools/src/magicdstool.c	(revision 27503)
+++ trunk/ippTools/src/magicdstool.c	(revision 27518)
@@ -1135,4 +1135,5 @@
 
     psMetadata *where = psMetadataAlloc();
+    PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "==");
     PXOPT_COPY_STR(config->args, where, "-class_id",    "warpSkyCellMap.class_id", "==");
     PXOPT_COPY_STR(config->args, where, "-skycell_id",  "warpSkyCellMap.skycell_id", "==");
@@ -1146,12 +1147,12 @@
     }
 
+    psString whereClause = NULL;
     if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-        psStringAppend(&query, " AND %s", whereClause);
-        psFree(whereClause);
+        whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+        psStringPrepend(&whereClause, "\n");
     }
     psFree(where);
 
-    if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) {
+    if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
