Index: trunk/ippTools/share/Makefile.am
===================================================================
--- trunk/ippTools/share/Makefile.am	(revision 28341)
+++ trunk/ippTools/share/Makefile.am	(revision 28343)
@@ -325,3 +325,8 @@
      warptool_towarped.sql \
      warptool_updateskyfile.sql \
-     warptool_warped.sql
+     warptool_warped.sql \
+	diffphottool_definerun.sql \
+	diffphottool_input.sql \
+	diffphottool_pending.sql \
+	diffphottool_advance.sql \
+	diffphottool_revert.sql
Index: trunk/ippTools/share/diffphottool_advance.sql
===================================================================
--- trunk/ippTools/share/diffphottool_advance.sql	(revision 28343)
+++ trunk/ippTools/share/diffphottool_advance.sql	(revision 28343)
@@ -0,0 +1,15 @@
+UPDATE diffPhotRun
+SET state = 'full'
+WHERE diff_phot_id IN (
+    SELECT
+        diff_phot_id
+    FROM diffPhotRun
+    JOIN diffSkyfile USING(diff_id)
+    JOIN diffPhotSkyfile USING(diff_phot_id)
+    WHERE diffPhotRun.state = 'new'
+        AND diffPhotSkyfile.fault = 0
+        AND diffSkyfile.fault = 0
+        AND diffSkyfile.quality = 0
+        -- WHERE hook %s
+    HAVING COUNT(diffPhotSkyfile.skycell_id) = COUNT(diffSkyfile.skycell_id)
+) AS diffPhotRunsDone
Index: trunk/ippTools/share/diffphottool_definerun.sql
===================================================================
--- trunk/ippTools/share/diffphottool_definerun.sql	(revision 28343)
+++ trunk/ippTools/share/diffphottool_definerun.sql	(revision 28343)
@@ -0,0 +1,10 @@
+SELECT DISTINCT
+    diffRun.*
+FROM diffRun
+JOIN diffInputSkyfile USING(diff_id)
+JOIN warpRun ON warpRun.warp_id = diffInputSkyfile.warp1 -- only JOINing inputs, not templates!
+JOIN fakeRun USING(fake_id)
+JOIN camRun USING(cam_id)
+JOIN chipRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+WHERE diffRun.state = 'full'
Index: trunk/ippTools/share/diffphottool_input.sql
===================================================================
--- trunk/ippTools/share/diffphottool_input.sql	(revision 28343)
+++ trunk/ippTools/share/diffphottool_input.sql	(revision 28343)
@@ -0,0 +1,6 @@
+SELECT
+    diffPhotRun.*,
+    diffSkyfile.path_base
+FROM diffPhotRun
+JOIN diffRun USING(diff_id)
+JOIN diffSkyfile USING(diff_id)
Index: trunk/ippTools/share/diffphottool_pending.sql
===================================================================
--- trunk/ippTools/share/diffphottool_pending.sql	(revision 28343)
+++ trunk/ippTools/share/diffphottool_pending.sql	(revision 28343)
@@ -0,0 +1,11 @@
+SELECT
+    diffPhotRun.*,
+    diffSkyfile.skycell_id
+FROM diffPhotRun
+JOIN diffRun USING(diff_id)
+JOIN diffSkyfile USING(diff_id)
+LEFT JOIN diffPhotSkyfile USING(diff_phot_id, skycell_id)
+WHERE diffPhotSkyfile.skycell_id IS NULL
+    AND diffRun.state = 'full'
+    AND diffSkyfile.fault = 0
+    AND diffSkyfile.quality = 0
Index: trunk/ippTools/share/diffphottool_revert.sql
===================================================================
--- trunk/ippTools/share/diffphottool_revert.sql	(revision 28343)
+++ trunk/ippTools/share/diffphottool_revert.sql	(revision 28343)
@@ -0,0 +1,4 @@
+DELETE diffPhotSkyfile
+FROM diffRun
+JOIN diffPhotSkyfile USING(diff_phot_id)
+WHERE fault != 0
Index: trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_create_tables.sql	(revision 28341)
+++ trunk/ippTools/share/pxadmin_create_tables.sql	(revision 28343)
@@ -994,5 +994,5 @@
         tess_id VARCHAR(64),
         filter VARCHAR(64),
-	software_ver VARCHAR(16),
+        software_ver VARCHAR(16),
         note VARCHAR(255),
         PRIMARY KEY(stack_id),
@@ -1042,5 +1042,5 @@
         quality SMALLINT NOT NULL DEFAULT 0,
         fault SMALLINT,
-	software_ver VARCHAR(16),
+        software_ver VARCHAR(16),
         PRIMARY KEY(stack_id),
         KEY(dtime_stack),
@@ -1065,5 +1065,5 @@
         exposure TINYINT DEFAULT 0,
         magicked BIGINT,
-	software_ver VARCHAR(16),
+        software_ver VARCHAR(16),
         maskfrac_npix FLOAT,
         maskfrac_static FLOAT,
@@ -1134,9 +1134,9 @@
         fault SMALLINT,
         magicked BIGINT,
-	software_ver VARCHAR(16),
-	maskfrac_npix INT,
-	maskfrac_static FLOAT,
-	maskfrac_dynamic FLOAT,
-	maskfrac_magic FLOAT,
+        software_ver VARCHAR(16),
+        maskfrac_npix INT,
+        maskfrac_static FLOAT,
+        maskfrac_dynamic FLOAT,
+        maskfrac_magic FLOAT,
         maskfrac_advisory FLOAT,
         PRIMARY KEY(diff_id, skycell_id),
@@ -1678,4 +1678,41 @@
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
 
+
+-- Tables to support (re-)photometry of a diff
+
+CREATE TABLE diffPhotRun (
+    diff_phot_id BIGINT AUTO_INCREMENT, -- Identifier for diffPhotRun
+    diff_id BIGINT NOT NULL,            -- Identifier for diffRun
+    state VARCHAR(64) NOT NULL,         -- State of run
+    workdir VARCHAR(255) NOT NULL, -- working directory
+    label VARCHAR(64),             -- processing label
+    data_group VARCHAR(64),        -- group for data
+    reduction VARCHAR(64),         -- reduction class (for altering recipe)
+    registered TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- time run was registered
+    note VARCHAR(255),             -- note
+    PRIMARY KEY(diff_phot_id),
+    KEY(diff_id),
+    KEY(state),
+    KEY(label),
+    KEY(data_group),
+    FOREIGN KEY(diff_id) REFERENCES diffRun(diff_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE diffPhotSkyfile (
+    diff_phot_id BIGINT AUTO_INCREMENT, -- Identifier for diffPhotRun
+    skycell_id VARCHAR(64) NOT NULL,            -- Skycell identifier
+    path_base VARCHAR(255) NOT NULL, -- Base of path for output
+    dtime_script FLOAT,              -- elapsed time for script
+    hostname VARCHAR(64) NOT NULL,   -- host that executed script
+    fault SMALLINT NOT NULL,         -- fault code
+    quality SMALLINT NOT NULL,       -- bad quality flag
+    software_ver VARCHAR(16),                       -- software version
+    PRIMARY KEY(diff_phot_id, skycell_id),
+    KEY(state),
+    KEY(fault),
+    KEY(quality),
+    FOREIGN KEY(diff_phot_id) REFERENCES diffPhotRun(diff_phot_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
 -- This comment line is here to avoid empty query error.
 -- Another way to avoid that problem is to omit the semicolon above but I think that is untidy.
