rails_db_views 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2635 @@
1
+  (0.3ms) DROP VIEW messages
2
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
3
+  (0.3ms) DROP VIEW messages
4
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
5
+  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
6
+  (0.3ms) select sqlite_version(*)
7
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
8
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
9
+ Migrating to CreateTestTables (20160208084226)
10
+  (0.1ms) begin transaction
11
+  (0.4ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
12
+  (0.2ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
13
+  (0.4ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
14
+  (0.5ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
15
+  (0.1ms)  SELECT sql
16
+ FROM sqlite_master
17
+ WHERE name='index_user_messages_on_from_id' AND type='index'
18
+ UNION ALL
19
+ SELECT sql
20
+ FROM sqlite_temp_master
21
+ WHERE name='index_user_messages_on_from_id' AND type='index'
22
+ 
23
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
24
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
25
+  (0.6ms) commit transaction
26
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
27
+  (0.1ms) SELECT sql
28
+ FROM sqlite_master
29
+ WHERE name='index_user_messages_on_to_id' AND type='index'
30
+ UNION ALL
31
+ SELECT sql
32
+ FROM sqlite_temp_master
33
+ WHERE name='index_user_messages_on_to_id' AND type='index'
34
+
35
+  (0.1ms)  SELECT sql
36
+ FROM sqlite_master
37
+ WHERE name='index_user_messages_on_from_id' AND type='index'
38
+ UNION ALL
39
+ SELECT sql
40
+ FROM sqlite_temp_master
41
+ WHERE name='index_user_messages_on_from_id' AND type='index'
42
+ 
43
+  (0.1ms) SELECT sql
44
+ FROM sqlite_master
45
+ WHERE name='index_users_on_name' AND type='index'
46
+ UNION ALL
47
+ SELECT sql
48
+ FROM sqlite_temp_master
49
+ WHERE name='index_users_on_name' AND type='index'
50
+
51
+  (0.1ms) CREATE VIEW messages AS -- Sample virtual model to test the gem.
52
+ (
53
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
54
+ u1.name as sender_name, u1.id as sender_id,
55
+ um.content, um.updated_at, um.created_at
56
+ FROM users u
57
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
58
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
59
+ )
60
+ UNION
61
+ (
62
+ SELECT u.name as receiver_name, u.id as receiver_id,
63
+ u2.name as sender_name, u2.id as sender_id,
64
+ um.content, um.updated_at, um.created_at
65
+ FROM users u
66
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
67
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
68
+ )
69
+ ORDER BY created_at ASC
70
+ SQLite3::SQLException: near "(": syntax error: CREATE VIEW messages AS -- Sample virtual model to test the gem.
71
+ (
72
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
73
+ u1.name as sender_name, u1.id as sender_id,
74
+ um.content, um.updated_at, um.created_at
75
+ FROM users u
76
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
77
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
78
+ )
79
+ UNION
80
+ (
81
+ SELECT u.name as receiver_name, u.id as receiver_id,
82
+ u2.name as sender_name, u2.id as sender_id,
83
+ um.content, um.updated_at, um.created_at
84
+ FROM users u
85
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
86
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
87
+ )
88
+ ORDER BY created_at ASC
89
+  (0.3ms) DROP VIEW messages
90
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
91
+  (1.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
92
+  (0.1ms) select sqlite_version(*)
93
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
94
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
95
+ Migrating to CreateTestTables (20160208084226)
96
+  (0.1ms) begin transaction
97
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
98
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
99
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
100
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
101
+  (0.1ms)  SELECT sql
102
+ FROM sqlite_master
103
+ WHERE name='index_user_messages_on_from_id' AND type='index'
104
+ UNION ALL
105
+ SELECT sql
106
+ FROM sqlite_temp_master
107
+ WHERE name='index_user_messages_on_from_id' AND type='index'
108
+ 
109
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
110
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
111
+  (2.1ms) commit transaction
112
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
113
+  (0.1ms) SELECT sql
114
+ FROM sqlite_master
115
+ WHERE name='index_user_messages_on_to_id' AND type='index'
116
+ UNION ALL
117
+ SELECT sql
118
+ FROM sqlite_temp_master
119
+ WHERE name='index_user_messages_on_to_id' AND type='index'
120
+
121
+  (0.1ms)  SELECT sql
122
+ FROM sqlite_master
123
+ WHERE name='index_user_messages_on_from_id' AND type='index'
124
+ UNION ALL
125
+ SELECT sql
126
+ FROM sqlite_temp_master
127
+ WHERE name='index_user_messages_on_from_id' AND type='index'
128
+ 
129
+  (0.1ms) SELECT sql
130
+ FROM sqlite_master
131
+ WHERE name='index_users_on_name' AND type='index'
132
+ UNION ALL
133
+ SELECT sql
134
+ FROM sqlite_temp_master
135
+ WHERE name='index_users_on_name' AND type='index'
136
+
137
+  (0.1ms) CREATE VIEW messages AS (
138
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
139
+ u1.name as sender_name, u1.id as sender_id,
140
+ um.content, um.updated_at, um.created_at
141
+ FROM users u
142
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
143
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
144
+ )
145
+ UNION
146
+ (
147
+ SELECT u.name as receiver_name, u.id as receiver_id,
148
+ u2.name as sender_name, u2.id as sender_id,
149
+ um.content, um.updated_at, um.created_at
150
+ FROM users u
151
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
152
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
153
+ )
154
+ ORDER BY created_at ASC
155
+ SQLite3::SQLException: near "(": syntax error: CREATE VIEW messages AS (
156
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
157
+ u1.name as sender_name, u1.id as sender_id,
158
+ um.content, um.updated_at, um.created_at
159
+ FROM users u
160
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
161
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
162
+ )
163
+ UNION
164
+ (
165
+ SELECT u.name as receiver_name, u.id as receiver_id,
166
+ u2.name as sender_name, u2.id as sender_id,
167
+ um.content, um.updated_at, um.created_at
168
+ FROM users u
169
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
170
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
171
+ )
172
+ ORDER BY created_at ASC
173
+  (0.3ms) DROP VIEW messages
174
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
175
+  (1.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
176
+  (0.1ms) select sqlite_version(*)
177
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
178
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
179
+ Migrating to CreateTestTables (20160208084226)
180
+  (0.1ms) begin transaction
181
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
182
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
183
+  (0.2ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
184
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
185
+  (0.1ms)  SELECT sql
186
+ FROM sqlite_master
187
+ WHERE name='index_user_messages_on_from_id' AND type='index'
188
+ UNION ALL
189
+ SELECT sql
190
+ FROM sqlite_temp_master
191
+ WHERE name='index_user_messages_on_from_id' AND type='index'
192
+ 
193
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
194
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
195
+  (2.1ms) commit transaction
196
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
197
+  (0.1ms) SELECT sql
198
+ FROM sqlite_master
199
+ WHERE name='index_user_messages_on_to_id' AND type='index'
200
+ UNION ALL
201
+ SELECT sql
202
+ FROM sqlite_temp_master
203
+ WHERE name='index_user_messages_on_to_id' AND type='index'
204
+
205
+  (0.1ms)  SELECT sql
206
+ FROM sqlite_master
207
+ WHERE name='index_user_messages_on_from_id' AND type='index'
208
+ UNION ALL
209
+ SELECT sql
210
+ FROM sqlite_temp_master
211
+ WHERE name='index_user_messages_on_from_id' AND type='index'
212
+ 
213
+  (0.1ms) SELECT sql
214
+ FROM sqlite_master
215
+ WHERE name='index_users_on_name' AND type='index'
216
+ UNION ALL
217
+ SELECT sql
218
+ FROM sqlite_temp_master
219
+ WHERE name='index_users_on_name' AND type='index'
220
+
221
+  (0.2ms) CREATE VIEW messages AS
222
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
223
+ u1.name as sender_name, u1.id as sender_id,
224
+ um.content, um.updated_at, um.created_at
225
+ FROM users u
226
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
227
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
228
+
229
+ UNION
230
+
231
+ SELECT u.name as receiver_name, u.id as receiver_id,
232
+ u2.name as sender_name, u2.id as sender_id,
233
+ um.content, um.updated_at, um.created_at
234
+ FROM users u
235
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
236
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
237
+
238
+ ORDER BY created_at ASC
239
+ SQLite3::SQLException: no such table: main.users_messages: CREATE VIEW messages AS
240
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
241
+ u1.name as sender_name, u1.id as sender_id,
242
+ um.content, um.updated_at, um.created_at
243
+ FROM users u
244
+ INNER JOIN users_messages um ON ( u.id = users_messages.from_id )
245
+ INNER JOIN users u2 ON (u2.id = users_messages.to_id)
246
+
247
+ UNION
248
+
249
+ SELECT u.name as receiver_name, u.id as receiver_id,
250
+ u2.name as sender_name, u2.id as sender_id,
251
+ um.content, um.updated_at, um.created_at
252
+ FROM users u
253
+ INNER JOIN users_messages um ON ( u.id = users_messages.to_id )
254
+ INNER JOIN users u2 ON ( u2.id = users_messages.from_id )
255
+
256
+ ORDER BY created_at ASC
257
+  (0.3ms) DROP VIEW messages
258
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
259
+  (1.6ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
260
+  (0.1ms) select sqlite_version(*)
261
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
262
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
263
+ Migrating to CreateTestTables (20160208084226)
264
+  (0.0ms) begin transaction
265
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
266
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
267
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
268
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
269
+  (0.1ms)  SELECT sql
270
+ FROM sqlite_master
271
+ WHERE name='index_user_messages_on_from_id' AND type='index'
272
+ UNION ALL
273
+ SELECT sql
274
+ FROM sqlite_temp_master
275
+ WHERE name='index_user_messages_on_from_id' AND type='index'
276
+ 
277
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
278
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
279
+  (1.0ms) commit transaction
280
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
281
+  (0.1ms) SELECT sql
282
+ FROM sqlite_master
283
+ WHERE name='index_user_messages_on_to_id' AND type='index'
284
+ UNION ALL
285
+ SELECT sql
286
+ FROM sqlite_temp_master
287
+ WHERE name='index_user_messages_on_to_id' AND type='index'
288
+
289
+  (0.1ms)  SELECT sql
290
+ FROM sqlite_master
291
+ WHERE name='index_user_messages_on_from_id' AND type='index'
292
+ UNION ALL
293
+ SELECT sql
294
+ FROM sqlite_temp_master
295
+ WHERE name='index_user_messages_on_from_id' AND type='index'
296
+ 
297
+  (0.1ms) SELECT sql
298
+ FROM sqlite_master
299
+ WHERE name='index_users_on_name' AND type='index'
300
+ UNION ALL
301
+ SELECT sql
302
+ FROM sqlite_temp_master
303
+ WHERE name='index_users_on_name' AND type='index'
304
+
305
+  (0.1ms) CREATE VIEW messages AS
306
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
307
+ u1.name as sender_name, u1.id as sender_id,
308
+ um.content, um.updated_at, um.created_at
309
+ FROM users u
310
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
311
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
312
+
313
+ UNION
314
+ (
315
+ SELECT u.name as receiver_name, u.id as receiver_id,
316
+ u2.name as sender_name, u2.id as sender_id,
317
+ um.content, um.updated_at, um.created_at
318
+ FROM users u
319
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
320
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
321
+ )
322
+ ORDER BY created_at ASC
323
+ SQLite3::SQLException: near "(": syntax error: CREATE VIEW messages AS
324
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
325
+ u1.name as sender_name, u1.id as sender_id,
326
+ um.content, um.updated_at, um.created_at
327
+ FROM users u
328
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
329
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
330
+
331
+ UNION
332
+ (
333
+ SELECT u.name as receiver_name, u.id as receiver_id,
334
+ u2.name as sender_name, u2.id as sender_id,
335
+ um.content, um.updated_at, um.created_at
336
+ FROM users u
337
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
338
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
339
+ )
340
+ ORDER BY created_at ASC
341
+  (0.3ms) DROP VIEW messages
342
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
343
+  (1.7ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
344
+  (0.1ms) select sqlite_version(*)
345
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
346
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
347
+ Migrating to CreateTestTables (20160208084226)
348
+  (0.0ms) begin transaction
349
+  (0.4ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
350
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
351
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
352
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
353
+  (0.1ms)  SELECT sql
354
+ FROM sqlite_master
355
+ WHERE name='index_user_messages_on_from_id' AND type='index'
356
+ UNION ALL
357
+ SELECT sql
358
+ FROM sqlite_temp_master
359
+ WHERE name='index_user_messages_on_from_id' AND type='index'
360
+ 
361
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
362
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
363
+  (0.8ms) commit transaction
364
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
365
+  (0.1ms) SELECT sql
366
+ FROM sqlite_master
367
+ WHERE name='index_user_messages_on_to_id' AND type='index'
368
+ UNION ALL
369
+ SELECT sql
370
+ FROM sqlite_temp_master
371
+ WHERE name='index_user_messages_on_to_id' AND type='index'
372
+
373
+  (0.1ms)  SELECT sql
374
+ FROM sqlite_master
375
+ WHERE name='index_user_messages_on_from_id' AND type='index'
376
+ UNION ALL
377
+ SELECT sql
378
+ FROM sqlite_temp_master
379
+ WHERE name='index_user_messages_on_from_id' AND type='index'
380
+ 
381
+  (0.1ms) SELECT sql
382
+ FROM sqlite_master
383
+ WHERE name='index_users_on_name' AND type='index'
384
+ UNION ALL
385
+ SELECT sql
386
+ FROM sqlite_temp_master
387
+ WHERE name='index_users_on_name' AND type='index'
388
+
389
+  (0.1ms) CREATE VIEW messages AS
390
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
391
+ u1.name as sender_name, u1.id as sender_id,
392
+ um.content, um.updated_at, um.created_at
393
+ FROM users u
394
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
395
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
396
+
397
+ UNION (
398
+ SELECT u.name as receiver_name, u.id as receiver_id,
399
+ u2.name as sender_name, u2.id as sender_id,
400
+ um.content, um.updated_at, um.created_at
401
+ FROM users u
402
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
403
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
404
+ )
405
+ ORDER BY created_at ASC
406
+ SQLite3::SQLException: near "(": syntax error: CREATE VIEW messages AS
407
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
408
+ u1.name as sender_name, u1.id as sender_id,
409
+ um.content, um.updated_at, um.created_at
410
+ FROM users u
411
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
412
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
413
+
414
+ UNION (
415
+ SELECT u.name as receiver_name, u.id as receiver_id,
416
+ u2.name as sender_name, u2.id as sender_id,
417
+ um.content, um.updated_at, um.created_at
418
+ FROM users u
419
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
420
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
421
+ )
422
+ ORDER BY created_at ASC
423
+  (0.4ms) DROP VIEW messages
424
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
425
+  (2.1ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
426
+  (0.1ms) select sqlite_version(*)
427
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
428
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
429
+ Migrating to CreateTestTables (20160208084226)
430
+  (0.1ms) begin transaction
431
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) 
432
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
433
+  (0.2ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) 
434
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
435
+  (0.1ms)  SELECT sql
436
+ FROM sqlite_master
437
+ WHERE name='index_user_messages_on_from_id' AND type='index'
438
+ UNION ALL
439
+ SELECT sql
440
+ FROM sqlite_temp_master
441
+ WHERE name='index_user_messages_on_from_id' AND type='index'
442
+ 
443
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
444
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
445
+  (0.8ms) commit transaction
446
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
447
+  (0.1ms) SELECT sql
448
+ FROM sqlite_master
449
+ WHERE name='index_user_messages_on_to_id' AND type='index'
450
+ UNION ALL
451
+ SELECT sql
452
+ FROM sqlite_temp_master
453
+ WHERE name='index_user_messages_on_to_id' AND type='index'
454
+
455
+  (0.1ms)  SELECT sql
456
+ FROM sqlite_master
457
+ WHERE name='index_user_messages_on_from_id' AND type='index'
458
+ UNION ALL
459
+ SELECT sql
460
+ FROM sqlite_temp_master
461
+ WHERE name='index_user_messages_on_from_id' AND type='index'
462
+ 
463
+  (0.1ms) SELECT sql
464
+ FROM sqlite_master
465
+ WHERE name='index_users_on_name' AND type='index'
466
+ UNION ALL
467
+ SELECT sql
468
+ FROM sqlite_temp_master
469
+ WHERE name='index_users_on_name' AND type='index'
470
+
471
+  (0.3ms) CREATE VIEW messages AS
472
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
473
+ u1.name as sender_name, u1.id as sender_id,
474
+ um.content, um.updated_at, um.created_at
475
+ FROM users u
476
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
477
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
478
+ UNION
479
+ SELECT u.name as receiver_name, u.id as receiver_id,
480
+ u2.name as sender_name, u2.id as sender_id,
481
+ um.content, um.updated_at, um.created_at
482
+ FROM users u
483
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
484
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
485
+ ORDER BY created_at ASC
486
+ SQLite3::SQLException: no such column: user_messages.to_id: CREATE VIEW messages AS
487
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
488
+ u1.name as sender_name, u1.id as sender_id,
489
+ um.content, um.updated_at, um.created_at
490
+ FROM users u
491
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
492
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
493
+ UNION
494
+ SELECT u.name as receiver_name, u.id as receiver_id,
495
+ u2.name as sender_name, u2.id as sender_id,
496
+ um.content, um.updated_at, um.created_at
497
+ FROM users u
498
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
499
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
500
+ ORDER BY created_at ASC
501
+  (0.3ms) DROP VIEW messages
502
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
503
+  (1.5ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
504
+  (0.1ms) select sqlite_version(*)
505
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
506
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
507
+ Migrating to CreateTestTables (20160208084226)
508
+  (0.0ms) begin transaction
509
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
510
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
511
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
512
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
513
+  (0.1ms)  SELECT sql
514
+ FROM sqlite_master
515
+ WHERE name='index_user_messages_on_from_id' AND type='index'
516
+ UNION ALL
517
+ SELECT sql
518
+ FROM sqlite_temp_master
519
+ WHERE name='index_user_messages_on_from_id' AND type='index'
520
+ 
521
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
522
+ SQL (0.4ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
523
+  (0.9ms) commit transaction
524
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
525
+  (0.1ms) SELECT sql
526
+ FROM sqlite_master
527
+ WHERE name='index_user_messages_on_to_id' AND type='index'
528
+ UNION ALL
529
+ SELECT sql
530
+ FROM sqlite_temp_master
531
+ WHERE name='index_user_messages_on_to_id' AND type='index'
532
+
533
+  (0.1ms)  SELECT sql
534
+ FROM sqlite_master
535
+ WHERE name='index_user_messages_on_from_id' AND type='index'
536
+ UNION ALL
537
+ SELECT sql
538
+ FROM sqlite_temp_master
539
+ WHERE name='index_user_messages_on_from_id' AND type='index'
540
+ 
541
+  (0.1ms) SELECT sql
542
+ FROM sqlite_master
543
+ WHERE name='index_users_on_name' AND type='index'
544
+ UNION ALL
545
+ SELECT sql
546
+ FROM sqlite_temp_master
547
+ WHERE name='index_users_on_name' AND type='index'
548
+
549
+  (0.2ms) CREATE VIEW messages AS
550
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
551
+ u1.name as sender_name, u1.id as sender_id,
552
+ um.content, um.updated_at, um.created_at
553
+ FROM users u
554
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
555
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
556
+ UNION
557
+ SELECT u.name as receiver_name, u.id as receiver_id,
558
+ u2.name as sender_name, u2.id as sender_id,
559
+ um.content, um.updated_at, um.created_at
560
+ FROM users u
561
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
562
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
563
+ ORDER BY created_at ASC
564
+ SQLite3::SQLException: no such column: user_messages.to_id: CREATE VIEW messages AS
565
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
566
+ u1.name as sender_name, u1.id as sender_id,
567
+ um.content, um.updated_at, um.created_at
568
+ FROM users u
569
+ INNER JOIN user_messages um ON ( u.id = user_messages.from_id )
570
+ INNER JOIN users u2 ON (u2.id = user_messages.to_id)
571
+ UNION
572
+ SELECT u.name as receiver_name, u.id as receiver_id,
573
+ u2.name as sender_name, u2.id as sender_id,
574
+ um.content, um.updated_at, um.created_at
575
+ FROM users u
576
+ INNER JOIN user_messages um ON ( u.id = user_messages.to_id )
577
+ INNER JOIN users u2 ON ( u2.id = user_messages.from_id )
578
+ ORDER BY created_at ASC
579
+  (0.3ms) DROP VIEW messages
580
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
581
+  (1.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
582
+  (0.1ms) select sqlite_version(*)
583
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
584
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
585
+ Migrating to CreateTestTables (20160208084226)
586
+  (0.0ms) begin transaction
587
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
588
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
589
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
590
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
591
+  (0.1ms)  SELECT sql
592
+ FROM sqlite_master
593
+ WHERE name='index_user_messages_on_from_id' AND type='index'
594
+ UNION ALL
595
+ SELECT sql
596
+ FROM sqlite_temp_master
597
+ WHERE name='index_user_messages_on_from_id' AND type='index'
598
+ 
599
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
600
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
601
+  (0.8ms) commit transaction
602
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
603
+  (0.1ms) SELECT sql
604
+ FROM sqlite_master
605
+ WHERE name='index_user_messages_on_to_id' AND type='index'
606
+ UNION ALL
607
+ SELECT sql
608
+ FROM sqlite_temp_master
609
+ WHERE name='index_user_messages_on_to_id' AND type='index'
610
+
611
+  (0.1ms)  SELECT sql
612
+ FROM sqlite_master
613
+ WHERE name='index_user_messages_on_from_id' AND type='index'
614
+ UNION ALL
615
+ SELECT sql
616
+ FROM sqlite_temp_master
617
+ WHERE name='index_user_messages_on_from_id' AND type='index'
618
+ 
619
+  (0.1ms) SELECT sql
620
+ FROM sqlite_master
621
+ WHERE name='index_users_on_name' AND type='index'
622
+ UNION ALL
623
+ SELECT sql
624
+ FROM sqlite_temp_master
625
+ WHERE name='index_users_on_name' AND type='index'
626
+
627
+  (0.2ms) CREATE VIEW messages AS
628
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
629
+ u1.name as sender_name, u1.id as sender_id,
630
+ um.content, um.updated_at, um.created_at
631
+ FROM users u
632
+ INNER JOIN user_messages um ON ( u.id = um.from_id )
633
+ INNER JOIN users u2 ON (u2.id = um.to_id)
634
+ UNION
635
+ SELECT u.name as receiver_name, u.id as receiver_id,
636
+ u2.name as sender_name, u2.id as sender_id,
637
+ um.content, um.updated_at, um.created_at
638
+ FROM users u
639
+ INNER JOIN user_messages um ON ( u.id = um.to_id )
640
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
641
+ ORDER BY created_at ASC
642
+ SQLite3::SQLException: no such column: u1.name: CREATE VIEW messages AS
643
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
644
+ u1.name as sender_name, u1.id as sender_id,
645
+ um.content, um.updated_at, um.created_at
646
+ FROM users u
647
+ INNER JOIN user_messages um ON ( u.id = um.from_id )
648
+ INNER JOIN users u2 ON (u2.id = um.to_id)
649
+ UNION
650
+ SELECT u.name as receiver_name, u.id as receiver_id,
651
+ u2.name as sender_name, u2.id as sender_id,
652
+ um.content, um.updated_at, um.created_at
653
+ FROM users u
654
+ INNER JOIN user_messages um ON ( u.id = um.to_id )
655
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
656
+ ORDER BY created_at ASC
657
+  (0.3ms) DROP VIEW messages
658
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
659
+  (1.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
660
+  (0.1ms) select sqlite_version(*)
661
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
662
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
663
+ Migrating to CreateTestTables (20160208084226)
664
+  (0.1ms) begin transaction
665
+  (0.4ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
666
+  (0.2ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
667
+  (0.2ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
668
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
669
+  (0.1ms)  SELECT sql
670
+ FROM sqlite_master
671
+ WHERE name='index_user_messages_on_from_id' AND type='index'
672
+ UNION ALL
673
+ SELECT sql
674
+ FROM sqlite_temp_master
675
+ WHERE name='index_user_messages_on_from_id' AND type='index'
676
+ 
677
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
678
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
679
+  (0.8ms) commit transaction
680
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
681
+  (0.1ms) SELECT sql
682
+ FROM sqlite_master
683
+ WHERE name='index_user_messages_on_to_id' AND type='index'
684
+ UNION ALL
685
+ SELECT sql
686
+ FROM sqlite_temp_master
687
+ WHERE name='index_user_messages_on_to_id' AND type='index'
688
+
689
+  (0.1ms)  SELECT sql
690
+ FROM sqlite_master
691
+ WHERE name='index_user_messages_on_from_id' AND type='index'
692
+ UNION ALL
693
+ SELECT sql
694
+ FROM sqlite_temp_master
695
+ WHERE name='index_user_messages_on_from_id' AND type='index'
696
+ 
697
+  (0.1ms) SELECT sql
698
+ FROM sqlite_master
699
+ WHERE name='index_users_on_name' AND type='index'
700
+ UNION ALL
701
+ SELECT sql
702
+ FROM sqlite_temp_master
703
+ WHERE name='index_users_on_name' AND type='index'
704
+
705
+  (0.2ms) CREATE VIEW messages AS
706
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
707
+ u1.name as sender_name, u1.id as sender_id,
708
+ um.content, um.updated_at, um.created_at
709
+ FROM users u1
710
+ INNER JOIN user_messages um ON ( u.id = um.from_id )
711
+ INNER JOIN users u2 ON (u2.id = um.to_id)
712
+ UNION
713
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
714
+ u2.name as sender_name, u2.id as sender_id,
715
+ um.content, um.updated_at, um.created_at
716
+ FROM users u1
717
+ INNER JOIN user_messages um ON ( u.id = um.to_id )
718
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
719
+ ORDER BY created_at ASC
720
+ SQLite3::SQLException: no such column: u.id: CREATE VIEW messages AS
721
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
722
+ u1.name as sender_name, u1.id as sender_id,
723
+ um.content, um.updated_at, um.created_at
724
+ FROM users u1
725
+ INNER JOIN user_messages um ON ( u.id = um.from_id )
726
+ INNER JOIN users u2 ON (u2.id = um.to_id)
727
+ UNION
728
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
729
+ u2.name as sender_name, u2.id as sender_id,
730
+ um.content, um.updated_at, um.created_at
731
+ FROM users u1
732
+ INNER JOIN user_messages um ON ( u.id = um.to_id )
733
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
734
+ ORDER BY created_at ASC
735
+  (0.3ms) DROP VIEW messages
736
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
737
+  (1.6ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
738
+  (0.1ms) select sqlite_version(*)
739
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
740
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
741
+ Migrating to CreateTestTables (20160208084226)
742
+  (0.0ms) begin transaction
743
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
744
+  (0.3ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
745
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
746
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
747
+  (0.1ms)  SELECT sql
748
+ FROM sqlite_master
749
+ WHERE name='index_user_messages_on_from_id' AND type='index'
750
+ UNION ALL
751
+ SELECT sql
752
+ FROM sqlite_temp_master
753
+ WHERE name='index_user_messages_on_from_id' AND type='index'
754
+ 
755
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
756
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
757
+  (0.8ms) commit transaction
758
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
759
+  (0.1ms) SELECT sql
760
+ FROM sqlite_master
761
+ WHERE name='index_user_messages_on_to_id' AND type='index'
762
+ UNION ALL
763
+ SELECT sql
764
+ FROM sqlite_temp_master
765
+ WHERE name='index_user_messages_on_to_id' AND type='index'
766
+
767
+  (0.1ms)  SELECT sql
768
+ FROM sqlite_master
769
+ WHERE name='index_user_messages_on_from_id' AND type='index'
770
+ UNION ALL
771
+ SELECT sql
772
+ FROM sqlite_temp_master
773
+ WHERE name='index_user_messages_on_from_id' AND type='index'
774
+ 
775
+  (0.1ms) SELECT sql
776
+ FROM sqlite_master
777
+ WHERE name='index_users_on_name' AND type='index'
778
+ UNION ALL
779
+ SELECT sql
780
+ FROM sqlite_temp_master
781
+ WHERE name='index_users_on_name' AND type='index'
782
+
783
+  (0.2ms) CREATE VIEW messages AS
784
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
785
+ u1.name as sender_name, u1.id as sender_id,
786
+ um.content, um.updated_at, um.created_at
787
+ FROM users u1
788
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
789
+ INNER JOIN users u2 ON (u2.id = um.to_id)
790
+ UNION
791
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
792
+ u2.name as sender_name, u2.id as sender_id,
793
+ um.content, um.updated_at, um.created_at
794
+ FROM users u1
795
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
796
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
797
+ ORDER BY created_at ASC
798
+ SQLite3::SQLException: 1st ORDER BY term does not match any column in the result set: CREATE VIEW messages AS
799
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
800
+ u1.name as sender_name, u1.id as sender_id,
801
+ um.content, um.updated_at, um.created_at
802
+ FROM users u1
803
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
804
+ INNER JOIN users u2 ON (u2.id = um.to_id)
805
+ UNION
806
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
807
+ u2.name as sender_name, u2.id as sender_id,
808
+ um.content, um.updated_at, um.created_at
809
+ FROM users u1
810
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
811
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
812
+ ORDER BY created_at ASC
813
+  (0.3ms) DROP VIEW messages
814
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
815
+  (2.0ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
816
+  (0.1ms) select sqlite_version(*)
817
+  (1.2ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
818
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
819
+ Migrating to CreateTestTables (20160208084226)
820
+  (0.0ms) begin transaction
821
+  (0.4ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
822
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
823
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
824
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
825
+  (0.1ms)  SELECT sql
826
+ FROM sqlite_master
827
+ WHERE name='index_user_messages_on_from_id' AND type='index'
828
+ UNION ALL
829
+ SELECT sql
830
+ FROM sqlite_temp_master
831
+ WHERE name='index_user_messages_on_from_id' AND type='index'
832
+ 
833
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
834
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
835
+  (0.7ms) commit transaction
836
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
837
+  (0.1ms) SELECT sql
838
+ FROM sqlite_master
839
+ WHERE name='index_user_messages_on_to_id' AND type='index'
840
+ UNION ALL
841
+ SELECT sql
842
+ FROM sqlite_temp_master
843
+ WHERE name='index_user_messages_on_to_id' AND type='index'
844
+
845
+  (0.1ms)  SELECT sql
846
+ FROM sqlite_master
847
+ WHERE name='index_user_messages_on_from_id' AND type='index'
848
+ UNION ALL
849
+ SELECT sql
850
+ FROM sqlite_temp_master
851
+ WHERE name='index_user_messages_on_from_id' AND type='index'
852
+ 
853
+  (0.1ms) SELECT sql
854
+ FROM sqlite_master
855
+ WHERE name='index_users_on_name' AND type='index'
856
+ UNION ALL
857
+ SELECT sql
858
+ FROM sqlite_temp_master
859
+ WHERE name='index_users_on_name' AND type='index'
860
+
861
+  (0.9ms) CREATE VIEW messages AS
862
+ SELECT u2.name as receiver_name, u2.id as receiver_id,
863
+ u1.name as sender_name, u1.id as sender_id,
864
+ um.content, um.updated_at, um.created_at
865
+ FROM users u1
866
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
867
+ INNER JOIN users u2 ON (u2.id = um.to_id)
868
+ UNION
869
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
870
+ u2.name as sender_name, u2.id as sender_id,
871
+ um.content, um.updated_at, um.created_at
872
+ FROM users u1
873
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
874
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
875
+ ORDER BY um.created_at ASC
876
+  (0.3ms) DROP VIEW chats
877
+ SQLite3::SQLException: no such view: chats: DROP VIEW chats
878
+  (0.2ms) DROP VIEW messages
879
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
880
+  (1.7ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
881
+  (0.1ms) select sqlite_version(*)
882
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
883
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
884
+ Migrating to CreateTestTables (20160208084226)
885
+  (0.1ms) begin transaction
886
+  (0.2ms) CREATE EXTENSION intarray;
887
+ SQLite3::SQLException: near "EXTENSION": syntax error: CREATE EXTENSION intarray;
888
+  (0.0ms) rollback transaction
889
+  (0.3ms) DROP VIEW chats
890
+ SQLite3::SQLException: no such view: chats: DROP VIEW chats
891
+  (0.1ms) DROP VIEW messages
892
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
893
+  (1.6ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
894
+  (0.1ms) select sqlite_version(*)
895
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
896
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
897
+ Migrating to CreateTestTables (20160208084226)
898
+  (0.1ms) begin transaction
899
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
900
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
901
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
902
+  (0.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
903
+  (0.1ms) SELECT sql
904
+ FROM sqlite_master
905
+ WHERE name='index_user_messages_on_from_id' AND type='index'
906
+ UNION ALL
907
+ SELECT sql
908
+ FROM sqlite_temp_master
909
+ WHERE name='index_user_messages_on_from_id' AND type='index'
910
+
911
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
912
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
913
+  (0.7ms) commit transaction
914
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
915
+  (0.1ms)  SELECT sql
916
+ FROM sqlite_master
917
+ WHERE name='index_user_messages_on_to_id' AND type='index'
918
+ UNION ALL
919
+ SELECT sql
920
+ FROM sqlite_temp_master
921
+ WHERE name='index_user_messages_on_to_id' AND type='index'
922
+ 
923
+  (0.1ms) SELECT sql
924
+ FROM sqlite_master
925
+ WHERE name='index_user_messages_on_from_id' AND type='index'
926
+ UNION ALL
927
+ SELECT sql
928
+ FROM sqlite_temp_master
929
+ WHERE name='index_user_messages_on_from_id' AND type='index'
930
+
931
+  (0.1ms)  SELECT sql
932
+ FROM sqlite_master
933
+ WHERE name='index_users_on_name' AND type='index'
934
+ UNION ALL
935
+ SELECT sql
936
+ FROM sqlite_temp_master
937
+ WHERE name='index_users_on_name' AND type='index'
938
+ 
939
+  (1.4ms) CREATE VIEW messages AS SELECT DISTINCT receiver_name, receiver_id, sender_name, sender_id, content, updated_at, created_at
940
+ FROM
941
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
942
+ u1.name as sender_name, u1.id as sender_id,
943
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
944
+ FROM users u1
945
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
946
+ INNER JOIN users u2 ON (u2.id = um.to_id)
947
+ UNION
948
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
949
+ u2.name as sender_name, u2.id as sender_id,
950
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
951
+ FROM users u1
952
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
953
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
954
+ ORDER BY um.created_at ASC
955
+ )
956
+  (0.1ms) CREATE VIEW chats AS SELECT SORT(ARRAY[sender_id, receiver_id])::text AS id,
957
+ sender_name, receiver_name, MAX(updated_at), COUNT(*) as number_of_messages
958
+ GROUP BY SORT(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
959
+ FROM messages
960
+ SQLite3::SQLException: near "[sender_id, receiver_id]": syntax error: CREATE VIEW chats AS SELECT SORT(ARRAY[sender_id, receiver_id])::text AS id,
961
+ sender_name, receiver_name, MAX(updated_at), COUNT(*) as number_of_messages
962
+ GROUP BY SORT(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
963
+ FROM messages
964
+  (0.3ms) DROP VIEW chats
965
+ SQLite3::SQLException: no such view: chats: DROP VIEW chats
966
+  (0.1ms) DROP VIEW messages
967
+ SQLite3::SQLException: no such view: messages: DROP VIEW messages
968
+  (1.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
969
+  (0.1ms) select sqlite_version(*)
970
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
971
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
972
+ Migrating to CreateTestTables (20160208084226)
973
+  (0.1ms) begin transaction
974
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
975
+  (0.1ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
976
+  (0.1ms) CREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
977
+  (0.2ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
978
+  (0.1ms) SELECT sql
979
+ FROM sqlite_master
980
+ WHERE name='index_user_messages_on_from_id' AND type='index'
981
+ UNION ALL
982
+ SELECT sql
983
+ FROM sqlite_temp_master
984
+ WHERE name='index_user_messages_on_from_id' AND type='index'
985
+
986
+  (0.1ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
987
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
988
+  (2.6ms) commit transaction
989
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
990
+  (0.1ms)  SELECT sql
991
+ FROM sqlite_master
992
+ WHERE name='index_user_messages_on_to_id' AND type='index'
993
+ UNION ALL
994
+ SELECT sql
995
+ FROM sqlite_temp_master
996
+ WHERE name='index_user_messages_on_to_id' AND type='index'
997
+ 
998
+  (0.1ms) SELECT sql
999
+ FROM sqlite_master
1000
+ WHERE name='index_user_messages_on_from_id' AND type='index'
1001
+ UNION ALL
1002
+ SELECT sql
1003
+ FROM sqlite_temp_master
1004
+ WHERE name='index_user_messages_on_from_id' AND type='index'
1005
+
1006
+  (0.1ms)  SELECT sql
1007
+ FROM sqlite_master
1008
+ WHERE name='index_users_on_name' AND type='index'
1009
+ UNION ALL
1010
+ SELECT sql
1011
+ FROM sqlite_temp_master
1012
+ WHERE name='index_users_on_name' AND type='index'
1013
+ 
1014
+  (0.9ms) CREATE VIEW messages AS SELECT DISTINCT receiver_name, receiver_id, sender_name, sender_id, content, updated_at, created_at
1015
+ FROM
1016
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1017
+ u1.name as sender_name, u1.id as sender_id,
1018
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1019
+ FROM users u1
1020
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1021
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1022
+ UNION
1023
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1024
+ u2.name as sender_name, u2.id as sender_id,
1025
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1026
+ FROM users u1
1027
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1028
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1029
+ ORDER BY um.created_at ASC
1030
+ )
1031
+  (0.2ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1032
+ sender_name, receiver_name, MIN(created_at) as created_at,
1033
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1034
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1035
+ FROM messages
1036
+ SQLite3::SQLException: near "[sender_id, receiver_id]": syntax error: CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1037
+ sender_name, receiver_name, MIN(created_at) as created_at,
1038
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1039
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1040
+ FROM messages
1041
+  (9.4ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1042
+ BEGIN
1043
+ RETURN x + y;
1044
+ END;
1045
+ $$ LANGUAGE plpgsql;
1046
+  (1.1ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1047
+ BEGIN
1048
+ IF x[0] > x[1]
1049
+ RETURN ARRAY[x[1], x[0]];
1050
+ ELSE
1051
+ RETURN x
1052
+ END
1053
+ END;
1054
+ $$ LANGUAGE plpgsql;
1055
+ PG::SyntaxError: ERROR: missing "THEN" at end of SQL expression
1056
+ LINE 4: RETURN ARRAY[x[1], x[0]];
1057
+ ^
1058
+ : CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1059
+ BEGIN
1060
+ IF x[0] > x[1]
1061
+ RETURN ARRAY[x[1], x[0]];
1062
+ ELSE
1063
+ RETURN x
1064
+ END
1065
+ END;
1066
+ $$ LANGUAGE plpgsql;
1067
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1068
+ BEGIN
1069
+ RETURN x + y;
1070
+ END;
1071
+ $$ LANGUAGE plpgsql;
1072
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1073
+ BEGIN
1074
+ IF x[0] > x[1] THEN
1075
+ RETURN ARRAY[x[1], x[0]];
1076
+ ELSE
1077
+ RETURN x
1078
+ END
1079
+ END;
1080
+ $$ LANGUAGE plpgsql;
1081
+ PG::SyntaxError: ERROR: syntax error at or near "END"
1082
+ LINE 7: END
1083
+ ^
1084
+ : CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1085
+ BEGIN
1086
+ IF x[0] > x[1] THEN
1087
+ RETURN ARRAY[x[1], x[0]];
1088
+ ELSE
1089
+ RETURN x
1090
+ END
1091
+ END;
1092
+ $$ LANGUAGE plpgsql;
1093
+  (1.8ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1094
+ BEGIN
1095
+ RETURN x + y;
1096
+ END;
1097
+ $$ LANGUAGE plpgsql;
1098
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1099
+ BEGIN
1100
+ IF x[0] > x[1] THEN
1101
+ RETURN ARRAY[x[1], x[0]];
1102
+ ELSE
1103
+ RETURN x;
1104
+ END;
1105
+ END;
1106
+ $$ LANGUAGE plpgsql;
1107
+ PG::SyntaxError: ERROR: syntax error at or near ";"
1108
+ LINE 7: END;
1109
+ ^
1110
+ : CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1111
+ BEGIN
1112
+ IF x[0] > x[1] THEN
1113
+ RETURN ARRAY[x[1], x[0]];
1114
+ ELSE
1115
+ RETURN x;
1116
+ END;
1117
+ END;
1118
+ $$ LANGUAGE plpgsql;
1119
+  (2.1ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1120
+ BEGIN
1121
+ RETURN x + y;
1122
+ END;
1123
+ $$ LANGUAGE plpgsql;
1124
+  (0.7ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1125
+ BEGIN
1126
+ IF x[0] > x[1] THEN
1127
+ RETURN ARRAY[x[1], x[0]];
1128
+ ELSE
1129
+ RETURN x;
1130
+ END
1131
+ END;
1132
+ $$ LANGUAGE plpgsql;
1133
+ PG::SyntaxError: ERROR: syntax error at or near "END"
1134
+ LINE 8: END;
1135
+ ^
1136
+ : CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1137
+ BEGIN
1138
+ IF x[0] > x[1] THEN
1139
+ RETURN ARRAY[x[1], x[0]];
1140
+ ELSE
1141
+ RETURN x;
1142
+ END
1143
+ END;
1144
+ $$ LANGUAGE plpgsql;
1145
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1146
+ BEGIN
1147
+ RETURN x + y;
1148
+ END;
1149
+ $$ LANGUAGE plpgsql;
1150
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1151
+ BEGIN
1152
+ IF x[0] > x[1] THEN
1153
+ RETURN ARRAY[x[1], x[0]];
1154
+ ELSE
1155
+ RETURN x;
1156
+ END IF;
1157
+ END;
1158
+ $$ LANGUAGE plpgsql;
1159
+  (1.3ms) DROP VIEW chats
1160
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1161
+ : DROP VIEW chats
1162
+  (0.2ms) DROP VIEW messages
1163
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1164
+ : DROP VIEW messages
1165
+  (7.3ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1166
+  (5.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1167
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1168
+ Migrating to CreateTestTables (20160208084226)
1169
+  (0.1ms) BEGIN
1170
+  (3.8ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1171
+  (0.9ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1172
+  (2.4ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1173
+  (0.6ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1174
+  (0.9ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1175
+ SQL (1.0ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1176
+  (0.3ms) COMMIT
1177
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1178
+  (2.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
1179
+ FROM pg_constraint c
1180
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1181
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1182
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1183
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1184
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1185
+ WHERE c.contype = 'f'
1186
+ AND t1.relname = 'user_messages'
1187
+ AND t3.nspname = ANY (current_schemas(false))
1188
+ ORDER BY c.conname
1189
+ 
1190
+  (1.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
1191
+ FROM pg_constraint c
1192
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1193
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1194
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1195
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1196
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1197
+ WHERE c.contype = 'f'
1198
+ AND t1.relname = 'users'
1199
+ AND t3.nspname = ANY (current_schemas(false))
1200
+ ORDER BY c.conname
1201
+
1202
+  (0.3ms) CREATE VIEW messages AS SELECT DISTINCT receiver_name, receiver_id, sender_name, sender_id, content, updated_at, created_at
1203
+ FROM
1204
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1205
+ u1.name as sender_name, u1.id as sender_id,
1206
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1207
+ FROM users u1
1208
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1209
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1210
+ UNION
1211
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1212
+ u2.name as sender_name, u2.id as sender_id,
1213
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1214
+ FROM users u1
1215
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1216
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1217
+ ORDER BY um.created_at ASC
1218
+ )
1219
+ PG::SyntaxError: ERROR: subquery in FROM must have an alias
1220
+ LINE 3: (SELECT u2.name as receiver_name, u2.id as receiver_id,
1221
+ ^
1222
+ HINT: For example, FROM (SELECT ...) [AS] foo.
1223
+ : CREATE VIEW messages AS SELECT DISTINCT receiver_name, receiver_id, sender_name, sender_id, content, updated_at, created_at
1224
+ FROM
1225
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1226
+ u1.name as sender_name, u1.id as sender_id,
1227
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1228
+ FROM users u1
1229
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1230
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1231
+ UNION
1232
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1233
+ u2.name as sender_name, u2.id as sender_id,
1234
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1235
+ FROM users u1
1236
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1237
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1238
+ ORDER BY um.created_at ASC
1239
+ )
1240
+  (2.1ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1241
+ BEGIN
1242
+ RETURN x + y;
1243
+ END;
1244
+ $$ LANGUAGE plpgsql;
1245
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1246
+ BEGIN
1247
+ IF x[0] > x[1] THEN
1248
+ RETURN ARRAY[x[1], x[0]];
1249
+ ELSE
1250
+ RETURN x;
1251
+ END IF;
1252
+ END;
1253
+ $$ LANGUAGE plpgsql;
1254
+  (0.3ms) DROP VIEW chats
1255
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1256
+ : DROP VIEW chats
1257
+  (0.2ms) DROP VIEW messages
1258
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1259
+ : DROP VIEW messages
1260
+  (2.3ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1261
+  (0.7ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1262
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1263
+ Migrating to CreateTestTables (20160208084226)
1264
+  (0.1ms) BEGIN
1265
+  (3.0ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1266
+  (0.7ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1267
+  (2.3ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1268
+  (0.6ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1269
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1270
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1271
+  (0.6ms) COMMIT
1272
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1273
+  (1.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
1274
+ FROM pg_constraint c
1275
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1276
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1277
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1278
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1279
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1280
+ WHERE c.contype = 'f'
1281
+ AND t1.relname = 'user_messages'
1282
+ AND t3.nspname = ANY (current_schemas(false))
1283
+ ORDER BY c.conname
1284
+ 
1285
+  (1.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
1286
+ FROM pg_constraint c
1287
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1288
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1289
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1290
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1291
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1292
+ WHERE c.contype = 'f'
1293
+ AND t1.relname = 'users'
1294
+ AND t3.nspname = ANY (current_schemas(false))
1295
+ ORDER BY c.conname
1296
+
1297
+  (0.6ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1298
+ FROM
1299
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1300
+ u1.name as sender_name, u1.id as sender_id,
1301
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1302
+ FROM users u1
1303
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1304
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1305
+ UNION
1306
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1307
+ u2.name as sender_name, u2.id as sender_id,
1308
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1309
+ FROM users u1
1310
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1311
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1312
+ ORDER BY um.created_at ASC
1313
+ ) AS _
1314
+ PG::UndefinedTable: ERROR: missing FROM-clause entry for table "um"
1315
+ LINE 16: ORDER BY um.created_at ASC
1316
+ ^
1317
+ : CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1318
+ FROM
1319
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1320
+ u1.name as sender_name, u1.id as sender_id,
1321
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1322
+ FROM users u1
1323
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1324
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1325
+ UNION
1326
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1327
+ u2.name as sender_name, u2.id as sender_id,
1328
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1329
+ FROM users u1
1330
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1331
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1332
+ ORDER BY um.created_at ASC
1333
+ ) AS _
1334
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1335
+ BEGIN
1336
+ RETURN x + y;
1337
+ END;
1338
+ $$ LANGUAGE plpgsql;
1339
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1340
+ BEGIN
1341
+ IF x[0] > x[1] THEN
1342
+ RETURN ARRAY[x[1], x[0]];
1343
+ ELSE
1344
+ RETURN x;
1345
+ END IF;
1346
+ END;
1347
+ $$ LANGUAGE plpgsql;
1348
+  (0.4ms) DROP VIEW chats
1349
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1350
+ : DROP VIEW chats
1351
+  (0.2ms) DROP VIEW messages
1352
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1353
+ : DROP VIEW messages
1354
+  (2.3ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1355
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1356
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1357
+ Migrating to CreateTestTables (20160208084226)
1358
+  (0.1ms) BEGIN
1359
+  (6.4ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1360
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1361
+  (2.2ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1362
+  (0.5ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1363
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1364
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1365
+  (0.6ms) COMMIT
1366
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1367
+  (2.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
1368
+ FROM pg_constraint c
1369
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1370
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1371
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1372
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1373
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1374
+ WHERE c.contype = 'f'
1375
+ AND t1.relname = 'user_messages'
1376
+ AND t3.nspname = ANY (current_schemas(false))
1377
+ ORDER BY c.conname
1378
+ 
1379
+  (1.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
1380
+ FROM pg_constraint c
1381
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1382
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1383
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1384
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1385
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1386
+ WHERE c.contype = 'f'
1387
+ AND t1.relname = 'users'
1388
+ AND t3.nspname = ANY (current_schemas(false))
1389
+ ORDER BY c.conname
1390
+
1391
+  (7.5ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1392
+ FROM
1393
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1394
+ u1.name as sender_name, u1.id as sender_id,
1395
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1396
+ FROM users u1
1397
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1398
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1399
+ UNION
1400
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1401
+ u2.name as sender_name, u2.id as sender_id,
1402
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1403
+ FROM users u1
1404
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1405
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1406
+ ORDER BY created_at ASC
1407
+ ) AS _
1408
+  (0.3ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1409
+ sender_name, receiver_name, MIN(created_at) as created_at,
1410
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1411
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1412
+ FROM messages
1413
+ PG::SyntaxError: ERROR: syntax error at or near "FROM"
1414
+ LINE 5: FROM messages
1415
+ ^
1416
+ : CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1417
+ sender_name, receiver_name, MIN(created_at) as created_at,
1418
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1419
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1420
+ FROM messages
1421
+  (2.2ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1422
+ BEGIN
1423
+ RETURN x + y;
1424
+ END;
1425
+ $$ LANGUAGE plpgsql;
1426
+  (0.7ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1427
+ BEGIN
1428
+ IF x[0] > x[1] THEN
1429
+ RETURN ARRAY[x[1], x[0]];
1430
+ ELSE
1431
+ RETURN x;
1432
+ END IF;
1433
+ END;
1434
+ $$ LANGUAGE plpgsql;
1435
+  (0.4ms) DROP VIEW chats
1436
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1437
+ : DROP VIEW chats
1438
+  (0.2ms) DROP VIEW messages
1439
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1440
+ : DROP VIEW messages
1441
+  (2.5ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1442
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1443
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1444
+ Migrating to CreateTestTables (20160208084226)
1445
+  (0.1ms) BEGIN
1446
+  (2.8ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1447
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1448
+  (2.2ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1449
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1450
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1451
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1452
+  (0.8ms) COMMIT
1453
+ ActiveRecord::SchemaMigration Load (0.7ms) SELECT "schema_migrations".* FROM "schema_migrations"
1454
+  (2.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
1455
+ FROM pg_constraint c
1456
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1457
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1458
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1459
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1460
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1461
+ WHERE c.contype = 'f'
1462
+ AND t1.relname = 'user_messages'
1463
+ AND t3.nspname = ANY (current_schemas(false))
1464
+ ORDER BY c.conname
1465
+ 
1466
+  (1.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
1467
+ FROM pg_constraint c
1468
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1469
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1470
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1471
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1472
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1473
+ WHERE c.contype = 'f'
1474
+ AND t1.relname = 'users'
1475
+ AND t3.nspname = ANY (current_schemas(false))
1476
+ ORDER BY c.conname
1477
+
1478
+  (0.6ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1479
+ FROM
1480
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1481
+ u1.name as sender_name, u1.id as sender_id,
1482
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1483
+ FROM users u1
1484
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1485
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1486
+ UNION
1487
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1488
+ u2.name as sender_name, u2.id as sender_id,
1489
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1490
+ FROM users u1
1491
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1492
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1493
+ ORDER BY _.created_at ASC
1494
+ ) AS _
1495
+ PG::UndefinedTable: ERROR: missing FROM-clause entry for table "_"
1496
+ LINE 16: ORDER BY _.created_at ASC
1497
+ ^
1498
+ : CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1499
+ FROM
1500
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1501
+ u1.name as sender_name, u1.id as sender_id,
1502
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1503
+ FROM users u1
1504
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1505
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1506
+ UNION
1507
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1508
+ u2.name as sender_name, u2.id as sender_id,
1509
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1510
+ FROM users u1
1511
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1512
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1513
+ ORDER BY _.created_at ASC
1514
+ ) AS _
1515
+  (2.7ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1516
+ BEGIN
1517
+ RETURN x + y;
1518
+ END;
1519
+ $$ LANGUAGE plpgsql;
1520
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1521
+ BEGIN
1522
+ IF x[0] > x[1] THEN
1523
+ RETURN ARRAY[x[1], x[0]];
1524
+ ELSE
1525
+ RETURN x;
1526
+ END IF;
1527
+ END;
1528
+ $$ LANGUAGE plpgsql;
1529
+  (0.4ms) DROP VIEW chats
1530
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1531
+ : DROP VIEW chats
1532
+  (0.2ms) DROP VIEW messages
1533
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1534
+ : DROP VIEW messages
1535
+  (2.5ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1536
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1537
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
1538
+ Migrating to CreateTestTables (20160208084226)
1539
+  (0.1ms) BEGIN
1540
+  (5.6ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1541
+  (0.7ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1542
+  (2.4ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1543
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1544
+  (0.6ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1545
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1546
+  (0.6ms) COMMIT
1547
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1548
+  (1.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
1549
+ FROM pg_constraint c
1550
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1551
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1552
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1553
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1554
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1555
+ WHERE c.contype = 'f'
1556
+ AND t1.relname = 'user_messages'
1557
+ AND t3.nspname = ANY (current_schemas(false))
1558
+ ORDER BY c.conname
1559
+ 
1560
+  (1.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
1561
+ FROM pg_constraint c
1562
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1563
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1564
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1565
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1566
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1567
+ WHERE c.contype = 'f'
1568
+ AND t1.relname = 'users'
1569
+ AND t3.nspname = ANY (current_schemas(false))
1570
+ ORDER BY c.conname
1571
+
1572
+  (7.6ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1573
+ FROM
1574
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1575
+ u1.name as sender_name, u1.id as sender_id,
1576
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1577
+ FROM users u1
1578
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1579
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1580
+ UNION
1581
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1582
+ u2.name as sender_name, u2.id as sender_id,
1583
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1584
+ FROM users u1
1585
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1586
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1587
+ ORDER BY created_at ASC
1588
+ ) AS _
1589
+  (0.3ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1590
+ sender_name, receiver_name, MIN(created_at) as created_at,
1591
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1592
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1593
+ FROM messages
1594
+ PG::SyntaxError: ERROR: syntax error at or near "FROM"
1595
+ LINE 5: FROM messages
1596
+ ^
1597
+ : CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1598
+ sender_name, receiver_name, MIN(created_at) as created_at,
1599
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1600
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1601
+ FROM messages
1602
+  (2.1ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1603
+ BEGIN
1604
+ RETURN x + y;
1605
+ END;
1606
+ $$ LANGUAGE plpgsql;
1607
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1608
+ BEGIN
1609
+ IF x[0] > x[1] THEN
1610
+ RETURN ARRAY[x[1], x[0]];
1611
+ ELSE
1612
+ RETURN x;
1613
+ END IF;
1614
+ END;
1615
+ $$ LANGUAGE plpgsql;
1616
+  (0.3ms) DROP VIEW chats
1617
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1618
+ : DROP VIEW chats
1619
+  (0.2ms) DROP VIEW messages
1620
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1621
+ : DROP VIEW messages
1622
+  (2.5ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1623
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1624
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1625
+ Migrating to CreateTestTables (20160208084226)
1626
+  (0.1ms) BEGIN
1627
+  (5.9ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1628
+  (0.7ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1629
+  (2.4ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1630
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1631
+  (0.6ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1632
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1633
+  (0.5ms) COMMIT
1634
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1635
+  (1.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
1636
+ FROM pg_constraint c
1637
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1638
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1639
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1640
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1641
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1642
+ WHERE c.contype = 'f'
1643
+ AND t1.relname = 'user_messages'
1644
+ AND t3.nspname = ANY (current_schemas(false))
1645
+ ORDER BY c.conname
1646
+ 
1647
+  (1.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
1648
+ FROM pg_constraint c
1649
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1650
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1651
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1652
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1653
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1654
+ WHERE c.contype = 'f'
1655
+ AND t1.relname = 'users'
1656
+ AND t3.nspname = ANY (current_schemas(false))
1657
+ ORDER BY c.conname
1658
+
1659
+  (7.8ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1660
+ FROM
1661
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1662
+ u1.name as sender_name, u1.id as sender_id,
1663
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1664
+ FROM users u1
1665
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1666
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1667
+ UNION
1668
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1669
+ u2.name as sender_name, u2.id as sender_id,
1670
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1671
+ FROM users u1
1672
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1673
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1674
+ ORDER BY created_at ASC
1675
+ ) AS _
1676
+  (15.1ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1677
+ sender_name, receiver_name, MIN(created_at) as created_at,
1678
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1679
+ FROM messages
1680
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1681
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1682
+ BEGIN
1683
+ RETURN x + y;
1684
+ END;
1685
+ $$ LANGUAGE plpgsql;
1686
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1687
+ BEGIN
1688
+ IF x[0] > x[1] THEN
1689
+ RETURN ARRAY[x[1], x[0]];
1690
+ ELSE
1691
+ RETURN x;
1692
+ END IF;
1693
+ END;
1694
+ $$ LANGUAGE plpgsql;
1695
+  (0.4ms) DROP VIEW chats
1696
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1697
+ : DROP VIEW chats
1698
+  (0.2ms) DROP VIEW messages
1699
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1700
+ : DROP VIEW messages
1701
+  (2.5ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1702
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1703
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
1704
+ Migrating to CreateTestTables (20160208084226)
1705
+  (0.1ms) BEGIN
1706
+  (6.5ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1707
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1708
+  (2.3ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1709
+  (0.8ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1710
+  (1.3ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1711
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1712
+  (0.6ms) COMMIT
1713
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1714
+  (1.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
1715
+ FROM pg_constraint c
1716
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1717
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1718
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1719
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1720
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1721
+ WHERE c.contype = 'f'
1722
+ AND t1.relname = 'user_messages'
1723
+ AND t3.nspname = ANY (current_schemas(false))
1724
+ ORDER BY c.conname
1725
+ 
1726
+  (1.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
1727
+ FROM pg_constraint c
1728
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1729
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1730
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1731
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1732
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1733
+ WHERE c.contype = 'f'
1734
+ AND t1.relname = 'users'
1735
+ AND t3.nspname = ANY (current_schemas(false))
1736
+ ORDER BY c.conname
1737
+
1738
+  (10.4ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1739
+ FROM
1740
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1741
+ u1.name as sender_name, u1.id as sender_id,
1742
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1743
+ FROM users u1
1744
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1745
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1746
+ UNION
1747
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1748
+ u2.name as sender_name, u2.id as sender_id,
1749
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1750
+ FROM users u1
1751
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1752
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1753
+ ORDER BY created_at ASC
1754
+ ) AS _
1755
+  (9.5ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS id,
1756
+ sender_name, receiver_name, MIN(created_at) as created_at,
1757
+ MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1758
+ FROM messages
1759
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text, sender_name, receiver_name
1760
+  (29.6ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1761
+ BEGIN
1762
+ RETURN x + y;
1763
+ END;
1764
+ $$ LANGUAGE plpgsql;
1765
+  (8.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1766
+ BEGIN
1767
+ IF x[0] > x[1] THEN
1768
+ RETURN ARRAY[x[1], x[0]];
1769
+ ELSE
1770
+ RETURN x;
1771
+ END IF;
1772
+ END;
1773
+ $$ LANGUAGE plpgsql;
1774
+  (0.5ms) DROP VIEW chats
1775
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1776
+ : DROP VIEW chats
1777
+  (0.3ms) DROP VIEW messages
1778
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1779
+ : DROP VIEW messages
1780
+  (13.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1781
+  (7.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1782
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1783
+ Migrating to CreateTestTables (20160208084226)
1784
+  (0.1ms) BEGIN
1785
+  (17.0ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1786
+  (5.9ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1787
+  (5.4ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1788
+  (2.1ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1789
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1790
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1791
+  (5.3ms) COMMIT
1792
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1793
+  (2.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
1794
+ FROM pg_constraint c
1795
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1796
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1797
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1798
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1799
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1800
+ WHERE c.contype = 'f'
1801
+ AND t1.relname = 'user_messages'
1802
+ AND t3.nspname = ANY (current_schemas(false))
1803
+ ORDER BY c.conname
1804
+ 
1805
+  (1.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
1806
+ FROM pg_constraint c
1807
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1808
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1809
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1810
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1811
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1812
+ WHERE c.contype = 'f'
1813
+ AND t1.relname = 'users'
1814
+ AND t3.nspname = ANY (current_schemas(false))
1815
+ ORDER BY c.conname
1816
+
1817
+  (13.6ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1818
+ FROM
1819
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1820
+ u1.name as sender_name, u1.id as sender_id,
1821
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1822
+ FROM users u1
1823
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1824
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1825
+ UNION
1826
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1827
+ u2.name as sender_name, u2.id as sender_id,
1828
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1829
+ FROM users u1
1830
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1831
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1832
+ ORDER BY created_at ASC
1833
+ ) AS _
1834
+  (7.1ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS ids,
1835
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1836
+ FROM messages
1837
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text
1838
+  (2.0ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1839
+ BEGIN
1840
+ RETURN x + y;
1841
+ END;
1842
+ $$ LANGUAGE plpgsql;
1843
+  (0.5ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1844
+ BEGIN
1845
+ IF x[0] > x[1] THEN
1846
+ RETURN ARRAY[x[1], x[0]];
1847
+ ELSE
1848
+ RETURN x;
1849
+ END IF;
1850
+ END;
1851
+ $$ LANGUAGE plpgsql;
1852
+  (0.3ms) DROP VIEW chats
1853
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1854
+ : DROP VIEW chats
1855
+  (0.2ms) DROP VIEW messages
1856
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1857
+ : DROP VIEW messages
1858
+  (2.1ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1859
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1860
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1861
+ Migrating to CreateTestTables (20160208084226)
1862
+  (0.1ms) BEGIN
1863
+  (5.9ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1864
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1865
+  (2.2ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1866
+  (0.6ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1867
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1868
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1869
+  (0.6ms) COMMIT
1870
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
1871
+  (2.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
1872
+ FROM pg_constraint c
1873
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1874
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1875
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1876
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1877
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1878
+ WHERE c.contype = 'f'
1879
+ AND t1.relname = 'user_messages'
1880
+ AND t3.nspname = ANY (current_schemas(false))
1881
+ ORDER BY c.conname
1882
+ 
1883
+  (2.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
1884
+ FROM pg_constraint c
1885
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1886
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1887
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1888
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1889
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1890
+ WHERE c.contype = 'f'
1891
+ AND t1.relname = 'users'
1892
+ AND t3.nspname = ANY (current_schemas(false))
1893
+ ORDER BY c.conname
1894
+
1895
+  (8.0ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1896
+ FROM
1897
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1898
+ u1.name as sender_name, u1.id as sender_id,
1899
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1900
+ FROM users u1
1901
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1902
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1903
+ UNION
1904
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1905
+ u2.name as sender_name, u2.id as sender_id,
1906
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1907
+ FROM users u1
1908
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1909
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1910
+ ORDER BY created_at ASC
1911
+ ) AS _
1912
+  (13.8ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS ids,
1913
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1914
+ FROM messages
1915
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text
1916
+  (2.1ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
1917
+ BEGIN
1918
+ RETURN x + y;
1919
+ END;
1920
+ $$ LANGUAGE plpgsql;
1921
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
1922
+ BEGIN
1923
+ IF x[0] > x[1] THEN
1924
+ RETURN ARRAY[x[1], x[0]];
1925
+ ELSE
1926
+ RETURN x;
1927
+ END IF;
1928
+ END;
1929
+ $$ LANGUAGE plpgsql;
1930
+  (0.3ms) DROP VIEW chats
1931
+ PG::UndefinedTable: ERROR: view "chats" does not exist
1932
+ : DROP VIEW chats
1933
+  (0.2ms) DROP VIEW messages
1934
+ PG::UndefinedTable: ERROR: view "messages" does not exist
1935
+ : DROP VIEW messages
1936
+  (2.5ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
1937
+  (1.3ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
1938
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
1939
+ Migrating to CreateTestTables (20160208084226)
1940
+  (0.1ms) BEGIN
1941
+  (4.5ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1942
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
1943
+  (2.3ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
1944
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
1945
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
1946
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
1947
+  (0.6ms) COMMIT
1948
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
1949
+  (2.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
1950
+ FROM pg_constraint c
1951
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1952
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1953
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1954
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1955
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1956
+ WHERE c.contype = 'f'
1957
+ AND t1.relname = 'user_messages'
1958
+ AND t3.nspname = ANY (current_schemas(false))
1959
+ ORDER BY c.conname
1960
+ 
1961
+  (1.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
1962
+ FROM pg_constraint c
1963
+ JOIN pg_class t1 ON c.conrelid = t1.oid
1964
+ JOIN pg_class t2 ON c.confrelid = t2.oid
1965
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
1966
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
1967
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
1968
+ WHERE c.contype = 'f'
1969
+ AND t1.relname = 'users'
1970
+ AND t3.nspname = ANY (current_schemas(false))
1971
+ ORDER BY c.conname
1972
+
1973
+  (7.7ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
1974
+ FROM
1975
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
1976
+ u1.name as sender_name, u1.id as sender_id,
1977
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1978
+ FROM users u1
1979
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
1980
+ INNER JOIN users u2 ON (u2.id = um.to_id)
1981
+ UNION
1982
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
1983
+ u2.name as sender_name, u2.id as sender_id,
1984
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
1985
+ FROM users u1
1986
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
1987
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
1988
+ ORDER BY created_at ASC
1989
+ ) AS _
1990
+  (13.6ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS ids,
1991
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
1992
+ FROM messages
1993
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text
1994
+  (0.1ms) BEGIN
1995
+ User Exists (7.0ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
1996
+ SQL (6.1ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:15:47.858212"], ["updated_at", "2016-02-08 11:15:47.858212"]]
1997
+  (6.1ms) COMMIT
1998
+  (0.1ms) BEGIN
1999
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2000
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:15:47.874899"], ["updated_at", "2016-02-08 11:15:47.874899"]]
2001
+  (0.4ms) COMMIT
2002
+  (0.1ms) BEGIN
2003
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2004
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:15:47.878467"], ["updated_at", "2016-02-08 11:15:47.878467"]]
2005
+  (0.3ms) COMMIT
2006
+  (0.2ms) BEGIN
2007
+ SQL (0.4ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:15:47.897453"], ["updated_at", "2016-02-08 11:15:47.897453"]]
2008
+  (6.2ms) COMMIT
2009
+  (0.1ms) BEGIN
2010
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:15:47.906239"], ["updated_at", "2016-02-08 11:15:47.906239"]]
2011
+  (10.4ms) COMMIT
2012
+  (0.1ms) BEGIN
2013
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:15:47.919381"], ["updated_at", "2016-02-08 11:15:47.919381"]]
2014
+  (0.7ms) COMMIT
2015
+ Chat Load (0.2ms) SELECT "chats".* FROM "chats" WHERE (ids && {3})
2016
+ PG::SyntaxError: ERROR: syntax error at or near "{"
2017
+ LINE 1: SELECT "chats".* FROM "chats" WHERE (ids && {3})
2018
+ ^
2019
+ : SELECT "chats".* FROM "chats" WHERE (ids && {3})
2020
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2021
+ BEGIN
2022
+ RETURN x + y;
2023
+ END;
2024
+ $$ LANGUAGE plpgsql;
2025
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2026
+ BEGIN
2027
+ IF x[0] > x[1] THEN
2028
+ RETURN ARRAY[x[1], x[0]];
2029
+ ELSE
2030
+ RETURN x;
2031
+ END IF;
2032
+ END;
2033
+ $$ LANGUAGE plpgsql;
2034
+  (0.3ms) DROP VIEW chats
2035
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2036
+ : DROP VIEW chats
2037
+  (0.3ms) DROP VIEW messages
2038
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2039
+ : DROP VIEW messages
2040
+  (2.8ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2041
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2042
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2043
+ Migrating to CreateTestTables (20160208084226)
2044
+  (0.1ms) BEGIN
2045
+  (5.9ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2046
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2047
+  (2.3ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2048
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2049
+  (1.3ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2050
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2051
+  (0.7ms) COMMIT
2052
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2053
+  (2.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
2054
+ FROM pg_constraint c
2055
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2056
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2057
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2058
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2059
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2060
+ WHERE c.contype = 'f'
2061
+ AND t1.relname = 'user_messages'
2062
+ AND t3.nspname = ANY (current_schemas(false))
2063
+ ORDER BY c.conname
2064
+ 
2065
+  (1.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
2066
+ FROM pg_constraint c
2067
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2068
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2069
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2070
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2071
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2072
+ WHERE c.contype = 'f'
2073
+ AND t1.relname = 'users'
2074
+ AND t3.nspname = ANY (current_schemas(false))
2075
+ ORDER BY c.conname
2076
+
2077
+  (12.2ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2078
+ FROM
2079
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2080
+ u1.name as sender_name, u1.id as sender_id,
2081
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2082
+ FROM users u1
2083
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2084
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2085
+ UNION
2086
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2087
+ u2.name as sender_name, u2.id as sender_id,
2088
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2089
+ FROM users u1
2090
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2091
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2092
+ ORDER BY created_at ASC
2093
+ ) AS _
2094
+  (7.1ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS ids,
2095
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2096
+ FROM messages
2097
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text
2098
+  (0.1ms) BEGIN
2099
+ User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2100
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:15:59.897542"], ["updated_at", "2016-02-08 11:15:59.897542"]]
2101
+  (0.3ms) COMMIT
2102
+  (0.1ms) BEGIN
2103
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2104
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:15:59.900857"], ["updated_at", "2016-02-08 11:15:59.900857"]]
2105
+  (0.3ms) COMMIT
2106
+  (0.1ms) BEGIN
2107
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2108
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:15:59.903151"], ["updated_at", "2016-02-08 11:15:59.903151"]]
2109
+  (0.3ms) COMMIT
2110
+  (0.1ms) BEGIN
2111
+ SQL (0.4ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:15:59.921384"], ["updated_at", "2016-02-08 11:15:59.921384"]]
2112
+  (0.3ms) COMMIT
2113
+  (0.1ms) BEGIN
2114
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:15:59.924565"], ["updated_at", "2016-02-08 11:15:59.924565"]]
2115
+  (0.3ms) COMMIT
2116
+  (0.1ms) BEGIN
2117
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:15:59.926647"], ["updated_at", "2016-02-08 11:15:59.926647"]]
2118
+  (0.2ms) COMMIT
2119
+ Chat Load (0.3ms) SELECT "chats".* FROM "chats" WHERE (ids && '{3}')
2120
+ PG::UndefinedFunction: ERROR: operator does not exist: text && unknown
2121
+ LINE 1: SELECT "chats".* FROM "chats" WHERE (ids && '{3}')
2122
+ ^
2123
+ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
2124
+ : SELECT "chats".* FROM "chats" WHERE (ids && '{3}')
2125
+  (2.6ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2126
+ BEGIN
2127
+ RETURN x + y;
2128
+ END;
2129
+ $$ LANGUAGE plpgsql;
2130
+  (0.7ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2131
+ BEGIN
2132
+ IF x[0] > x[1] THEN
2133
+ RETURN ARRAY[x[1], x[0]];
2134
+ ELSE
2135
+ RETURN x;
2136
+ END IF;
2137
+ END;
2138
+ $$ LANGUAGE plpgsql;
2139
+  (0.3ms) DROP VIEW chats
2140
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2141
+ : DROP VIEW chats
2142
+  (0.2ms) DROP VIEW messages
2143
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2144
+ : DROP VIEW messages
2145
+  (2.2ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2146
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2147
+ ActiveRecord::SchemaMigration Load (0.5ms) SELECT "schema_migrations".* FROM "schema_migrations"
2148
+ Migrating to CreateTestTables (20160208084226)
2149
+  (0.1ms) BEGIN
2150
+  (5.2ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2151
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2152
+  (2.1ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2153
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2154
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2155
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2156
+  (0.5ms) COMMIT
2157
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
2158
+  (2.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
2159
+ FROM pg_constraint c
2160
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2161
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2162
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2163
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2164
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2165
+ WHERE c.contype = 'f'
2166
+ AND t1.relname = 'user_messages'
2167
+ AND t3.nspname = ANY (current_schemas(false))
2168
+ ORDER BY c.conname
2169
+ 
2170
+  (1.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
2171
+ FROM pg_constraint c
2172
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2173
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2174
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2175
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2176
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2177
+ WHERE c.contype = 'f'
2178
+ AND t1.relname = 'users'
2179
+ AND t3.nspname = ANY (current_schemas(false))
2180
+ ORDER BY c.conname
2181
+
2182
+  (7.7ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2183
+ FROM
2184
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2185
+ u1.name as sender_name, u1.id as sender_id,
2186
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2187
+ FROM users u1
2188
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2189
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2190
+ UNION
2191
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2192
+ u2.name as sender_name, u2.id as sender_id,
2193
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2194
+ FROM users u1
2195
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2196
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2197
+ ORDER BY created_at ASC
2198
+ ) AS _
2199
+  (9.5ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id])::text AS ids,
2200
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2201
+ FROM messages
2202
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])::text
2203
+  (0.2ms) BEGIN
2204
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2205
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:16:22.333360"], ["updated_at", "2016-02-08 11:16:22.333360"]]
2206
+  (0.7ms) COMMIT
2207
+  (0.1ms) BEGIN
2208
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2209
+ SQL (0.1ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:16:22.337516"], ["updated_at", "2016-02-08 11:16:22.337516"]]
2210
+  (0.2ms) COMMIT
2211
+  (0.0ms) BEGIN
2212
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2213
+ SQL (0.1ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:16:22.339590"], ["updated_at", "2016-02-08 11:16:22.339590"]]
2214
+  (0.3ms) COMMIT
2215
+  (0.1ms) BEGIN
2216
+ SQL (0.4ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:16:22.354237"], ["updated_at", "2016-02-08 11:16:22.354237"]]
2217
+  (0.5ms) COMMIT
2218
+  (0.1ms) BEGIN
2219
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:16:22.357293"], ["updated_at", "2016-02-08 11:16:22.357293"]]
2220
+  (0.4ms) COMMIT
2221
+  (0.1ms) BEGIN
2222
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:16:22.359512"], ["updated_at", "2016-02-08 11:16:22.359512"]]
2223
+  (0.4ms) COMMIT
2224
+ Chat Load (0.5ms) SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2225
+ PG::UndefinedFunction: ERROR: operator does not exist: unknown && text
2226
+ LINE 1: SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2227
+ ^
2228
+ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
2229
+ : SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2230
+  (1.9ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2231
+ BEGIN
2232
+ RETURN x + y;
2233
+ END;
2234
+ $$ LANGUAGE plpgsql;
2235
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2236
+ BEGIN
2237
+ IF x[0] > x[1] THEN
2238
+ RETURN ARRAY[x[1], x[0]];
2239
+ ELSE
2240
+ RETURN x;
2241
+ END IF;
2242
+ END;
2243
+ $$ LANGUAGE plpgsql;
2244
+  (0.3ms) DROP VIEW chats
2245
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2246
+ : DROP VIEW chats
2247
+  (0.2ms) DROP VIEW messages
2248
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2249
+ : DROP VIEW messages
2250
+  (2.6ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2251
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2252
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
2253
+ Migrating to CreateTestTables (20160208084226)
2254
+  (0.1ms) BEGIN
2255
+  (3.0ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2256
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2257
+  (2.3ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2258
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2259
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2260
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2261
+  (0.6ms) COMMIT
2262
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
2263
+  (1.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
2264
+ FROM pg_constraint c
2265
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2266
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2267
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2268
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2269
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2270
+ WHERE c.contype = 'f'
2271
+ AND t1.relname = 'user_messages'
2272
+ AND t3.nspname = ANY (current_schemas(false))
2273
+ ORDER BY c.conname
2274
+ 
2275
+  (2.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
2276
+ FROM pg_constraint c
2277
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2278
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2279
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2280
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2281
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2282
+ WHERE c.contype = 'f'
2283
+ AND t1.relname = 'users'
2284
+ AND t3.nspname = ANY (current_schemas(false))
2285
+ ORDER BY c.conname
2286
+
2287
+  (7.7ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2288
+ FROM
2289
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2290
+ u1.name as sender_name, u1.id as sender_id,
2291
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2292
+ FROM users u1
2293
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2294
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2295
+ UNION
2296
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2297
+ u2.name as sender_name, u2.id as sender_id,
2298
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2299
+ FROM users u1
2300
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2301
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2302
+ ORDER BY created_at ASC
2303
+ ) AS _
2304
+  (14.5ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id]) AS ids,
2305
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2306
+ FROM messages
2307
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])
2308
+  (0.1ms) BEGIN
2309
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2310
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:16:41.288012"], ["updated_at", "2016-02-08 11:16:41.288012"]]
2311
+  (0.3ms) COMMIT
2312
+  (0.1ms) BEGIN
2313
+ User Exists (1.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2314
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:16:41.295126"], ["updated_at", "2016-02-08 11:16:41.295126"]]
2315
+  (0.4ms) COMMIT
2316
+  (0.1ms) BEGIN
2317
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2318
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:16:41.297826"], ["updated_at", "2016-02-08 11:16:41.297826"]]
2319
+  (0.4ms) COMMIT
2320
+  (0.1ms) BEGIN
2321
+ SQL (0.3ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:16:41.314137"], ["updated_at", "2016-02-08 11:16:41.314137"]]
2322
+  (0.3ms) COMMIT
2323
+  (0.1ms) BEGIN
2324
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:16:41.316341"], ["updated_at", "2016-02-08 11:16:41.316341"]]
2325
+  (0.3ms) COMMIT
2326
+  (0.1ms) BEGIN
2327
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:16:41.318849"], ["updated_at", "2016-02-08 11:16:41.318849"]]
2328
+  (0.2ms) COMMIT
2329
+ Chat Load (2.2ms) SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2330
+  (2.0ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2331
+ BEGIN
2332
+ RETURN x + y;
2333
+ END;
2334
+ $$ LANGUAGE plpgsql;
2335
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2336
+ BEGIN
2337
+ IF x[0] > x[1] THEN
2338
+ RETURN ARRAY[x[1], x[0]];
2339
+ ELSE
2340
+ RETURN x;
2341
+ END IF;
2342
+ END;
2343
+ $$ LANGUAGE plpgsql;
2344
+  (0.3ms) DROP VIEW chats
2345
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2346
+ : DROP VIEW chats
2347
+  (0.3ms) DROP VIEW messages
2348
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2349
+ : DROP VIEW messages
2350
+  (2.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2351
+  (1.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2352
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2353
+ Migrating to CreateTestTables (20160208084226)
2354
+  (0.1ms) BEGIN
2355
+  (4.5ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2356
+  (0.6ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2357
+  (2.1ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2358
+  (0.6ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2359
+  (0.9ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2360
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2361
+  (0.6ms) COMMIT
2362
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2363
+  (2.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
2364
+ FROM pg_constraint c
2365
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2366
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2367
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2368
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2369
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2370
+ WHERE c.contype = 'f'
2371
+ AND t1.relname = 'user_messages'
2372
+ AND t3.nspname = ANY (current_schemas(false))
2373
+ ORDER BY c.conname
2374
+ 
2375
+  (1.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
2376
+ FROM pg_constraint c
2377
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2378
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2379
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2380
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2381
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2382
+ WHERE c.contype = 'f'
2383
+ AND t1.relname = 'users'
2384
+ AND t3.nspname = ANY (current_schemas(false))
2385
+ ORDER BY c.conname
2386
+
2387
+  (8.9ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2388
+ FROM
2389
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2390
+ u1.name as sender_name, u1.id as sender_id,
2391
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2392
+ FROM users u1
2393
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2394
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2395
+ UNION
2396
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2397
+ u2.name as sender_name, u2.id as sender_id,
2398
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2399
+ FROM users u1
2400
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2401
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2402
+ ORDER BY created_at ASC
2403
+ ) AS _
2404
+  (7.5ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id]) AS ids,
2405
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2406
+ FROM messages
2407
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])
2408
+  (0.1ms) BEGIN
2409
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2410
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:17:00.677471"], ["updated_at", "2016-02-08 11:17:00.677471"]]
2411
+  (0.4ms) COMMIT
2412
+  (0.1ms) BEGIN
2413
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2414
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:17:00.681035"], ["updated_at", "2016-02-08 11:17:00.681035"]]
2415
+  (0.3ms) COMMIT
2416
+  (0.1ms) BEGIN
2417
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2418
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:17:00.683817"], ["updated_at", "2016-02-08 11:17:00.683817"]]
2419
+  (0.3ms) COMMIT
2420
+  (0.1ms) BEGIN
2421
+ SQL (0.4ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:17:00.705119"], ["updated_at", "2016-02-08 11:17:00.705119"]]
2422
+  (0.3ms) COMMIT
2423
+  (0.1ms) BEGIN
2424
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:17:00.707797"], ["updated_at", "2016-02-08 11:17:00.707797"]]
2425
+  (0.3ms) COMMIT
2426
+  (0.1ms) BEGIN
2427
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:17:00.710075"], ["updated_at", "2016-02-08 11:17:00.710075"]]
2428
+  (0.3ms) COMMIT
2429
+ Chat Load (1.3ms) SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2430
+ Chat Load (0.8ms) SELECT "chats".* FROM "chats" WHERE ('{2}' && ids)
2431
+  (2.1ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2432
+ BEGIN
2433
+ RETURN x + y;
2434
+ END;
2435
+ $$ LANGUAGE plpgsql;
2436
+  (0.6ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2437
+ BEGIN
2438
+ IF x[0] > x[1] THEN
2439
+ RETURN ARRAY[x[1], x[0]];
2440
+ ELSE
2441
+ RETURN x;
2442
+ END IF;
2443
+ END;
2444
+ $$ LANGUAGE plpgsql;
2445
+  (0.4ms) DROP VIEW chats
2446
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2447
+ : DROP VIEW chats
2448
+  (0.2ms) DROP VIEW messages
2449
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2450
+ : DROP VIEW messages
2451
+  (2.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2452
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2453
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2454
+ Migrating to CreateTestTables (20160208084226)
2455
+  (0.1ms) BEGIN
2456
+  (3.0ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2457
+  (6.4ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2458
+  (13.5ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2459
+  (5.0ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2460
+  (0.8ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2461
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2462
+  (0.7ms) COMMIT
2463
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2464
+  (1.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
2465
+ FROM pg_constraint c
2466
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2467
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2468
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2469
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2470
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2471
+ WHERE c.contype = 'f'
2472
+ AND t1.relname = 'user_messages'
2473
+ AND t3.nspname = ANY (current_schemas(false))
2474
+ ORDER BY c.conname
2475
+ 
2476
+  (2.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
2477
+ FROM pg_constraint c
2478
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2479
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2480
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2481
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2482
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2483
+ WHERE c.contype = 'f'
2484
+ AND t1.relname = 'users'
2485
+ AND t3.nspname = ANY (current_schemas(false))
2486
+ ORDER BY c.conname
2487
+
2488
+  (7.2ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2489
+ FROM
2490
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2491
+ u1.name as sender_name, u1.id as sender_id,
2492
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2493
+ FROM users u1
2494
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2495
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2496
+ UNION
2497
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2498
+ u2.name as sender_name, u2.id as sender_id,
2499
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2500
+ FROM users u1
2501
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2502
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2503
+ ORDER BY created_at ASC
2504
+ ) AS _
2505
+  (6.9ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id]) AS ids,
2506
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2507
+ FROM messages
2508
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])
2509
+  (0.1ms) BEGIN
2510
+ User Exists (0.7ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2511
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:17:36.052301"], ["updated_at", "2016-02-08 11:17:36.052301"]]
2512
+  (0.3ms) COMMIT
2513
+  (0.1ms) BEGIN
2514
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2515
+ SQL (0.1ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:17:36.056048"], ["updated_at", "2016-02-08 11:17:36.056048"]]
2516
+  (0.3ms) COMMIT
2517
+  (0.1ms) BEGIN
2518
+ User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2519
+ SQL (0.1ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:17:36.058062"], ["updated_at", "2016-02-08 11:17:36.058062"]]
2520
+  (0.2ms) COMMIT
2521
+  (0.1ms) BEGIN
2522
+ SQL (0.5ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:17:36.074100"], ["updated_at", "2016-02-08 11:17:36.074100"]]
2523
+  (0.3ms) COMMIT
2524
+  (0.1ms) BEGIN
2525
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:17:36.077311"], ["updated_at", "2016-02-08 11:17:36.077311"]]
2526
+  (0.3ms) COMMIT
2527
+  (0.1ms) BEGIN
2528
+ SQL (0.1ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:17:36.079340"], ["updated_at", "2016-02-08 11:17:36.079340"]]
2529
+  (0.2ms) COMMIT
2530
+ Chat Load (2.3ms) SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2531
+ Chat Load (0.6ms) SELECT "chats".* FROM "chats" WHERE ('{2}' && ids)
2532
+ Chat Load (0.6ms) SELECT "chats".* FROM "chats" WHERE ('{1}' && ids)
2533
+  (24.5ms) CREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
2534
+ BEGIN
2535
+ RETURN x + y;
2536
+ END;
2537
+ $$ LANGUAGE plpgsql;
2538
+  (6.8ms) CREATE OR REPLACE FUNCTION tuple_sort (x int[]) RETURNS int[] AS $$
2539
+ BEGIN
2540
+ -- Note to myself: selection in array start at 1, not at zero !
2541
+ IF x[1]::int > x[2]::int THEN
2542
+ RETURN ARRAY[x[2], x[1]];
2543
+ ELSE
2544
+ RETURN x;
2545
+ END IF;
2546
+ END;
2547
+ $$ LANGUAGE plpgsql;
2548
+  (1.8ms) DROP VIEW chats
2549
+ PG::UndefinedTable: ERROR: view "chats" does not exist
2550
+ : DROP VIEW chats
2551
+  (0.6ms) DROP VIEW messages
2552
+ PG::UndefinedTable: ERROR: view "messages" does not exist
2553
+ : DROP VIEW messages
2554
+  (13.9ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2555
+  (10.5ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
2556
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
2557
+ Migrating to CreateTestTables (20160208084226)
2558
+  (0.1ms) BEGIN
2559
+  (14.7ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2560
+  (32.5ms) CREATE INDEX "index_users_on_name" ON "users" ("name")
2561
+  (2.7ms) CREATE TABLE "user_messages" ("id" serial primary key, "from_id" integer, "to_id" integer, "content" text, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
2562
+  (0.7ms) CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
2563
+  (0.7ms) CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
2564
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
2565
+  (12.3ms) COMMIT
2566
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
2567
+  (3.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
2568
+ FROM pg_constraint c
2569
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2570
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2571
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2572
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2573
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2574
+ WHERE c.contype = 'f'
2575
+ AND t1.relname = 'user_messages'
2576
+ AND t3.nspname = ANY (current_schemas(false))
2577
+ ORDER BY c.conname
2578
+ 
2579
+  (2.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
2580
+ FROM pg_constraint c
2581
+ JOIN pg_class t1 ON c.conrelid = t1.oid
2582
+ JOIN pg_class t2 ON c.confrelid = t2.oid
2583
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
2584
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
2585
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
2586
+ WHERE c.contype = 'f'
2587
+ AND t1.relname = 'users'
2588
+ AND t3.nspname = ANY (current_schemas(false))
2589
+ ORDER BY c.conname
2590
+
2591
+  (7.5ms) CREATE VIEW messages AS SELECT DISTINCT _.receiver_name, _.receiver_id, _.sender_name, _.sender_id, _.content, _.updated_at, _.created_at
2592
+ FROM
2593
+ (SELECT u2.name as receiver_name, u2.id as receiver_id,
2594
+ u1.name as sender_name, u1.id as sender_id,
2595
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2596
+ FROM users u1
2597
+ INNER JOIN user_messages um ON ( u1.id = um.from_id )
2598
+ INNER JOIN users u2 ON (u2.id = um.to_id)
2599
+ UNION
2600
+ SELECT u1.name as receiver_name, u1.id as receiver_id,
2601
+ u2.name as sender_name, u2.id as sender_id,
2602
+ um.content as content, um.updated_at as updated_at, um.created_at as created_at
2603
+ FROM users u1
2604
+ INNER JOIN user_messages um ON ( u1.id = um.to_id )
2605
+ INNER JOIN users u2 ON ( u2.id = um.from_id )
2606
+ ORDER BY created_at ASC
2607
+ ) AS _
2608
+  (8.2ms) CREATE VIEW chats AS SELECT tuple_sort(ARRAY[sender_id, receiver_id]) AS ids,
2609
+ MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as number_of_messages
2610
+ FROM messages
2611
+ GROUP BY tuple_sort(ARRAY[sender_id, receiver_id])
2612
+  (0.1ms) BEGIN
2613
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
2614
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Jack"], ["created_at", "2016-02-08 11:23:04.696172"], ["updated_at", "2016-02-08 11:23:04.696172"]]
2615
+  (6.1ms) COMMIT
2616
+  (0.1ms) BEGIN
2617
+ User Exists (0.4ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
2618
+ SQL (0.3ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Cindy"], ["created_at", "2016-02-08 11:23:04.705868"], ["updated_at", "2016-02-08 11:23:04.705868"]]
2619
+  (6.2ms) COMMIT
2620
+  (0.1ms) BEGIN
2621
+ User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
2622
+ SQL (0.2ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "Henry"], ["created_at", "2016-02-08 11:23:04.715957"], ["updated_at", "2016-02-08 11:23:04.715957"]]
2623
+  (4.9ms) COMMIT
2624
+  (0.1ms) BEGIN
2625
+ SQL (0.5ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 1], ["to_id", 2], ["content", "Hey, how are you?"], ["created_at", "2016-02-08 11:23:04.740357"], ["updated_at", "2016-02-08 11:23:04.740357"]]
2626
+  (5.5ms) COMMIT
2627
+  (0.1ms) BEGIN
2628
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 2], ["to_id", 1], ["content", "I'm fine, and you?"], ["created_at", "2016-02-08 11:23:04.748830"], ["updated_at", "2016-02-08 11:23:04.748830"]]
2629
+  (11.1ms) COMMIT
2630
+  (0.1ms) BEGIN
2631
+ SQL (0.2ms) INSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id" [["from_id", 3], ["to_id", 2], ["content", "Me too, I want to chat with you babe!"], ["created_at", "2016-02-08 11:23:04.762637"], ["updated_at", "2016-02-08 11:23:04.762637"]]
2632
+  (0.5ms) COMMIT
2633
+ Chat Load (1.7ms) SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
2634
+ Chat Load (0.7ms) SELECT "chats".* FROM "chats" WHERE ('{2}' && ids)
2635
+ Chat Load (0.7ms) SELECT "chats".* FROM "chats" WHERE ('{1}' && ids)