pg_partitioning 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +97 -0
  4. data/Rakefile +23 -0
  5. data/config/locales/en.yml +28 -0
  6. data/lib/generators/partitioning_generator.rb +18 -0
  7. data/lib/pg_partitioning/input_master.rb +83 -0
  8. data/lib/pg_partitioning/partitioning_master.rb +78 -0
  9. data/lib/pg_partitioning/printer.rb +28 -0
  10. data/lib/pg_partitioning/strategies/base.rb +72 -0
  11. data/lib/pg_partitioning/strategies/date.rb +73 -0
  12. data/lib/pg_partitioning/strategies/equal.rb +43 -0
  13. data/lib/pg_partitioning/strategies/step.rb +57 -0
  14. data/lib/pg_partitioning/version.rb +3 -0
  15. data/lib/pg_partitioning.rb +4 -0
  16. data/lib/tasks/pg_partitioning_tasks.rake +4 -0
  17. data/spec/db_helpers.rb +36 -0
  18. data/spec/dummy/README.rdoc +28 -0
  19. data/spec/dummy/Rakefile +6 -0
  20. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  23. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  24. data/spec/dummy/app/models/bandit.rb +4 -0
  25. data/spec/dummy/app/models/crime.rb +3 -0
  26. data/spec/dummy/app/models/gang.rb +3 -0
  27. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  28. data/spec/dummy/bin/bundle +3 -0
  29. data/spec/dummy/bin/rails +4 -0
  30. data/spec/dummy/bin/rake +4 -0
  31. data/spec/dummy/bin/setup +29 -0
  32. data/spec/dummy/config/application.rb +32 -0
  33. data/spec/dummy/config/boot.rb +5 -0
  34. data/spec/dummy/config/database.yml +28 -0
  35. data/spec/dummy/config/environment.rb +5 -0
  36. data/spec/dummy/config/environments/development.rb +41 -0
  37. data/spec/dummy/config/environments/production.rb +79 -0
  38. data/spec/dummy/config/environments/test.rb +42 -0
  39. data/spec/dummy/config/initializers/assets.rb +11 -0
  40. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  41. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  42. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  43. data/spec/dummy/config/initializers/inflections.rb +16 -0
  44. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  45. data/spec/dummy/config/initializers/session_store.rb +3 -0
  46. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  47. data/spec/dummy/config/locales/en.yml +23 -0
  48. data/spec/dummy/config/routes.rb +56 -0
  49. data/spec/dummy/config/secrets.yml +22 -0
  50. data/spec/dummy/config.ru +4 -0
  51. data/spec/dummy/db/migrate/20160306173540_create_gangs.rb +9 -0
  52. data/spec/dummy/db/migrate/20160306174017_create_bandits.rb +12 -0
  53. data/spec/dummy/db/migrate/20160306174042_create_crimes.rb +10 -0
  54. data/spec/dummy/db/schema.rb +47 -0
  55. data/spec/dummy/log/development.log +3421 -0
  56. data/spec/dummy/log/production.log +0 -0
  57. data/spec/dummy/log/test.log +154834 -0
  58. data/spec/dummy/public/404.html +67 -0
  59. data/spec/dummy/public/422.html +67 -0
  60. data/spec/dummy/public/500.html +66 -0
  61. data/spec/dummy/public/favicon.ico +0 -0
  62. data/spec/factories/bandits.rb +23 -0
  63. data/spec/factories/crimes.rb +6 -0
  64. data/spec/factories/gangs.rb +5 -0
  65. data/spec/input_master_spec.rb +74 -0
  66. data/spec/models/bandit_spec.rb +13 -0
  67. data/spec/models/crime_spec.rb +10 -0
  68. data/spec/models/gang_spec.rb +10 -0
  69. data/spec/partitioning_master_spec.rb +156 -0
  70. data/spec/rails_helper.rb +67 -0
  71. data/spec/shared_examples.rb +28 -0
  72. data/spec/spec_helper.rb +92 -0
  73. metadata +213 -0
@@ -0,0 +1,3421 @@
1
+  (165.8ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2
+  (110.3ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
3
+ ActiveRecord::SchemaMigration Load (1.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
4
+ Migrating to CreateGangs (20160306173540)
5
+  (0.4ms) BEGIN
6
+  (276.8ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
7
+ SQL (0.8ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
8
+  (59.1ms) COMMIT
9
+ Migrating to CreateBandits (20160306174017)
10
+  (0.5ms) BEGIN
11
+  (152.2ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
12
+  (91.9ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
13
+  (11.5ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
14
+ FOREIGN KEY ("gang_id")
15
+ REFERENCES "gangs" ("id")
16
+ 
17
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
18
+  (57.5ms) COMMIT
19
+ Migrating to CreateCrimes (20160306174042)
20
+  (0.6ms) BEGIN
21
+  (92.2ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
22
+  (69.5ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
23
+  (4.6ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
24
+ FOREIGN KEY ("bandit_id")
25
+ REFERENCES "bandits" ("id")
26
+ 
27
+ SQL (0.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
28
+  (13.4ms) COMMIT
29
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
30
+  (6.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
31
+ FROM pg_constraint c
32
+ JOIN pg_class t1 ON c.conrelid = t1.oid
33
+ JOIN pg_class t2 ON c.confrelid = t2.oid
34
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
35
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
36
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
37
+ WHERE c.contype = 'f'
38
+ AND t1.relname = 'bandits'
39
+ AND t3.nspname = ANY (current_schemas(false))
40
+ ORDER BY c.conname
41
+ 
42
+  (7.6ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
43
+ FROM pg_constraint c
44
+ JOIN pg_class t1 ON c.conrelid = t1.oid
45
+ JOIN pg_class t2 ON c.confrelid = t2.oid
46
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
47
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
48
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
49
+ WHERE c.contype = 'f'
50
+ AND t1.relname = 'crimes'
51
+ AND t3.nspname = ANY (current_schemas(false))
52
+ ORDER BY c.conname
53
+
54
+  (6.0ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
55
+ FROM pg_constraint c
56
+ JOIN pg_class t1 ON c.conrelid = t1.oid
57
+ JOIN pg_class t2 ON c.confrelid = t2.oid
58
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
59
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
60
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
61
+ WHERE c.contype = 'f'
62
+ AND t1.relname = 'gangs'
63
+ AND t3.nspname = ANY (current_schemas(false))
64
+ ORDER BY c.conname
65
+ 
66
+  (337.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
67
+ DECLARE
68
+ colname text := ‘specialization’;
69
+ colval text := NEW."specialization";
70
+ tblname text := 'bandits_' || colval;
71
+ BEGIN
72
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
73
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
74
+ END IF;
75
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
76
+ RETURN NULL;
77
+ END;
78
+ $$ LANGUAGE plpgsql;
79
+  (88.4ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
80
+ DECLARE
81
+ colname text := ‘specialization’;
82
+ colval text := NEW."specialization";
83
+ tblname text := 'bandits_' || colval;
84
+ BEGIN
85
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
86
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
87
+ END IF;
88
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
89
+ RETURN NULL;
90
+ END;
91
+ $$ LANGUAGE plpgsql;
92
+  (96.8ms) CREATE TRIGGER insert_bandits_trigger
93
+ BEFORE INSERT ON bandits
94
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_trigger();
95
+  (21.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
96
+ DECLARE
97
+ colname text := ‘specialization’;
98
+ colval text := NEW."specialization";
99
+ tblname text := 'bandits_' || colval;
100
+ BEGIN
101
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
102
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
103
+ END IF;
104
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
105
+ RETURN NULL;
106
+ END;
107
+ $$ LANGUAGE plpgsql;
108
+  (66.6ms) CREATE TRIGGER insert_bandits_trigger
109
+ BEFORE INSERT ON bandits
110
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
111
+  (0.2ms) BEGIN
112
+ SQL (139.1ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:16:50.203953"], ["updated_at", "2016-03-06 18:16:50.203953"]]
113
+  (0.7ms) ROLLBACK
114
+  (17.2ms) BEGIN
115
+ SQL (9.3ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:18:42.617682"], ["updated_at", "2016-03-06 18:18:42.617682"]]
116
+  (2.9ms) ROLLBACK
117
+ Bandit Load (43.6ms) SELECT "bandits".* FROM "bandits"
118
+  (5.5ms) BEGIN
119
+ SQL (26.0ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:22:30.695935"], ["updated_at", "2016-03-06 18:22:30.695935"]]
120
+  (0.2ms) ROLLBACK
121
+  (138.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
122
+ DECLARE
123
+ colname text := specialization;
124
+ colval text := NEW.specialization;
125
+ tblname text := 'bandits_' || colval;
126
+ BEGIN
127
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
128
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
129
+ END IF;
130
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
131
+ RETURN NULL;
132
+ END;
133
+ $$ LANGUAGE plpgsql;
134
+  (58.9ms) CREATE TRIGGER insert_bandits_trigger
135
+ BEFORE INSERT ON bandits
136
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
137
+  (38.2ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
138
+ DECLARE
139
+ colname text := specialization;
140
+ colval text := NEW.specialization;
141
+ tblname text := 'bandits_' || colval;
142
+ BEGIN
143
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
144
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
145
+ END IF;
146
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
147
+ RETURN NULL;
148
+ END;
149
+ $$ LANGUAGE plpgsql;
150
+  (16.1ms) CREATE OR REPLACE TRIGGER insert_bandits_trigger
151
+ BEFORE INSERT ON bandits
152
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
153
+  (55.5ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
154
+ DECLARE
155
+ colname text := specialization;
156
+ colval text := NEW.specialization;
157
+ tblname text := 'bandits_' || colval;
158
+ BEGIN
159
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
160
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
161
+ END IF;
162
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
163
+ RETURN NULL;
164
+ END;
165
+ $$ LANGUAGE plpgsql;
166
+  (35.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
167
+ CREATE OR REPLACE TRIGGER insert_bandits_trigger
168
+ BEFORE INSERT ON bandits
169
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
170
+  (91.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
171
+ DECLARE
172
+ colname text := specialization;
173
+ colval text := NEW.specialization;
174
+ tblname text := 'bandits_' || colval;
175
+ BEGIN
176
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
177
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
178
+ END IF;
179
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
180
+ RETURN NULL;
181
+ END;
182
+ $$ LANGUAGE plpgsql;
183
+  (156.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
184
+ CREATE TRIGGER insert_bandits_trigger
185
+ BEFORE INSERT ON bandits
186
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
187
+  (0.3ms) BEGIN
188
+ SQL (28.7ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:36:57.517077"], ["updated_at", "2016-03-06 18:36:57.517077"]]
189
+  (0.2ms) ROLLBACK
190
+  (153.7ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
191
+ DECLARE
192
+ colname text := specialization;
193
+ colval text := NEW."specialization";
194
+ tblname text := 'bandits_' || colval;
195
+ BEGIN
196
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
197
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
198
+ END IF;
199
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
200
+ RETURN NULL;
201
+ END;
202
+ $$ LANGUAGE plpgsql;
203
+  (29.4ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
204
+ CREATE TRIGGER insert_bandits_trigger
205
+ BEFORE INSERT ON bandits
206
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
207
+  (0.5ms) BEGIN
208
+ SQL (156.8ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:51:32.134070"], ["updated_at", "2016-03-06 18:51:32.134070"]]
209
+  (0.4ms) ROLLBACK
210
+  (159.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
211
+ DECLARE
212
+ colname text := specialization;
213
+ colval text := NEW.specialization;
214
+ tblname text := 'bandits_' || colval;
215
+ BEGIN
216
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
217
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
218
+ END IF;
219
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
220
+ RETURN NULL;
221
+ END;
222
+ $$ LANGUAGE plpgsql;
223
+  (65.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
224
+ CREATE TRIGGER insert_bandits_trigger
225
+ BEFORE INSERT ON bandits
226
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
227
+  (0.2ms) BEGIN
228
+ SQL (5.4ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:54:21.292659"], ["updated_at", "2016-03-06 18:54:21.292659"]]
229
+  (0.2ms) ROLLBACK
230
+  (34.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
231
+ DECLARE
232
+ colname text := specialization;
233
+ colval text := NEW.specialization;
234
+ tblname text := 'bandits_' || colval;
235
+ BEGIN
236
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
237
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
238
+ END IF;
239
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
240
+ RETURN NULL;
241
+ END;
242
+ $$ LANGUAGE plpgsql;
243
+  (10.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
244
+ CREATE TRIGGER insert_bandits_trigger
245
+ BEFORE INSERT ON bandits
246
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
247
+  (0.2ms) BEGIN
248
+ SQL (4.4ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:56:24.906340"], ["updated_at", "2016-03-06 18:56:24.906340"]]
249
+  (0.3ms) ROLLBACK
250
+  (26.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
251
+ DECLARE
252
+ colname text := 'specialization';
253
+ colval text := NEW.specialization;
254
+ tblname text := 'bandits_' || colval;
255
+ BEGIN
256
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
257
+ EXECUTE 'CREATE TABLE ' || tblname || '(check (' || quote_ident(colname) || '=' || quote_literal(colval) || ')) INHERITS (' || TG_RELNAME || ');';
258
+ END IF;
259
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
260
+ RETURN NULL;
261
+ END;
262
+ $$ LANGUAGE plpgsql;
263
+  (11.5ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
264
+ CREATE TRIGGER insert_bandits_trigger
265
+ BEFORE INSERT ON bandits
266
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
267
+  (0.2ms) BEGIN
268
+ SQL (417.6ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al"], ["specialization", "killer"], ["created_at", "2016-03-06 18:59:09.972726"], ["updated_at", "2016-03-06 18:59:09.972726"]]
269
+  (26.5ms) COMMIT
270
+ Bandit Load (24.4ms) SELECT "bandits".* FROM "bandits"
271
+  (3.1ms) BEGIN
272
+ SQL (1.2ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "AlCop"], ["specialization", "killer"], ["created_at", "2016-03-06 18:59:58.928003"], ["updated_at", "2016-03-06 18:59:58.928003"]]
273
+  (81.1ms) COMMIT
274
+ Bandit Load (2.3ms) SELECT "bandits".* FROM "bandits"
275
+  (0.4ms) BEGIN
276
+ SQL (212.8ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "AlCop"], ["specialization", "killer"], ["created_at", "2016-03-08 09:18:14.136427"], ["updated_at", "2016-03-08 09:18:14.136427"]]
277
+  (79.1ms) COMMIT
278
+  (0.4ms) BEGIN
279
+ SQL (6.5ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "AlCop"], ["specialization", "killer"], ["created_at", "2016-03-08 09:19:17.711315"], ["updated_at", "2016-03-08 09:19:17.711315"]]
280
+  (18.2ms) COMMIT
281
+ Bandit Load (138.1ms) SELECT "bandits".* FROM "bandits"
282
+  (160.7ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
283
+  (150.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
284
+ ActiveRecord::SchemaMigration Load (1.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
285
+ Migrating to CreateGangs (20160306173540)
286
+  (0.4ms) BEGIN
287
+  (187.6ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
288
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
289
+  (51.0ms) COMMIT
290
+ Migrating to CreateBandits (20160306174017)
291
+  (0.5ms) BEGIN
292
+  (128.7ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
293
+  (97.4ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
294
+  (6.5ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
295
+ FOREIGN KEY ("gang_id")
296
+ REFERENCES "gangs" ("id")
297
+ 
298
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
299
+  (34.1ms) COMMIT
300
+ Migrating to CreateCrimes (20160306174042)
301
+  (2.1ms) BEGIN
302
+  (169.2ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
303
+  (79.9ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
304
+  (13.6ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
305
+ FOREIGN KEY ("bandit_id")
306
+ REFERENCES "bandits" ("id")
307
+ 
308
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
309
+  (51.6ms) COMMIT
310
+ ActiveRecord::SchemaMigration Load (1.0ms) SELECT "schema_migrations".* FROM "schema_migrations"
311
+  (6.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
312
+ FROM pg_constraint c
313
+ JOIN pg_class t1 ON c.conrelid = t1.oid
314
+ JOIN pg_class t2 ON c.confrelid = t2.oid
315
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
316
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
317
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
318
+ WHERE c.contype = 'f'
319
+ AND t1.relname = 'bandits'
320
+ AND t3.nspname = ANY (current_schemas(false))
321
+ ORDER BY c.conname
322
+ 
323
+  (7.3ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
324
+ FROM pg_constraint c
325
+ JOIN pg_class t1 ON c.conrelid = t1.oid
326
+ JOIN pg_class t2 ON c.confrelid = t2.oid
327
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
328
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
329
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
330
+ WHERE c.contype = 'f'
331
+ AND t1.relname = 'crimes'
332
+ AND t3.nspname = ANY (current_schemas(false))
333
+ ORDER BY c.conname
334
+
335
+  (6.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
336
+ FROM pg_constraint c
337
+ JOIN pg_class t1 ON c.conrelid = t1.oid
338
+ JOIN pg_class t2 ON c.confrelid = t2.oid
339
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
340
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
341
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
342
+ WHERE c.contype = 'f'
343
+ AND t1.relname = 'gangs'
344
+ AND t3.nspname = ANY (current_schemas(false))
345
+ ORDER BY c.conname
346
+ 
347
+  (87.2ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
348
+ DECLARE
349
+ colname text := 'specialization';
350
+ colval text := NEW.specialization;
351
+ tblname text := 'bandits_' || colval;
352
+ BEGIN
353
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
354
+ EXECUTE 'CREATE TABLE '
355
+ || tblname
356
+ || '(check ('
357
+ || quote_ident(colname)
358
+ || '='
359
+ || quote_literal(colval)
360
+ || ')) INHERITS ('
361
+ || TG_RELNAME
362
+ || ');';
363
+ END IF;
364
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
365
+ RETURN NULL;
366
+ END;
367
+ $$ LANGUAGE plpgsql;
368
+  (10.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
369
+ CREATE TRIGGER insert_bandits_trigger
370
+ BEFORE INSERT ON bandits
371
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
372
+  (30.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
373
+ DECLARE
374
+ row bandits%rowtype;
375
+ BEGIN
376
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURING * INTO row;
377
+ RETURN row;
378
+ END;
379
+ $$ LANGUAGE plpgsql;
380
+  (25.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
381
+ DECLARE
382
+ colname text := 'specialization';
383
+ colval text := NEW.specialization;
384
+ tblname text := 'bandits_' || colval;
385
+ BEGIN
386
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
387
+ EXECUTE 'CREATE TABLE '
388
+ || tblname
389
+ || '(check ('
390
+ || quote_ident(colname)
391
+ || '='
392
+ || quote_literal(colval)
393
+ || ')) INHERITS ('
394
+ || TG_RELNAME
395
+ || ');';
396
+ END IF;
397
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
398
+ RETURN NULL;
399
+ END;
400
+ $$ LANGUAGE plpgsql;
401
+  (10.6ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
402
+ CREATE TRIGGER insert_bandits_trigger
403
+ BEFORE INSERT ON bandits
404
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
405
+  (11.0ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
406
+ DECLARE
407
+ row bandits%rowtype;
408
+ BEGIN
409
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
410
+ RETURN row;
411
+ END;
412
+ $$ LANGUAGE plpgsql;
413
+  (10.7ms) CREATE TRIGGER bandits_after_insert_trigger
414
+ AFTER INSERT ON bandits
415
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
416
+  (0.4ms) BEGIN
417
+ SQL (59.3ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-08 10:23:46.014823"], ["updated_at", "2016-03-08 10:23:46.014823"]]
418
+  (16.3ms) COMMIT
419
+  (39.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
420
+ DECLARE
421
+ colname text := 'specialization';
422
+ colval text := NEW.specialization;
423
+ tblname text := 'bandits_' || colval;
424
+ BEGIN
425
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
426
+ EXECUTE 'CREATE TABLE '
427
+ || tblname
428
+ || '(check ('
429
+ || quote_ident(colname)
430
+ || '='
431
+ || quote_literal(colval)
432
+ || ')) INHERITS ('
433
+ || TG_RELNAME
434
+ || ');';
435
+ END IF;
436
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
437
+ RETURN NEW;
438
+ END;
439
+ $$ LANGUAGE plpgsql;
440
+  (10.3ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
441
+ CREATE TRIGGER insert_bandits_trigger
442
+ BEFORE INSERT ON bandits
443
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
444
+  (10.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
445
+ DECLARE
446
+ row bandits%rowtype;
447
+ BEGIN
448
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
449
+ RETURN row;
450
+ END;
451
+ $$ LANGUAGE plpgsql;
452
+  (0.9ms) CREATE TRIGGER bandits_after_insert_trigger
453
+ AFTER INSERT ON bandits
454
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
455
+  (33.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
456
+ DECLARE
457
+ colname text := 'specialization';
458
+ colval text := NEW.specialization;
459
+ tblname text := 'bandits_' || colval;
460
+ BEGIN
461
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
462
+ EXECUTE 'CREATE TABLE '
463
+ || tblname
464
+ || '(check ('
465
+ || quote_ident(colname)
466
+ || '='
467
+ || quote_literal(colval)
468
+ || ')) INHERITS ('
469
+ || TG_RELNAME
470
+ || ');';
471
+ END IF;
472
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
473
+ RETURN NEW;
474
+ END;
475
+ $$ LANGUAGE plpgsql;
476
+  (11.4ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
477
+ CREATE TRIGGER insert_bandits_trigger
478
+ BEFORE INSERT ON bandits
479
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
480
+  (10.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
481
+ DECLARE
482
+ row bandits%rowtype;
483
+ BEGIN
484
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
485
+ RETURN row;
486
+ END;
487
+ $$ LANGUAGE plpgsql;
488
+  (11.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
489
+ CREATE TRIGGER bandits_after_insert_trigger
490
+ AFTER INSERT ON bandits
491
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
492
+  (0.2ms) BEGIN
493
+ SQL (102.4ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-08 10:27:22.638917"], ["updated_at", "2016-03-08 10:27:22.638917"]]
494
+  (20.7ms) COMMIT
495
+ Bandit Load (274.3ms) SELECT "bandits".* FROM "bandits"
496
+ SQL (110.3ms) DELETE FROM "bandits"
497
+ Bandit Load (1.4ms) SELECT "bandits".* FROM "bandits"
498
+  (0.4ms) BEGIN
499
+ SQL (208.6ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-09 17:37:29.355906"], ["updated_at", "2016-03-09 17:37:29.355906"]]
500
+  (23.9ms) COMMIT
501
+ Bandit Load (1.9ms) SELECT "bandits".* FROM "bandits"
502
+ SQL (21.0ms) DELETE FROM "bandits"
503
+  (0.4ms) BEGIN
504
+ SQL (26.0ms) INSERT INTO "gangs" ("title", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["title", "Mocha"], ["created_at", "2016-03-09 17:38:21.061823"], ["updated_at", "2016-03-09 17:38:21.061823"]]
505
+  (16.9ms) COMMIT
506
+ Gang Load (2.4ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
507
+ Gang Load (1.4ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
508
+ Gang Load (2.1ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
509
+ Gang Load (1.3ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
510
+  (0.2ms) BEGIN
511
+ SQL (4.0ms) INSERT INTO "bandits" ("name", "specialization", "gang_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["gang_id", 1], ["created_at", "2016-03-09 17:43:32.602947"], ["updated_at", "2016-03-09 17:43:32.602947"]]
512
+  (20.7ms) COMMIT
513
+ Bandit Load (2.0ms) SELECT "bandits".* FROM "bandits"
514
+ Gang Load (2.0ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
515
+ Bandit Load (1.9ms) SELECT "bandits".* FROM "bandits" WHERE "bandits"."gang_id" = $1 [["gang_id", 1]]
516
+ Gang Load (1.4ms) SELECT "gangs".* FROM "gangs" ORDER BY "gangs"."id" ASC LIMIT 1
517
+ Bandit Load (15.5ms) SELECT "bandits".* FROM "bandits" WHERE "bandits"."gang_id" = $1 ORDER BY "bandits"."id" ASC LIMIT 1 [["gang_id", 1]]
518
+  (0.4ms) BEGIN
519
+ SQL (47.4ms) INSERT INTO "crimes" ("title", "bandit_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["title", "bla"], ["bandit_id", 4], ["created_at", "2016-03-09 17:45:00.577595"], ["updated_at", "2016-03-09 17:45:00.577595"]]
520
+  (0.3ms) ROLLBACK
521
+  (0.8ms) SHOW constraint_exclusion;
522
+  (1.9ms) SHOW constraint_exclusion;
523
+  (2.3ms) SHOW constraint_exclusion;
524
+  (1.3ms) SHOW constraint_exclusion;
525
+  (1.7ms) SHOW constraint_exclusion;
526
+  (1.1ms) SHOW constraint_exclusion;
527
+  (2.1ms) SHOW constraint_exclusion;
528
+  (2.3ms) SHOW constraint_exclusion;
529
+  (318.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
530
+ DECLARE
531
+ colname text := 'speciafication';
532
+ colval text := NEW.speciafication;
533
+ tblname text := 'bandits_' || colval;
534
+ BEGIN
535
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
536
+ EXECUTE 'CREATE TABLE '
537
+ || tblname
538
+ || '(check ('
539
+ || quote_ident(colname)
540
+ || '='
541
+ || quote_literal(colval)
542
+ || ')) INHERITS ('
543
+ || TG_RELNAME
544
+ || ');';
545
+ END IF;
546
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
547
+ RETURN NEW;
548
+ END;
549
+ $$ LANGUAGE plpgsql;
550
+  (242.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
551
+ CREATE TRIGGER insert_bandits_trigger
552
+ BEFORE INSERT ON bandits
553
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
554
+  (10.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
555
+ DECLARE
556
+ row bandits%rowtype;
557
+ BEGIN
558
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
559
+ RETURN row;
560
+ END;
561
+ $$ LANGUAGE plpgsql;
562
+  (9.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
563
+ CREATE TRIGGER bandits_after_insert_trigger
564
+ AFTER INSERT ON bandits
565
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
566
+  (0.5ms) SHOW constraint_exclusion;
567
+  (47.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
568
+ DECLARE
569
+ colname text := 'specialization';
570
+ colval text := NEW.specialization;
571
+ tblname text := 'bandits_' || colval;
572
+ BEGIN
573
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
574
+ EXECUTE 'CREATE TABLE '
575
+ || tblname
576
+ || '(check ('
577
+ || quote_ident(colname)
578
+ || '='
579
+ || quote_literal(colval)
580
+ || ')) INHERITS ('
581
+ || TG_RELNAME
582
+ || ');';
583
+ END IF;
584
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
585
+ RETURN NEW;
586
+ END;
587
+ $$ LANGUAGE plpgsql;
588
+  (23.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
589
+ CREATE TRIGGER insert_bandits_trigger
590
+ BEFORE INSERT ON bandits
591
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
592
+  (13.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
593
+ DECLARE
594
+ row bandits%rowtype;
595
+ BEGIN
596
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
597
+ RETURN row;
598
+ END;
599
+ $$ LANGUAGE plpgsql;
600
+  (12.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
601
+ CREATE TRIGGER bandits_after_insert_trigger
602
+ AFTER INSERT ON bandits
603
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
604
+  (1.2ms) SHOW constraint_exclusion;
605
+  (21.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
606
+ DECLARE
607
+ colname text := 'specialization';
608
+ colval text := NEW.specialization;
609
+ tblname text := 'bandits_' || colval;
610
+ BEGIN
611
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
612
+ EXECUTE 'CREATE TABLE '
613
+ || tblname
614
+ || '(check ('
615
+ || quote_ident(colname)
616
+ || '='
617
+ || quote_literal(colval)
618
+ || ')) INHERITS ('
619
+ || TG_RELNAME
620
+ || ');';
621
+ END IF;
622
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
623
+ RETURN NEW;
624
+ END;
625
+ $$ LANGUAGE plpgsql;
626
+  (10.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
627
+ CREATE TRIGGER insert_bandits_trigger
628
+ BEFORE INSERT ON bandits
629
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
630
+  (10.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
631
+ DECLARE
632
+ row bandits%rowtype;
633
+ BEGIN
634
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
635
+ RETURN row;
636
+ END;
637
+ $$ LANGUAGE plpgsql;
638
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
639
+ CREATE TRIGGER bandits_after_insert_trigger
640
+ AFTER INSERT ON bandits
641
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
642
+  (0.4ms) SHOW constraint_exclusion;
643
+  (72.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
644
+ DECLARE
645
+ colname text := 'specializtion';
646
+ colval text := NEW.specializtion;
647
+ tblname text := 'bandits_' || colval;
648
+ BEGIN
649
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
650
+ EXECUTE 'CREATE TABLE '
651
+ || tblname
652
+ || '(check ('
653
+ || quote_ident(colname)
654
+ || '='
655
+ || quote_literal(colval)
656
+ || ')) INHERITS ('
657
+ || TG_RELNAME
658
+ || ');';
659
+ END IF;
660
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
661
+ RETURN NEW;
662
+ END;
663
+ $$ LANGUAGE plpgsql;
664
+  (11.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
665
+ CREATE TRIGGER insert_bandits_trigger
666
+ BEFORE INSERT ON bandits
667
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
668
+  (11.2ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
669
+ DECLARE
670
+ row bandits%rowtype;
671
+ BEGIN
672
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
673
+ RETURN row;
674
+ END;
675
+ $$ LANGUAGE plpgsql;
676
+  (10.6ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
677
+ CREATE TRIGGER bandits_after_insert_trigger
678
+ AFTER INSERT ON bandits
679
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
680
+  (1.9ms) SHOW constraint_exclusion;
681
+  (106.8ms) CREATE OR REPLACE FUNCTION bandit_insert_master() RETURNS TRIGGER AS $$
682
+ DECLARE
683
+ colname text := 'specialization';
684
+ colval text := NEW.specialization;
685
+ tblname text := 'bandit_' || colval;
686
+ BEGIN
687
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
688
+ EXECUTE 'CREATE TABLE '
689
+ || tblname
690
+ || '(check ('
691
+ || quote_ident(colname)
692
+ || '='
693
+ || quote_literal(colval)
694
+ || ')) INHERITS ('
695
+ || TG_RELNAME
696
+ || ');';
697
+ END IF;
698
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
699
+ RETURN NEW;
700
+ END;
701
+ $$ LANGUAGE plpgsql;
702
+  (29.9ms) DROP TRIGGER IF EXISTS insert_bandit_trigger ON bandit;
703
+ CREATE TRIGGER insert_bandit_trigger
704
+ BEFORE INSERT ON bandit
705
+ FOR EACH ROW EXECUTE PROCEDURE bandit_insert_master();
706
+  (15.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
707
+ DECLARE
708
+ colname text := 'specialization';
709
+ colval text := NEW.specialization;
710
+ tblname text := 'bandits_' || colval;
711
+ BEGIN
712
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
713
+ EXECUTE 'CREATE TABLE '
714
+ || tblname
715
+ || '(check ('
716
+ || quote_ident(colname)
717
+ || '='
718
+ || quote_literal(colval)
719
+ || ')) INHERITS ('
720
+ || TG_RELNAME
721
+ || ');';
722
+ END IF;
723
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
724
+ RETURN NEW;
725
+ END;
726
+ $$ LANGUAGE plpgsql;
727
+  (10.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
728
+ CREATE TRIGGER insert_bandits_trigger
729
+ BEFORE INSERT ON bandits
730
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
731
+  (10.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
732
+ DECLARE
733
+ row bandits%rowtype;
734
+ BEGIN
735
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
736
+ RETURN row;
737
+ END;
738
+ $$ LANGUAGE plpgsql;
739
+  (10.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
740
+ CREATE TRIGGER bandits_after_insert_trigger
741
+ AFTER INSERT ON bandits
742
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
743
+  (0.3ms) SHOW constraint_exclusion;
744
+  (73.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
745
+ DECLARE
746
+ colname text := 'specialization';
747
+ colval text := NEW.specialization;
748
+ tblname text := 'bandits_' || colval;
749
+ BEGIN
750
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
751
+ EXECUTE 'CREATE TABLE '
752
+ || tblname
753
+ || '(check ('
754
+ || quote_ident(colname)
755
+ || '='
756
+ || quote_literal(colval)
757
+ || ')) INHERITS ('
758
+ || TG_RELNAME
759
+ || ');';
760
+ END IF;
761
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
762
+ RETURN NEW;
763
+ END;
764
+ $$ LANGUAGE plpgsql;
765
+  (10.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
766
+ CREATE TRIGGER insert_bandits_trigger
767
+ BEFORE INSERT ON bandits
768
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
769
+  (10.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
770
+ DECLARE
771
+ row bandits%rowtype;
772
+ BEGIN
773
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
774
+ RETURN row;
775
+ END;
776
+ $$ LANGUAGE plpgsql;
777
+  (11.0ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
778
+ CREATE TRIGGER bandits_after_insert_trigger
779
+ AFTER INSERT ON bandits
780
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
781
+  (0.3ms) SHOW constraint_exclusion;
782
+  (33.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
783
+ DECLARE
784
+ colname text := 'specialization';
785
+ colval text := NEW.specialization;
786
+ tblname text := 'bandits_' || colval;
787
+ BEGIN
788
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
789
+ EXECUTE 'CREATE TABLE '
790
+ || tblname
791
+ || '(check ('
792
+ || quote_ident(colname)
793
+ || '='
794
+ || quote_literal(colval)
795
+ || ')) INHERITS ('
796
+ || TG_RELNAME
797
+ || ');';
798
+ END IF;
799
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
800
+ RETURN NEW;
801
+ END;
802
+ $$ LANGUAGE plpgsql;
803
+  (10.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
804
+ CREATE TRIGGER insert_bandits_trigger
805
+ BEFORE INSERT ON bandits
806
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
807
+  (10.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
808
+ DECLARE
809
+ row bandits%rowtype;
810
+ BEGIN
811
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
812
+ RETURN row;
813
+ END;
814
+ $$ LANGUAGE plpgsql;
815
+  (10.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
816
+ CREATE TRIGGER bandits_after_insert_trigger
817
+ AFTER INSERT ON bandits
818
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
819
+  (0.2ms) SHOW constraint_exclusion;
820
+  (31.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
821
+ DECLARE
822
+ colname text := 'specialization';
823
+ colval text := NEW.specialization;
824
+ tblname text := 'bandits_' || colval;
825
+ BEGIN
826
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
827
+ EXECUTE 'CREATE TABLE '
828
+ || tblname
829
+ || '(check ('
830
+ || quote_ident(colname)
831
+ || '='
832
+ || quote_literal(colval)
833
+ || ')) INHERITS ('
834
+ || TG_RELNAME
835
+ || ');';
836
+ END IF;
837
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
838
+ RETURN NEW;
839
+ END;
840
+ $$ LANGUAGE plpgsql;
841
+  (11.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
842
+ CREATE TRIGGER insert_bandits_trigger
843
+ BEFORE INSERT ON bandits
844
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
845
+  (11.0ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
846
+ DECLARE
847
+ row bandits%rowtype;
848
+ BEGIN
849
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
850
+ RETURN row;
851
+ END;
852
+ $$ LANGUAGE plpgsql;
853
+  (10.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
854
+ CREATE TRIGGER bandits_after_insert_trigger
855
+ AFTER INSERT ON bandits
856
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
857
+  (0.2ms) SHOW constraint_exclusion;
858
+  (13.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
859
+ DECLARE
860
+ colname text := 'specialization';
861
+ colval text := NEW.specialization;
862
+ tblname text := 'bandits_' || colval;
863
+ BEGIN
864
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
865
+ EXECUTE 'CREATE TABLE '
866
+ || tblname
867
+ || '(check ('
868
+ || quote_ident(colname)
869
+ || '='
870
+ || quote_literal(colval)
871
+ || ')) INHERITS ('
872
+ || TG_RELNAME
873
+ || ');';
874
+ END IF;
875
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
876
+ RETURN NEW;
877
+ END;
878
+ $$ LANGUAGE plpgsql;
879
+  (10.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
880
+ CREATE TRIGGER insert_bandits_trigger
881
+ BEFORE INSERT ON bandits
882
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
883
+  (10.5ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
884
+ DECLARE
885
+ row bandits%rowtype;
886
+ BEGIN
887
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
888
+ RETURN row;
889
+ END;
890
+ $$ LANGUAGE plpgsql;
891
+  (11.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
892
+ CREATE TRIGGER bandits_after_insert_trigger
893
+ AFTER INSERT ON bandits
894
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
895
+  (1.4ms) SHOW constraint_exclusion;
896
+  (31.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
897
+ DECLARE
898
+ colname text := 'specialization';
899
+ colval text := NEW.specialization;
900
+ tblname text := 'bandits_' || colval;
901
+ BEGIN
902
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
903
+ EXECUTE 'CREATE TABLE '
904
+ || tblname
905
+ || '(check ('
906
+ || quote_ident(colname)
907
+ || '='
908
+ || quote_literal(colval)
909
+ || ')) INHERITS ('
910
+ || TG_RELNAME
911
+ || ');';
912
+ END IF;
913
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
914
+ RETURN NEW;
915
+ END;
916
+ $$ LANGUAGE plpgsql;
917
+  (15.4ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
918
+ CREATE TRIGGER insert_bandits_trigger
919
+ BEFORE INSERT ON bandits
920
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
921
+  (5.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
922
+ DECLARE
923
+ row bandits%rowtype;
924
+ BEGIN
925
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
926
+ RETURN row;
927
+ END;
928
+ $$ LANGUAGE plpgsql;
929
+  (11.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
930
+ CREATE TRIGGER bandits_after_insert_trigger
931
+ AFTER INSERT ON bandits
932
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
933
+  (0.3ms) SHOW constraint_exclusion;
934
+  (41.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
935
+ DECLARE
936
+ colname text := 'specialization';
937
+ colval text := NEW.specialization;
938
+ tblname text := 'bandits_' || colval;
939
+ BEGIN
940
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
941
+ EXECUTE 'CREATE TABLE '
942
+ || tblname
943
+ || '(check ('
944
+ || quote_ident(colname)
945
+ || '='
946
+ || quote_literal(colval)
947
+ || ')) INHERITS ('
948
+ || TG_RELNAME
949
+ || ');';
950
+ END IF;
951
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
952
+ RETURN NEW;
953
+ END;
954
+ $$ LANGUAGE plpgsql;
955
+  (10.1ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
956
+ CREATE TRIGGER insert_bandits_trigger
957
+ BEFORE INSERT ON bandits
958
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
959
+  (10.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
960
+ DECLARE
961
+ row bandits%rowtype;
962
+ BEGIN
963
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
964
+ RETURN row;
965
+ END;
966
+ $$ LANGUAGE plpgsql;
967
+  (11.0ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
968
+ CREATE TRIGGER bandits_after_insert_trigger
969
+ AFTER INSERT ON bandits
970
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
971
+  (0.3ms) SHOW constraint_exclusion;
972
+  (59.4ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
973
+ DECLARE
974
+ colname text := 'spec';
975
+ colval text := NEW.spec;
976
+ tblname text := 'bandits_' || colval;
977
+ BEGIN
978
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
979
+ EXECUTE 'CREATE TABLE '
980
+ || tblname
981
+ || '(check ('
982
+ || quote_ident(colname)
983
+ || '='
984
+ || quote_literal(colval)
985
+ || ')) INHERITS ('
986
+ || TG_RELNAME
987
+ || ');';
988
+ END IF;
989
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
990
+ RETURN NEW;
991
+ END;
992
+ $$ LANGUAGE plpgsql;
993
+  (14.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
994
+ CREATE TRIGGER insert_bandits_trigger
995
+ BEFORE INSERT ON bandits
996
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
997
+  (7.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
998
+ DECLARE
999
+ row bandits%rowtype;
1000
+ BEGIN
1001
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1002
+ RETURN row;
1003
+ END;
1004
+ $$ LANGUAGE plpgsql;
1005
+  (9.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1006
+ CREATE TRIGGER bandits_after_insert_trigger
1007
+ AFTER INSERT ON bandits
1008
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1009
+  (0.5ms) SHOW constraint_exclusion;
1010
+  (37.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1011
+ DECLARE
1012
+ colname text := 'spec';
1013
+ colval text := NEW.spec;
1014
+ tblname text := 'bandits_' || colval;
1015
+ BEGIN
1016
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1017
+ EXECUTE 'CREATE TABLE '
1018
+ || tblname
1019
+ || '(check ('
1020
+ || quote_ident(colname)
1021
+ || '='
1022
+ || quote_literal(colval)
1023
+ || ')) INHERITS ('
1024
+ || TG_RELNAME
1025
+ || ');';
1026
+ END IF;
1027
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1028
+ RETURN NEW;
1029
+ END;
1030
+ $$ LANGUAGE plpgsql;
1031
+  (14.2ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1032
+ CREATE TRIGGER insert_bandits_trigger
1033
+ BEFORE INSERT ON bandits
1034
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1035
+  (8.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1036
+ DECLARE
1037
+ row bandits%rowtype;
1038
+ BEGIN
1039
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1040
+ RETURN row;
1041
+ END;
1042
+ $$ LANGUAGE plpgsql;
1043
+  (10.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1044
+ CREATE TRIGGER bandits_after_insert_trigger
1045
+ AFTER INSERT ON bandits
1046
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1047
+  (0.3ms) SHOW constraint_exclusion;
1048
+  (20.4ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1049
+ DECLARE
1050
+ colname text := 'spec';
1051
+ colval text := NEW.spec;
1052
+ tblname text := 'bandits_' || colval;
1053
+ BEGIN
1054
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1055
+ EXECUTE 'CREATE TABLE '
1056
+ || tblname
1057
+ || '(check ('
1058
+ || quote_ident(colname)
1059
+ || '='
1060
+ || quote_literal(colval)
1061
+ || ')) INHERITS ('
1062
+ || TG_RELNAME
1063
+ || ');';
1064
+ END IF;
1065
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1066
+ RETURN NEW;
1067
+ END;
1068
+ $$ LANGUAGE plpgsql;
1069
+  (10.6ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1070
+ CREATE TRIGGER insert_bandits_trigger
1071
+ BEFORE INSERT ON bandits
1072
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1073
+  (10.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1074
+ DECLARE
1075
+ row bandits%rowtype;
1076
+ BEGIN
1077
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1078
+ RETURN row;
1079
+ END;
1080
+ $$ LANGUAGE plpgsql;
1081
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1082
+ CREATE TRIGGER bandits_after_insert_trigger
1083
+ AFTER INSERT ON bandits
1084
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1085
+  (0.3ms) SHOW constraint_exclusion;
1086
+  (57.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1087
+ DECLARE
1088
+ colname text := 'spec';
1089
+ colval text := NEW.spec;
1090
+ tblname text := 'bandits_' || colval;
1091
+ BEGIN
1092
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1093
+ EXECUTE 'CREATE TABLE '
1094
+ || tblname
1095
+ || '(check ('
1096
+ || quote_ident(colname)
1097
+ || '='
1098
+ || quote_literal(colval)
1099
+ || ')) INHERITS ('
1100
+ || TG_RELNAME
1101
+ || ');';
1102
+ END IF;
1103
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1104
+ RETURN NEW;
1105
+ END;
1106
+ $$ LANGUAGE plpgsql;
1107
+  (14.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1108
+ CREATE TRIGGER insert_bandits_trigger
1109
+ BEFORE INSERT ON bandits
1110
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1111
+  (7.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1112
+ DECLARE
1113
+ row bandits%rowtype;
1114
+ BEGIN
1115
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1116
+ RETURN row;
1117
+ END;
1118
+ $$ LANGUAGE plpgsql;
1119
+  (11.6ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1120
+ CREATE TRIGGER bandits_after_insert_trigger
1121
+ AFTER INSERT ON bandits
1122
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1123
+  (0.3ms) SHOW constraint_exclusion;
1124
+  (342.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1125
+ DECLARE
1126
+ colname text := 'specification';
1127
+ colval text := NEW.specification;
1128
+ tblname text := 'bandits_' || colval;
1129
+ BEGIN
1130
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1131
+ EXECUTE 'CREATE TABLE '
1132
+ || tblname
1133
+ || '(check ('
1134
+ || quote_ident(colname)
1135
+ || '='
1136
+ || quote_literal(colval)
1137
+ || ')) INHERITS ('
1138
+ || TG_RELNAME
1139
+ || ');';
1140
+ END IF;
1141
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1142
+ RETURN NEW;
1143
+ END;
1144
+ $$ LANGUAGE plpgsql;
1145
+  (366.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1146
+ CREATE TRIGGER insert_bandits_trigger
1147
+ BEFORE INSERT ON bandits
1148
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1149
+  (32.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1150
+ DECLARE
1151
+ row bandits%rowtype;
1152
+ BEGIN
1153
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1154
+ RETURN row;
1155
+ END;
1156
+ $$ LANGUAGE plpgsql;
1157
+  (10.6ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1158
+ CREATE TRIGGER bandits_after_insert_trigger
1159
+ AFTER INSERT ON bandits
1160
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1161
+  (22.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1162
+ DECLARE
1163
+ colname text := 'specifications';
1164
+ colval text := NEW.specifications;
1165
+ tblname text := 'bandits_' || colval;
1166
+ BEGIN
1167
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1168
+ EXECUTE 'CREATE TABLE '
1169
+ || tblname
1170
+ || '(check ('
1171
+ || quote_ident(colname)
1172
+ || '='
1173
+ || quote_literal(colval)
1174
+ || ')) INHERITS ('
1175
+ || TG_RELNAME
1176
+ || ');';
1177
+ END IF;
1178
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1179
+ RETURN NEW;
1180
+ END;
1181
+ $$ LANGUAGE plpgsql;
1182
+  (65.9ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1183
+ CREATE TRIGGER insert_bandits_trigger
1184
+ BEFORE INSERT ON bandits
1185
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1186
+  (14.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1187
+ DECLARE
1188
+ row bandits%rowtype;
1189
+ BEGIN
1190
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1191
+ RETURN row;
1192
+ END;
1193
+ $$ LANGUAGE plpgsql;
1194
+  (7.0ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1195
+ CREATE TRIGGER bandits_after_insert_trigger
1196
+ AFTER INSERT ON bandits
1197
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1198
+  (419.6ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1199
+ ccu.table_name AS foreign_table_name,
1200
+ ccu.column_name AS foreign_column_name
1201
+ FROM information_schema.table_constraints AS tc
1202
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1203
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1204
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1205
+  (0.8ms) SHOW constraint_exclusion;
1206
+  (35.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1207
+ DECLARE
1208
+ colname text := 'specifications';
1209
+ colval text := NEW.specifications;
1210
+ tblname text := 'bandits_' || colval;
1211
+ BEGIN
1212
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1213
+ EXECUTE 'CREATE TABLE '
1214
+ || tblname
1215
+ || '(check ('
1216
+ || quote_ident(colname)
1217
+ || '='
1218
+ || quote_literal(colval)
1219
+ || ')) INHERITS ('
1220
+ || TG_RELNAME
1221
+ || ');';
1222
+ END IF;
1223
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1224
+ RETURN NEW;
1225
+ END;
1226
+ $$ LANGUAGE plpgsql;
1227
+  (13.4ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1228
+ CREATE TRIGGER insert_bandits_trigger
1229
+ BEFORE INSERT ON bandits
1230
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1231
+  (7.7ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1232
+ DECLARE
1233
+ row bandits%rowtype;
1234
+ BEGIN
1235
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1236
+ RETURN row;
1237
+ END;
1238
+ $$ LANGUAGE plpgsql;
1239
+  (14.9ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1240
+ CREATE TRIGGER bandits_after_insert_trigger
1241
+ AFTER INSERT ON bandits
1242
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1243
+  (24.2ms) S
1244
+  (19.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1245
+ DECLARE
1246
+ colname text := 'specifications';
1247
+ colval text := NEW.specifications;
1248
+ tblname text := 'bandits_' || colval;
1249
+ BEGIN
1250
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1251
+ EXECUTE 'CREATE TABLE '
1252
+ || tblname
1253
+ || '(check ('
1254
+ || quote_ident(colname)
1255
+ || '='
1256
+ || quote_literal(colval)
1257
+ || ')) INHERITS ('
1258
+ || TG_RELNAME
1259
+ || ');';
1260
+ END IF;
1261
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1262
+ RETURN NEW;
1263
+ END;
1264
+ $$ LANGUAGE plpgsql;
1265
+  (13.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1266
+ CREATE TRIGGER insert_bandits_trigger
1267
+ BEFORE INSERT ON bandits
1268
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1269
+  (7.7ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1270
+ DECLARE
1271
+ row bandits%rowtype;
1272
+ BEGIN
1273
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1274
+ RETURN row;
1275
+ END;
1276
+ $$ LANGUAGE plpgsql;
1277
+  (13.1ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1278
+ CREATE TRIGGER bandits_after_insert_trigger
1279
+ AFTER INSERT ON bandits
1280
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1281
+  (37.6ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1282
+ ccu.table_name AS foreign_table_name,
1283
+ ccu.column_name AS foreign_column_name
1284
+ FROM information_schema.table_constraints AS tc
1285
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1286
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1287
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1288
+  (0.5ms) SHOW constraint_exclusion;
1289
+  (80.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1290
+ DECLARE
1291
+ colname text := 'specifications';
1292
+ colval text := NEW.specifications;
1293
+ tblname text := 'bandits_' || colval;
1294
+ BEGIN
1295
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1296
+ EXECUTE 'CREATE TABLE '
1297
+ || tblname
1298
+ || '(check ('
1299
+ || quote_ident(colname)
1300
+ || '='
1301
+ || quote_literal(colval)
1302
+ || ')) INHERITS ('
1303
+ || TG_RELNAME
1304
+ || ');';
1305
+ END IF;
1306
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1307
+ RETURN NEW;
1308
+ END;
1309
+ $$ LANGUAGE plpgsql;
1310
+  (14.3ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1311
+ CREATE TRIGGER insert_bandits_trigger
1312
+ BEFORE INSERT ON bandits
1313
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1314
+  (20.2ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1315
+ DECLARE
1316
+ row bandits%rowtype;
1317
+ BEGIN
1318
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1319
+ RETURN row;
1320
+ END;
1321
+ $$ LANGUAGE plpgsql;
1322
+  (9.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1323
+ CREATE TRIGGER bandits_after_insert_trigger
1324
+ AFTER INSERT ON bandits
1325
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1326
+  (71.2ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1327
+ ccu.table_name AS foreign_table_name,
1328
+ ccu.column_name AS foreign_column_name
1329
+ FROM information_schema.table_constraints AS tc
1330
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1331
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1332
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1333
+  (114.9ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
1334
+  (0.4ms) SHOW constraint_exclusion;
1335
+  (38.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1336
+ DECLARE
1337
+ colname text := 'specifications';
1338
+ colval text := NEW.specifications;
1339
+ tblname text := 'bandits_' || colval;
1340
+ BEGIN
1341
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1342
+ EXECUTE 'CREATE TABLE '
1343
+ || tblname
1344
+ || '(check ('
1345
+ || quote_ident(colname)
1346
+ || '='
1347
+ || quote_literal(colval)
1348
+ || ')) INHERITS ('
1349
+ || TG_RELNAME
1350
+ || ');';
1351
+ END IF;
1352
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1353
+ RETURN NEW;
1354
+ END;
1355
+ $$ LANGUAGE plpgsql;
1356
+  (14.2ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1357
+ CREATE TRIGGER insert_bandits_trigger
1358
+ BEFORE INSERT ON bandits
1359
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1360
+  (6.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1361
+ DECLARE
1362
+ row bandits%rowtype;
1363
+ BEGIN
1364
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1365
+ RETURN row;
1366
+ END;
1367
+ $$ LANGUAGE plpgsql;
1368
+  (10.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1369
+ CREATE TRIGGER bandits_after_insert_trigger
1370
+ AFTER INSERT ON bandits
1371
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1372
+  (37.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1373
+ ccu.table_name AS foreign_table_name,
1374
+ ccu.column_name AS foreign_column_name
1375
+ FROM information_schema.table_constraints AS tc
1376
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1377
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1378
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1379
+  (0.5ms) SHOW constraint_exclusion;
1380
+  (218.8ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1381
+  (76.6ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1382
+ ActiveRecord::SchemaMigration Load (1.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
1383
+ Migrating to CreateGangs (20160306173540)
1384
+  (0.4ms) BEGIN
1385
+  (157.8ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1386
+ SQL (59.8ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
1387
+  (122.5ms) COMMIT
1388
+ Migrating to CreateBandits (20160306174017)
1389
+  (0.5ms) BEGIN
1390
+  (109.1ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1391
+  (55.7ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
1392
+  (5.8ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
1393
+ FOREIGN KEY ("gang_id")
1394
+ REFERENCES "gangs" ("id")
1395
+ 
1396
+ SQL (26.9ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
1397
+  (22.0ms) COMMIT
1398
+ Migrating to CreateCrimes (20160306174042)
1399
+  (0.8ms) BEGIN
1400
+  (94.3ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1401
+  (51.5ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
1402
+  (4.7ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
1403
+ FOREIGN KEY ("bandit_id")
1404
+ REFERENCES "bandits" ("id")
1405
+ 
1406
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
1407
+  (20.9ms) COMMIT
1408
+ ActiveRecord::SchemaMigration Load (0.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
1409
+  (12.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
1410
+ FROM pg_constraint c
1411
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1412
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1413
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1414
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1415
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1416
+ WHERE c.contype = 'f'
1417
+ AND t1.relname = 'bandits'
1418
+ AND t3.nspname = ANY (current_schemas(false))
1419
+ ORDER BY c.conname
1420
+ 
1421
+  (13.2ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
1422
+ FROM pg_constraint c
1423
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1424
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1425
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1426
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1427
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1428
+ WHERE c.contype = 'f'
1429
+ AND t1.relname = 'crimes'
1430
+ AND t3.nspname = ANY (current_schemas(false))
1431
+ ORDER BY c.conname
1432
+
1433
+  (13.8ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
1434
+ FROM pg_constraint c
1435
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1436
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1437
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1438
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1439
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1440
+ WHERE c.contype = 'f'
1441
+ AND t1.relname = 'gangs'
1442
+ AND t3.nspname = ANY (current_schemas(false))
1443
+ ORDER BY c.conname
1444
+ 
1445
+  (57.7ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1446
+ DECLARE
1447
+ colname text := 'specifications';
1448
+ colval text := NEW.specifications;
1449
+ tblname text := 'bandits_' || colval;
1450
+ BEGIN
1451
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1452
+ EXECUTE 'CREATE TABLE '
1453
+ || tblname
1454
+ || '(check ('
1455
+ || quote_ident(colname)
1456
+ || '='
1457
+ || quote_literal(colval)
1458
+ || ')) INHERITS ('
1459
+ || TG_RELNAME
1460
+ || ');';
1461
+ END IF;
1462
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1463
+ RETURN NEW;
1464
+ END;
1465
+ $$ LANGUAGE plpgsql;
1466
+  (15.1ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1467
+ CREATE TRIGGER insert_bandits_trigger
1468
+ BEFORE INSERT ON bandits
1469
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1470
+  (6.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1471
+ DECLARE
1472
+ row bandits%rowtype;
1473
+ BEGIN
1474
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1475
+ RETURN row;
1476
+ END;
1477
+ $$ LANGUAGE plpgsql;
1478
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1479
+ CREATE TRIGGER bandits_after_insert_trigger
1480
+ AFTER INSERT ON bandits
1481
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1482
+  (40.5ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1483
+ ccu.table_name AS foreign_table_name,
1484
+ ccu.column_name AS foreign_column_name
1485
+ FROM information_schema.table_constraints AS tc
1486
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1487
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1488
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1489
+  (69.2ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
1490
+  (0.5ms) SHOW constraint_exclusion;
1491
+  (163.7ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1492
+ DECLARE
1493
+ colname text := 'specialization';
1494
+ colval text := NEW.specialization;
1495
+ tblname text := 'bandits_' || colval;
1496
+ BEGIN
1497
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1498
+ EXECUTE 'CREATE TABLE '
1499
+ || tblname
1500
+ || '(check ('
1501
+ || quote_ident(colname)
1502
+ || '='
1503
+ || quote_literal(colval)
1504
+ || ')) INHERITS ('
1505
+ || TG_RELNAME
1506
+ || ');';
1507
+ END IF;
1508
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1509
+ RETURN NEW;
1510
+ END;
1511
+ $$ LANGUAGE plpgsql;
1512
+  (40.8ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1513
+ CREATE TRIGGER insert_bandits_trigger
1514
+ BEFORE INSERT ON bandits
1515
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1516
+  (10.0ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1517
+ DECLARE
1518
+ row bandits%rowtype;
1519
+ BEGIN
1520
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1521
+ RETURN row;
1522
+ END;
1523
+ $$ LANGUAGE plpgsql;
1524
+  (10.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1525
+ CREATE TRIGGER bandits_after_insert_trigger
1526
+ AFTER INSERT ON bandits
1527
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1528
+  (67.4ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1529
+ ccu.table_name AS foreign_table_name,
1530
+ ccu.column_name AS foreign_column_name
1531
+ FROM information_schema.table_constraints AS tc
1532
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1533
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1534
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1535
+  (0.4ms) SHOW constraint_exclusion;
1536
+  (63.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1537
+ DECLARE
1538
+ colname text := 'specialization';
1539
+ colval text := NEW.specialization;
1540
+ tblname text := 'bandits_' || colval;
1541
+ BEGIN
1542
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1543
+ EXECUTE 'CREATE TABLE '
1544
+ || tblname
1545
+ || '(check ('
1546
+ || quote_ident(colname)
1547
+ || '='
1548
+ || quote_literal(colval)
1549
+ || ')) INHERITS ('
1550
+ || TG_RELNAME
1551
+ || ');';
1552
+ END IF;
1553
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1554
+ RETURN NEW;
1555
+ END;
1556
+ $$ LANGUAGE plpgsql;
1557
+  (31.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1558
+ CREATE TRIGGER insert_bandits_trigger
1559
+ BEFORE INSERT ON bandits
1560
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1561
+  (10.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1562
+ DECLARE
1563
+ row bandits%rowtype;
1564
+ BEGIN
1565
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1566
+ RETURN row;
1567
+ END;
1568
+ $$ LANGUAGE plpgsql;
1569
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1570
+ CREATE TRIGGER bandits_after_insert_trigger
1571
+ AFTER INSERT ON bandits
1572
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1573
+  (36.3ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1574
+ ccu.table_name AS foreign_table_name,
1575
+ ccu.column_name AS foreign_column_name
1576
+ FROM information_schema.table_constraints AS tc
1577
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1578
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1579
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1580
+  (0.5ms) SHOW constraint_exclusion;
1581
+  (21.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1582
+ DECLARE
1583
+ colname text := 'specification';
1584
+ colval text := NEW.specification;
1585
+ tblname text := 'bandits_' || colval;
1586
+ BEGIN
1587
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1588
+ EXECUTE 'CREATE TABLE '
1589
+ || tblname
1590
+ || '(check ('
1591
+ || quote_ident(colname)
1592
+ || '='
1593
+ || quote_literal(colval)
1594
+ || ')) INHERITS ('
1595
+ || TG_RELNAME
1596
+ || ');';
1597
+ END IF;
1598
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1599
+ RETURN NEW;
1600
+ END;
1601
+ $$ LANGUAGE plpgsql;
1602
+  (13.5ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1603
+ CREATE TRIGGER insert_bandits_trigger
1604
+ BEFORE INSERT ON bandits
1605
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1606
+  (64.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1607
+ DECLARE
1608
+ row bandits%rowtype;
1609
+ BEGIN
1610
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1611
+ RETURN row;
1612
+ END;
1613
+ $$ LANGUAGE plpgsql;
1614
+  (13.3ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1615
+ CREATE TRIGGER bandits_after_insert_trigger
1616
+ AFTER INSERT ON bandits
1617
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1618
+  (419.7ms) SELECT 1 FROM information_schema.columns WHERE table_name ='bandits' AND column_name = 'idd';
1619
+  (491.5ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1620
+ DECLARE
1621
+ colname text := 'specialization';
1622
+ colval text := NEW.specialization;
1623
+ tblname text := 'bandits_' || colval;
1624
+ BEGIN
1625
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1626
+ EXECUTE 'CREATE TABLE '
1627
+ || tblname
1628
+ || '(check ('
1629
+ || quote_ident(colname)
1630
+ || '='
1631
+ || quote_literal(colval)
1632
+ || ')) INHERITS ('
1633
+ || TG_RELNAME
1634
+ || ');';
1635
+ END IF;
1636
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1637
+ RETURN NEW;
1638
+ END;
1639
+ $$ LANGUAGE plpgsql;
1640
+  (411.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1641
+ CREATE TRIGGER insert_bandits_trigger
1642
+ BEFORE INSERT ON bandits
1643
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1644
+  (12.7ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1645
+ DECLARE
1646
+ row bandits%rowtype;
1647
+ BEGIN
1648
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1649
+ RETURN row;
1650
+ END;
1651
+ $$ LANGUAGE plpgsql;
1652
+  (8.5ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1653
+ CREATE TRIGGER bandits_after_insert_trigger
1654
+ AFTER INSERT ON bandits
1655
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1656
+  (407.1ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1657
+ ccu.table_name AS foreign_table_name,
1658
+ ccu.column_name AS foreign_column_name
1659
+ FROM information_schema.table_constraints AS tc
1660
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1661
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1662
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1663
+  (0.4ms) SHOW constraint_exclusion;
1664
+  (287.4ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1665
+ DECLARE
1666
+ colname text := 'id';
1667
+ colval := NEW.id;
1668
+ step integer := ROUND(colval::integer / '100'::integer);
1669
+ tblname text := 'bandits_' || step;
1670
+ BEGIN
1671
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1672
+ EXECUTE 'CREATE TABLE '
1673
+ || tblname
1674
+ || '(check (ROUND('
1675
+ || quote_ident(colname)
1676
+ || '/ 100)='
1677
+ || step
1678
+ || ')) INHERITS ('
1679
+ || TG_RELNAME
1680
+ || ');';
1681
+ END IF;
1682
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1683
+ RETURN NEW;
1684
+ END;
1685
+ $$ LANGUAGE plpgsql;
1686
+  (32.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1687
+ DECLARE
1688
+ colname text := 'id';
1689
+ colval integer := NEW.id;
1690
+ step integer := ROUND(colval / '100'::integer);
1691
+ tblname text := 'bandits_' || step;
1692
+ BEGIN
1693
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1694
+ EXECUTE 'CREATE TABLE '
1695
+ || tblname
1696
+ || '(check (ROUND('
1697
+ || quote_ident(colname)
1698
+ || '/ 100)='
1699
+ || step
1700
+ || ')) INHERITS ('
1701
+ || TG_RELNAME
1702
+ || ');';
1703
+ END IF;
1704
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1705
+ RETURN NEW;
1706
+ END;
1707
+ $$ LANGUAGE plpgsql;
1708
+  (55.8ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1709
+ CREATE TRIGGER insert_bandits_trigger
1710
+ BEFORE INSERT ON bandits
1711
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1712
+  (10.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1713
+ DECLARE
1714
+ row bandits%rowtype;
1715
+ BEGIN
1716
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1717
+ RETURN row;
1718
+ END;
1719
+ $$ LANGUAGE plpgsql;
1720
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1721
+ CREATE TRIGGER bandits_after_insert_trigger
1722
+ AFTER INSERT ON bandits
1723
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1724
+  (63.3ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1725
+ ccu.table_name AS foreign_table_name,
1726
+ ccu.column_name AS foreign_column_name
1727
+ FROM information_schema.table_constraints AS tc
1728
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1729
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1730
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1731
+  (0.4ms) SHOW constraint_exclusion;
1732
+  (0.4ms) BEGIN
1733
+ SQL (205.9ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 16:00:24.180197"], ["updated_at", "2016-03-12 16:00:24.180197"]]
1734
+  (48.8ms) COMMIT
1735
+  (0.8ms) BEGIN
1736
+ SQL (68.1ms) INSERT INTO "bandits" ("id", "name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["id", 200], ["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 16:00:37.954027"], ["updated_at", "2016-03-12 16:00:37.954027"]]
1737
+  (12.6ms) COMMIT
1738
+ Bandit Load (3.2ms) SELECT "bandits".* FROM "bandits"
1739
+  (45.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1740
+ DECLARE
1741
+ colname text := 'id';
1742
+ colval integer := NEW.id;
1743
+ threshold integer := '10';
1744
+ step integer := ROUND(colval / threshold);
1745
+ tblname text := 'bandits_' || step;
1746
+ BEGIN
1747
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1748
+ EXECUTE 'CREATE TABLE '
1749
+ || tblname
1750
+ || '(check (ROUND('
1751
+ || quote_ident(colname)
1752
+ || '/'
1753
+ || threshold
1754
+ || ')='
1755
+ || step
1756
+ || ')) INHERITS ('
1757
+ || TG_RELNAME
1758
+ || ');';
1759
+ END IF;
1760
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1761
+ RETURN NEW;
1762
+ END;
1763
+ $$ LANGUAGE plpgsql;
1764
+  (44.2ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1765
+ CREATE TRIGGER insert_bandits_trigger
1766
+ BEFORE INSERT ON bandits
1767
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1768
+  (7.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1769
+ DECLARE
1770
+ row bandits%rowtype;
1771
+ BEGIN
1772
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1773
+ RETURN row;
1774
+ END;
1775
+ $$ LANGUAGE plpgsql;
1776
+  (8.9ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1777
+ CREATE TRIGGER bandits_after_insert_trigger
1778
+ AFTER INSERT ON bandits
1779
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1780
+  (103.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1781
+ ccu.table_name AS foreign_table_name,
1782
+ ccu.column_name AS foreign_column_name
1783
+ FROM information_schema.table_constraints AS tc
1784
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1785
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1786
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1787
+  (0.4ms) SHOW constraint_exclusion;
1788
+  (0.2ms) BEGIN
1789
+ SQL (69.3ms) INSERT INTO "bandits" ("id", "name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["id", 205], ["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 16:05:59.164453"], ["updated_at", "2016-03-12 16:05:59.164453"]]
1790
+  (23.2ms) COMMIT
1791
+  (233.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1792
+ DECLARE
1793
+ colname text := 'created_at';
1794
+ colval timestamp := NEW.created_at;
1795
+ pattern text := 'YYYY';
1796
+ sample text := TO_CHAR(colval, pattern);
1797
+ tblname text := 'bandits_' || colval;
1798
+ BEGIN
1799
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1800
+ EXECUTE 'CREATE TABLE '
1801
+ || tblname
1802
+ || '(check (TO_CHAR('
1803
+ || quote_ident(colname)
1804
+ || ','
1805
+ || pattern
1806
+ || ')='
1807
+ || sample
1808
+ || ')) INHERITS ('
1809
+ || TG_RELNAME
1810
+ || ');';
1811
+ END IF;
1812
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1813
+ RETURN NEW;
1814
+ END;
1815
+ $$ LANGUAGE plpgsql;
1816
+  (128.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1817
+ CREATE TRIGGER insert_bandits_trigger
1818
+ BEFORE INSERT ON bandits
1819
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1820
+  (11.0ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1821
+ DECLARE
1822
+ row bandits%rowtype;
1823
+ BEGIN
1824
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1825
+ RETURN row;
1826
+ END;
1827
+ $$ LANGUAGE plpgsql;
1828
+  (10.6ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1829
+ CREATE TRIGGER bandits_after_insert_trigger
1830
+ AFTER INSERT ON bandits
1831
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1832
+  (106.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1833
+ ccu.table_name AS foreign_table_name,
1834
+ ccu.column_name AS foreign_column_name
1835
+ FROM information_schema.table_constraints AS tc
1836
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1837
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1838
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1839
+  (0.5ms) SHOW constraint_exclusion;
1840
+  (0.4ms) BEGIN
1841
+ SQL (390.7ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 17:38:15.437632"], ["updated_at", "2016-03-12 17:38:15.437632"]]
1842
+  (0.7ms) ROLLBACK
1843
+  (150.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1844
+ DECLARE
1845
+ colname text := 'created_at';
1846
+ colval timestamp := NEW.created_at;
1847
+ pattern text := 'YYYY';
1848
+ sample text := TO_CHAR(colval, pattern);
1849
+ tblname text := 'bandits_' || sample;
1850
+ BEGIN
1851
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1852
+ EXECUTE 'CREATE TABLE '
1853
+ || tblname
1854
+ || '(check (TO_CHAR('
1855
+ || quote_ident(colname)
1856
+ || ','
1857
+ || pattern
1858
+ || ')='
1859
+ || sample
1860
+ || ')) INHERITS ('
1861
+ || TG_RELNAME
1862
+ || ');';
1863
+ END IF;
1864
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1865
+ RETURN NEW;
1866
+ END;
1867
+ $$ LANGUAGE plpgsql;
1868
+  (108.5ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1869
+ CREATE TRIGGER insert_bandits_trigger
1870
+ BEFORE INSERT ON bandits
1871
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1872
+  (10.5ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1873
+ DECLARE
1874
+ row bandits%rowtype;
1875
+ BEGIN
1876
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1877
+ RETURN row;
1878
+ END;
1879
+ $$ LANGUAGE plpgsql;
1880
+  (10.9ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1881
+ CREATE TRIGGER bandits_after_insert_trigger
1882
+ AFTER INSERT ON bandits
1883
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1884
+  (69.7ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1885
+ ccu.table_name AS foreign_table_name,
1886
+ ccu.column_name AS foreign_column_name
1887
+ FROM information_schema.table_constraints AS tc
1888
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1889
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1890
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1891
+  (0.7ms) SHOW constraint_exclusion;
1892
+  (0.2ms) BEGIN
1893
+ SQL (188.8ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 17:39:45.055084"], ["updated_at", "2016-03-12 17:39:45.055084"]]
1894
+  (0.4ms) ROLLBACK
1895
+  (81.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
1896
+ DECLARE
1897
+ colname text := 'created_at';
1898
+ colval timestamp := NEW.created_at;
1899
+ pattern text := 'YYYY';
1900
+ sample text := TO_CHAR(colval, pattern);
1901
+ tblname text := 'bandits_' || sample;
1902
+ BEGIN
1903
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
1904
+ EXECUTE 'CREATE TABLE '
1905
+ || tblname
1906
+ || '(check (TO_CHAR('
1907
+ || quote_ident(colname)
1908
+ || ','
1909
+ || quote_literal(pattern)
1910
+ || ')='
1911
+ || quote_literal(sample)
1912
+ || ')) INHERITS ('
1913
+ || TG_RELNAME
1914
+ || ');';
1915
+ END IF;
1916
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
1917
+ RETURN NEW;
1918
+ END;
1919
+ $$ LANGUAGE plpgsql;
1920
+  (89.5ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
1921
+ CREATE TRIGGER insert_bandits_trigger
1922
+ BEFORE INSERT ON bandits
1923
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
1924
+  (14.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
1925
+ DECLARE
1926
+ row bandits%rowtype;
1927
+ BEGIN
1928
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
1929
+ RETURN row;
1930
+ END;
1931
+ $$ LANGUAGE plpgsql;
1932
+  (7.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
1933
+ CREATE TRIGGER bandits_after_insert_trigger
1934
+ AFTER INSERT ON bandits
1935
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
1936
+  (87.9ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
1937
+ ccu.table_name AS foreign_table_name,
1938
+ ccu.column_name AS foreign_column_name
1939
+ FROM information_schema.table_constraints AS tc
1940
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
1941
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
1942
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
1943
+  (0.4ms) SHOW constraint_exclusion;
1944
+  (0.2ms) BEGIN
1945
+ SQL (343.6ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["created_at", "2016-03-12 17:51:02.433456"], ["updated_at", "2016-03-12 17:51:02.433456"]]
1946
+  (37.1ms) COMMIT
1947
+  (172.9ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1948
+  (61.5ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1949
+ ActiveRecord::SchemaMigration Load (1.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
1950
+ Migrating to CreateGangs (20160306173540)
1951
+  (0.4ms) BEGIN
1952
+  (204.4ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1953
+ SQL (20.9ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
1954
+  (20.7ms) COMMIT
1955
+ Migrating to CreateBandits (20160306174017)
1956
+  (0.3ms) BEGIN
1957
+  (114.9ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1958
+  (47.2ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
1959
+  (28.3ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
1960
+ FOREIGN KEY ("gang_id")
1961
+ REFERENCES "gangs" ("id")
1962
+ 
1963
+ SQL (23.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
1964
+  (19.3ms) COMMIT
1965
+ Migrating to CreateCrimes (20160306174042)
1966
+  (0.6ms) BEGIN
1967
+  (127.1ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1968
+  (51.8ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
1969
+  (2.8ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
1970
+ FOREIGN KEY ("bandit_id")
1971
+ REFERENCES "bandits" ("id")
1972
+ 
1973
+ SQL (1.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
1974
+  (11.2ms) COMMIT
1975
+ ActiveRecord::SchemaMigration Load (0.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
1976
+  (29.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
1977
+ FROM pg_constraint c
1978
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1979
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1980
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1981
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1982
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1983
+ WHERE c.contype = 'f'
1984
+ AND t1.relname = 'bandits'
1985
+ AND t3.nspname = ANY (current_schemas(false))
1986
+ ORDER BY c.conname
1987
+ 
1988
+  (5.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
1989
+ FROM pg_constraint c
1990
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1991
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1992
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1993
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1994
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1995
+ WHERE c.contype = 'f'
1996
+ AND t1.relname = 'crimes'
1997
+ AND t3.nspname = ANY (current_schemas(false))
1998
+ ORDER BY c.conname
1999
+
2000
+  (5.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2001
+ FROM pg_constraint c
2002
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2003
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2004
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2005
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2006
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2007
+ WHERE c.contype = 'f'
2008
+ AND t1.relname = 'gangs'
2009
+ AND t3.nspname = ANY (current_schemas(false))
2010
+ ORDER BY c.conname
2011
+ 
2012
+  (50.0ms) SELECT data_type FROM information_schema.columns
2013
+ WHERE table_name ='bandits'
2014
+ AND column_name = 'date_of_birth';
2015
+  (9.0ms) SELECT data_type FROM information_schema.columns
2016
+ WHERE table_name ='bandits'
2017
+ AND column_name = 'date_of_birth';
2018
+  (141.4ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2019
+ DECLARE
2020
+ colname text := 'date_of_birth';
2021
+ colval timestamp := NEW.date_of_birth;
2022
+ pattern text := 'MM';
2023
+ sample text := TO_CHAR(colval, pattern);
2024
+ tblname text := 'bandits_' || sample;
2025
+ BEGIN
2026
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2027
+ EXECUTE 'CREATE TABLE '
2028
+ || tblname
2029
+ || '(check (TO_CHAR('
2030
+ || quote_ident(colname)
2031
+ || ','
2032
+ || quote_literal(pattern)
2033
+ || ')='
2034
+ || quote_literal(sample)
2035
+ || ')) INHERITS ('
2036
+ || TG_RELNAME
2037
+ || ');';
2038
+ END IF;
2039
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2040
+ RETURN NEW;
2041
+ END;
2042
+ $$ LANGUAGE plpgsql;
2043
+  (66.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2044
+ CREATE TRIGGER insert_bandits_trigger
2045
+ BEFORE INSERT ON bandits
2046
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2047
+  (9.9ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2048
+ DECLARE
2049
+ row bandits%rowtype;
2050
+ BEGIN
2051
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2052
+ RETURN row;
2053
+ END;
2054
+ $$ LANGUAGE plpgsql;
2055
+  (10.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2056
+ CREATE TRIGGER bandits_after_insert_trigger
2057
+ AFTER INSERT ON bandits
2058
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2059
+  (50.4ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2060
+ ccu.table_name AS foreign_table_name,
2061
+ ccu.column_name AS foreign_column_name
2062
+ FROM information_schema.table_constraints AS tc
2063
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2064
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2065
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2066
+  (3.7ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
2067
+  (0.5ms) SHOW constraint_exclusion;
2068
+  (0.2ms) BEGIN
2069
+ SQL (69.4ms) INSERT INTO "bandits" ("name", "specialization", "date_of_birth", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["name", "Al Cap"], ["specialization", "bootlegger"], ["date_of_birth", "2016-03-11"], ["created_at", "2016-03-12 19:30:19.210861"], ["updated_at", "2016-03-12 19:30:19.210861"]]
2070
+  (17.2ms) COMMIT
2071
+  (280.7ms) SELECT data_type FROM information_schema.columns
2072
+ WHERE table_name ='bandits'
2073
+ AND column_name = 'specialization';
2074
+  (228.6ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2075
+ ccu.table_name AS foreign_table_name,
2076
+ ccu.column_name AS foreign_column_name
2077
+ FROM information_schema.table_constraints AS tc
2078
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2079
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2080
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2081
+  (0.9ms) SHOW constraint_exclusion;
2082
+  (22.5ms) SELECT data_type FROM information_schema.columns
2083
+ WHERE table_name ='bandits'
2084
+ AND column_name = 'created_at';
2085
+  (487.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2086
+ DECLARE
2087
+ colname text := 'created_at';
2088
+ colval timestamp := NEW.created_at;
2089
+ pattern text := 'YYYY';
2090
+ sample text := TO_CHAR(colval, pattern);
2091
+ tblname text := 'bandits_' || sample;
2092
+ BEGIN
2093
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2094
+ EXECUTE 'CREATE TABLE '
2095
+ || tblname
2096
+ || '(check (TO_CHAR('
2097
+ || quote_ident(colname)
2098
+ || ','
2099
+ || quote_literal(pattern)
2100
+ || ')='
2101
+ || quote_literal(sample)
2102
+ || ')) INHERITS ('
2103
+ || TG_RELNAME
2104
+ || ');';
2105
+ END IF;
2106
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2107
+ RETURN NEW;
2108
+ END;
2109
+ $$ LANGUAGE plpgsql;
2110
+  (294.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2111
+ CREATE TRIGGER insert_bandits_trigger
2112
+ BEFORE INSERT ON bandits
2113
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2114
+  (10.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2115
+ DECLARE
2116
+ row bandits%rowtype;
2117
+ BEGIN
2118
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2119
+ RETURN row;
2120
+ END;
2121
+ $$ LANGUAGE plpgsql;
2122
+  (21.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2123
+ CREATE TRIGGER bandits_after_insert_trigger
2124
+ AFTER INSERT ON bandits
2125
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2126
+  (74.1ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2127
+ ccu.table_name AS foreign_table_name,
2128
+ ccu.column_name AS foreign_column_name
2129
+ FROM information_schema.table_constraints AS tc
2130
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2131
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2132
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2133
+  (0.8ms) SHOW constraint_exclusion;
2134
+  (566.1ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2135
+ ccu.table_name AS foreign_table_name,
2136
+ ccu.column_name AS foreign_column_name
2137
+ FROM information_schema.table_constraints AS tc
2138
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2139
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2140
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2141
+  (0.6ms) SHOW constraint_exclusion;
2142
+  (327.1ms) SELECT data_type FROM information_schema.columns
2143
+ WHERE table_name ='ban'
2144
+ AND column_name = 'id';
2145
+  (17.2ms) SELECT data_type FROM information_schema.columns
2146
+ WHERE table_name ='bn'
2147
+ AND column_name = 'dd';
2148
+  (9.1ms) SELECT data_type FROM information_schema.columns
2149
+ WHERE table_name ='ban'
2150
+ AND column_name = 'id';
2151
+  (71.7ms) SELECT data_type FROM information_schema.columns
2152
+ WHERE table_name ='bandits'
2153
+ AND column_name = 'id';
2154
+  (9.8ms) SELECT data_type FROM information_schema.columns
2155
+ WHERE table_name ='bandits'
2156
+ AND column_name = 'id';
2157
+  (13.4ms) SELECT data_type FROM information_schema.columns
2158
+ WHERE table_name ='bandits'
2159
+ AND column_name = 'id';
2160
+  (9.1ms) SELECT data_type FROM information_schema.columns
2161
+ WHERE table_name ='bandits'
2162
+ AND column_name = 'id';
2163
+  (9.1ms) SELECT data_type FROM information_schema.columns
2164
+ WHERE table_name ='bandits'
2165
+ AND column_name = 'id';
2166
+  (607.2ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2167
+ DECLARE
2168
+ colname text := 'id';
2169
+ colval integer := NEW.id;
2170
+ threshold integer := '30';
2171
+ step integer := ROUND(colval / threshold);
2172
+ tblname text := 'bandits_' || step;
2173
+ BEGIN
2174
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2175
+ EXECUTE 'CREATE TABLE '
2176
+ || tblname
2177
+ || '(check (ROUND('
2178
+ || quote_ident(colname)
2179
+ || '/'
2180
+ || threshold
2181
+ || ')='
2182
+ || step
2183
+ || ')) INHERITS ('
2184
+ || TG_RELNAME
2185
+ || ');';
2186
+ END IF;
2187
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2188
+ RETURN NEW;
2189
+ END;
2190
+ $$ LANGUAGE plpgsql;
2191
+  (284.8ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2192
+ CREATE TRIGGER insert_bandits_trigger
2193
+ BEFORE INSERT ON bandits
2194
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2195
+  (10.4ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2196
+ DECLARE
2197
+ row bandits%rowtype;
2198
+ BEGIN
2199
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2200
+ RETURN row;
2201
+ END;
2202
+ $$ LANGUAGE plpgsql;
2203
+  (7.3ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2204
+ CREATE TRIGGER bandits_after_insert_trigger
2205
+ AFTER INSERT ON bandits
2206
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2207
+  (113.9ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2208
+ ccu.table_name AS foreign_table_name,
2209
+ ccu.column_name AS foreign_column_name
2210
+ FROM information_schema.table_constraints AS tc
2211
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2212
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2213
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2214
+  (0.4ms) SHOW constraint_exclusion;
2215
+  (11.0ms) SELECT data_type FROM information_schema.columns
2216
+ WHERE table_name ='bandits'
2217
+ AND column_name = 'id';
2218
+  (185.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2219
+ DECLARE
2220
+ colname text := 'id';
2221
+ colval text := NEW.id;
2222
+ tblname text := 'bandits_' || colval;
2223
+ BEGIN
2224
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2225
+ EXECUTE 'CREATE TABLE '
2226
+ || tblname
2227
+ || '(check ('
2228
+ || quote_ident(colname)
2229
+ || '='
2230
+ || quote_literal(colval)
2231
+ || ')) INHERITS ('
2232
+ || TG_RELNAME
2233
+ || ');';
2234
+ END IF;
2235
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2236
+ RETURN NEW;
2237
+ END;
2238
+ $$ LANGUAGE plpgsql;
2239
+  (43.4ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2240
+ CREATE TRIGGER insert_bandits_trigger
2241
+ BEFORE INSERT ON bandits
2242
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2243
+  (76.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2244
+ DECLARE
2245
+ row bandits%rowtype;
2246
+ BEGIN
2247
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2248
+ RETURN row;
2249
+ END;
2250
+ $$ LANGUAGE plpgsql;
2251
+  (12.7ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2252
+ CREATE TRIGGER bandits_after_insert_trigger
2253
+ AFTER INSERT ON bandits
2254
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2255
+  (54.4ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2256
+ ccu.table_name AS foreign_table_name,
2257
+ ccu.column_name AS foreign_column_name
2258
+ FROM information_schema.table_constraints AS tc
2259
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2260
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2261
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2262
+  (0.6ms) SHOW constraint_exclusion;
2263
+  (8.8ms) SELECT data_type FROM information_schema.columns
2264
+ WHERE table_name ='ban'
2265
+ AND column_name = 'id';
2266
+  (122.7ms) CREATE OR REPLACE FUNCTION ban_insert_master() RETURNS TRIGGER AS $$
2267
+ DECLARE
2268
+ colname text := 'id';
2269
+ colval text := NEW.id;
2270
+ tblname text := 'ban_' || colval;
2271
+ BEGIN
2272
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2273
+ EXECUTE 'CREATE TABLE '
2274
+ || tblname
2275
+ || '(check ('
2276
+ || quote_ident(colname)
2277
+ || '='
2278
+ || quote_literal(colval)
2279
+ || ')) INHERITS ('
2280
+ || TG_RELNAME
2281
+ || ');';
2282
+ END IF;
2283
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2284
+ RETURN NEW;
2285
+ END;
2286
+ $$ LANGUAGE plpgsql;
2287
+  (40.8ms) DROP TRIGGER IF EXISTS insert_ban_trigger ON ban;
2288
+ CREATE TRIGGER insert_ban_trigger
2289
+ BEFORE INSERT ON ban
2290
+ FOR EACH ROW EXECUTE PROCEDURE ban_insert_master();
2291
+  (12.1ms) SELECT data_type FROM information_schema.columns
2292
+ WHERE table_name ='ban'
2293
+ AND column_name = 'id';
2294
+  (19.1ms) CREATE OR REPLACE FUNCTION ban_insert_master() RETURNS TRIGGER AS $$
2295
+ DECLARE
2296
+ colname text := 'id';
2297
+ colval text := NEW.id;
2298
+ tblname text := 'ban_' || colval;
2299
+ BEGIN
2300
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2301
+ EXECUTE 'CREATE TABLE '
2302
+ || tblname
2303
+ || '(check ('
2304
+ || quote_ident(colname)
2305
+ || '='
2306
+ || quote_literal(colval)
2307
+ || ')) INHERITS ('
2308
+ || TG_RELNAME
2309
+ || ');';
2310
+ END IF;
2311
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2312
+ RETURN NEW;
2313
+ END;
2314
+ $$ LANGUAGE plpgsql;
2315
+  (0.9ms) DROP TRIGGER IF EXISTS insert_ban_trigger ON ban;
2316
+ CREATE TRIGGER insert_ban_trigger
2317
+ BEFORE INSERT ON ban
2318
+ FOR EACH ROW EXECUTE PROCEDURE ban_insert_master();
2319
+  (9.2ms) SELECT data_type FROM information_schema.columns
2320
+ WHERE table_name ='ban'
2321
+ AND column_name = 'id';
2322
+  (27.1ms) CREATE OR REPLACE FUNCTION ban_insert_master() RETURNS TRIGGER AS $$
2323
+ DECLARE
2324
+ colname text := 'id';
2325
+ colval text := NEW.id;
2326
+ tblname text := 'ban_' || colval;
2327
+ BEGIN
2328
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2329
+ EXECUTE 'CREATE TABLE '
2330
+ || tblname
2331
+ || '(check ('
2332
+ || quote_ident(colname)
2333
+ || '='
2334
+ || quote_literal(colval)
2335
+ || ')) INHERITS ('
2336
+ || TG_RELNAME
2337
+ || ');';
2338
+ END IF;
2339
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2340
+ RETURN NEW;
2341
+ END;
2342
+ $$ LANGUAGE plpgsql;
2343
+  (0.7ms) DROP TRIGGER IF EXISTS insert_ban_trigger ON ban;
2344
+ CREATE TRIGGER insert_ban_trigger
2345
+ BEFORE INSERT ON ban
2346
+ FOR EACH ROW EXECUTE PROCEDURE ban_insert_master();
2347
+  (9.4ms) SELECT data_type FROM information_schema.columns
2348
+ WHERE table_name ='ban'
2349
+ AND column_name = 'id';
2350
+  (11.9ms) SELECT data_type FROM information_schema.columns
2351
+ WHERE table_name ='bandits'
2352
+ AND column_name = 'idd';
2353
+  (13.6ms) SELECT data_type FROM information_schema.columns
2354
+ WHERE table_name ='ban'
2355
+ AND column_name = 'id';
2356
+  (8.8ms) SELECT data_type FROM information_schema.columns
2357
+ WHERE table_name ='band'
2358
+ AND column_name = 'id';
2359
+  (8.8ms) SELECT data_type FROM information_schema.columns
2360
+ WHERE table_name ='band'
2361
+ AND column_name = 'id';
2362
+  (9.0ms) SELECT data_type FROM information_schema.columns
2363
+ WHERE table_name ='band'
2364
+ AND column_name = 'id';
2365
+  (9.5ms) SELECT data_type FROM information_schema.columns
2366
+ WHERE table_name ='band'
2367
+ AND column_name = 'id';
2368
+  (25.8ms) SELECT data_type FROM information_schema.columns
2369
+ WHERE table_name ='bandits'
2370
+ AND column_name = 'created_at';
2371
+  (9.0ms) SELECT data_type FROM information_schema.columns
2372
+ WHERE table_name ='bandits'
2373
+ AND column_name = 'created_at';
2374
+  (8.8ms) SELECT data_type FROM information_schema.columns
2375
+ WHERE table_name ='band'
2376
+ AND column_name = 'id';
2377
+  (17.3ms) SELECT data_type FROM information_schema.columns
2378
+ WHERE table_name ='bandits'
2379
+ AND column_name = 'created_at';
2380
+  (9.0ms) SELECT data_type FROM information_schema.columns
2381
+ WHERE table_name ='bandits'
2382
+ AND column_name = 'id';
2383
+  (150.8ms) SELECT data_type FROM information_schema.columns
2384
+ WHERE table_name ='bandits'
2385
+ AND column_name = 'id';
2386
+  (365.1ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2387
+ DECLARE
2388
+ colname text := 'id';
2389
+ colval integer := NEW.id;
2390
+ threshold integer := '30';
2391
+ step integer := ROUND(colval / threshold);
2392
+ tblname text := 'bandits_' || step;
2393
+ BEGIN
2394
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2395
+ EXECUTE 'CREATE TABLE '
2396
+ || tblname
2397
+ || '(check (ROUND('
2398
+ || quote_ident(colname)
2399
+ || '/'
2400
+ || threshold
2401
+ || ')='
2402
+ || step
2403
+ || ')) INHERITS ('
2404
+ || TG_RELNAME
2405
+ || ');';
2406
+ END IF;
2407
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2408
+ RETURN NEW;
2409
+ END;
2410
+ $$ LANGUAGE plpgsql;
2411
+  (142.5ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2412
+ CREATE TRIGGER insert_bandits_trigger
2413
+ BEFORE INSERT ON bandits
2414
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2415
+  (14.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2416
+ DECLARE
2417
+ row bandits%rowtype;
2418
+ BEGIN
2419
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2420
+ RETURN row;
2421
+ END;
2422
+ $$ LANGUAGE plpgsql;
2423
+  (7.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2424
+ CREATE TRIGGER bandits_after_insert_trigger
2425
+ AFTER INSERT ON bandits
2426
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2427
+  (201.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2428
+ ccu.table_name AS foreign_table_name,
2429
+ ccu.column_name AS foreign_column_name
2430
+ FROM information_schema.table_constraints AS tc
2431
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2432
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2433
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2434
+  (0.4ms) SHOW constraint_exclusion;
2435
+  (299.4ms) SELECT data_type FROM information_schema.columns
2436
+ WHERE table_name ='bandits'
2437
+ AND column_name = 'id';
2438
+  (378.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2439
+ DECLARE
2440
+ colname text := 'id';
2441
+ colval integer := NEW.id;
2442
+ threshold integer := '7';
2443
+ step integer := ROUND(colval / threshold);
2444
+ tblname text := 'bandits_' || step;
2445
+ BEGIN
2446
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2447
+ EXECUTE 'CREATE TABLE '
2448
+ || tblname
2449
+ || '(check (ROUND('
2450
+ || quote_ident(colname)
2451
+ || '/'
2452
+ || threshold
2453
+ || ')='
2454
+ || step
2455
+ || ')) INHERITS ('
2456
+ || TG_RELNAME
2457
+ || ');';
2458
+ END IF;
2459
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2460
+ RETURN NEW;
2461
+ END;
2462
+ $$ LANGUAGE plpgsql;
2463
+  (543.3ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2464
+ CREATE TRIGGER insert_bandits_trigger
2465
+ BEFORE INSERT ON bandits
2466
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2467
+  (10.7ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2468
+ DECLARE
2469
+ row bandits%rowtype;
2470
+ BEGIN
2471
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2472
+ RETURN row;
2473
+ END;
2474
+ $$ LANGUAGE plpgsql;
2475
+  (6.1ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2476
+ CREATE TRIGGER bandits_after_insert_trigger
2477
+ AFTER INSERT ON bandits
2478
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2479
+  (197.8ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2480
+ ccu.table_name AS foreign_table_name,
2481
+ ccu.column_name AS foreign_column_name
2482
+ FROM information_schema.table_constraints AS tc
2483
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2484
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2485
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2486
+  (0.8ms) SHOW constraint_exclusion;
2487
+  (9.8ms) SELECT data_type FROM information_schema.columns
2488
+ WHERE table_name ='bjhj'
2489
+ AND column_name = 'jkjkj';
2490
+  (153.1ms) SELECT data_type FROM information_schema.columns
2491
+ WHERE table_name ='klkl'
2492
+ AND column_name = 'klk';
2493
+  (8.7ms) SELECT data_type FROM information_schema.columns
2494
+ WHERE table_name ='sdsdsds'
2495
+ AND column_name = 'id';
2496
+  (73.0ms) SELECT data_type FROM information_schema.columns
2497
+ WHERE table_name ='bandits'
2498
+ AND column_name = 'id';
2499
+  (242.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2500
+ DECLARE
2501
+ colname text := 'id';
2502
+ colval text := NEW.id;
2503
+ tblname text := 'bandits_' || colval;
2504
+ BEGIN
2505
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2506
+ EXECUTE 'CREATE TABLE '
2507
+ || tblname
2508
+ || '(check ('
2509
+ || quote_ident(colname)
2510
+ || '='
2511
+ || quote_literal(colval)
2512
+ || ')) INHERITS ('
2513
+ || TG_RELNAME
2514
+ || ');';
2515
+ END IF;
2516
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2517
+ RETURN NEW;
2518
+ END;
2519
+ $$ LANGUAGE plpgsql;
2520
+  (132.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2521
+ CREATE TRIGGER insert_bandits_trigger
2522
+ BEFORE INSERT ON bandits
2523
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2524
+  (15.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2525
+ DECLARE
2526
+ row bandits%rowtype;
2527
+ BEGIN
2528
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2529
+ RETURN row;
2530
+ END;
2531
+ $$ LANGUAGE plpgsql;
2532
+  (6.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2533
+ CREATE TRIGGER bandits_after_insert_trigger
2534
+ AFTER INSERT ON bandits
2535
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2536
+  (232.1ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2537
+ ccu.table_name AS foreign_table_name,
2538
+ ccu.column_name AS foreign_column_name
2539
+ FROM information_schema.table_constraints AS tc
2540
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2541
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2542
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2543
+  (0.5ms) SHOW constraint_exclusion;
2544
+ Bandit Count (408.5ms) SELECT COUNT(*) FROM ONLY bandits
2545
+ Bandit Count (68.1ms) SELECT COUNT(*) FROM bandits
2546
+ Bandit Count (2.6ms) SELECT COUNT(*) FROM ONLY bandits
2547
+  (250.5ms) SELECT data_type FROM information_schema.columns
2548
+ WHERE table_name ='bandits'
2549
+ AND column_name = 'specialization';
2550
+  (135.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2551
+ DECLARE
2552
+ colname text := 'specialization';
2553
+ colval text := NEW.specialization;
2554
+ tblname text := 'bandits_' || colval;
2555
+ BEGIN
2556
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2557
+ EXECUTE 'CREATE TABLE '
2558
+ || tblname
2559
+ || '(check ('
2560
+ || quote_ident(colname)
2561
+ || '='
2562
+ || quote_literal(colval)
2563
+ || ')) INHERITS ('
2564
+ || TG_RELNAME
2565
+ || ');';
2566
+ END IF;
2567
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2568
+ RETURN NEW;
2569
+ END;
2570
+ $$ LANGUAGE plpgsql;
2571
+  (110.6ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2572
+ CREATE TRIGGER insert_bandits_trigger
2573
+ BEFORE INSERT ON bandits
2574
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2575
+  (10.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2576
+ DECLARE
2577
+ row bandits%rowtype;
2578
+ BEGIN
2579
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2580
+ RETURN row;
2581
+ END;
2582
+ $$ LANGUAGE plpgsql;
2583
+  (10.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2584
+ CREATE TRIGGER bandits_after_insert_trigger
2585
+ AFTER INSERT ON bandits
2586
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2587
+  (174.6ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2588
+ ccu.table_name AS foreign_table_name,
2589
+ ccu.column_name AS foreign_column_name
2590
+ FROM information_schema.table_constraints AS tc
2591
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2592
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2593
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2594
+  (0.8ms) SHOW constraint_exclusion;
2595
+  (0.4ms) BEGIN
2596
+ SQL (406.8ms) INSERT INTO "bandits" ("specialization", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["specialization", "killer"], ["created_at", "2016-03-18 17:29:59.157240"], ["updated_at", "2016-03-18 17:29:59.157240"]]
2597
+  (28.0ms) COMMIT
2598
+ Bandit Load (3.3ms) select * from bandits_killer
2599
+  (1.1ms) BEGIN
2600
+ SQL (49.0ms) INSERT INTO "bandits" ("specialization", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["specialization", "pol"], ["created_at", "2016-03-18 17:38:03.393164"], ["updated_at", "2016-03-18 17:38:03.393164"]]
2601
+  (21.3ms) COMMIT
2602
+ Bandit Load (1.1ms) select * from bandits_pol
2603
+  (23.0ms) SELECT data_type FROM information_schema.columns
2604
+ WHERE table_name ='bandits'
2605
+ AND column_name = 'id';
2606
+  (55.6ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2607
+ DECLARE
2608
+ colname text := 'id';
2609
+ colval text := NEW.id;
2610
+ tblname text := 'bandits_' || colval;
2611
+ BEGIN
2612
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2613
+ EXECUTE 'CREATE TABLE '
2614
+ || tblname
2615
+ || '(check ('
2616
+ || quote_ident(colname)
2617
+ || '='
2618
+ || quote_literal(colval)
2619
+ || ')) INHERITS ('
2620
+ || TG_RELNAME
2621
+ || ');';
2622
+ END IF;
2623
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2624
+ RETURN NEW;
2625
+ END;
2626
+ $$ LANGUAGE plpgsql;
2627
+  (15.0ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2628
+ CREATE TRIGGER insert_bandits_trigger
2629
+ BEFORE INSERT ON bandits
2630
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2631
+  (8.6ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2632
+ DECLARE
2633
+ row bandits%rowtype;
2634
+ BEGIN
2635
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2636
+ RETURN row;
2637
+ END;
2638
+ $$ LANGUAGE plpgsql;
2639
+  (11.2ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2640
+ CREATE TRIGGER bandits_after_insert_trigger
2641
+ AFTER INSERT ON bandits
2642
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2643
+  (74.9ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2644
+ ccu.table_name AS foreign_table_name,
2645
+ ccu.column_name AS foreign_column_name
2646
+ FROM information_schema.table_constraints AS tc
2647
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2648
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2649
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2650
+  (3.3ms) SHOW constraint_exclusion;
2651
+  (11.1ms) SELECT data_type FROM information_schema.columns
2652
+ WHERE table_name ='bandits'
2653
+ AND column_name = 'id';
2654
+  (22.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2655
+ DECLARE
2656
+ colname text := 'id';
2657
+ colval text := NEW.id;
2658
+ tblname text := 'bandits_' || colval;
2659
+ BEGIN
2660
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2661
+ EXECUTE 'CREATE TABLE '
2662
+ || tblname
2663
+ || '(check ('
2664
+ || quote_ident(colname)
2665
+ || '='
2666
+ || quote_literal(colval)
2667
+ || ')) INHERITS ('
2668
+ || TG_RELNAME
2669
+ || ');';
2670
+ END IF;
2671
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2672
+ RETURN NEW;
2673
+ END;
2674
+ $$ LANGUAGE plpgsql;
2675
+  (14.7ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2676
+ CREATE TRIGGER insert_bandits_trigger
2677
+ BEFORE INSERT ON bandits
2678
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2679
+  (7.8ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2680
+ DECLARE
2681
+ row bandits%rowtype;
2682
+ BEGIN
2683
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2684
+ RETURN row;
2685
+ END;
2686
+ $$ LANGUAGE plpgsql;
2687
+  (14.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2688
+ CREATE TRIGGER bandits_after_insert_trigger
2689
+ AFTER INSERT ON bandits
2690
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2691
+  (26.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2692
+ ccu.table_name AS foreign_table_name,
2693
+ ccu.column_name AS foreign_column_name
2694
+ FROM information_schema.table_constraints AS tc
2695
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2696
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2697
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2698
+  (0.9ms) SHOW constraint_exclusion;
2699
+  (9.3ms) SELECT data_type FROM information_schema.columns
2700
+ WHERE table_name ='sdsd'
2701
+ AND column_name = 'sdsd';
2702
+  (9.0ms) SELECT data_type FROM information_schema.columns
2703
+ WHERE table_name ='bandits'
2704
+ AND column_name = 'id';
2705
+  (24.2ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2706
+ DECLARE
2707
+ colname text := 'id';
2708
+ colval text := NEW.id;
2709
+ tblname text := 'bandits_' || colval;
2710
+ BEGIN
2711
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2712
+ EXECUTE 'CREATE TABLE '
2713
+ || tblname
2714
+ || '(check ('
2715
+ || quote_ident(colname)
2716
+ || '='
2717
+ || quote_literal(colval)
2718
+ || ')) INHERITS ('
2719
+ || TG_RELNAME
2720
+ || ');';
2721
+ END IF;
2722
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2723
+ RETURN NEW;
2724
+ END;
2725
+ $$ LANGUAGE plpgsql;
2726
+  (14.1ms) DROP TRIGGER IF EXISTS insert_bandits_trigger ON bandits;
2727
+ CREATE TRIGGER insert_bandits_trigger
2728
+ BEFORE INSERT ON bandits
2729
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2730
+  (7.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2731
+ DECLARE
2732
+ row bandits%rowtype;
2733
+ BEGIN
2734
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2735
+ RETURN row;
2736
+ END;
2737
+ $$ LANGUAGE plpgsql;
2738
+  (10.8ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2739
+ CREATE TRIGGER bandits_after_insert_trigger
2740
+ AFTER INSERT ON bandits
2741
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2742
+  (29.5ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2743
+ ccu.table_name AS foreign_table_name,
2744
+ ccu.column_name AS foreign_column_name
2745
+ FROM information_schema.table_constraints AS tc
2746
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2747
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2748
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2749
+  (0.5ms) SHOW constraint_exclusion;
2750
+  (16.9ms) SELECT data_type FROM information_schema.columns
2751
+ WHERE table_name ='bAND'
2752
+ AND column_name = 'id';
2753
+  (17.3ms) SELECT data_type FROM information_schema.columns
2754
+ WHERE table_name ='band'
2755
+ AND column_name = 'id';
2756
+  (17.8ms) SELECT data_type FROM information_schema.columns
2757
+ WHERE table_name ='ban'
2758
+ AND column_name = 'id';
2759
+  (8.7ms) SELECT data_type FROM information_schema.columns
2760
+ WHERE table_name ='bdn'
2761
+ AND column_name = 'id';
2762
+  (8.7ms) SELECT data_type FROM information_schema.columns
2763
+ WHERE table_name ='ban'
2764
+ AND column_name = 'id';
2765
+  (19.8ms) SELECT data_type FROM information_schema.columns
2766
+ WHERE table_name ='bandits'
2767
+ AND column_name = 'created_at';
2768
+  (9.5ms) SELECT data_type FROM information_schema.columns
2769
+ WHERE table_name ='jk'
2770
+ AND column_name = 'jk';
2771
+  (9.4ms) SELECT data_type FROM information_schema.columns
2772
+ WHERE table_name ='kl'
2773
+ AND column_name = ';l;';
2774
+  (71.9ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2775
+  (83.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2776
+ ActiveRecord::SchemaMigration Load (1.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
2777
+ Migrating to CreateGangs (20160306173540)
2778
+  (0.4ms) BEGIN
2779
+  (110.3ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2780
+ SQL (2.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
2781
+  (10.1ms) COMMIT
2782
+ Migrating to CreateBandits (20160306174017)
2783
+  (2.9ms) BEGIN
2784
+  (89.1ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2785
+  (65.5ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
2786
+  (11.1ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
2787
+ FOREIGN KEY ("gang_id")
2788
+ REFERENCES "gangs" ("id")
2789
+ 
2790
+ SQL (12.4ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
2791
+  (30.6ms) COMMIT
2792
+ Migrating to CreateCrimes (20160306174042)
2793
+  (4.3ms) BEGIN
2794
+  (102.4ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2795
+  (63.4ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
2796
+  (2.3ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
2797
+ FOREIGN KEY ("bandit_id")
2798
+ REFERENCES "bandits" ("id")
2799
+ 
2800
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
2801
+  (21.3ms) COMMIT
2802
+ ActiveRecord::SchemaMigration Load (0.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
2803
+  (7.6ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2804
+ FROM pg_constraint c
2805
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2806
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2807
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2808
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2809
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2810
+ WHERE c.contype = 'f'
2811
+ AND t1.relname = 'bandits'
2812
+ AND t3.nspname = ANY (current_schemas(false))
2813
+ ORDER BY c.conname
2814
+ 
2815
+  (6.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2816
+ FROM pg_constraint c
2817
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2818
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2819
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2820
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2821
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2822
+ WHERE c.contype = 'f'
2823
+ AND t1.relname = 'crimes'
2824
+ AND t3.nspname = ANY (current_schemas(false))
2825
+ ORDER BY c.conname
2826
+
2827
+  (14.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2828
+ FROM pg_constraint c
2829
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2830
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2831
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2832
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2833
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2834
+ WHERE c.contype = 'f'
2835
+ AND t1.relname = 'gangs'
2836
+ AND t3.nspname = ANY (current_schemas(false))
2837
+ ORDER BY c.conname
2838
+ 
2839
+  (324.7ms) SELECT data_type FROM information_schema.columns
2840
+ WHERE table_name ='fdfd'
2841
+ AND column_name = 'dsdsd';
2842
+  (63.0ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2843
+  (76.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2844
+ ActiveRecord::SchemaMigration Load (1.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
2845
+ Migrating to CreateGangs (20160306173540)
2846
+  (0.4ms) BEGIN
2847
+  (112.5ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2848
+ SQL (3.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
2849
+  (3.9ms) COMMIT
2850
+ Migrating to CreateBandits (20160306174017)
2851
+  (0.4ms) BEGIN
2852
+  (99.6ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2853
+  (67.4ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
2854
+  (7.3ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
2855
+ FOREIGN KEY ("gang_id")
2856
+ REFERENCES "gangs" ("id")
2857
+ 
2858
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
2859
+  (5.0ms) COMMIT
2860
+ Migrating to CreateCrimes (20160306174042)
2861
+  (5.6ms) BEGIN
2862
+  (117.5ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2863
+  (61.8ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
2864
+  (4.5ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
2865
+ FOREIGN KEY ("bandit_id")
2866
+ REFERENCES "bandits" ("id")
2867
+ 
2868
+ SQL (0.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
2869
+  (9.6ms) COMMIT
2870
+ ActiveRecord::SchemaMigration Load (0.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
2871
+  (5.3ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2872
+ FROM pg_constraint c
2873
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2874
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2875
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2876
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2877
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2878
+ WHERE c.contype = 'f'
2879
+ AND t1.relname = 'bandits'
2880
+ AND t3.nspname = ANY (current_schemas(false))
2881
+ ORDER BY c.conname
2882
+ 
2883
+  (5.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2884
+ FROM pg_constraint c
2885
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2886
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2887
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2888
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2889
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2890
+ WHERE c.contype = 'f'
2891
+ AND t1.relname = 'crimes'
2892
+ AND t3.nspname = ANY (current_schemas(false))
2893
+ ORDER BY c.conname
2894
+
2895
+  (4.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
2896
+ FROM pg_constraint c
2897
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2898
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2899
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2900
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2901
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2902
+ WHERE c.contype = 'f'
2903
+ AND t1.relname = 'gangs'
2904
+ AND t3.nspname = ANY (current_schemas(false))
2905
+ ORDER BY c.conname
2906
+ 
2907
+  (9.5ms) SELECT data_type FROM information_schema.columns
2908
+ WHERE table_name ='bandits'
2909
+ AND column_name = 'id';
2910
+  (36.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2911
+ DECLARE
2912
+ colname text := 'id';
2913
+ colval text := NEW.id;
2914
+ tblname text := 'bandits_' || colval;
2915
+ BEGIN
2916
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2917
+ EXECUTE 'CREATE TABLE '
2918
+ || tblname
2919
+ || '(check ('
2920
+ || quote_ident(colname)
2921
+ || '='
2922
+ || quote_literal(colval)
2923
+ || ')) INHERITS ('
2924
+ || TG_RELNAME
2925
+ || ');';
2926
+ END IF;
2927
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2928
+ RETURN NEW;
2929
+ END;
2930
+ $$ LANGUAGE plpgsql;
2931
+  (0.6ms) DROP TRIGGER IF EXISTS bandits_before_insert_trigger ON bandits;
2932
+  (13.0ms) CREATE TRIGGER bandits_before_insert_trigger
2933
+ before INSERT ON bandits
2934
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2935
+  (7.5ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2936
+ DECLARE
2937
+ row bandits%rowtype;
2938
+ BEGIN
2939
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2940
+ RETURN row;
2941
+ END;
2942
+ $$ LANGUAGE plpgsql;
2943
+  (0.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2944
+  (10.7ms) CREATE TRIGGER bandits_after_insert_trigger
2945
+ after INSERT ON bandits
2946
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
2947
+  (30.4ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
2948
+ ccu.table_name AS foreign_table_name,
2949
+ ccu.column_name AS foreign_column_name
2950
+ FROM information_schema.table_constraints AS tc
2951
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
2952
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
2953
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
2954
+  (12.2ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
2955
+  (8.5ms) SHOW constraint_exclusion;
2956
+  (0.2ms) BEGIN
2957
+ SQL (62.3ms) INSERT INTO "bandits" ("specialization", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["specialization", "pol"], ["created_at", "2016-03-20 07:48:16.365726"], ["updated_at", "2016-03-20 07:48:16.365726"]]
2958
+  (17.5ms) COMMIT
2959
+  (0.7ms) BEGIN
2960
+ SQL (86.9ms) INSERT INTO "bandits" ("specialization", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["specialization", "polit"], ["created_at", "2016-03-20 07:48:26.107704"], ["updated_at", "2016-03-20 07:48:26.107704"]]
2961
+  (15.0ms) COMMIT
2962
+  (870.2ms) SELECT data_type FROM information_schema.columns
2963
+ WHERE table_name ='bandits'
2964
+ AND column_name = 'specialization';
2965
+  (953.9ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
2966
+ DECLARE
2967
+ colname text := 'specialization';
2968
+ colval text := NEW.specialization;
2969
+ tblname text := 'bandits_' || colval;
2970
+ BEGIN
2971
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
2972
+ EXECUTE 'CREATE TABLE '
2973
+ || tblname
2974
+ || '(check ('
2975
+ || quote_ident(colname)
2976
+ || '='
2977
+ || quote_literal(colval)
2978
+ || ')) INHERITS ('
2979
+ || TG_RELNAME
2980
+ || ');';
2981
+ END IF;
2982
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
2983
+ RETURN NEW;
2984
+ END;
2985
+ $$ LANGUAGE plpgsql;
2986
+  (616.8ms) DROP TRIGGER IF EXISTS bandits_before_insert_trigger ON bandits;
2987
+  (34.9ms) CREATE TRIGGER bandits_before_insert_trigger
2988
+ before INSERT ON bandits
2989
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
2990
+  (52.2ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
2991
+ DECLARE
2992
+ row bandits%rowtype;
2993
+ BEGIN
2994
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
2995
+ RETURN row;
2996
+ END;
2997
+ $$ LANGUAGE plpgsql;
2998
+  (8.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
2999
+  (10.3ms) CREATE TRIGGER bandits_after_insert_trigger
3000
+ after INSERT ON bandits
3001
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
3002
+  (647.8ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
3003
+ ccu.table_name AS foreign_table_name,
3004
+ ccu.column_name AS foreign_column_name
3005
+ FROM information_schema.table_constraints AS tc
3006
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
3007
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
3008
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
3009
+  (0.6ms) SHOW constraint_exclusion;
3010
+ Bandit Load (129.0ms) SELECT "bandits".* FROM "bandits"
3011
+  (4.9ms) BEGIN
3012
+ SQL (288.3ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-21 20:05:09.309204"], ["updated_at", "2016-03-21 20:05:09.309204"]]
3013
+  (38.0ms) COMMIT
3014
+ Bandit Load (13.8ms) SELECT "bandits".* FROM "bandits" ORDER BY "bandits"."id" DESC LIMIT 1
3015
+  (0.2ms) BEGIN
3016
+ SQL (53.6ms) INSERT INTO "crimes" ("title", "bandit_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["title", "bla"], ["bandit_id", 3], ["created_at", "2016-03-21 20:05:51.390198"], ["updated_at", "2016-03-21 20:05:51.390198"]]
3017
+  (16.3ms) COMMIT
3018
+ Crime Load (1.8ms) SELECT "crimes".* FROM "crimes" ORDER BY "crimes"."id" ASC LIMIT 1
3019
+ Crime Load (1.6ms) SELECT "crimes".* FROM "crimes" ORDER BY "crimes"."id" ASC LIMIT 1
3020
+ Bandit Load (2.1ms) SELECT "bandits".* FROM "bandits" WHERE "bandits"."id" = $1 LIMIT 1 [["id", 3]]
3021
+ Crime Load (1.2ms) SELECT "crimes".* FROM "crimes" ORDER BY "crimes"."id" ASC LIMIT 1
3022
+ Bandit Load (0.8ms) SELECT "bandits".* FROM "bandits" WHERE "bandits"."id" = $1 LIMIT 1 [["id", 3]]
3023
+  (0.9ms) BEGIN
3024
+ SQL (1.0ms) INSERT INTO "crimes" ("title", "bandit_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["title", "dsdsds"], ["bandit_id", 3], ["created_at", "2016-03-21 20:07:39.673947"], ["updated_at", "2016-03-21 20:07:39.673947"]]
3025
+  (16.6ms) COMMIT
3026
+ Bandit Load (4.2ms) SELECT "bandits".* FROM "bandits" ORDER BY "bandits"."id" ASC LIMIT 1
3027
+ Crime Load (0.8ms) SELECT "crimes".* FROM "crimes" WHERE "crimes"."bandit_id" = $1 [["bandit_id", 1]]
3028
+ Bandit Load (3.3ms) SELECT "bandits".* FROM "bandits" ORDER BY "bandits"."id" DESC LIMIT 1
3029
+ Crime Load (1.0ms) SELECT "crimes".* FROM "crimes" WHERE "crimes"."bandit_id" = $1 [["bandit_id", 3]]
3030
+  (73.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
3031
+  (81.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
3032
+ ActiveRecord::SchemaMigration Load (1.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
3033
+ Migrating to CreateGangs (20160306173540)
3034
+  (0.5ms) BEGIN
3035
+  (143.1ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3036
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
3037
+  (23.6ms) COMMIT
3038
+ Migrating to CreateBandits (20160306174017)
3039
+  (0.3ms) BEGIN
3040
+  (95.4ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3041
+  (48.0ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
3042
+  (6.8ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
3043
+ FOREIGN KEY ("gang_id")
3044
+ REFERENCES "gangs" ("id")
3045
+ 
3046
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
3047
+  (16.1ms) COMMIT
3048
+ Migrating to CreateCrimes (20160306174042)
3049
+  (0.6ms) BEGIN
3050
+  (117.6ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3051
+  (50.9ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
3052
+  (4.5ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
3053
+ FOREIGN KEY ("bandit_id")
3054
+ REFERENCES "bandits" ("id")
3055
+ 
3056
+ SQL (0.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
3057
+  (20.5ms) COMMIT
3058
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
3059
+  (6.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3060
+ FROM pg_constraint c
3061
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3062
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3063
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3064
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3065
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3066
+ WHERE c.contype = 'f'
3067
+ AND t1.relname = 'bandits'
3068
+ AND t3.nspname = ANY (current_schemas(false))
3069
+ ORDER BY c.conname
3070
+ 
3071
+  (6.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3072
+ FROM pg_constraint c
3073
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3074
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3075
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3076
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3077
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3078
+ WHERE c.contype = 'f'
3079
+ AND t1.relname = 'crimes'
3080
+ AND t3.nspname = ANY (current_schemas(false))
3081
+ ORDER BY c.conname
3082
+
3083
+  (6.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3084
+ FROM pg_constraint c
3085
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3086
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3087
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3088
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3089
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3090
+ WHERE c.contype = 'f'
3091
+ AND t1.relname = 'gangs'
3092
+ AND t3.nspname = ANY (current_schemas(false))
3093
+ ORDER BY c.conname
3094
+ 
3095
+  (10.2ms) SELECT data_type FROM information_schema.columns
3096
+ WHERE table_name = 'bandits' AND column_name = 'id';
3097
+  (19.0ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
3098
+ DECLARE
3099
+ colname text := 'id';
3100
+ colval integer := NEW.id;
3101
+ threshold integer := '100';
3102
+ step integer := ROUND(colval / threshold);
3103
+ tblname text := 'bandits_' || step;
3104
+ BEGIN
3105
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
3106
+ EXECUTE 'CREATE TABLE '
3107
+ || tblname
3108
+ || '(check (ROUND('
3109
+ || quote_ident(colname)
3110
+ || '/'
3111
+ || threshold
3112
+ || ')='
3113
+ || step
3114
+ || ')) INHERITS ('
3115
+ || TG_RELNAME
3116
+ || ');';
3117
+ END IF;
3118
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
3119
+ RETURN NEW;
3120
+ END;
3121
+ $$ LANGUAGE plpgsql;
3122
+  (0.6ms) DROP TRIGGER IF EXISTS bandits_before_insert_trigger ON bandits;
3123
+  (13.5ms) CREATE TRIGGER bandits_before_insert_trigger
3124
+ before INSERT ON bandits
3125
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
3126
+  (7.1ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
3127
+ DECLARE
3128
+ row bandits%rowtype;
3129
+ BEGIN
3130
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
3131
+ RETURN row;
3132
+ END;
3133
+ $$ LANGUAGE plpgsql;
3134
+  (0.4ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
3135
+  (12.8ms) CREATE TRIGGER bandits_after_insert_trigger
3136
+ after INSERT ON bandits
3137
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
3138
+  (26.2ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
3139
+ ccu.table_name AS foreign_table_name,
3140
+ ccu.column_name AS foreign_column_name
3141
+ FROM information_schema.table_constraints AS tc
3142
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
3143
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
3144
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
3145
+  (13.9ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
3146
+  (0.5ms) SHOW constraint_exclusion;
3147
+  (0.2ms) BEGIN
3148
+ SQL (90.3ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-23 17:58:26.254810"], ["updated_at", "2016-03-23 17:58:26.254810"]]
3149
+  (16.5ms) COMMIT
3150
+  (10.8ms) SELECT data_type FROM information_schema.columns
3151
+ WHERE table_name = '1 = 1' AND column_name = 'id';
3152
+  (9.3ms) SELECT data_type FROM information_schema.columns
3153
+ WHERE table_name = 'true' AND column_name = 'id';
3154
+  (224.2ms) SELECT data_type FROM information_schema.columns
3155
+ WHERE table_name = 'bandits' AND column_name = 'id';
3156
+  (216.3ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
3157
+ DECLARE
3158
+ colname text := 'id';
3159
+ colval integer := NEW.id;
3160
+ threshold integer := '40';
3161
+ step integer := ROUND(colval / threshold);
3162
+ tblname text := 'bandits_' || step;
3163
+ BEGIN
3164
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
3165
+ EXECUTE 'CREATE TABLE '
3166
+ || tblname
3167
+ || '(check (ROUND('
3168
+ || quote_ident(colname)
3169
+ || '/'
3170
+ || threshold
3171
+ || ')='
3172
+ || step
3173
+ || ')) INHERITS ('
3174
+ || TG_RELNAME
3175
+ || ');';
3176
+ EXECUTE 'CREATE INDEX '
3177
+ || quote_ident(tblname || '_idx')
3178
+ || ' ON '
3179
+ || quote_ident(tblname)
3180
+ || ' (id, '
3181
+ || quote_ident(colname)
3182
+ || ');';
3183
+ END IF;
3184
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
3185
+ RETURN NEW;
3186
+ END;
3187
+ $$ LANGUAGE plpgsql;
3188
+  (131.0ms) DROP TRIGGER IF EXISTS bandits_before_insert_trigger ON bandits;
3189
+  (54.9ms) CREATE TRIGGER bandits_before_insert_trigger
3190
+ before INSERT ON bandits
3191
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
3192
+  (9.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
3193
+ DECLARE
3194
+ row bandits%rowtype;
3195
+ BEGIN
3196
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
3197
+ RETURN row;
3198
+ END;
3199
+ $$ LANGUAGE plpgsql;
3200
+  (5.9ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
3201
+  (13.9ms) CREATE TRIGGER bandits_after_insert_trigger
3202
+ after INSERT ON bandits
3203
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
3204
+  (237.0ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
3205
+ ccu.table_name AS foreign_table_name,
3206
+ ccu.column_name AS foreign_column_name
3207
+ FROM information_schema.table_constraints AS tc
3208
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
3209
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
3210
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
3211
+  (0.9ms) SHOW constraint_exclusion;
3212
+  (0.2ms) BEGIN
3213
+ SQL (68.8ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:40:39.130570"], ["updated_at", "2016-03-24 17:40:39.130570"]]
3214
+  (20.1ms) COMMIT
3215
+  (137.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
3216
+  (67.7ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
3217
+ ActiveRecord::SchemaMigration Load (1.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
3218
+ Migrating to CreateGangs (20160306173540)
3219
+  (0.4ms) BEGIN
3220
+  (143.9ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3221
+ SQL (22.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
3222
+  (14.8ms) COMMIT
3223
+ Migrating to CreateBandits (20160306174017)
3224
+  (0.3ms) BEGIN
3225
+  (101.0ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3226
+  (48.6ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
3227
+  (8.0ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
3228
+ FOREIGN KEY ("gang_id")
3229
+ REFERENCES "gangs" ("id")
3230
+ 
3231
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
3232
+  (20.1ms) COMMIT
3233
+ Migrating to CreateCrimes (20160306174042)
3234
+  (0.9ms) BEGIN
3235
+  (105.0ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3236
+  (63.5ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
3237
+  (4.6ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
3238
+ FOREIGN KEY ("bandit_id")
3239
+ REFERENCES "bandits" ("id")
3240
+ 
3241
+ SQL (0.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
3242
+  (19.1ms) COMMIT
3243
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
3244
+  (6.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3245
+ FROM pg_constraint c
3246
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3247
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3248
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3249
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3250
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3251
+ WHERE c.contype = 'f'
3252
+ AND t1.relname = 'bandits'
3253
+ AND t3.nspname = ANY (current_schemas(false))
3254
+ ORDER BY c.conname
3255
+ 
3256
+  (6.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3257
+ FROM pg_constraint c
3258
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3259
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3260
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3261
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3262
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3263
+ WHERE c.contype = 'f'
3264
+ AND t1.relname = 'crimes'
3265
+ AND t3.nspname = ANY (current_schemas(false))
3266
+ ORDER BY c.conname
3267
+
3268
+  (5.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3269
+ FROM pg_constraint c
3270
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3271
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3272
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3273
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3274
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3275
+ WHERE c.contype = 'f'
3276
+ AND t1.relname = 'gangs'
3277
+ AND t3.nspname = ANY (current_schemas(false))
3278
+ ORDER BY c.conname
3279
+ 
3280
+  (0.2ms) BEGIN
3281
+ SQL (1.8ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:44:05.066919"], ["updated_at", "2016-03-24 17:44:05.066919"]]
3282
+  (29.7ms) COMMIT
3283
+  (109.3ms) SELECT data_type FROM information_schema.columns
3284
+ WHERE table_name = 'bandits' AND column_name = 'id';
3285
+  (162.8ms) CREATE OR REPLACE FUNCTION bandits_insert_master() RETURNS TRIGGER AS $$
3286
+ DECLARE
3287
+ colname text := 'id';
3288
+ colval integer := NEW.id;
3289
+ threshold integer := '5';
3290
+ step integer := ROUND(colval / threshold);
3291
+ tblname text := 'bandits_' || step;
3292
+ BEGIN
3293
+ IF NOT EXISTS(SELECT relname FROM pg_class WHERE relname=tblname) THEN
3294
+ EXECUTE 'CREATE TABLE '
3295
+ || tblname
3296
+ || '(check (ROUND('
3297
+ || quote_ident(colname)
3298
+ || '/'
3299
+ || threshold
3300
+ || ')='
3301
+ || step
3302
+ || ')) INHERITS ('
3303
+ || TG_RELNAME
3304
+ || ');';
3305
+ EXECUTE 'CREATE INDEX '
3306
+ || quote_ident(tblname || '_idx')
3307
+ || ' ON '
3308
+ || quote_ident(tblname)
3309
+ || ' (id, '
3310
+ || quote_ident(colname)
3311
+ || ');';
3312
+ END IF;
3313
+ EXECUTE 'INSERT INTO ' || tblname || ' SELECT ($1).*' USING NEW;
3314
+ RETURN NEW;
3315
+ END;
3316
+ $$ LANGUAGE plpgsql;
3317
+  (9.8ms) DROP TRIGGER IF EXISTS bandits_before_insert_trigger ON bandits;
3318
+  (17.2ms) CREATE TRIGGER bandits_before_insert_trigger
3319
+ before INSERT ON bandits
3320
+ FOR EACH ROW EXECUTE PROCEDURE bandits_insert_master();
3321
+  (10.3ms) CREATE OR REPLACE FUNCTION bandits_delete_master() RETURNS TRIGGER AS $$
3322
+ DECLARE
3323
+ row bandits%rowtype;
3324
+ BEGIN
3325
+ DELETE FROM ONLY bandits WHERE id = NEW.id RETURNING * INTO row;
3326
+ RETURN row;
3327
+ END;
3328
+ $$ LANGUAGE plpgsql;
3329
+  (0.6ms) DROP TRIGGER IF EXISTS bandits_after_insert_trigger ON bandits;
3330
+  (19.9ms) CREATE TRIGGER bandits_after_insert_trigger
3331
+ after INSERT ON bandits
3332
+ FOR EACH ROW EXECUTE PROCEDURE bandits_delete_master();
3333
+  (108.9ms) SELECT tc.constraint_name, tc.table_name, kcu.column_name,
3334
+ ccu.table_name AS foreign_table_name,
3335
+ ccu.column_name AS foreign_column_name
3336
+ FROM information_schema.table_constraints AS tc
3337
+ JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
3338
+ JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
3339
+ WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name='bandits';
3340
+  (15.3ms) ALTER TABLE crimes DROP CONSTRAINT fk_rails_ca9866c40c;
3341
+  (0.5ms) SHOW constraint_exclusion;
3342
+  (0.2ms) BEGIN
3343
+ SQL (187.7ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:45:50.965645"], ["updated_at", "2016-03-24 17:45:50.965645"]]
3344
+  (23.8ms) COMMIT
3345
+  (2.2ms) BEGIN
3346
+ SQL (12.7ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:45:54.248710"], ["updated_at", "2016-03-24 17:45:54.248710"]]
3347
+  (23.4ms) COMMIT
3348
+  (2.5ms) BEGIN
3349
+ SQL (14.5ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:45:55.183196"], ["updated_at", "2016-03-24 17:45:55.183196"]]
3350
+  (18.3ms) COMMIT
3351
+  (2.1ms) BEGIN
3352
+ SQL (126.0ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:45:56.083555"], ["updated_at", "2016-03-24 17:45:56.083555"]]
3353
+  (22.7ms) COMMIT
3354
+  (1.1ms) BEGIN
3355
+ SQL (8.4ms) INSERT INTO "bandits" ("name", "specialization", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Yo"], ["specialization", "puk"], ["created_at", "2016-03-24 17:45:57.166553"], ["updated_at", "2016-03-24 17:45:57.166553"]]
3356
+  (24.0ms) COMMIT
3357
+  (364.6ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
3358
+  (244.6ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
3359
+ ActiveRecord::SchemaMigration Load (2.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
3360
+ Migrating to CreateGangs (20160306173540)
3361
+  (0.2ms) BEGIN
3362
+  (909.6ms) CREATE TABLE "gangs" ("id" serial primary key, "title" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3363
+ SQL (40.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306173540"]]
3364
+  (114.2ms) COMMIT
3365
+ Migrating to CreateBandits (20160306174017)
3366
+  (0.3ms) BEGIN
3367
+  (149.4ms) CREATE TABLE "bandits" ("id" serial primary key, "name" character varying, "specialization" character varying, "date_of_birth" date, "gang_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3368
+  (100.8ms) CREATE INDEX "index_bandits_on_gang_id" ON "bandits" ("gang_id")
3369
+  (115.4ms) ALTER TABLE "bandits" ADD CONSTRAINT "fk_rails_7411a14fb1"
3370
+ FOREIGN KEY ("gang_id")
3371
+ REFERENCES "gangs" ("id")
3372
+ 
3373
+ SQL (44.0ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174017"]]
3374
+  (81.1ms) COMMIT
3375
+ Migrating to CreateCrimes (20160306174042)
3376
+  (0.3ms) BEGIN
3377
+  (92.4ms) CREATE TABLE "crimes" ("id" serial primary key, "title" character varying, "bandit_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
3378
+  (66.3ms) CREATE INDEX "index_crimes_on_bandit_id" ON "crimes" ("bandit_id")
3379
+  (3.2ms) ALTER TABLE "crimes" ADD CONSTRAINT "fk_rails_ca9866c40c"
3380
+ FOREIGN KEY ("bandit_id")
3381
+ REFERENCES "bandits" ("id")
3382
+ 
3383
+ SQL (0.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160306174042"]]
3384
+  (30.2ms) COMMIT
3385
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
3386
+  (44.2ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3387
+ FROM pg_constraint c
3388
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3389
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3390
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3391
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3392
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3393
+ WHERE c.contype = 'f'
3394
+ AND t1.relname = 'bandits'
3395
+ AND t3.nspname = ANY (current_schemas(false))
3396
+ ORDER BY c.conname
3397
+ 
3398
+  (17.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3399
+ FROM pg_constraint c
3400
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3401
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3402
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3403
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3404
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3405
+ WHERE c.contype = 'f'
3406
+ AND t1.relname = 'crimes'
3407
+ AND t3.nspname = ANY (current_schemas(false))
3408
+ ORDER BY c.conname
3409
+
3410
+  (9.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
3411
+ FROM pg_constraint c
3412
+ JOIN pg_class t1 ON c.conrelid = t1.oid
3413
+ JOIN pg_class t2 ON c.confrelid = t2.oid
3414
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
3415
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
3416
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
3417
+ WHERE c.contype = 'f'
3418
+ AND t1.relname = 'gangs'
3419
+ AND t3.nspname = ANY (current_schemas(false))
3420
+ ORDER BY c.conname
3421
+