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