fixed a possible bug in the update script dealing with permissions on new
[mir.git] / dbscripts / updates / update20021213.sql
1 -- update script 2002-12-12 by Zapata
2 -- * introduces sequences and primary keys for comment_status, article_type and language
3 -- * adds is_html to comment
4 -- The first operation will fail the second time this script is run,
5 --   so running this script when it isn't needed can't do any harm.
6 --
7 -- IMPORTANT: after running this script, run the update_all_sequences script as well
8
9 BEGIN TRANSACTION;
10
11 -- task 1: add sequenced and unique id's to comment_status 
12
13   CREATE SEQUENCE "comment_status_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
14
15   ALTER TABLE "comment_status" RENAME TO comment_status_old;
16
17   CREATE TABLE "comment_status" (
18         "id" integer DEFAULT nextval('comment_status_id_seq') NOT NULL,
19         "name" character varying(40) NOT NULL,
20         CONSTRAINT "comment_status_pkey" PRIMARY KEY ("id")
21   );
22
23   INSERT INTO "comment_status" ("id", "name")
24   SELECT "id", "name"
25   FROM "comment_status_old";
26
27   UPDATE pg_class
28   SET
29     relowner = (SELECT relowner FROM pg_class WHERE relname='comment_status_old'),
30     relacl =   (SELECT relacl FROM pg_class WHERE relname='comment_status_old')
31   WHERE 
32     relname = 'comment_status' or relname='comment_status_id_seq';
33   
34   DROP TABLE "comment_status_old";
35   
36 -- task 2: add sequenced and unique id's to article_type
37
38   CREATE SEQUENCE "article_type_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ;
39
40   ALTER TABLE "article_type" RENAME TO "article_type_old";
41
42   CREATE TABLE "article_type" (
43         "id" integer DEFAULT nextval('article_type_id_seq') NOT NULL,
44         "name" character varying(40) NOT NULL,
45         CONSTRAINT "article_type_pkey" PRIMARY KEY ("id")
46   );
47
48   INSERT INTO "article_type" ("id", "name")
49   SELECT "id", "name"
50   FROM "article_type_old";
51
52   UPDATE pg_class
53   SET
54     relowner = (SELECT relowner FROM pg_class WHERE relname='article_type_old'),
55     relacl =   (SELECT relacl FROM pg_class WHERE relname='article_type_old')
56   WHERE 
57     relname = 'article_type' or relname= 'article_type_id_seq';
58   
59   DROP TABLE "article_type_old";
60   
61
62 -- task 3: add sequenced and unique id's to language
63
64   CREATE SEQUENCE "language_id_seq" start 1 increment 1 maxvalue 2147483647 minvalue 1 cache 1 ;
65
66   ALTER TABLE "language" RENAME TO "language_old";
67   DROP INDEX language_pkey;
68   
69   CREATE TABLE "language" (
70     "id" integer DEFAULT nextval('language_id_seq') NOT NULL,
71     "name" character varying(40) NOT NULL,
72     "code" character varying(2) NOT NULL,
73     Constraint "language_pkey" Primary Key ("id")
74   );
75
76   INSERT INTO "language" ("id", "name", "code")
77   SELECT "id", "name", "code"
78   FROM "language_old";
79
80   UPDATE  pg_class
81   SET
82     relowner = (SELECT relowner FROM pg_class WHERE relname='language_old'),
83     relacl =   (SELECT relacl FROM pg_class WHERE relname='language_old')
84   WHERE 
85     relname = 'language' or relname='language_id_seq';
86   
87   DROP TABLE "language_old";
88
89   
90 -- task 4: add is_html to table comment
91   
92   ALTER TABLE "comment" RENAME TO "comment_old";
93   DROP INDEX comment_pkey;
94   
95   CREATE TABLE "comment" (
96     "id" integer DEFAULT nextval('comment_id_seq') NOT NULL,
97     "title" character varying(80) NOT NULL,
98     "creator" character varying(80) NOT NULL,
99     "description" text NOT NULL,
100     "main_url" character varying(255),
101     "email" character varying(80),
102     "address" character varying(80),
103     "phone" character varying(20),
104     "webdb_create" timestamp with time zone NOT NULL,
105     "is_published" boolean DEFAULT '1' NOT NULL,
106     "to_language" integer DEFAULT '0' NOT NULL,
107     "to_media" integer NOT NULL,
108     "to_comment_status" smallint,
109     "checksum" integer,
110     "is_html" boolean DEFAULT '0' NOT NULL,
111     Constraint "comment_pkey" Primary Key ("id")
112   );
113   
114   INSERT INTO "comment" (
115     "id", 
116     "title", 
117     "creator",
118     "description",
119     "main_url",
120     "email",
121     "address",
122     "phone",
123     "webdb_create",
124     "is_published",
125     "to_language",
126     "to_media",
127     "to_comment_status",
128     "checksum",
129     "is_html"
130   )
131   SELECT
132     "id", 
133     "title", 
134     "creator",
135     "description",
136     "main_url",
137     "email",
138     "address",
139     "phone",
140     "webdb_create",
141     "is_published",
142     "to_language",
143     "to_media",
144     "to_comment_status",
145     "checksum",
146     '0'
147   FROM "comment_old";
148
149   UPDATE  pg_class
150   SET
151     relowner = (SELECT relowner FROM pg_class WHERE relname='comment_old'),
152     relacl =   (SELECT relacl FROM pg_class WHERE relname='comment_old')
153   WHERE 
154     relname = 'comment';
155   
156   DROP TABLE "comment_old";
157   
158 -- that's it!
159   
160 COMMIT TRANSACTION;