Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 13848)
+++ /trunk/ippTools/src/dettool.c	(revision 13849)
@@ -2955,5 +2955,7 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
+    char *value = NULL;
     bool status = false;
+
     psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
     if (!status) {
@@ -2980,7 +2982,18 @@
         "   AND detProcessedImfile.exp_tag = detInputExp.exp_tag"
         " WHERE"
-        "   detRun.state = 'run'"
-        "   AND detRun.mode = 'master'"
     );
+    // NOTE the above WHERE is completed with the following line:
+
+    // add the two required restrictions: detRun.state and detRun.mode
+    if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) {
+	psStringAppend(&query, " detRun.state = '%s'", value);
+    } else {
+	psStringAppend(&query, " detRun.state = 'run'");
+    }
+    if ((value = psMetadataLookupStr(&status, config->args, "-select_mode"))) {
+	psStringAppend(&query, " AND detRun.mode = '%s'", value);
+    } else {
+	psStringAppend(&query, " AND detRun.mode = 'master'");
+    }
 
     if (config->where) {
@@ -3011,11 +3024,4 @@
     }
 
-    if (!p_psDBRunQuery(config->dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(query);
-        return false;
-    }
-    psFree(query);
-
     // treat limit == 0 as "no limit"
     if (limit) {
@@ -3024,4 +3030,11 @@
         psFree(limitString);
     }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
 
     psArray *output = p_psDBFetchResult(config->dbh);
Index: /trunk/ippTools/src/dettoolConfig.c
===================================================================
--- /trunk/ippTools/src/dettoolConfig.c	(revision 13848)
+++ /trunk/ippTools/src/dettoolConfig.c	(revision 13849)
@@ -356,4 +356,8 @@
     psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,
             "search for class ID", NULL);
+    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_state",  0,
+            "search for state", NULL);
+    psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_mode",  0,
+            "search for mode", NULL);
     psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-chip",  0,
             "restrict results to completed 'chip' sets", false);
