Index: trunk/dbconfig/changes.txt
===================================================================
--- trunk/dbconfig/changes.txt	(revision 20855)
+++ trunk/dbconfig/changes.txt	(revision 20973)
@@ -717,2 +717,76 @@
 alter table magicDSRun add column cam_id BIGINT after stage_id;
 
+--  Version: 1.1.47
+
+-- WARNING WARNING WARNING
+-- Updating a database which has populated diffRun's requires editing
+-- the contents of the tables in a way that cannot be expresed here.
+-- The script tools/collapsdiffinputs.pl does the appropriate edits
+-- and should be run at the spot indicated below
+
+-- fix order of workdir to match pxadmin_create_tables.sql
+ALTER TABLE diffRun CHANGE COLUMN workdir workdir VARCHAR(255) AFTER state;
+
+-- add exposure id to diffRun
+ALTER TABLE diffRun ADD COLUMN exp_id BIGINT;
+ALTER TABLE diffRun ADD FOREIGN KEY (exp_id) REFERENCES rawExp(exp_id);
+ALTER TABLE diffRun DROP COLUMN skycell_id;
+
+
+-- drop exiting foreign key constraints
+ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_1;
+ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_2;
+ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_3;
+
+ALTER TABLE diffInputSkyfile DROP COLUMN kind;
+ALTER TABLE diffInputSkyfile CHANGE COLUMN skycell_id skycell_id VARCHAR(64) AFTER diff_id;
+
+-- WARNING WARNING
+-- If you have existing diff runs they must be converted
+
+-- run the script collapse_diffinputs.pl here.
+--        collapse_diffinputs.pl dbname dbuser dbpass dbhost
+
+DELETE FROM diffInputSkyfile where template = 1;
+
+ALTER TABLE diffInputSkyfile DROP PRIMARY KEY;
+ALTER TABLE diffInputSkyfile ADD PRIMARY KEY (diff_id, skycell_id);
+ALTER TABLE diffInputSkyfile DROP COLUMN template;
+
+ALTER TABLE diffInputSkyfile CHANGE COLUMN warp_id warp1 BIGINT;
+ALTER TABLE diffInputSkyfile ADD COLUMN stack1 BIGINT AFTER warp1, ADD KEY(stack1);
+ALTER TABLE diffInputSkyfile ADD COLUMN warp2 BIGINT AFTER stack1, ADD KEY(warp2);
+ALTER TABLE diffInputSkyfile CHANGE COLUMN stack_id stack2 BIGINT AFTER warp2;
+ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id);
+
+# need to check these
+ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (warp1, skycell_id, tess_id) REFERENCES warpSkyfile(warp_id, skycell_id, tess_id);
+ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (warp2, skycell_id, tess_id) REFERENCES warpSkyfile(warp_id, skycell_id, tess_id);
+
+ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (stack1) REFERENCES stackRun(stack_id);
+ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (stack2) REFERENCES stackRun(stack_id); 
+
+-- add unique ids for each image and flags that indicate whether the image has been
+-- magic destreaked
+ALTER TABLE diffSkyfile ADD COLUMN skycell_id VARCHAR(64) AFTER diff_id;
+ALTER TABLE diffSkyfile DROP PRIMARY KEY, ADD PRIMARY KEY (diff_id, skycell_id);
+ALTER TABLE diffSkyfile ADD COLUMN diff_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(diff_image_id);
+ALTER TABLE diffSkyfile ADD COLUMN magicked TINYINT;
+
+ALTER TABLE warpRun DROP COLUMN magiced;
+
+ALTER TABLE warpSkyfile ADD COLUMN warp_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(warp_image_id);
+ALTER TABLE warpSkyfile ADD COLUMN magicked TINYINT;
+
+ALTER TABLE chipProcessedImfile ADD COLUMN chip_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(chip_image_id);
+ALTER TABLE chipProcessedImfile ADD COLUMN magicked TINYINT;
+
+ALTER TABLE rawImfile ADD COLUMN raw_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(raw_image_id);
+ALTER TABLE rawImfile ADD COLUMN magicked TINYINT;
+
+-- magic adaptations to diff reorginization
+ALTER TABLE magicRun ADD COLUMN diff_id BIGINT AFTER exp_id;
+ALTER TABLE magicRun ADD CONSTRAINT FOREIGN KEY(diff_id) REFERENCES diffRun(diff_id);
+ALTER TABLE magicRun ADD CONSTRAINT FOREIGN KEY(exp_id) REFERENCES rawExp(exp_id);
+ALTER TABLE magicInputSkyfile DROP PRIMARY KEY, ADD PRIMARY KEY(magic_id, diff_id, node);
+
