Index: trunk/ippTools/src/dettool_residimfile.c
===================================================================
--- trunk/ippTools/src/dettool_residimfile.c	(revision 19621)
+++ trunk/ippTools/src/dettool_residimfile.c	(revision 19632)
@@ -150,9 +150,10 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-det_id",     "det_id", "==");
-    PXOPT_COPY_S32(config->args, where, "-iteration",  "iteration", "==");
-    PXOPT_COPY_S64(config->args, where, "-exp_id",     "exp_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-class_id",   "class_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-recip",      "recipe", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id",       "detResidImfile.det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration",    "detResidImfile.iteration", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id",       "detResidImfile.exp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id",     "detResidImfile.class_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-recip",        "detResidImfile.recipe", "==");
+    PXOPT_COPY_STR(config->args, where, "-select_state", "detRun.state", "==");
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
@@ -166,26 +167,25 @@
     }
 
-    // NOTE: the query ends in a WHERE, add the required restriction on detRun.state
-    char *value = NULL;
-    bool status;
-    if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) {
-        psStringAppend(&query, " detRun.state = '%s'", value);
+    bool hasWhere = false;
+    if (psListLength(where->list)) {
+        psString whereClause = psDBGenerateWhereSQL(where, NULL);
+        psStringAppend(&query, " %s", whereClause);
+        psFree(whereClause);
+	hasWhere = true;
+    }
+    psFree(where);
+
+    if (hasWhere) {
+	psStringAppend(&query, " AND");
     } else {
-        psStringAppend(&query, " detRun.state = 'run'");
-    }
-
-    if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidImfile");
-        psStringAppend(&query, " AND %s", whereClause);
-        psFree(whereClause);
-    }
-    psFree(where);
+	psStringAppend(&query, " WHERE");
+    }
 
     if (faulted) {
         // list only faulted rows
-        psStringAppend(&query, " %s", "AND detResidImfile.fault != 0");
+        psStringAppend(&query, " %s", " detResidImfile.fault != 0");
     } else {
         // don't list faulted rows
-        psStringAppend(&query, " %s", "AND detResidImfile.fault = 0");
+        psStringAppend(&query, " %s", " detResidImfile.fault = 0");
     }
 
