Index: /trunk/ippTools/src/dettool.c
===================================================================
--- /trunk/ippTools/src/dettool.c	(revision 8306)
+++ /trunk/ippTools/src/dettool.c	(revision 8307)
@@ -748,33 +748,30 @@
     PS_ASSERT_PTR_NON_NULL(config, false);
 
-    // search from rawImfiles
-    psArray *rawImfiles = searchRawImfiles(config, NULL);
-    if (!rawImfiles) {
-        psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found");
-        return false;
-    }
-
-    // remove detProcessedImfiles
-    psArray *processedImfiles = detProcessedImfileSelectRowObjects(
-        config->dbh, config->where, 0);
-    // XXX trace the not found case
-    if (processedImfiles) {
-        for (long i = 0; i < psArrayLength(rawImfiles); i++) {
-            for (long j = 0; j < psArrayLength(processedImfiles); j++) {
-                if ((strcmp(
-                ((rawImfileRow *)rawImfiles->data[i])->exp_id,
-                ((detProcessedImfileRow *)processedImfiles->data[j])->exp_id)
-                == 0) && (strcmp(
-                ((rawImfileRow *)rawImfiles->data[i])->class_id,
-                ((detProcessedImfileRow *)processedImfiles->data[j])->class_id)
-                == 0)) {
-                    // remove the rawImfiles from the list
-                    psArrayRemove(rawImfiles, rawImfiles->data[i]);
-                    i--;
-                    break;
-                }
-            }
-        }
-        psFree(processedImfiles);
+    psString query = psStringCopy(
+            "SELECT detInputExp.det_id, detRun.det_type, rawImfile.*"
+            " FROM rawImfile JOIN detInputExp USING(exp_id) "
+            " JOIN detRun ON detInputExp.det_id = detRun.position"); 
+
+    // XXX search criterian are disabled
+#if 0
+    if (config->where) {
+        psString whereClaus = psDBGenerateWhereConditionSQL(config->where);
+        psStringAppend(&query, " AND %s", whereClaus);
+        psFree(whereClaus);
+    }
+#endif
+
+    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);
+    if (!output) {
+        // XXX check psError here
+        psError(PS_ERR_UNKNOWN, false, "no pending rawDetrendExp rows found");
+        return false;
     }
 
@@ -789,15 +786,12 @@
     }
 
-    // did we remove all of the rawImfiles?
-    if (rawImfiles->n) {
-        // negative simple so the default is true
-        if (!rawImfilePrintObjects(stdout, rawImfiles, !simple)) {
-            psError(PS_ERR_UNKNOWN, false, "failed to print array");
-            psFree(rawImfiles);
-            return false;
-        }
-    }
-
-    psFree(rawImfiles);
+    // negative simple so the default is true
+    if (!ippdbPrintMetadatas(stdout, output, "rawDetrendImfile", !simple)) {
+        psError(PS_ERR_UNKNOWN, false, "failed to print array");
+        psFree(output);
+        return false;
+    }
+
+    psFree(output);
 
     return true;
