Index: trunk/ippTools/share/difftool_definewarpstack.sql
===================================================================
--- trunk/ippTools/share/difftool_definewarpstack.sql	(revision 37947)
+++ trunk/ippTools/share/difftool_definewarpstack.sql	(revision 37974)
@@ -2,4 +2,19 @@
 -- and check results against existing diffs
 SELECT
+   exp_id,
+   warp_id,
+   filter,
+   warpLabel,
+   warpDataGroup,
+   Inputs.tess_id,
+   Inputs.skycell_id,
+   stack_id,
+   stackLabel,
+   stackDataGroup,
+   diff_id,
+   diffLabel
+FROM
+(
+SELECT 
    exp_id,
    warp_id,
@@ -11,7 +26,5 @@
    MAX(stack_id) AS stack_id,
    stackRun.label AS stackLabel,
-   stackRun.data_group AS stackDataGroup,
-   diff_id,
-   diffRun.label AS diffLabel
+   stackRun.data_group AS stackDataGroup
 FROM warpRun
      JOIN fakeRun USING(fake_id)
@@ -25,10 +38,4 @@
 	stackRun.tess_id    = warpRun.tess_id)
      JOIN stackSumSkyfile USING(stack_id)
-     LEFT JOIN diffInputSkyfile ON 
-       (warp_id = diffInputSkyfile.warp1 AND
-        stack_id = diffInputSkyfile.stack2 AND
-	diffInputSkyfile.skycell_id = stackRun.skycell_id AND
-	diffInputSkyfile.tess_id = stackRun.tess_id)
-     LEFT JOIN diffRun USING(diff_id)
 WHERE 
      warpRun.state = 'full'
@@ -41,2 +48,26 @@
 -- %s
 GROUP BY exp_id,warp_id,skycell_id
+) AS Inputs
+LEFT JOIN 
+(
+SELECT 
+diff_id,
+diffRun.label AS diffLabel,
+warp1,
+stack2,
+skycell_id,
+diffInputSkyfile.tess_id
+FROM 
+diffRun JOIN diffInputSkyfile USING(diff_id,tess_id)
+WHERE
+diff_mode = 2
+-- %s 
+) AS Diffs ON
+       (warp_id = warp1 AND
+        stack_id = stack2 AND
+	Diffs.skycell_id = Inputs.skycell_id AND
+	Diffs.tess_id = Inputs.tess_id)
+WHERE
+1
+-- %s
+
Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 37947)
+++ trunk/ippTools/src/difftool.c	(revision 37974)
@@ -1235,5 +1235,5 @@
 
   PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
-  PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
+  PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "==");
   PXOPT_COPY_STR(config->args, where, "-comment", "comment", "LIKE");
   PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "==");
@@ -1284,18 +1284,20 @@
 
   psString whereClause = psDBGenerateWhereConditionSQL(where,NULL);
+  psString diffWhereClause = psStringCopy("");
+  psString joinWhereClause = psStringCopy("");
   
   // Don't queue things that already have diffs.
   if (! (reRun || newTemplates) ) {
-    psStringAppend(&whereClause, "\nAND diff_id IS NULL\n");
+    psStringAppend(&joinWhereClause, "\nAND diff_id IS NULL\n");
   }
   // Append diff qualifiers, if we have them
   if (label) {
-    psStringAppend(&whereClause, "\nAND ((diffRun.label = '%s') OR (diffRun.label IS NULL))",label);
+    psStringAppend(&diffWhereClause, "\nAND ((diffRun.label = '%s') OR (diffRun.label IS NULL))",label);
   }
   if (data_group) {
-    psStringAppend(&whereClause, "\nAND ((diffRun.data_group = '%s') OR (diffRun.data_group IS NULL))",data_group);
+    psStringAppend(&diffWhereClause, "\nAND ((diffRun.data_group = '%s') OR (diffRun.data_group IS NULL))",data_group);
   }
   if (reduction) {
-    psStringAppend(&whereClause, "\nAND ((diffRun.reduction = '%s') OR (diffRun.reduction IS NULL))",reduction);
+    psStringAppend(&diffWhereClause, "\nAND ((diffRun.reduction = '%s') OR (diffRun.reduction IS NULL))",reduction);
   }
 
@@ -1305,5 +1307,5 @@
 
   // This is just a simple query, so we don't need to do a transaction
-  if (!p_psDBRunQueryF(config->dbh, query, whereClauseString)) {
+  if (!p_psDBRunQueryF(config->dbh, query, whereClauseString, diffWhereClause,joinWhereClause)) {
     psError(PS_ERR_UNKNOWN, false, "database error");
     psFree(query);
