Initial commit
[buildfarm-server.git] / schema / bfwebdb.sql
1 --
2 -- PostgreSQL database dump
3 --
4
5 SET client_encoding = 'SQL_ASCII';
6 SET check_function_bodies = false;
7 SET client_min_messages = warning;
8
9 --
10 -- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: pgbuildfarm
11 --
12
13 COMMENT ON SCHEMA public IS 'Standard public schema';
14
15
16 SET search_path = public, pg_catalog;
17
18 --
19 -- Name: plperl_call_handler(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
20 --
21
22 CREATE FUNCTION plperl_call_handler() RETURNS language_handler
23     AS '$libdir/plperl', 'plperl_call_handler'
24     LANGUAGE c;
25
26
27 ALTER FUNCTION public.plperl_call_handler() OWNER TO pgbuildfarm;
28
29 --
30 -- Name: plperl; Type: PROCEDURAL LANGUAGE; Schema: public; Owner: 
31 --
32
33 CREATE TRUSTED PROCEDURAL LANGUAGE plperl HANDLER plperl_call_handler;
34
35
36 --
37 -- Name: plperlu; Type: PROCEDURAL LANGUAGE; Schema: public; Owner: 
38 --
39
40 CREATE PROCEDURAL LANGUAGE plperlu HANDLER plperl_call_handler;
41
42
43 --
44 -- Name: plpgsql_call_handler(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
45 --
46
47 CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler
48     AS '$libdir/plpgsql', 'plpgsql_call_handler'
49     LANGUAGE c;
50
51
52 ALTER FUNCTION public.plpgsql_call_handler() OWNER TO pgbuildfarm;
53
54 --
55 -- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: public; Owner: 
56 --
57
58 CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;
59
60
61 --
62 -- Name: pending; Type: TYPE; Schema: public; Owner: pgbuildfarm
63 --
64
65 CREATE TYPE pending AS (
66         name text,
67         operating_system text,
68         os_version text,
69         compiler text,
70         compiler_version text,
71         architecture text,
72         owner_email text
73 );
74
75
76 ALTER TYPE public.pending OWNER TO pgbuildfarm;
77
78 --
79 -- Name: pending2; Type: TYPE; Schema: public; Owner: pgbuildfarm
80 --
81
82 CREATE TYPE pending2 AS (
83         name text,
84         operating_system text,
85         os_version text,
86         compiler text,
87         compiler_version text,
88         architecture text,
89         owner_email text,
90         "owner" text,
91         status_ts timestamp without time zone
92 );
93
94
95 ALTER TYPE public.pending2 OWNER TO pgbuildfarm;
96
97 --
98 -- Name: approve(text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
99 --
100
101 CREATE FUNCTION approve(text, text) RETURNS void
102     AS $_$update buildsystems set name = $2, status ='approved' where name = $1 and status = 'pending'$_$
103     LANGUAGE sql;
104
105
106 ALTER FUNCTION public.approve(text, text) OWNER TO pgbuildfarm;
107
108 --
109 -- Name: approve2(text, text); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
110 --
111
112 CREATE FUNCTION approve2(text, text) RETURNS text
113     AS $_$ update buildsystems set name = $2, status = 'approved' where name = $1 and status = 'pending'; select owner_email || ':' || name || ':' || secret from buildsystems where name = $2;$_$
114     LANGUAGE sql;
115
116
117 ALTER FUNCTION public.approve2(text, text) OWNER TO pgbuildfarm;
118
119 --
120 -- Name: pending(); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
121 --
122
123 CREATE FUNCTION pending() RETURNS SETOF pending2
124     AS $$select name,operating_system,os_version,compiler,compiler_version,architecture,owner_email, sys_owner, status_ts from buildsystems where status = 'pending' order by status_ts $$
125     LANGUAGE sql;
126
127
128 ALTER FUNCTION public.pending() OWNER TO pgbuildfarm;
129
130 --
131 -- Name: prevstat(text, text, timestamp without time zone); Type: FUNCTION; Schema: public; Owner: pgbuildfarm
132 --
133
134 CREATE FUNCTION prevstat(text, text, timestamp without time zone) RETURNS text
135     AS $_$
136    select coalesce((select distinct on (snapshot) stage
137                   from build_status
138                   where sysname = $1 and branch = $2 and snapshot < $3
139                   order by snapshot desc
140                   limit 1), 'NEW') as prev_status
141 $_$
142     LANGUAGE sql;
143
144
145 ALTER FUNCTION public.prevstat(text, text, timestamp without time zone) OWNER TO pgbuildfarm;
146
147 SET default_tablespace = '';
148
149 SET default_with_oids = true;
150
151 --
152 -- Name: alerts; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
153 --
154
155 CREATE TABLE alerts (
156     sysname text NOT NULL,
157     branch text NOT NULL,
158     first_alert timestamp without time zone,
159     last_notification timestamp without time zone
160 );
161
162
163 ALTER TABLE public.alerts OWNER TO pgbuildfarm;
164
165 --
166 -- Name: build_status; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
167 --
168
169 CREATE TABLE build_status (
170     sysname text NOT NULL,
171     snapshot timestamp without time zone NOT NULL,
172     status integer,
173     stage text,
174     log text,
175     conf_sum text,
176     branch text,
177     changed_this_run text,
178     changed_since_success text,
179     log_archive bytea,
180     log_archive_filenames text[],
181     build_flags text[],
182     report_time timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone
183 );
184
185
186 ALTER TABLE public.build_status OWNER TO pgbuildfarm;
187
188 --
189 -- Name: build_status_export; Type: VIEW; Schema: public; Owner: pgbuildfarm
190 --
191
192 CREATE VIEW build_status_export AS
193     SELECT build_status.sysname AS name, build_status.snapshot, build_status.stage, build_status.branch, build_status.build_flags FROM build_status;
194
195
196 ALTER TABLE public.build_status_export OWNER TO pgbuildfarm;
197
198 --
199 -- Name: build_status_log; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
200 --
201
202 CREATE TABLE build_status_log (
203     sysname text NOT NULL,
204     snapshot timestamp without time zone NOT NULL,
205     branch text NOT NULL,
206     log_stage text NOT NULL,
207     log_text text,
208     stage_duration interval
209 );
210
211
212 ALTER TABLE public.build_status_log OWNER TO pgbuildfarm;
213
214 --
215 -- Name: buildsystems; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
216 --
217
218 CREATE TABLE buildsystems (
219     name text NOT NULL,
220     secret text NOT NULL,
221     operating_system text NOT NULL,
222     os_version text NOT NULL,
223     compiler text NOT NULL,
224     compiler_version text NOT NULL,
225     architecture text NOT NULL,
226     status text NOT NULL,
227     sys_owner text NOT NULL,
228     owner_email text NOT NULL,
229     status_ts timestamp without time zone DEFAULT (('now'::text)::timestamp(6) with time zone)::timestamp without time zone
230 );
231
232
233 ALTER TABLE public.buildsystems OWNER TO pgbuildfarm;
234
235 --
236 -- Name: buildsystems_export; Type: VIEW; Schema: public; Owner: pgbuildfarm
237 --
238
239 CREATE VIEW buildsystems_export AS
240     SELECT buildsystems.name, buildsystems.operating_system, buildsystems.os_version, buildsystems.compiler, buildsystems.compiler_version, buildsystems.architecture FROM buildsystems WHERE (buildsystems.status = 'approved'::text);
241
242
243 ALTER TABLE public.buildsystems_export OWNER TO pgbuildfarm;
244
245 --
246 -- Name: list_subscriptions; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
247 --
248
249 CREATE TABLE list_subscriptions (
250     addr text
251 );
252
253
254 ALTER TABLE public.list_subscriptions OWNER TO pgbuildfarm;
255
256 --
257 -- Name: penguin_save; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
258 --
259
260 CREATE TABLE penguin_save (
261     branch text,
262     snapshot timestamp without time zone,
263     stage text
264 );
265
266
267 ALTER TABLE public.penguin_save OWNER TO pgbuildfarm;
268
269 --
270 -- Name: personality; Type: TABLE; Schema: public; Owner: pgbuildfarm; Tablespace: 
271 --
272
273 CREATE TABLE personality (
274     name text NOT NULL,
275     os_version text NOT NULL,
276     compiler_version text NOT NULL,
277     effective_date timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL
278 );
279
280
281 ALTER TABLE public.personality OWNER TO pgbuildfarm;
282
283 --
284 -- Name: alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
285 --
286
287 ALTER TABLE ONLY alerts
288     ADD CONSTRAINT alerts_pkey PRIMARY KEY (sysname, branch);
289
290
291 ALTER INDEX public.alerts_pkey OWNER TO pgbuildfarm;
292
293 --
294 -- Name: build_status_log_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
295 --
296
297 ALTER TABLE ONLY build_status_log
298     ADD CONSTRAINT build_status_log_pkey PRIMARY KEY (sysname, snapshot, log_stage);
299
300
301 ALTER INDEX public.build_status_log_pkey OWNER TO pgbuildfarm;
302
303 --
304 -- Name: build_status_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
305 --
306
307 ALTER TABLE ONLY build_status
308     ADD CONSTRAINT build_status_pkey PRIMARY KEY (sysname, snapshot);
309
310
311 ALTER INDEX public.build_status_pkey OWNER TO pgbuildfarm;
312
313 --
314 -- Name: buildsystems_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
315 --
316
317 ALTER TABLE ONLY buildsystems
318     ADD CONSTRAINT buildsystems_pkey PRIMARY KEY (name);
319
320
321 ALTER INDEX public.buildsystems_pkey OWNER TO pgbuildfarm;
322
323 --
324 -- Name: personality_pkey; Type: CONSTRAINT; Schema: public; Owner: pgbuildfarm; Tablespace: 
325 --
326
327 ALTER TABLE ONLY personality
328     ADD CONSTRAINT personality_pkey PRIMARY KEY (name, effective_date);
329
330
331 ALTER INDEX public.personality_pkey OWNER TO pgbuildfarm;
332
333 --
334 -- Name: bs_branch_snapshot_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
335 --
336
337 CREATE INDEX bs_branch_snapshot_idx ON build_status USING btree (branch, snapshot);
338
339
340 ALTER INDEX public.bs_branch_snapshot_idx OWNER TO pgbuildfarm;
341
342 --
343 -- Name: bs_status_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
344 --
345
346 CREATE INDEX bs_status_idx ON buildsystems USING btree (status);
347
348
349 ALTER INDEX public.bs_status_idx OWNER TO pgbuildfarm;
350
351 --
352 -- Name: bs_sysname_branch_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
353 --
354
355 CREATE INDEX bs_sysname_branch_idx ON build_status USING btree (sysname, branch);
356
357
358 ALTER INDEX public.bs_sysname_branch_idx OWNER TO pgbuildfarm;
359
360 --
361 -- Name: bs_sysname_branch_report_idx; Type: INDEX; Schema: public; Owner: pgbuildfarm; Tablespace: 
362 --
363
364 CREATE INDEX bs_sysname_branch_report_idx ON build_status USING btree (sysname, branch, report_time);
365
366
367 ALTER INDEX public.bs_sysname_branch_report_idx OWNER TO pgbuildfarm;
368
369 --
370 -- Name: $1; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
371 --
372
373 ALTER TABLE ONLY personality
374     ADD CONSTRAINT "$1" FOREIGN KEY (name) REFERENCES buildsystems(name) ON DELETE CASCADE;
375
376
377 --
378 -- Name: bs_fk; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
379 --
380
381 ALTER TABLE ONLY build_status
382     ADD CONSTRAINT bs_fk FOREIGN KEY (sysname) REFERENCES buildsystems(name) ON UPDATE CASCADE ON DELETE CASCADE;
383
384
385 --
386 -- Name: build_status_log_sysname_fkey; Type: FK CONSTRAINT; Schema: public; Owner: pgbuildfarm
387 --
388
389 ALTER TABLE ONLY build_status_log
390     ADD CONSTRAINT build_status_log_sysname_fkey FOREIGN KEY (sysname, snapshot) REFERENCES build_status(sysname, snapshot) ON DELETE CASCADE;
391
392
393 --
394 -- Name: public; Type: ACL; Schema: -; Owner: pgbuildfarm
395 --
396
397 REVOKE ALL ON SCHEMA public FROM PUBLIC;
398 REVOKE ALL ON SCHEMA public FROM pgbuildfarm;
399 GRANT ALL ON SCHEMA public TO pgbuildfarm;
400 GRANT ALL ON SCHEMA public TO PUBLIC;
401
402
403 --
404 -- Name: build_status; Type: ACL; Schema: public; Owner: pgbuildfarm
405 --
406
407 REVOKE ALL ON TABLE build_status FROM PUBLIC;
408 REVOKE ALL ON TABLE build_status FROM pgbuildfarm;
409 GRANT ALL ON TABLE build_status TO pgbuildfarm;
410 GRANT INSERT,SELECT ON TABLE build_status TO pgbfweb;
411 GRANT SELECT ON TABLE build_status TO rssfeed;
412
413
414 --
415 -- Name: build_status_log; Type: ACL; Schema: public; Owner: pgbuildfarm
416 --
417
418 REVOKE ALL ON TABLE build_status_log FROM PUBLIC;
419 REVOKE ALL ON TABLE build_status_log FROM pgbuildfarm;
420 GRANT ALL ON TABLE build_status_log TO pgbuildfarm;
421 GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE build_status_log TO pgbfweb;
422 GRANT SELECT ON TABLE build_status_log TO rssfeed;
423
424
425 --
426 -- Name: buildsystems; Type: ACL; Schema: public; Owner: pgbuildfarm
427 --
428
429 REVOKE ALL ON TABLE buildsystems FROM PUBLIC;
430 REVOKE ALL ON TABLE buildsystems FROM pgbuildfarm;
431 GRANT ALL ON TABLE buildsystems TO pgbuildfarm;
432 GRANT INSERT,SELECT ON TABLE buildsystems TO pgbfweb;
433 GRANT SELECT ON TABLE buildsystems TO rssfeed;
434
435
436 --
437 -- Name: personality; Type: ACL; Schema: public; Owner: pgbuildfarm
438 --
439
440 REVOKE ALL ON TABLE personality FROM PUBLIC;
441 REVOKE ALL ON TABLE personality FROM pgbuildfarm;
442 GRANT ALL ON TABLE personality TO pgbuildfarm;
443 GRANT INSERT,SELECT ON TABLE personality TO pgbfweb;
444 GRANT SELECT ON TABLE personality TO rssfeed;
445
446
447 --
448 -- PostgreSQL database dump complete
449 --
450