258 lines
5.0 KiB
PL/PgSQL
258 lines
5.0 KiB
PL/PgSQL
-- Downloaded from: https://github.com/tpolecat/cofree/blob/afe11f23ab5d11b94c180347b47ddfd3c59b6c85/create.sql
|
|
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 9.5.3
|
|
-- Dumped by pg_dump version 9.5.3
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SET check_function_bodies = false;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
--
|
|
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
|
|
--
|
|
|
|
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
|
|
|
|
|
|
--
|
|
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner:
|
|
--
|
|
|
|
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
|
|
|
|
|
|
SET search_path = public, pg_catalog;
|
|
|
|
--
|
|
-- Name: fn_array_agg_notnull(anyarray, anyelement); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION fn_array_agg_notnull(a anyarray, b anyelement) RETURNS anyarray
|
|
LANGUAGE plpgsql IMMUTABLE
|
|
AS $$
|
|
BEGIN
|
|
|
|
IF b IS NOT NULL THEN
|
|
a := array_append(a, b);
|
|
END IF;
|
|
|
|
RETURN a;
|
|
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION public.fn_array_agg_notnull(a anyarray, b anyelement) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: array_agg_notnull(anyelement); Type: AGGREGATE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE AGGREGATE array_agg_notnull(anyelement) (
|
|
SFUNC = fn_array_agg_notnull,
|
|
STYPE = anyarray,
|
|
INITCOND = '{}'
|
|
);
|
|
|
|
|
|
ALTER AGGREGATE public.array_agg_notnull(anyelement) OWNER TO postgres;
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_with_oids = false;
|
|
|
|
--
|
|
-- Name: prof; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE prof (
|
|
id integer NOT NULL,
|
|
parent integer,
|
|
name character varying NOT NULL,
|
|
year integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE prof OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: prof_closure; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE prof_closure (
|
|
id integer,
|
|
parent integer,
|
|
name character varying,
|
|
uni character varying,
|
|
year integer,
|
|
students integer[]
|
|
);
|
|
|
|
ALTER TABLE ONLY prof_closure REPLICA IDENTITY NOTHING;
|
|
|
|
|
|
ALTER TABLE prof_closure OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: prof_node; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE prof_node (
|
|
id integer NOT NULL,
|
|
parent integer,
|
|
name character varying NOT NULL,
|
|
uni character varying NOT NULL,
|
|
year integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE prof_node OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: prof_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE prof_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE prof_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: prof_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER SEQUENCE prof_id_seq OWNED BY prof_node.id;
|
|
|
|
|
|
--
|
|
-- Name: prof_node_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE prof_node_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE prof_node_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: prof_node_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER SEQUENCE prof_node_id_seq OWNED BY prof.id;
|
|
|
|
|
|
--
|
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY prof ALTER COLUMN id SET DEFAULT nextval('prof_node_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY prof_node ALTER COLUMN id SET DEFAULT nextval('prof_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Data for Name: prof; Type: TABLE DATA; Schema: public; Owner: postgres
|
|
--
|
|
|
|
COPY prof (id, parent, name, year) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- Name: prof_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
|
|
--
|
|
|
|
SELECT pg_catalog.setval('prof_id_seq', 537, true);
|
|
|
|
|
|
--
|
|
-- Data for Name: prof_node; Type: TABLE DATA; Schema: public; Owner: postgres
|
|
--
|
|
|
|
COPY prof_node (id, parent, name, uni, year) FROM stdin;
|
|
\.
|
|
|
|
|
|
--
|
|
-- Name: prof_node_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
|
|
--
|
|
|
|
SELECT pg_catalog.setval('prof_node_id_seq', 23, true);
|
|
|
|
|
|
--
|
|
-- Name: prof_node_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY prof
|
|
ADD CONSTRAINT prof_node_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: prof_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY prof_node
|
|
ADD CONSTRAINT prof_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: _RETURN; Type: RULE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE RULE "_RETURN" AS
|
|
ON SELECT TO prof_closure DO INSTEAD SELECT p.id,
|
|
p.parent,
|
|
p.name,
|
|
p.uni,
|
|
p.year,
|
|
array_agg_notnull(c.id) AS students
|
|
FROM (prof_node p
|
|
LEFT JOIN prof_node c ON ((c.parent = p.id)))
|
|
GROUP BY p.id;
|
|
|
|
|
|
--
|
|
-- Name: prof_parent_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY prof_node
|
|
ADD CONSTRAINT prof_parent_fkey FOREIGN KEY (parent) REFERENCES prof_node(id);
|
|
|
|
|
|
--
|
|
-- Name: public; Type: ACL; Schema: -; Owner: postgres
|
|
--
|
|
|
|
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
|
REVOKE ALL ON SCHEMA public FROM postgres;
|
|
GRANT ALL ON SCHEMA public TO postgres;
|
|
GRANT ALL ON SCHEMA public TO PUBLIC;
|
|
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|