Index: trunk/ippTools/src/difftool.c
===================================================================
--- trunk/ippTools/src/difftool.c	(revision 20681)
+++ trunk/ippTools/src/difftool.c	(revision 20682)
@@ -936,14 +936,15 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    psMetadata *where = psMetadataAlloc();
-
-    PXOPT_COPY_S64(config->args, where, "-warp_id", "warpsToDiff.warp_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpsToDiff.skycell_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-tess_id", "warpsToDiff.tess_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-filter", "warpsToDiff.filter", "==");
-    PXOPT_COPY_STR(config->args, where, "-stack_label", "stacksForDiff.stack_label", "==");
-    PXOPT_COPY_STR(config->args, where, "-warp_label", "warpsToDiff.warp_label", "==");
-    PXOPT_COPY_STR(config->args, where,  "-kind", "warpsToDiff.kind", "==");
-    PXOPT_COPY_F32(config->args, where,  "-good_frac", "warpsToDiff.good_frac", ">=");
+    psMetadata *warpWhere = psMetadataAlloc();
+    psMetadata *stackWhere = psMetadataAlloc();
+
+    PXOPT_COPY_S64(config->args, warpWhere, "-warp_id", "warpsToDiff.warp_id", "==");
+    PXOPT_COPY_STR(config->args, warpWhere, "-skycell_id", "warpsToDiff.skycell_id", "==");
+    PXOPT_COPY_STR(config->args, warpWhere, "-tess_id", "warpsToDiff.tess_id", "==");
+    PXOPT_COPY_STR(config->args, warpWhere, "-filter", "warpsToDiff.filter", "==");
+    PXOPT_COPY_STR(config->args, warpWhere, "-warp_label", "warpsToDiff.warp_label", "==");
+    PXOPT_COPY_STR(config->args, warpWhere,  "-kind", "warpsToDiff.kind", "==");
+    PXOPT_COPY_F32(config->args, warpWhere,  "-good_frac", "warpsToDiff.good_frac", ">=");
+    PXOPT_COPY_STR(config->args, stackWhere, "-stack_label", "stacksForDiff.stack_label", "==");
 
     PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options
@@ -969,12 +970,26 @@
     }
 
-    if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-        psStringAppend(&query, " AND %s", whereClause);
+    psString warpQuery = NULL;
+    psString stackQuery = NULL;
+
+    if (psListLength(warpWhere->list)) {
+        psString whereClause = psDBGenerateWhereConditionSQL(warpWhere, NULL);
+        psStringAppend(&warpQuery, "\n AND %s", whereClause);
         psFree(whereClause);
-    }
-    psFree(where);
-
-    if (!p_psDBRunQuery(config->dbh, query)) {
+    } else {
+        warpQuery = psStringCopy("");
+    }
+    psFree(warpWhere);
+
+    if (psListLength(stackWhere->list)) {
+        psString whereClause = psDBGenerateWhereConditionSQL(stackWhere, NULL);
+        psStringAppend(&stackQuery, "\n AND %s", whereClause);
+        psFree(whereClause);
+    } else {
+        stackQuery = psStringCopy("");
+    }
+    psFree(warpWhere);
+
+    if (!p_psDBRunQuery(config->dbh, query, warpWhere, stackWhere)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
