~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/migrations/20090212-01.sql

Install to /usr/local/lib/python2.5/site-packages, not
/usr/lib/python2.5/site-packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
DO NOT APPLY THIS MIGRATION WITHOUT READING THE FOLLOWING;
 
2
-- This migration will delete all problem attempts and saves.
 
3
-- The new database schema links attempts and saves to specific worksheets.
 
4
-- Worksheets are linked to specific offerings.
 
5
-- Problems are no longer referenced by and id number, instead they are
 
6
-- referenced by an identifier TEXT field.
 
7
-- This means that in order to save your current data, you must link its
 
8
-- worksheet to an offering, and link the attempt to a problem identifier.
 
9
-- TODO: Write a script to save the problem attempts somehow.
 
10
 
 
11
BEGIN;
 
12
-- Move the exercises from being stored as flat files, to being stored in
 
13
-- The Database
 
14
-- Drop Old, Unused tables.
 
15
DROP TABLE problem_attempt_breakdown;
 
16
DROP TABLE problem_test_case_tag;
 
17
DROP TABLE problem_tag;
 
18
DROP TABLE problem_test_case;
 
19
DROP TABLE problem_prerequisite; 
 
20
TRUNCATE worksheet_problem, worksheet;
 
21
 
 
22
-- Remove References to problemid
 
23
ALTER TABLE problem_attempt DROP CONSTRAINT problem_attempt_problemid_fkey;
 
24
ALTER TABLE problem_save DROP CONSTRAINT problem_save_problemid_fkey;
 
25
ALTER TABLE worksheet_problem DROP CONSTRAINT worksheet_problem_problemid_fkey;
 
26
 
 
27
-- Add fields to problem necessary to store all exercise information in non-xml
 
28
ALTER TABLE problem ADD COLUMN name        TEXT;
 
29
ALTER TABLE problem ADD COLUMN description TEXT;
 
30
ALTER TABLE problem ADD COLUMN partial     TEXT;
 
31
ALTER TABLE problem ADD COLUMN solution    TEXT;
 
32
ALTER TABLE problem ADD COLUMN include     TEXT;
 
33
ALTER TABLE problem ADD COLUMN num_rows    INT4;
 
34
-- Drop (now) unused columns spec and problemid
 
35
ALTER TABLE problem DROP COLUMN spec;
 
36
ALTER TABLE problem DROP COLUMN problemid;
 
37
 
 
38
-- Set problems and worksheets to reference exercises by identifier
 
39
ALTER TABLE problem_attempt ADD COLUMN worksheetid INT4 REFERENCES worksheet (worksheetid);
 
40
ALTER TABLE problem_attempt DROP COLUMN problemid;
 
41
ALTER TABLE problem_attempt ADD COLUMN problemid TEXT REFERENCES problem (identifier);
 
42
 
 
43
ALTER TABLE problem_save ADD COLUMN worksheetid INT4 REFERENCES worksheet (worksheetid);
 
44
ALTER TABLE problem_save DROP COLUMN problemid;
 
45
ALTER TABLE problem_save ADD COLUMN problemid TEXT references problem (identifier);
 
46
 
 
47
ALTER TABLE worksheet_problem DROP COLUMN problemid;
 
48
ALTER TABLE worksheet_problem ADD COLUMN problemid TEXT REFERENCES problem (identifier);
 
49
 
 
50
CREATE TABLE test_suite (
 
51
    suiteid     SERIAL UNIQUE NOT NULL,
 
52
    problemid   TEXT REFERENCES problem (identifier) NOT NULL,
 
53
    description text,
 
54
    seq_no      INT4,
 
55
    PRIMARY KEY (problemid, suiteid)
 
56
);
 
57
 
 
58
CREATE TABLE test_case (
 
59
    testid      SERIAL UNIQUE NOT NULL,
 
60
    suiteid     INT4 REFERENCES test_suite (suiteid) NOT NULL,
 
61
    passmsg     TEXT,
 
62
    failmsg     TEXT,
 
63
    init        TEXT,
 
64
    code_type   TEXT,
 
65
    code        TEXT,
 
66
    testtype    TEXT,
 
67
    seq_no    INT4,
 
68
    PRIMARY KEY (testid, suiteid)
 
69
);
 
70
 
 
71
-- Link worksheets to offerings
 
72
ALTER TABLE worksheet ADD COLUMN offeringid INT4 REFERENCES offering (offeringid) NOT NULL; 
 
73
COMMIT;