Index: /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sh
===================================================================
--- /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sh	(revision 42542)
+++ /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sh	(revision 42542)
@@ -0,0 +1,44 @@
+#!/bin/csh
+
+set dbserver = localhost
+set dbuser = ipp
+set dbpass = ipp
+
+# create 3 databases: two cameras and a xcamera
+
+mysql -h $dbserver -u $dbuser -p$dbpass <<EOF
+  drop database if exists test_cam1;
+  drop database if exists test_cam2;
+  drop database if exists test_xcam;
+  create database test_cam1;
+  create database test_cam2;
+  create database test_xcam;
+EOF
+
+mysql -h $dbserver -u $dbuser -p$dbpass test_cam1 < make.xcstack.sql
+mysql -h $dbserver -u $dbuser -p$dbpass test_cam2 < make.xcstack.sql
+mysql -h $dbserver -u $dbuser -p$dbpass test_xcam < make.xcstack.sql
+
+# insert data into the stack tables
+
+# three different stacks (one same filter & different skycell, one same skycell & different filter)
+mysql -h $dbserver -u $dbuser -p$dbpass test_cam1 <<EOF
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (1, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.001', 'Fake.Tess', 'g');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (1, '/my/path/base', 0.5, 0, 0);
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (2, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.001', 'Fake.Tess', 'r');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (2, '/my/path/base', 0.5, 0, 0);
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (3, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.002', 'Fake.Tess', 'g');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (3, '/my/path/base', 0.5, 0, 0);
+EOF
+
+# these stacks are each supposed to match the cam1 stacks above
+# three different stacks (one same filter & different skycell, one same skycell & different filter)
+mysql -h $dbserver -u $dbuser -p$dbpass test_cam2 <<EOF
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (1, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.001', 'Fake.Tess', 'r');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (1, '/my/path/base', 0.5, 0, 0);
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (2, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.002', 'Fake.Tess', 'g');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (2, '/my/path/base', 0.5, 0, 0);
+  insert into stackRun (stack_id, state, workdir, label, skycell_id, tess_id, filter) values (3, 'full', '/my/path/', 'Test.Label.Cam1', 'skycell.000.001', 'Fake.Tess', 'g');
+  insert into stackSumSkyfile (stack_id, path_base, good_frac, fault, quality) values (3, '/my/path/base', 0.5, 0, 0);
+EOF
+
Index: /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sql
===================================================================
--- /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sql	(revision 42542)
+++ /branches/eam_branches/ipp-20230313/ippTools/scripts/make.xcstack.sql	(revision 42542)
@@ -0,0 +1,144 @@
+
+-- test tables do not have auto_increment keys or foreign key constraints
+
+CREATE TABLE dbversion (
+    schema_version VARCHAR(64),
+    updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE Label (
+    label       VARCHAR(64),
+    priority    INT,
+    active      TINYINT,
+    comment     VARCHAR(80),
+    PRIMARY KEY(label),
+    KEY(priority),
+    KEY(active)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE stackRun (
+        stack_id BIGINT,
+        state VARCHAR(64),
+        workdir VARCHAR(255),
+        label VARCHAR(64),
+        data_group VARCHAR(64),
+        dist_group VARCHAR(64),
+        reduction VARCHAR(64),
+        dvodb VARCHAR(255),
+        registered DATETIME,
+        skycell_id VARCHAR(64),
+        tess_id VARCHAR(64),
+        filter VARCHAR(64),
+        software_ver VARCHAR(16),
+        note VARCHAR(255),
+        PRIMARY KEY(stack_id),
+        KEY(stack_id),
+        KEY(state),
+        KEY(skycell_id),
+        KEY(tess_id),
+        KEY(label),
+        KEY(data_group),
+        KEY(dist_group)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE stackInputSkyfile (
+        stack_id BIGINT,
+        warp_id BIGINT,
+        PRIMARY KEY(stack_id, warp_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE stackSumSkyfile (
+        stack_id BIGINT,
+        uri VARCHAR(255),
+        path_base VARCHAR(255),
+        bg DOUBLE,
+        bg_stdev DOUBLE,
+        dtime_stack FLOAT,
+        dtime_match_mean FLOAT,
+        dtime_match_stdev FLOAT,
+	dtime_convolve FLOAT,
+        dtime_initial FLOAT,
+        dtime_reject FLOAT,
+        dtime_final FLOAT,
+        dtime_phot FLOAT,
+        dtime_script FLOAT,
+        match_mean FLOAT,
+        match_stdev FLOAT,
+        match_rms FLOAT,
+        stamps_mean FLOAT,
+        stamps_stdev FLOAT,
+        stamps_min INT,
+        reject_images INT,
+        reject_pix_mean FLOAT,
+        reject_pix_stdev FLOAT,
+        sources INT,
+        hostname VARCHAR(64),
+        good_frac FLOAT,
+        mjd_obs DOUBLE,
+        fault SMALLINT,
+        software_ver VARCHAR(16),
+	background_model SMALLINT,
+        quality SMALLINT NOT NULL DEFAULT 0,
+        PRIMARY KEY(stack_id),
+        KEY(dtime_stack),
+        KEY(good_frac),
+        KEY(fault),
+        KEY(quality)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE xcstackRun (
+        xcstack_id BIGINT AUTO_INCREMENT,
+        state VARCHAR(64),
+        workdir VARCHAR(255),
+        label VARCHAR(64),
+        data_group VARCHAR(64),
+        dist_group VARCHAR(64),
+        reduction VARCHAR(64),
+        registered DATETIME,
+        skycell_id VARCHAR(64),
+        tess_id VARCHAR(64),
+        filter VARCHAR(64),
+        software_ver VARCHAR(16),
+        note VARCHAR(255),
+        PRIMARY KEY(xcstack_id),
+        KEY(xcstack_id),
+        KEY(state),
+        KEY(skycell_id),
+        KEY(tess_id),
+        KEY(label),
+        KEY(data_group),
+        KEY(dist_group)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE xcstackInputSkyfile (
+        xcstack_id BIGINT,
+        camera_id BIGINT,
+        stack_id BIGINT,
+        PRIMARY KEY(xcstack_id, stack_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE xcstackSumSkyfile (
+        xcstack_id BIGINT,
+        path_base VARCHAR(255),
+        bg DOUBLE,
+        bg_stdev DOUBLE,
+        dtime_stack FLOAT,
+        dtime_script FLOAT,
+        hostname VARCHAR(64),
+        good_frac FLOAT,
+        fault SMALLINT,
+        software_ver VARCHAR(16),
+        quality SMALLINT NOT NULL DEFAULT 0,
+        PRIMARY KEY(xcstack_id),
+        KEY(dtime_stack),
+        KEY(good_frac),
+        KEY(fault),
+        KEY(quality)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
+CREATE TABLE xcstackCamera (
+        camera_id BIGINT AUTO_INCREMENT,
+        camera VARCHAR(255),
+        PRIMARY KEY(camera_id)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
