Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql	(revision 28037)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql	(revision 28037)
@@ -0,0 +1,9 @@
+SELECT
+    minidvodbProcessed.*,
+    addRun.minidvodb_group
+FROM minidvodbProcessed
+JOIN minidvodbRun
+    USING(minidvodb_name)
+JOIN addRun
+    USING(minidvodb_name)
+
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbrun.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbrun.sql	(revision 28036)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbrun.sql	(revision 28037)
@@ -1,7 +1,5 @@
 SELECT
-    minidvodbRun.*,
-    addRun.minidvodb_group
+    minidvodbRun.*
 FROM minidvodbRun
-LEFT JOIN addRun
-    USING(minidvodb_name)
 
+
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql	(revision 28037)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql	(revision 28037)
@@ -0,0 +1,6 @@
+UPDATE minidvodbProcessed, minidvodbRun, addRun
+SET minidvodbRun.state = 'to_be_merged'
+WHERE
+    minidvodbProcessed.minidvodb_name = minidvodbRun.minidvodb_name
+    AND addRun.minidvodb_name = minidvodbRun.minidvodb_name
+    AND minidvodbProcessed.fault != 0
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql	(revision 28037)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql	(revision 28037)
@@ -0,0 +1,6 @@
+DELETE FROM minidvodbProcessed
+USING minidvodbProcessed, minidvodbRun, addRun
+WHERE
+    minidvodbProcessed.minidvodb_name = minidvodbRun.minidvodb_name
+    AND addRun.minidvodb_name = minidvodbRun.minidvodb_name
+    AND minidvodbProcessed.fault != 0
Index: /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c	(revision 28036)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c	(revision 28037)
@@ -417,4 +417,5 @@
         return false;
     }
+    //psError(PS_ERR_UNKNOWN, false, "database error %s", query);
     psFree(query);
 
@@ -444,5 +445,5 @@
 	dvodb_path,
         fault
-        );
+	);
 
     if (!addProcessedExpInsertObject(config->dbh, row)) {
@@ -762,6 +763,8 @@
 
   PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", true, false);
+  PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", true, false);
   PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", true, false);
   PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", true, false);
+  PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
   psMetadata *where = psMetadataAlloc();
 
@@ -785,5 +788,11 @@
     psStringAppend(&query, "INSERT INTO minidvodbRun SET minidvodb_name = '%s' ,",minidvodb_name);
     psStringAppend(&query, "minidvodb_path = '%s' ,",minidvodb_path);
-    psStringAppend(&query, "mergedvodb_path = '%s' , state = 'new';",mergedvodb_path);
+    psStringAppend(&query, "mergedvodb_path = '%s',",mergedvodb_path);
+    psStringAppend(&query, "minidvodb_group = '%s'",minidvodb_group);
+    if (state) {
+      psStringAppend(&query, ",state = '%s';", state);
+    } else {
+      psStringAppend(&query, ",state = 'new';");
+    }
     
     
@@ -824,13 +833,14 @@
     psMetadata *where = psMetadataAlloc();
     
-    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "==");
+    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "LIKE");
     PXOPT_COPY_STR(config->args, where, "-state",     "state", "==");
     PXOPT_COPY_STR(config->args, where, "-minidvodb_path", "minidvodb_path", "==");
     PXOPT_COPY_STR(config->args, where, "-mergedvodb_path", "mergedvodb_path", "==");
+    PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "group");
     PXOPT_LOOKUP_STR(minidvodb_name,  config->args, "-set_minidvodb_name", false, false);
     PXOPT_LOOKUP_STR(minidvodb_path,  config->args, "-set_minidvodb_path", false, false);
     PXOPT_LOOKUP_STR(state,  config->args, "-set_state", false, false);
     PXOPT_LOOKUP_STR(mergedvodb_path,  config->args, "-set_mergedvodb_path", false, false);
-
+    PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-set_minidvodb_group", false, false);
 
 
@@ -875,5 +885,11 @@
  }
 
-
+if (minidvodb_group) {
+if (cnt) {
+    psStringAppend(&query,comma);
+  }
+ psStringAppend(&query, " minidvodb_group = '%s'", minidvodb_group);
+cnt++;
+ }
 
     // pxUpdateRun gets parameters from config->args and runs the update query
@@ -890,4 +906,5 @@
 
 
+   
     psFree(query);
     psFree(where);
@@ -902,15 +919,16 @@
     psMetadata *where = psMetadataAlloc();
     
-    PXOPT_LOOKUP_BOOL(finished_addrun, config->args, "-finished_addrun", false);
-    if (finished_addrun) { //too many selects, and I couldn't figure out how to rename it
-      PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidbn", "==");
-      PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidbg", "==");
-    } else {
-      PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "==");
-      PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
-    }
+    //PXOPT_LOOKUP_BOOL(finished_addrun, config->args, "-finished_addrun", false);
+    //if (finished_addrun) { //too many selects, and I couldn't figure out how to rename it
+    // PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidbn", "==");
+    //  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidbg", "==");
+    //} else {
+      PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "LIKE");
+      PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "==");
+      //pxAddLabelSearchArgs (config, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
+      // }
     PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "==");
     PXOPT_LOOKUP_U64(limit,      config->args, "-limit", false, false);
-  
+  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
   
 
@@ -924,10 +942,10 @@
  psString query = NULL;
 psString query1 = pxDataGet("addtool_find_minidvodbrun.sql");
-psString query2 = pxDataGet("addtool_find_minidvodbrun2.sql");
- if (finished_addrun) {
-   psStringAppend(&query, "%s",query2);
- } else {
+//psString query2 = pxDataGet("addtool_find_minidvodbrun2.sql");
+//if (finished_addrun) {
+//  psStringAppend(&query, "%s",query2);
+//} else {
    psStringAppend(&query, "%s",query1);
- } 
+   //} 
  //psString query = pxDataGet("addtool_find_minidvodbrun.sql");
     if (!query) {
@@ -938,10 +956,10 @@
 
     
-    if (finished_addrun) { //finished addrun does not need the WHERE
-      if (psListLength(where->list)) {
-        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
-        psStringAppend(&query, " AND %s", whereClause);
-        psFree(whereClause);
-    } } else {
+    //if (finished_addrun) { //finished addrun does not need the WHERE
+    //  if (psListLength(where->list)) {
+    //    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+    //   psStringAppend(&query, " AND %s", whereClause);
+    //   psFree(whereClause);
+    // } } else {
       if (psListLength(where->list)) {
         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
@@ -949,10 +967,10 @@
         psFree(whereClause);
       }
-    }
+      //}
     
-if (!finished_addrun) {
+    //if (!finished_addrun) {
   //finished_addrun does not need this
-    psStringAppend(&query, " %s", " GROUP BY minidvodbRun.minidvodb_name ");
- }
+    //   psStringAppend(&query, " %s", " GROUP BY minidvodbRun.minidvodb_name ORDER BY minidvodbRun.minidvodb_name ");
+    //}
 
 
@@ -967,5 +985,5 @@
  
     if (!p_psDBRunQuery(config->dbh, query)) {
-      psError(PS_ERR_UNKNOWN, false, "database error %s", query);
+      psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
         return false;
@@ -983,5 +1001,5 @@
     }
 
-   if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun", 1)) {
+   if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun",  !simple)) {
         psError(PS_ERR_UNKNOWN, false, "failed to print array");
         psFree(output);
@@ -1066,23 +1084,40 @@
 	if (!minidvodbProcessedInsertObject(config->dbh, row)) {
 	  // rollback
-        if (!psDBRollback(config->dbh)) {
+	  if (!psDBRollback(config->dbh)) {
+	    psError(PS_ERR_UNKNOWN, false, "database error");
+	  }
 	  psError(PS_ERR_UNKNOWN, false, "database error");
-        }
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(row);
-        psFree(pendingRow);
-        return false;
+	  psFree(row);
+	  psFree(pendingRow);
+	  return false;
 	}
 
-    // since there is only one exp per 'new' set addRun.state = 'full'
-    //if (!pxminidvodbRunSetState(config, row->minidvodb_name, "merged")) {
-    //  psError(PS_ERR_UNKNOWN, false, "failed to change minidvodbRun.state for minidvodb_name: %" PRId64, row->minidvodb_name);
-    //  psFree(row);
-    //   psFree(pendingRow);
-    //    return false;
-    // }
-	psFree(row);
-	psFree(pendingRow);
+	// since there is only one exp per 'new' set addRun.state = 'full'
 	
+	//	psString query2 = NULL ;
+	//
+	//	psStringAppend(&query2, "UPDATE minidvodbRun SET state = 'merging' WHERE minidvodb_name = '%s'", row->minidvodb_name); 
+
+	//if (!p_psDBRunQuery(config->dbh, query2)) {
+	//  psError(PS_ERR_UNKNOWN, false, "database error");
+	//  psFree(query2);
+	//  return false;
+	//	}
+	// psArray *output2 = p_psDBFetchResult(config->dbh);
+	//  if (!output2) {
+        //psError(PS_ERR_UNKNOWN, false, "database error");
+        //return false;
+	// }
+	// if (!psArrayLength(output2)) {
+	//    psTrace("addtool", PS_LOG_INFO, "no rows found");
+	//	//     psFree(output2);
+	//    return true;
+	//  }
+
+
+	
+	//	psFree(row);
+	//	psFree(pendingRow);
+	//	
 	if (!psDBCommit(config->dbh)) {
 	  psError(PS_ERR_UNKNOWN, false, "database error");
@@ -1091,8 +1126,8 @@
 	
 
-
-
+	
+	
 	return true;
-    }
+}
     
 static bool listminidvodbprocessedMode(pxConfig *config) {
Index: /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c	(revision 28036)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c	(revision 28037)
@@ -98,4 +98,5 @@
     psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0,            "define addtool ID (required)", 0);
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0,            "define base output location", NULL);
+     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-dvodb_path", 0,            "define base output location", NULL);
     psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN);
     psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
@@ -145,4 +146,5 @@
     psMetadata *addminidvodbrunArgs = psMetadataAlloc();
     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
+    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define minidvodb_name", NULL);
     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb", NULL);
@@ -151,20 +153,23 @@
     // -updateminidvodbruns
     psMetadata *updateminidvodbrunArgs = psMetadataAlloc();
-psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
+psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by minidvodb_name (LIKE)", NULL);
+psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_path",        0, "search by path for minidvodb", NULL);
     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-mergedvodb_path",        0, "search by path for the merged dvodb", NULL);
+   
     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
-    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb", NULL);
+    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for minidvodb", NULL);
+    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define path for the merged dvodb", NULL);
     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
     // -listminidvodbrunArgs
     psMetadata *listminidvodbrunArgs = psMetadataAlloc();
-    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
-    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by addRun.minidvodb_group", NULL);
+    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
+    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "search by addRun.minidvodb_group", NULL);
     psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
     psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
     psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-simple",        0, "simple output", false);
-    psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-finished_addrun",        0, "limit to minidvodbs with completed addRuns (none in new state)", false);
+    //psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-finished_addrun",        0, "limit to minidvodbs with completed addRuns (none in new state)", false);
 
     psMetadata *addminidvodbprocessedArgs = psMetadataAlloc();
