Index: trunk/ippTools/src/diffphottool.c
===================================================================
--- trunk/ippTools/src/diffphottool.c	(revision 28358)
+++ trunk/ippTools/src/diffphottool.c	(revision 28364)
@@ -126,10 +126,10 @@
 
     if (!psDBTransaction(config->dbh)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(psErrorCodeLast(), false, "database error");
         return false;
     }
 
     if (!p_psDBRunQuery(config->dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "Unable to run query: %s", query);
+        psError(psErrorCodeLast(), false, "Unable to run query: %s", query);
         psFree(where);
         return false;
@@ -326,5 +326,5 @@
 
     if (!p_psDBRunQuery(config->dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(psErrorCodeLast(), false, "database error");
         psFree(query);
         return false;
@@ -376,5 +376,5 @@
     if (!diffPhotSkyfileInsert(config->dbh, diff_phot_id, skycell_id, path_base, dtime_script, hostname,
                                fault, quality, version)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(psErrorCodeLast(), false, "database error");
         return false;
     }
@@ -405,12 +405,44 @@
     psFree(where);
 
+    if (!psDBTransaction(config->dbh)) {
+        psError(psErrorCodeLast(), false, "database error");
+        return false;
+    }
+
     if (!p_psDBRunQueryF(config->dbh, query, whereClause)) {
         psError(psErrorCodeLast(), false, "database error");
         psFree(query);
-        psFree(whereClause);
         return false;
     }
     psFree(query);
-    psFree(whereClause)
+    psFree(whereClause);
+
+    psArray *output = p_psDBFetchResult(config->dbh);
+    if (!output) {
+        psError(psErrorCodeLast(), false, "database error");
+        return false;
+    }
+
+    for (int i = 0; i < output->n; i++) {
+        psMetadata *row = output->data[i]; // Row of interest
+        psS64 diff_phot_id = psMetadataLookupS64(NULL, row, "diff_phot_id");
+
+        const char *query = "UPDATE diffRun SET state = 'full' WHERE diff_id = %" PRId64;
+        if (!p_psDBRunQueryF(config->dbh, query, diff_phot_id)) {
+            psError(psErrorCodeLast(), false,
+                    "failed to change state for diff_phot_id %" PRId64, diff_phot_id);
+            if (!psDBRollback(config->dbh)) {
+                psError(psErrorCodeLast(), false, "database error");
+            }
+            psFree(output);
+            return false;
+        }
+    }
+    psFree(output);
+
+    if (!psDBCommit(config->dbh)) {
+        psError(psErrorCodeLast(), false, "database error");
+        return false;
+    }
 
     return true;
@@ -449,5 +481,5 @@
 
     if (!p_psDBRunQuery(config->dbh, query)) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+        psError(psErrorCodeLast(), false, "database error");
         psFree(query);
         return false;
