Index: trunk/ippTools/share/stacktool_tosum.sql
===================================================================
--- trunk/ippTools/share/stacktool_tosum.sql	(revision 27678)
+++ trunk/ippTools/share/stacktool_tosum.sql	(revision 27679)
@@ -1,3 +1,3 @@
-SELECT DISTINCT
+SELECT
     stackRun.stack_id,
     stackRun.tess_id,
@@ -8,9 +8,11 @@
     stackRun.state
 FROM stackRun
-JOIN stackInputSkyfile
-    USING(stack_id)
-LEFT JOIN stackSumSkyfile
-    USING(stack_id)
+JOIN stackInputSkyfile USING(stack_id)
+JOIN warpRun USING(warp_id)
+LEFT JOIN stackSumSkyfile USING(stack_id)
 WHERE
     ((stackRun.state = 'new' AND stackSumSkyfile.stack_id IS NULL)
     OR (stackRun.state = 'update' AND stackSumSkyfile.fault = 0 AND stackSumSkyfile.quality = 0))
+    -- WHERE hook %s
+GROUP BY stack_id
+HAVING COUNT(warpRun.state = 'full') = COUNT(stackInputSkyfile.warp_id)
Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 27678)
+++ trunk/ippTools/src/stacktool.c	(revision 27679)
@@ -753,8 +753,9 @@
     }
 
+    psString whereClause = psStringCopy(""); // WHERE conditions to add
     if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-        psStringAppend(&query, " AND %s", whereClause);
-        psFree(whereClause);
+        psString new = psDBGenerateWhereConditionSQL(where, NULL);
+        psStringAppend(&whereClause, "\nAND %s", new);
+        psFree(new);
     }
     psFree(where);
@@ -767,5 +768,5 @@
     }
 
-    if (!p_psDBRunQuery(config->dbh, query)) {
+    if (!p_psDBRunQueryF(config->dbh, query, whereClause)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
