Index: trunk/ippTools/share/Makefile.am
===================================================================
--- trunk/ippTools/share/Makefile.am	(revision 25284)
+++ trunk/ippTools/share/Makefile.am	(revision 25299)
@@ -4,4 +4,8 @@
 
 dist_pkgdata_DATA = \
+     addtool_find_pendingexp.sql \
+     addtool_queue_cam_id.sql \
+     addtool_reset_faulted_runs.sql \
+     addtool_revertprocessedexp.sql \
      camtool_donecleanup.sql \
      camtool_find_chip_id.sql \
Index: trunk/ippTools/share/addtool_find_pendingexp.sql
===================================================================
--- trunk/ippTools/share/addtool_find_pendingexp.sql	(revision 25299)
+++ trunk/ippTools/share/addtool_find_pendingexp.sql	(revision 25299)
@@ -0,0 +1,26 @@
+SELECT
+    addRun.*,
+    rawExp.exp_tag,
+    rawExp.exp_id,
+    rawExp.exp_name,
+    rawExp.camera,
+    rawExp.telescope,
+    rawExp.filelevel
+FROM addRun
+JOIN camRun
+    USING(cam_id)
+JOIN chipRun
+    USING(chip_id)
+JOIN chipProcessedImfile
+    USING(chip_id)
+JOIN rawExp
+    ON chipRun.exp_id = rawExp.exp_id
+LEFT JOIN addProcessedExp
+    USING(add_id)
+LEFT JOIN addMask
+    ON addRun.label = addMask.label
+WHERE
+    camRun.state = 'full'
+    AND ((addRun.state = 'new' AND addProcessedExp.add_id IS NULL) OR addRun.state = 'update')
+    AND addMask.label IS NULL
+
Index: trunk/ippTools/share/addtool_queue_cam_id.sql
===================================================================
--- trunk/ippTools/share/addtool_queue_cam_id.sql	(revision 25299)
+++ trunk/ippTools/share/addtool_queue_cam_id.sql	(revision 25299)
@@ -0,0 +1,14 @@
+INSERT INTO addRun
+    SELECT
+        0,              -- add_id
+        cam_id,         -- cam_id
+        '%s',           -- state
+        '%s',           -- workdir
+	'%s',           -- workdir_state
+        '%s',           -- label
+        '%s',           -- dvodb 
+	0               -- magicked
+    FROM camRun
+    WHERE
+        camRun.state = 'full'
+        AND camRun.cam_id = %lld
Index: trunk/ippTools/share/addtool_reset_faulted_runs.sql
===================================================================
--- trunk/ippTools/share/addtool_reset_faulted_runs.sql	(revision 25299)
+++ trunk/ippTools/share/addtool_reset_faulted_runs.sql	(revision 25299)
@@ -0,0 +1,8 @@
+UPDATE addRun, addProcessedExp, camRun, chipRun, rawExp
+SET addRun.state = 'new'
+WHERE
+    addRun.add_id = addProcessedExp.add_id
+    AND addRun.cam_id = camRun.cam_id
+    AND camRun.chip_id = chipRun.chip_id
+    AND chipRun.exp_id = rawExp.exp_id
+    AND addProcessedExp.fault != 0
Index: trunk/ippTools/share/addtool_revertprocessedexp.sql
===================================================================
--- trunk/ippTools/share/addtool_revertprocessedexp.sql	(revision 25299)
+++ trunk/ippTools/share/addtool_revertprocessedexp.sql	(revision 25299)
@@ -0,0 +1,8 @@
+DELETE FROM addProcessedExp
+USING addProcessedExp, addRun, camRun, chipRun, rawExp
+WHERE
+    addRun.add_id = addProcessedExp.add_id
+    AND addRun.cam_id = camRun.cam_id
+    AND camRun.chip_id = chipRun.chip_id
+    AND chipRun.exp_id = rawExp.exp_id
+    AND addProcessedExp.fault != 0
Index: trunk/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql
===================================================================
--- trunk/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql	(revision 25284)
+++ trunk/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql	(revision 25299)
@@ -1,3 +1,3 @@
-SELECT
+SELECT DISTINCT
     detNormalizedImfile.*,
     detRunSummary.data_state
Index: trunk/ippTools/share/dettool_pendingcleanup_stacked.sql
===================================================================
--- trunk/ippTools/share/dettool_pendingcleanup_stacked.sql	(revision 25284)
+++ trunk/ippTools/share/dettool_pendingcleanup_stacked.sql	(revision 25299)
@@ -1,3 +1,3 @@
-SELECT
+SELECT DISTINCT
     detStackedImfile.*,
     detRunSummary.data_state
Index: trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_create_tables.sql	(revision 25284)
+++ trunk/ippTools/share/pxadmin_create_tables.sql	(revision 25299)
@@ -451,4 +451,38 @@
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
 
+CREATE TABLE addRun (
+    add_id BIGINT AUTO_INCREMENT,
+    cam_id BIGINT,
+    state VARCHAR(64),
+    workdir VARCHAR(255),
+    workdir_state VARCHAR(64),
+    label VARCHAR(64),
+    dvodb VARCHAR(255),
+    magicked BIGINT,
+    PRIMARY KEY(add_id),
+    KEY(add_id),
+    KEY(cam_id),
+    KEY(state),
+    KEY(workdir_state),
+    KEY(label),
+    INDEX(add_id, cam_id),
+    FOREIGN KEY(cam_id) REFERENCES camRun(cam_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE addProcessedExp (
+    add_id BIGINT AUTO_INCREMENT,
+    dtime_addstar FLOAT,
+    n_stars INT,
+    path_base VARCHAR(255),
+    fault SMALLINT NOT NULL,
+    PRIMARY KEY(add_id),
+    FOREIGN KEY(add_id) REFERENCES addRun(add_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE addMask (
+    label VARCHAR(64),
+    PRIMARY KEY(label)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
 CREATE TABLE fakeRun (
     fake_id BIGINT AUTO_INCREMENT,
@@ -1086,5 +1120,6 @@
         KEY(magic_id),
         KEY(label),
-        FOREIGN KEY(magic_id) REFERENCES magicRun(magic_id)
+        FOREIGN KEY(magic_id) REFERENCES magicRun(magic_id),
+        FOREIGN KEY(inv_magic_id) REFERENCES magicRun(magic_id)
         FOREIGN KEY(inv_magic_id) REFERENCES magicRun(magic_id)
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
Index: trunk/ippTools/share/pxadmin_drop_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_drop_tables.sql	(revision 25284)
+++ trunk/ippTools/share/pxadmin_drop_tables.sql	(revision 25299)
@@ -19,4 +19,7 @@
 DROP TABLE IF EXISTS detRun;
 DROP TABLE IF EXISTS detInputExp;
+DROP TABLE IF EXISTS addRun;
+DROP TABLE IF EXISTS addProcessedExp;
+DROP TABLE IF EXISTS addMask;
 DROP TABLE IF EXISTS fakeRun;
 DROP TABLE IF EXISTS fakeProcessedImfile;
