Index: branches/eam_branches/ipp-20120627/ippTools/src/disttool.c
===================================================================
--- branches/eam_branches/ipp-20120627/ippTools/src/disttool.c	(revision 34139)
+++ branches/eam_branches/ipp-20120627/ippTools/src/disttool.c	(revision 34241)
@@ -743,4 +743,5 @@
 
     query = "DELETE FROM distComponent where dist_id = %" PRId64;
+    char *query2 =  "DELETE from rcDSFileset using distRun, rcDSFileset WHERE distRun.dist_id = rcDSFileset.dist_id AND rcDSFileset.state ='cleaned' AND dist_id = %" PRId64;
     
     for (long i=0; i < psArrayLength(output); i++) {
@@ -753,5 +754,15 @@
         }
 
+        // delete any existing distComponents
         if (!p_psDBRunQueryF(config->dbh, query, dist_id)) {
+            psError(PS_ERR_UNKNOWN, false, "database error");
+            psFree(query);
+            if (!psDBRollback(config->dbh)) {
+                psError(PS_ERR_UNKNOWN, false, "database error");
+            }
+            return false;
+        }
+        // delete any exisiting fileset
+        if (!p_psDBRunQueryF(config->dbh, query2, dist_id)) {
             psError(PS_ERR_UNKNOWN, false, "database error");
             psFree(query);
Index: branches/eam_branches/ipp-20120627/ippTools/src/pxtools.c
===================================================================
--- branches/eam_branches/ipp-20120627/ippTools/src/pxtools.c	(revision 34139)
+++ branches/eam_branches/ipp-20120627/ippTools/src/pxtools.c	(revision 34241)
@@ -301,4 +301,8 @@
     PXOPT_LOOKUP_STR(note, config->args,        "-set_note", false, false);
 
+#ifdef DISALLOW_CHANGE_TO_UPDATE
+    // Back in the days of magic we didn't allow state changes of Run's
+    // to update because the interaction with destreaking was problematic
+    // With the death of magic we can allow this now.
     if ((state)&&(!strcmp(state, "update"))) {
         fprintf(stderr, "'-updaterun -set_state update' is not supported.");
@@ -310,5 +314,5 @@
         exit(1);
     }
-
+#endif
     psString dist_group = NULL;
     if (has_dist_group) {
@@ -350,4 +354,6 @@
     psString joinHook = psStringCopy("");
     psString fileWhere = NULL;
+
+#ifdef DISALLOW_CHANGE_TO_UPDATE
     if (state && !strcmp(state, "update")) {
         psStringAppend(&joinHook, "\n JOIN %s USING(%s)", fileTable, idColumn);
@@ -355,4 +361,5 @@
         psStringAppend(&fileWhere, "AND %s.data_state = 'cleaned'", fileTable);
     }
+#endif
 
     psString whereClause =  psDBGenerateWhereSQL(where, NULL);
Index: branches/eam_branches/ipp-20120627/ippTools/src/staticskytool.c
===================================================================
--- branches/eam_branches/ipp-20120627/ippTools/src/staticskytool.c	(revision 34139)
+++ branches/eam_branches/ipp-20120627/ippTools/src/staticskytool.c	(revision 34241)
@@ -1144,9 +1144,8 @@
 static bool updateskycalrunMode(pxConfig *config)
 {
-#ifdef notyet
     PS_ASSERT_PTR_NON_NULL(config, false);
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-sky_id",  "sky_id",   "==");
+    PXOPT_COPY_S64(config->args, where, "-skycal_id",  "skycal_id",   "==");
     PXOPT_COPY_STR(config->args, where, "-label",   "label",    "==");
     PXOPT_COPY_STR(config->args, where, "-state",   "state",    "==");
@@ -1157,15 +1156,14 @@
     }
 
-    psString query = psStringCopy("UPDATE staticskyRun");
+    psString query = psStringCopy("UPDATE skycalRun");
 
     // pxUpdateRun gets parameters from config->args and updates
-    bool result = pxUpdateRun(config, where, &query, "staticskyRun", "sky_id", "staticskyResult", true, false);
+    bool result = pxUpdateRun(config, where, &query, "skycalRun", "skycal_id", "skycalResult", true, false);
     psFree(query);
     psFree(where);
 
     return result;
-#endif
-    return false;
-}
+}
+
 static bool pendingskycalrunMode(pxConfig *config)
 {
@@ -1370,5 +1368,5 @@
     PXOPT_COPY_S64(config->args, where, "-skycal_id",  "skycalRun.skycal_id", "==");
     PXOPT_COPY_S64(config->args, where, "-sky_id",     "skycalRun.sky_id", "==");
-    PXOPT_COPY_S64(config->args, where, "-stack_id",   "skycalRun.stack_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-stack_id",   "stackRun.stack_id", "==");
     PXOPT_COPY_STR(config->args, where, "-tess_id",    "stackRun.tess_id", "LIKE");
     PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "LIKE");
@@ -1447,9 +1445,9 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-skycal_id", "staticskyResult.sky_id", "==");
-    pxAddLabelSearchArgs(config, where, "-label", "staticskyRun.label", "==");
-    pxAddLabelSearchArgs(config, where, "-data_group", "staticskyRun.data_group", "==");
+    PXOPT_COPY_S64(config->args, where, "-skycal_id", "skycalResult.skycal_id", "==");
+    pxAddLabelSearchArgs(config, where, "-label", "skycalRun.label", "==");
+    pxAddLabelSearchArgs(config, where, "-data_group", "skycalRun.data_group", "==");
     pxAddLabelSearchArgs(config, where, "-filter", "stackRun.filter", "==");
-    PXOPT_COPY_S16(config->args, where, "-fault", "staticskyResult.fault", "==");
+    PXOPT_COPY_S16(config->args, where, "-fault", "skycalResult.fault", "==");
 
     if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
Index: branches/eam_branches/ipp-20120627/ippTools/src/staticskytoolConfig.c
===================================================================
--- branches/eam_branches/ipp-20120627/ippTools/src/staticskytoolConfig.c	(revision 34139)
+++ branches/eam_branches/ipp-20120627/ippTools/src/staticskytoolConfig.c	(revision 34241)
@@ -171,5 +171,5 @@
     // -updateskycalrun
     psMetadata *updateskycalrunArgs = psMetadataAlloc();
-    psMetadataAddS64(updateskycalrunArgs, PS_LIST_TAIL, "-sky_id", 0, "search by stack ID", 0);
+    psMetadataAddS64(updateskycalrunArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by skycal ID", 0);
     psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL);
     psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-label", 0, "search by label", 0);
@@ -218,5 +218,5 @@
     // -revertskycal
     psMetadata *revertskycalArgs= psMetadataAlloc();
-    psMetadataAddS64(revertskycalArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by staticsky ID", 0);
+    psMetadataAddS64(revertskycalArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by skycal ID", 0);
     psMetadataAddStr(revertskycalArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", 0);
     psMetadataAddStr(revertskycalArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by data_group", 0);
