Nailing down errors in deployment.
[dbsrgits/DBIx-Class-ResultSource-MultipleTableInheritance.git] / t / sql / MTITest-0.1-PostgreSQL.sql
1 -- 
2 -- Created by SQL::Translator::Producer::PostgreSQL
3 -- Created on Mon Jun 14 20:16:23 2010
4 -- 
5 --
6 -- Table: just_a_table
7 --
8 DROP TABLE "just_a_table" CASCADE;
9 CREATE TABLE "just_a_table" (
10   "id" serial NOT NULL,
11   "name" character varying(255) NOT NULL,
12   PRIMARY KEY ("id")
13 );
14
15 --
16 -- Table: mixin
17 --
18 DROP TABLE "mixin" CASCADE;
19 CREATE TABLE "mixin" (
20   "id" serial NOT NULL,
21   "words" text NOT NULL,
22   PRIMARY KEY ("id")
23 );
24
25 --
26 -- Table: _bar
27 --
28 DROP TABLE "_bar" CASCADE;
29 CREATE TABLE "_bar" (
30   "id" integer NOT NULL,
31   "b" integer NOT NULL,
32   PRIMARY KEY ("id")
33 );
34 CREATE INDEX "_bar_idx_b" on "_bar" ("b");
35
36 --
37 -- Table: _foo
38 --
39 DROP TABLE "_foo" CASCADE;
40 CREATE TABLE "_foo" (
41   "id" serial NOT NULL,
42   "a" integer,
43   PRIMARY KEY ("id")
44 );
45 CREATE INDEX "_foo_idx_a" on "_foo" ("a");
46
47 --
48 -- View: "bar"
49 --
50 DROP VIEW IF EXISTS "bar";
51 CREATE VIEW "bar" ( "id", "a", "words", "b" ) AS
52     SELECT _bar.id, b, words, a FROM _bar _bar JOIN mixin mixin ON mixin.id = _bar.id JOIN foo foo ON foo.id = _bar.id;
53
54 CREATE OR REPLACE FUNCTION bar_insert
55   (_b INTEGER, _words TEXT, _a INTEGER)
56   RETURNS VOID AS $function$
57   BEGIN
58     INSERT INTO foo ( a) VALUES ( _a );
59     INSERT INTO _bar ( b, id) VALUES ( _b, currval('_foo_id_seq') );
60     INSERT INTO mixin ( id, words) VALUES ( currval('_foo_id_seq'), _words );
61   END;
62 $function$ LANGUAGE plpgsql;
63
64
65 CREATE OR REPLACE FUNCTION bar_update
66   (_id INTEGER, _b INTEGER, _words TEXT, _a INTEGER)
67   RETURNS VOID AS $function$
68   BEGIN
69     UPDATE _bar SET b = _b WHERE ( id = _id );
70     UPDATE mixin SET words = _words WHERE ( id = _id );
71     UPDATE foo SET a = _a WHERE ( id = _id );
72   END;
73 $function$ LANGUAGE plpgsql;
74
75
76 CREATE OR REPLACE FUNCTION bar_delete
77   (_id INTEGER)
78   RETURNS VOID AS $function$
79   BEGIN
80     DELETE FROM _bar WHERE ( id = _id );
81     DELETE FROM mixin WHERE ( id = _id );
82     DELETE FROM foo WHERE ( id = _id );
83   END;
84 $function$ LANGUAGE plpgsql;
85
86
87 CREATE RULE _bar_insert_rule AS
88   ON INSERT TO bar
89   DO INSTEAD (
90     SELECT bar_insert(NEW.b, NEW.words, NEW.a)
91   );
92
93
94 CREATE RULE _bar_update_rule AS
95   ON UPDATE TO bar
96   DO INSTEAD (
97     SELECT bar_update(OLD.id, NEW.b, NEW.words, NEW.a)
98   );
99
100
101 CREATE RULE _bar_delete_rule AS
102   ON DELETE TO bar
103   DO INSTEAD (
104     SELECT bar_delete(OLD.id)
105   );
106
107 ;
108
109 --
110 -- View: "foo"
111 --
112 DROP VIEW IF EXISTS "foo";
113 CREATE VIEW "foo" ( "id", "a" ) AS
114     SELECT _foo.id, a FROM _foo;
115
116 CREATE OR REPLACE FUNCTION foo_insert
117   (_a INTEGER)
118   RETURNS VOID AS $function$
119   BEGIN
120     INSERT INTO _foo ( a) VALUES ( _a );
121   END;
122 $function$ LANGUAGE plpgsql;
123
124
125 CREATE OR REPLACE FUNCTION foo_update
126   (_id INTEGER, _a INTEGER)
127   RETURNS VOID AS $function$
128   BEGIN
129     UPDATE _foo SET a = _a WHERE ( id = _id );
130   END;
131 $function$ LANGUAGE plpgsql;
132
133
134 CREATE OR REPLACE FUNCTION foo_delete
135   (_id INTEGER)
136   RETURNS VOID AS $function$
137   BEGIN
138     DELETE FROM _foo WHERE ( id = _id );
139   END;
140 $function$ LANGUAGE plpgsql;
141
142
143 CREATE RULE _foo_insert_rule AS
144   ON INSERT TO foo
145   DO INSTEAD (
146     SELECT foo_insert(NEW.a)
147   );
148
149
150 CREATE RULE _foo_update_rule AS
151   ON UPDATE TO foo
152   DO INSTEAD (
153     SELECT foo_update(OLD.id, NEW.a)
154   );
155
156
157 CREATE RULE _foo_delete_rule AS
158   ON DELETE TO foo
159   DO INSTEAD (
160     SELECT foo_delete(OLD.id)
161   );
162
163 ;
164
165 --
166 -- Foreign Key Definitions
167 --
168
169 ALTER TABLE "_bar" ADD FOREIGN KEY ("b")
170   REFERENCES "just_a_table" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
171
172 ALTER TABLE "_foo" ADD FOREIGN KEY ("a")
173   REFERENCES "_bar" ("id") ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE;
174