rails_db_views 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rails_db_views/database_symbol.rb +11 -2
- data/lib/rails_db_views/function.rb +1 -1
- data/lib/rails_db_views/version.rb +1 -1
- data/lib/rails_db_views/view.rb +1 -1
- data/test/dummy/app/models/chat.rb +2 -0
- data/test/dummy/app/models/message.rb +6 -0
- data/test/dummy/app/models/user.rb +18 -0
- data/test/dummy/app/models/user_message.rb +6 -0
- data/test/dummy/config/database.yml +3 -9
- data/test/dummy/db/functions/tuple_sort.sql +10 -0
- data/test/dummy/db/migrate/20160208084226_create_test_tables.rb +18 -0
- data/test/dummy/db/schema.rb +20 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/db/views/chats.sql +6 -0
- data/test/dummy/db/views/messages.sql +20 -0
- data/test/dummy/lib/tasks/test.rake +30 -0
- data/test/dummy/log/development.log +241 -0
- data/test/dummy/log/test.log +2635 -0
- metadata +29 -27
- data/test/dummy/db/functions/add.sql +0 -5
- data/test/dummy/db/views/hello_world.sql +0 -2
- data/test/dummy/db/views/required.sql +0 -1
@@ -0,0 +1,2635 @@
|
|
1
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
2
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
3
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
4
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
5
|
+
[1m[35m (0.9ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
6
|
+
[1m[36m (0.3ms)[0m [1mselect sqlite_version(*)[0m
|
7
|
+
[1m[35m (0.8ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
8
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
9
|
+
Migrating to CreateTestTables (20160208084226)
|
10
|
+
[1m[35m (0.1ms)[0m begin transaction
|
11
|
+
[1m[36m (0.4ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
12
|
+
[1m[35m (0.2ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
13
|
+
[1m[36m (0.4ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
14
|
+
[1m[35m (0.5ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
15
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
23
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
24
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
25
|
+
[1m[35m (0.6ms)[0m commit transaction
|
26
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
27
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
43
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
90
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
91
|
+
[1m[35m (1.8ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
92
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
93
|
+
[1m[35m (0.8ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
94
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
95
|
+
Migrating to CreateTestTables (20160208084226)
|
96
|
+
[1m[35m (0.1ms)[0m begin transaction
|
97
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
98
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
99
|
+
[1m[36m (0.1ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
100
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
101
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
109
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
110
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
111
|
+
[1m[35m (2.1ms)[0m commit transaction
|
112
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
113
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
129
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
174
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
175
|
+
[1m[35m (1.8ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
176
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
177
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
178
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
179
|
+
Migrating to CreateTestTables (20160208084226)
|
180
|
+
[1m[35m (0.1ms)[0m begin transaction
|
181
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
182
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
183
|
+
[1m[36m (0.2ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
184
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
185
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
193
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
194
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
195
|
+
[1m[35m (2.1ms)[0m commit transaction
|
196
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
197
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
213
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
258
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
259
|
+
[1m[35m (1.6ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
260
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
261
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
262
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
263
|
+
Migrating to CreateTestTables (20160208084226)
|
264
|
+
[1m[35m (0.0ms)[0m begin transaction
|
265
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
266
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
267
|
+
[1m[36m (0.1ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
268
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
269
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
277
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
278
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
279
|
+
[1m[35m (1.0ms)[0m commit transaction
|
280
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
281
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
297
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
342
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
343
|
+
[1m[35m (1.7ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
344
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
345
|
+
[1m[35m (0.8ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
346
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
347
|
+
Migrating to CreateTestTables (20160208084226)
|
348
|
+
[1m[35m (0.0ms)[0m begin transaction
|
349
|
+
[1m[36m (0.4ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
350
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
351
|
+
[1m[36m (0.1ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
352
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
353
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
361
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
362
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
363
|
+
[1m[35m (0.8ms)[0m commit transaction
|
364
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
365
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
381
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW messages[0m
|
424
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
425
|
+
[1m[35m (2.1ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
426
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
427
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
428
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
429
|
+
Migrating to CreateTestTables (20160208084226)
|
430
|
+
[1m[35m (0.1ms)[0m begin transaction
|
431
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime, "updated_at" datetime) [0m
|
432
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
433
|
+
[1m[36m (0.2ms)[0m [1mCREATE TABLE "user_messages" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "from_id" integer, "to_id" integer, "content" text, "created_at" datetime, "updated_at" datetime) [0m
|
434
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
435
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
443
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
444
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
445
|
+
[1m[35m (0.8ms)[0m commit transaction
|
446
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
447
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
463
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
502
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
503
|
+
[1m[35m (1.5ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
504
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
505
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
506
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
507
|
+
Migrating to CreateTestTables (20160208084226)
|
508
|
+
[1m[35m (0.0ms)[0m begin transaction
|
509
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
510
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
511
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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) [0m
|
512
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
513
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
521
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
522
|
+
[1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
523
|
+
[1m[35m (0.9ms)[0m commit transaction
|
524
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
525
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
541
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
580
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
581
|
+
[1m[35m (1.9ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
582
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
583
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
584
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
585
|
+
Migrating to CreateTestTables (20160208084226)
|
586
|
+
[1m[35m (0.0ms)[0m begin transaction
|
587
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
588
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
589
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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) [0m
|
590
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
591
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
599
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
600
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
601
|
+
[1m[35m (0.8ms)[0m commit transaction
|
602
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
603
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
619
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
658
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
659
|
+
[1m[35m (1.8ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
660
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
661
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
662
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
663
|
+
Migrating to CreateTestTables (20160208084226)
|
664
|
+
[1m[35m (0.1ms)[0m begin transaction
|
665
|
+
[1m[36m (0.4ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
666
|
+
[1m[35m (0.2ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
667
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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) [0m
|
668
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
669
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
677
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
678
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
679
|
+
[1m[35m (0.8ms)[0m commit transaction
|
680
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
681
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
697
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
736
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
737
|
+
[1m[35m (1.6ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
738
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
739
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
740
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
741
|
+
Migrating to CreateTestTables (20160208084226)
|
742
|
+
[1m[35m (0.0ms)[0m begin transaction
|
743
|
+
[1m[36m (0.3ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
744
|
+
[1m[35m (0.3ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
745
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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) [0m
|
746
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
747
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
755
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
756
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
757
|
+
[1m[35m (0.8ms)[0m commit transaction
|
758
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
759
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
775
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW messages[0m
|
814
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
815
|
+
[1m[35m (2.0ms)[0m CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
|
816
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
817
|
+
[1m[35m (1.2ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
818
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
819
|
+
Migrating to CreateTestTables (20160208084226)
|
820
|
+
[1m[35m (0.0ms)[0m begin transaction
|
821
|
+
[1m[36m (0.4ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) [0m
|
822
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
823
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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) [0m
|
824
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
825
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
833
|
+
[1m[35m (0.1ms)[0m CREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")
|
834
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES (?)[0m [["version", "20160208084226"]]
|
835
|
+
[1m[35m (0.7ms)[0m commit transaction
|
836
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.1ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
837
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
853
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.9ms)[0m [1mCREATE 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[0m
|
876
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
877
|
+
SQLite3::SQLException: no such view: chats: DROP VIEW chats
|
878
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
879
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
880
|
+
[1m[36m (1.7ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL) [0m
|
881
|
+
[1m[35m (0.1ms)[0m select sqlite_version(*)
|
882
|
+
[1m[36m (0.9ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
883
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
884
|
+
Migrating to CreateTestTables (20160208084226)
|
885
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
886
|
+
[1m[35m (0.2ms)[0m CREATE EXTENSION intarray;
|
887
|
+
SQLite3::SQLException: near "EXTENSION": syntax error: CREATE EXTENSION intarray;
|
888
|
+
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
|
889
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
890
|
+
SQLite3::SQLException: no such view: chats: DROP VIEW chats
|
891
|
+
[1m[35m (0.1ms)[0m DROP VIEW messages
|
892
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
893
|
+
[1m[36m (1.6ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL) [0m
|
894
|
+
[1m[35m (0.1ms)[0m select sqlite_version(*)
|
895
|
+
[1m[36m (1.0ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
896
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
897
|
+
Migrating to CreateTestTables (20160208084226)
|
898
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
899
|
+
[1m[35m (0.3ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
|
900
|
+
[1m[36m (0.1ms)[0m [1mCREATE INDEX "index_users_on_name" ON "users" ("name")[0m
|
901
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")[0m
|
903
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
912
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
|
913
|
+
[1m[36m (0.7ms)[0m [1mcommit transaction[0m
|
914
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
915
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
923
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
939
|
+
[1m[35m (1.4ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
965
|
+
SQLite3::SQLException: no such view: chats: DROP VIEW chats
|
966
|
+
[1m[35m (0.1ms)[0m DROP VIEW messages
|
967
|
+
SQLite3::SQLException: no such view: messages: DROP VIEW messages
|
968
|
+
[1m[36m (1.9ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL) [0m
|
969
|
+
[1m[35m (0.1ms)[0m select sqlite_version(*)
|
970
|
+
[1m[36m (1.0ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
971
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
972
|
+
Migrating to CreateTestTables (20160208084226)
|
973
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
974
|
+
[1m[35m (0.3ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
|
975
|
+
[1m[36m (0.1ms)[0m [1mCREATE INDEX "index_users_on_name" ON "users" ("name")[0m
|
976
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")[0m
|
978
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
987
|
+
[1m[35mSQL (0.1ms)[0m INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20160208084226"]]
|
988
|
+
[1m[36m (2.6ms)[0m [1mcommit transaction[0m
|
989
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
990
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
998
|
+
[1m[35m (0.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1m 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
|
+
[0m
|
1014
|
+
[1m[35m (0.9ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCREATE 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[0m
|
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
|
+
[1m[36m (9.4ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1042
|
+
BEGIN
|
1043
|
+
RETURN x + y;
|
1044
|
+
END;
|
1045
|
+
$$ LANGUAGE plpgsql;[0m
|
1046
|
+
[1m[35m (1.1ms)[0m 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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1068
|
+
BEGIN
|
1069
|
+
RETURN x + y;
|
1070
|
+
END;
|
1071
|
+
$$ LANGUAGE plpgsql;[0m
|
1072
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (1.8ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1094
|
+
BEGIN
|
1095
|
+
RETURN x + y;
|
1096
|
+
END;
|
1097
|
+
$$ LANGUAGE plpgsql;[0m
|
1098
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (2.1ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1120
|
+
BEGIN
|
1121
|
+
RETURN x + y;
|
1122
|
+
END;
|
1123
|
+
$$ LANGUAGE plpgsql;[0m
|
1124
|
+
[1m[35m (0.7ms)[0m 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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1146
|
+
BEGIN
|
1147
|
+
RETURN x + y;
|
1148
|
+
END;
|
1149
|
+
$$ LANGUAGE plpgsql;[0m
|
1150
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (1.3ms)[0m [1mDROP VIEW chats[0m
|
1160
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1161
|
+
: DROP VIEW chats
|
1162
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1163
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1164
|
+
: DROP VIEW messages
|
1165
|
+
[1m[36m (7.3ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1166
|
+
[1m[35m (5.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1167
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1168
|
+
Migrating to CreateTestTables (20160208084226)
|
1169
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1170
|
+
[1m[36m (3.8ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1171
|
+
[1m[35m (0.9ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1172
|
+
[1m[36m (2.4ms)[0m [1mCREATE 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) [0m
|
1173
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1174
|
+
[1m[36m (0.9ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1175
|
+
[1m[35mSQL (1.0ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1176
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
1177
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1178
|
+
[1m[36m (2.4ms)[0m [1mSELECT 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
|
+
[0m
|
1190
|
+
[1m[35m (1.7ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCREATE 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
|
+
)[0m
|
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
|
+
[1m[36m (2.1ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1241
|
+
BEGIN
|
1242
|
+
RETURN x + y;
|
1243
|
+
END;
|
1244
|
+
$$ LANGUAGE plpgsql;[0m
|
1245
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
1255
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1256
|
+
: DROP VIEW chats
|
1257
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1258
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1259
|
+
: DROP VIEW messages
|
1260
|
+
[1m[36m (2.3ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1261
|
+
[1m[35m (0.7ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1262
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1263
|
+
Migrating to CreateTestTables (20160208084226)
|
1264
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1265
|
+
[1m[36m (3.0ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1266
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1267
|
+
[1m[36m (2.3ms)[0m [1mCREATE 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) [0m
|
1268
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1269
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1270
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1271
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1272
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1273
|
+
[1m[36m (1.8ms)[0m [1mSELECT 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
|
+
[0m
|
1285
|
+
[1m[35m (1.5ms)[0m 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
|
+
[1m[36m (0.6ms)[0m [1mCREATE 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 _[0m
|
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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1335
|
+
BEGIN
|
1336
|
+
RETURN x + y;
|
1337
|
+
END;
|
1338
|
+
$$ LANGUAGE plpgsql;[0m
|
1339
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW chats[0m
|
1349
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1350
|
+
: DROP VIEW chats
|
1351
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1352
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1353
|
+
: DROP VIEW messages
|
1354
|
+
[1m[36m (2.3ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1355
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1356
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1357
|
+
Migrating to CreateTestTables (20160208084226)
|
1358
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1359
|
+
[1m[36m (6.4ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1360
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1361
|
+
[1m[36m (2.2ms)[0m [1mCREATE 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) [0m
|
1362
|
+
[1m[35m (0.5ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1363
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1364
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1365
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1366
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1367
|
+
[1m[36m (2.3ms)[0m [1mSELECT 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
|
+
[0m
|
1379
|
+
[1m[35m (1.6ms)[0m 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
|
+
[1m[36m (7.5ms)[0m [1mCREATE 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 _[0m
|
1408
|
+
[1m[35m (0.3ms)[0m 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
|
+
[1m[36m (2.2ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1422
|
+
BEGIN
|
1423
|
+
RETURN x + y;
|
1424
|
+
END;
|
1425
|
+
$$ LANGUAGE plpgsql;[0m
|
1426
|
+
[1m[35m (0.7ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW chats[0m
|
1436
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1437
|
+
: DROP VIEW chats
|
1438
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1439
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1440
|
+
: DROP VIEW messages
|
1441
|
+
[1m[36m (2.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1442
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1443
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1444
|
+
Migrating to CreateTestTables (20160208084226)
|
1445
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1446
|
+
[1m[36m (2.8ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1447
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1448
|
+
[1m[36m (2.2ms)[0m [1mCREATE 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) [0m
|
1449
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1450
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1451
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1452
|
+
[1m[36m (0.8ms)[0m [1mCOMMIT[0m
|
1453
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.7ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1454
|
+
[1m[36m (2.1ms)[0m [1mSELECT 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
|
+
[0m
|
1466
|
+
[1m[35m (1.7ms)[0m 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
|
+
[1m[36m (0.6ms)[0m [1mCREATE 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 _[0m
|
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
|
+
[1m[36m (2.7ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1516
|
+
BEGIN
|
1517
|
+
RETURN x + y;
|
1518
|
+
END;
|
1519
|
+
$$ LANGUAGE plpgsql;[0m
|
1520
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW chats[0m
|
1530
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1531
|
+
: DROP VIEW chats
|
1532
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1533
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1534
|
+
: DROP VIEW messages
|
1535
|
+
[1m[36m (2.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1536
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1537
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1538
|
+
Migrating to CreateTestTables (20160208084226)
|
1539
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1540
|
+
[1m[36m (5.6ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1541
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1542
|
+
[1m[36m (2.4ms)[0m [1mCREATE 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) [0m
|
1543
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1544
|
+
[1m[36m (0.6ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1545
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1546
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1547
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1548
|
+
[1m[36m (1.9ms)[0m [1mSELECT 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
|
+
[0m
|
1560
|
+
[1m[35m (1.4ms)[0m 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
|
+
[1m[36m (7.6ms)[0m [1mCREATE 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 _[0m
|
1589
|
+
[1m[35m (0.3ms)[0m 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
|
+
[1m[36m (2.1ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1603
|
+
BEGIN
|
1604
|
+
RETURN x + y;
|
1605
|
+
END;
|
1606
|
+
$$ LANGUAGE plpgsql;[0m
|
1607
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
1617
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1618
|
+
: DROP VIEW chats
|
1619
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1620
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1621
|
+
: DROP VIEW messages
|
1622
|
+
[1m[36m (2.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1623
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1624
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1625
|
+
Migrating to CreateTestTables (20160208084226)
|
1626
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1627
|
+
[1m[36m (5.9ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1628
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1629
|
+
[1m[36m (2.4ms)[0m [1mCREATE 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) [0m
|
1630
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1631
|
+
[1m[36m (0.6ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1632
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1633
|
+
[1m[36m (0.5ms)[0m [1mCOMMIT[0m
|
1634
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1635
|
+
[1m[36m (1.7ms)[0m [1mSELECT 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
|
+
[0m
|
1647
|
+
[1m[35m (1.7ms)[0m 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
|
+
[1m[36m (7.8ms)[0m [1mCREATE 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 _[0m
|
1676
|
+
[1m[35m (15.1ms)[0m 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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1682
|
+
BEGIN
|
1683
|
+
RETURN x + y;
|
1684
|
+
END;
|
1685
|
+
$$ LANGUAGE plpgsql;[0m
|
1686
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW chats[0m
|
1696
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1697
|
+
: DROP VIEW chats
|
1698
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1699
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1700
|
+
: DROP VIEW messages
|
1701
|
+
[1m[36m (2.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1702
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1703
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1704
|
+
Migrating to CreateTestTables (20160208084226)
|
1705
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1706
|
+
[1m[36m (6.5ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1707
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1708
|
+
[1m[36m (2.3ms)[0m [1mCREATE 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) [0m
|
1709
|
+
[1m[35m (0.8ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1710
|
+
[1m[36m (1.3ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1711
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1712
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1713
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1714
|
+
[1m[36m (1.8ms)[0m [1mSELECT 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
|
+
[0m
|
1726
|
+
[1m[35m (1.6ms)[0m 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
|
+
[1m[36m (10.4ms)[0m [1mCREATE 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 _[0m
|
1755
|
+
[1m[35m (9.5ms)[0m 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
|
+
[1m[36m (29.6ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1761
|
+
BEGIN
|
1762
|
+
RETURN x + y;
|
1763
|
+
END;
|
1764
|
+
$$ LANGUAGE plpgsql;[0m
|
1765
|
+
[1m[35m (8.6ms)[0m 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
|
+
[1m[36m (0.5ms)[0m [1mDROP VIEW chats[0m
|
1775
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1776
|
+
: DROP VIEW chats
|
1777
|
+
[1m[35m (0.3ms)[0m DROP VIEW messages
|
1778
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1779
|
+
: DROP VIEW messages
|
1780
|
+
[1m[36m (13.4ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1781
|
+
[1m[35m (7.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1782
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1783
|
+
Migrating to CreateTestTables (20160208084226)
|
1784
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1785
|
+
[1m[36m (17.0ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1786
|
+
[1m[35m (5.9ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1787
|
+
[1m[36m (5.4ms)[0m [1mCREATE 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) [0m
|
1788
|
+
[1m[35m (2.1ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1789
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1790
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1791
|
+
[1m[36m (5.3ms)[0m [1mCOMMIT[0m
|
1792
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1793
|
+
[1m[36m (2.4ms)[0m [1mSELECT 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
|
+
[0m
|
1805
|
+
[1m[35m (1.5ms)[0m 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
|
+
[1m[36m (13.6ms)[0m [1mCREATE 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 _[0m
|
1834
|
+
[1m[35m (7.1ms)[0m 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
|
+
[1m[36m (2.0ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1839
|
+
BEGIN
|
1840
|
+
RETURN x + y;
|
1841
|
+
END;
|
1842
|
+
$$ LANGUAGE plpgsql;[0m
|
1843
|
+
[1m[35m (0.5ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
1853
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1854
|
+
: DROP VIEW chats
|
1855
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1856
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1857
|
+
: DROP VIEW messages
|
1858
|
+
[1m[36m (2.1ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1859
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1860
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1861
|
+
Migrating to CreateTestTables (20160208084226)
|
1862
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1863
|
+
[1m[36m (5.9ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1864
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1865
|
+
[1m[36m (2.2ms)[0m [1mCREATE 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) [0m
|
1866
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1867
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1868
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1869
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1870
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1871
|
+
[1m[36m (2.1ms)[0m [1mSELECT 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
|
+
[0m
|
1883
|
+
[1m[35m (2.2ms)[0m 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
|
+
[1m[36m (8.0ms)[0m [1mCREATE 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 _[0m
|
1912
|
+
[1m[35m (13.8ms)[0m 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
|
+
[1m[36m (2.1ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
1917
|
+
BEGIN
|
1918
|
+
RETURN x + y;
|
1919
|
+
END;
|
1920
|
+
$$ LANGUAGE plpgsql;[0m
|
1921
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
1931
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
1932
|
+
: DROP VIEW chats
|
1933
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
1934
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
1935
|
+
: DROP VIEW messages
|
1936
|
+
[1m[36m (2.5ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
1937
|
+
[1m[35m (1.3ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1938
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
1939
|
+
Migrating to CreateTestTables (20160208084226)
|
1940
|
+
[1m[35m (0.1ms)[0m BEGIN
|
1941
|
+
[1m[36m (4.5ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
1942
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
1943
|
+
[1m[36m (2.3ms)[0m [1mCREATE 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) [0m
|
1944
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
1945
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
1946
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
1947
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
1948
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
1949
|
+
[1m[36m (2.3ms)[0m [1mSELECT 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
|
+
[0m
|
1961
|
+
[1m[35m (1.4ms)[0m 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
|
+
[1m[36m (7.7ms)[0m [1mCREATE 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 _[0m
|
1990
|
+
[1m[35m (13.6ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
1995
|
+
[1m[35mUser Exists (7.0ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
1996
|
+
[1m[36mSQL (6.1ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:15:47.858212"], ["updated_at", "2016-02-08 11:15:47.858212"]]
|
1997
|
+
[1m[35m (6.1ms)[0m COMMIT
|
1998
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
1999
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2000
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:15:47.874899"], ["updated_at", "2016-02-08 11:15:47.874899"]]
|
2001
|
+
[1m[35m (0.4ms)[0m COMMIT
|
2002
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2003
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2004
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:15:47.878467"], ["updated_at", "2016-02-08 11:15:47.878467"]]
|
2005
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2006
|
+
[1m[36m (0.2ms)[0m [1mBEGIN[0m
|
2007
|
+
[1m[35mSQL (0.4ms)[0m 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
|
+
[1m[36m (6.2ms)[0m [1mCOMMIT[0m
|
2009
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2010
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (10.4ms)[0m COMMIT
|
2012
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2013
|
+
[1m[35mSQL (0.2ms)[0m 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
|
+
[1m[36m (0.7ms)[0m [1mCOMMIT[0m
|
2015
|
+
[1m[35mChat Load (0.2ms)[0m 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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2021
|
+
BEGIN
|
2022
|
+
RETURN x + y;
|
2023
|
+
END;
|
2024
|
+
$$ LANGUAGE plpgsql;[0m
|
2025
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
2035
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2036
|
+
: DROP VIEW chats
|
2037
|
+
[1m[35m (0.3ms)[0m DROP VIEW messages
|
2038
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2039
|
+
: DROP VIEW messages
|
2040
|
+
[1m[36m (2.8ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2041
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2042
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2043
|
+
Migrating to CreateTestTables (20160208084226)
|
2044
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2045
|
+
[1m[36m (5.9ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2046
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2047
|
+
[1m[36m (2.3ms)[0m [1mCREATE 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) [0m
|
2048
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2049
|
+
[1m[36m (1.3ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2050
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2051
|
+
[1m[36m (0.7ms)[0m [1mCOMMIT[0m
|
2052
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2053
|
+
[1m[36m (2.1ms)[0m [1mSELECT 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
|
+
[0m
|
2065
|
+
[1m[35m (1.4ms)[0m 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
|
+
[1m[36m (12.2ms)[0m [1mCREATE 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 _[0m
|
2094
|
+
[1m[35m (7.1ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2099
|
+
[1m[35mUser Exists (0.8ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2100
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:15:59.897542"], ["updated_at", "2016-02-08 11:15:59.897542"]]
|
2101
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2102
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2103
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2104
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:15:59.900857"], ["updated_at", "2016-02-08 11:15:59.900857"]]
|
2105
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2106
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2107
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2108
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:15:59.903151"], ["updated_at", "2016-02-08 11:15:59.903151"]]
|
2109
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2110
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2111
|
+
[1m[35mSQL (0.4ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
2113
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2114
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2116
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2117
|
+
[1m[35mSQL (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCOMMIT[0m
|
2119
|
+
[1m[35mChat Load (0.3ms)[0m 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
|
+
[1m[36m (2.6ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2126
|
+
BEGIN
|
2127
|
+
RETURN x + y;
|
2128
|
+
END;
|
2129
|
+
$$ LANGUAGE plpgsql;[0m
|
2130
|
+
[1m[35m (0.7ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
2140
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2141
|
+
: DROP VIEW chats
|
2142
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
2143
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2144
|
+
: DROP VIEW messages
|
2145
|
+
[1m[36m (2.2ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2146
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2147
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.5ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2148
|
+
Migrating to CreateTestTables (20160208084226)
|
2149
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2150
|
+
[1m[36m (5.2ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2151
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2152
|
+
[1m[36m (2.1ms)[0m [1mCREATE 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) [0m
|
2153
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2154
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2155
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2156
|
+
[1m[36m (0.5ms)[0m [1mCOMMIT[0m
|
2157
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.3ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2158
|
+
[1m[36m (2.0ms)[0m [1mSELECT 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
|
+
[0m
|
2170
|
+
[1m[35m (1.5ms)[0m 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
|
+
[1m[36m (7.7ms)[0m [1mCREATE 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 _[0m
|
2199
|
+
[1m[35m (9.5ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mBEGIN[0m
|
2204
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2205
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:16:22.333360"], ["updated_at", "2016-02-08 11:16:22.333360"]]
|
2206
|
+
[1m[35m (0.7ms)[0m COMMIT
|
2207
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2208
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2209
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:16:22.337516"], ["updated_at", "2016-02-08 11:16:22.337516"]]
|
2210
|
+
[1m[35m (0.2ms)[0m COMMIT
|
2211
|
+
[1m[36m (0.0ms)[0m [1mBEGIN[0m
|
2212
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2213
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:16:22.339590"], ["updated_at", "2016-02-08 11:16:22.339590"]]
|
2214
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2215
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2216
|
+
[1m[35mSQL (0.4ms)[0m 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
|
+
[1m[36m (0.5ms)[0m [1mCOMMIT[0m
|
2218
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2219
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (0.4ms)[0m COMMIT
|
2221
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2222
|
+
[1m[35mSQL (0.1ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mCOMMIT[0m
|
2224
|
+
[1m[35mChat Load (0.5ms)[0m 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
|
+
[1m[36m (1.9ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2231
|
+
BEGIN
|
2232
|
+
RETURN x + y;
|
2233
|
+
END;
|
2234
|
+
$$ LANGUAGE plpgsql;[0m
|
2235
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
2245
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2246
|
+
: DROP VIEW chats
|
2247
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
2248
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2249
|
+
: DROP VIEW messages
|
2250
|
+
[1m[36m (2.6ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2251
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2252
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2253
|
+
Migrating to CreateTestTables (20160208084226)
|
2254
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2255
|
+
[1m[36m (3.0ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2256
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2257
|
+
[1m[36m (2.3ms)[0m [1mCREATE 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) [0m
|
2258
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2259
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2260
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2261
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
2262
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.1ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2263
|
+
[1m[36m (1.9ms)[0m [1mSELECT 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
|
+
[0m
|
2275
|
+
[1m[35m (2.0ms)[0m 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
|
+
[1m[36m (7.7ms)[0m [1mCREATE 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 _[0m
|
2304
|
+
[1m[35m (14.5ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2309
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2310
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:16:41.288012"], ["updated_at", "2016-02-08 11:16:41.288012"]]
|
2311
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2312
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2313
|
+
[1m[35mUser Exists (1.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2314
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:16:41.295126"], ["updated_at", "2016-02-08 11:16:41.295126"]]
|
2315
|
+
[1m[35m (0.4ms)[0m COMMIT
|
2316
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2317
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2318
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:16:41.297826"], ["updated_at", "2016-02-08 11:16:41.297826"]]
|
2319
|
+
[1m[35m (0.4ms)[0m COMMIT
|
2320
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2321
|
+
[1m[35mSQL (0.3ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
2323
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2324
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2326
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2327
|
+
[1m[35mSQL (0.2ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCOMMIT[0m
|
2329
|
+
[1m[35mChat Load (2.2ms)[0m SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
|
2330
|
+
[1m[36m (2.0ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2331
|
+
BEGIN
|
2332
|
+
RETURN x + y;
|
2333
|
+
END;
|
2334
|
+
$$ LANGUAGE plpgsql;[0m
|
2335
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mDROP VIEW chats[0m
|
2345
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2346
|
+
: DROP VIEW chats
|
2347
|
+
[1m[35m (0.3ms)[0m DROP VIEW messages
|
2348
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2349
|
+
: DROP VIEW messages
|
2350
|
+
[1m[36m (2.4ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2351
|
+
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2352
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2353
|
+
Migrating to CreateTestTables (20160208084226)
|
2354
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2355
|
+
[1m[36m (4.5ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2356
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2357
|
+
[1m[36m (2.1ms)[0m [1mCREATE 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) [0m
|
2358
|
+
[1m[35m (0.6ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2359
|
+
[1m[36m (0.9ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2360
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2361
|
+
[1m[36m (0.6ms)[0m [1mCOMMIT[0m
|
2362
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2363
|
+
[1m[36m (2.4ms)[0m [1mSELECT 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
|
+
[0m
|
2375
|
+
[1m[35m (1.7ms)[0m 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
|
+
[1m[36m (8.9ms)[0m [1mCREATE 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 _[0m
|
2404
|
+
[1m[35m (7.5ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2409
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2410
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:17:00.677471"], ["updated_at", "2016-02-08 11:17:00.677471"]]
|
2411
|
+
[1m[35m (0.4ms)[0m COMMIT
|
2412
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2413
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2414
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:17:00.681035"], ["updated_at", "2016-02-08 11:17:00.681035"]]
|
2415
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2416
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2417
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2418
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:17:00.683817"], ["updated_at", "2016-02-08 11:17:00.683817"]]
|
2419
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2420
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2421
|
+
[1m[35mSQL (0.4ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
2423
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2424
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2426
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2427
|
+
[1m[35mSQL (0.2ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
2429
|
+
[1m[35mChat Load (1.3ms)[0m SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
|
2430
|
+
[1m[36mChat Load (0.8ms)[0m [1mSELECT "chats".* FROM "chats" WHERE ('{2}' && ids)[0m
|
2431
|
+
[1m[36m (2.1ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2432
|
+
BEGIN
|
2433
|
+
RETURN x + y;
|
2434
|
+
END;
|
2435
|
+
$$ LANGUAGE plpgsql;[0m
|
2436
|
+
[1m[35m (0.6ms)[0m 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
|
+
[1m[36m (0.4ms)[0m [1mDROP VIEW chats[0m
|
2446
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2447
|
+
: DROP VIEW chats
|
2448
|
+
[1m[35m (0.2ms)[0m DROP VIEW messages
|
2449
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2450
|
+
: DROP VIEW messages
|
2451
|
+
[1m[36m (2.4ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2452
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2453
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.2ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2454
|
+
Migrating to CreateTestTables (20160208084226)
|
2455
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2456
|
+
[1m[36m (3.0ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2457
|
+
[1m[35m (6.4ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2458
|
+
[1m[36m (13.5ms)[0m [1mCREATE 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) [0m
|
2459
|
+
[1m[35m (5.0ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2460
|
+
[1m[36m (0.8ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2461
|
+
[1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2462
|
+
[1m[36m (0.7ms)[0m [1mCOMMIT[0m
|
2463
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2464
|
+
[1m[36m (1.8ms)[0m [1mSELECT 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
|
+
[0m
|
2476
|
+
[1m[35m (2.1ms)[0m 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
|
+
[1m[36m (7.2ms)[0m [1mCREATE 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 _[0m
|
2505
|
+
[1m[35m (6.9ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2510
|
+
[1m[35mUser Exists (0.7ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2511
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:17:36.052301"], ["updated_at", "2016-02-08 11:17:36.052301"]]
|
2512
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2513
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2514
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2515
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:17:36.056048"], ["updated_at", "2016-02-08 11:17:36.056048"]]
|
2516
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2517
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2518
|
+
[1m[35mUser Exists (0.2ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2519
|
+
[1m[36mSQL (0.1ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:17:36.058062"], ["updated_at", "2016-02-08 11:17:36.058062"]]
|
2520
|
+
[1m[35m (0.2ms)[0m COMMIT
|
2521
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2522
|
+
[1m[35mSQL (0.5ms)[0m 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
|
+
[1m[36m (0.3ms)[0m [1mCOMMIT[0m
|
2524
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2525
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (0.3ms)[0m COMMIT
|
2527
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2528
|
+
[1m[35mSQL (0.1ms)[0m 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
|
+
[1m[36m (0.2ms)[0m [1mCOMMIT[0m
|
2530
|
+
[1m[35mChat Load (2.3ms)[0m SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
|
2531
|
+
[1m[36mChat Load (0.6ms)[0m [1mSELECT "chats".* FROM "chats" WHERE ('{2}' && ids)[0m
|
2532
|
+
[1m[35mChat Load (0.6ms)[0m SELECT "chats".* FROM "chats" WHERE ('{1}' && ids)
|
2533
|
+
[1m[36m (24.5ms)[0m [1mCREATE OR REPLACE FUNCTION add (x integer, y integer) RETURNS integer AS $$
|
2534
|
+
BEGIN
|
2535
|
+
RETURN x + y;
|
2536
|
+
END;
|
2537
|
+
$$ LANGUAGE plpgsql;[0m
|
2538
|
+
[1m[35m (6.8ms)[0m 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
|
+
[1m[36m (1.8ms)[0m [1mDROP VIEW chats[0m
|
2549
|
+
PG::UndefinedTable: ERROR: view "chats" does not exist
|
2550
|
+
: DROP VIEW chats
|
2551
|
+
[1m[35m (0.6ms)[0m DROP VIEW messages
|
2552
|
+
PG::UndefinedTable: ERROR: view "messages" does not exist
|
2553
|
+
: DROP VIEW messages
|
2554
|
+
[1m[36m (13.9ms)[0m [1mCREATE TABLE "schema_migrations" ("version" character varying NOT NULL) [0m
|
2555
|
+
[1m[35m (10.5ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
2556
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.3ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
2557
|
+
Migrating to CreateTestTables (20160208084226)
|
2558
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2559
|
+
[1m[36m (14.7ms)[0m [1mCREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) [0m
|
2560
|
+
[1m[35m (32.5ms)[0m CREATE INDEX "index_users_on_name" ON "users" ("name")
|
2561
|
+
[1m[36m (2.7ms)[0m [1mCREATE 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) [0m
|
2562
|
+
[1m[35m (0.7ms)[0m CREATE INDEX "index_user_messages_on_from_id" ON "user_messages" ("from_id")
|
2563
|
+
[1m[36m (0.7ms)[0m [1mCREATE INDEX "index_user_messages_on_to_id" ON "user_messages" ("to_id")[0m
|
2564
|
+
[1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20160208084226"]]
|
2565
|
+
[1m[36m (12.3ms)[0m [1mCOMMIT[0m
|
2566
|
+
[1m[35mActiveRecord::SchemaMigration Load (0.2ms)[0m SELECT "schema_migrations".* FROM "schema_migrations"
|
2567
|
+
[1m[36m (3.5ms)[0m [1mSELECT 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
|
+
[0m
|
2579
|
+
[1m[35m (2.3ms)[0m 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
|
+
[1m[36m (7.5ms)[0m [1mCREATE 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 _[0m
|
2608
|
+
[1m[35m (8.2ms)[0m 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
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2613
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Jack' LIMIT 1
|
2614
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Jack"], ["created_at", "2016-02-08 11:23:04.696172"], ["updated_at", "2016-02-08 11:23:04.696172"]]
|
2615
|
+
[1m[35m (6.1ms)[0m COMMIT
|
2616
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2617
|
+
[1m[35mUser Exists (0.4ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Cindy' LIMIT 1
|
2618
|
+
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Cindy"], ["created_at", "2016-02-08 11:23:04.705868"], ["updated_at", "2016-02-08 11:23:04.705868"]]
|
2619
|
+
[1m[35m (6.2ms)[0m COMMIT
|
2620
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2621
|
+
[1m[35mUser Exists (0.3ms)[0m SELECT 1 AS one FROM "users" WHERE "users"."name" = 'Henry' LIMIT 1
|
2622
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"[0m [["name", "Henry"], ["created_at", "2016-02-08 11:23:04.715957"], ["updated_at", "2016-02-08 11:23:04.715957"]]
|
2623
|
+
[1m[35m (4.9ms)[0m COMMIT
|
2624
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2625
|
+
[1m[35mSQL (0.5ms)[0m 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
|
+
[1m[36m (5.5ms)[0m [1mCOMMIT[0m
|
2627
|
+
[1m[35m (0.1ms)[0m BEGIN
|
2628
|
+
[1m[36mSQL (0.2ms)[0m [1mINSERT INTO "user_messages" ("from_id", "to_id", "content", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"[0m [["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
|
+
[1m[35m (11.1ms)[0m COMMIT
|
2630
|
+
[1m[36m (0.1ms)[0m [1mBEGIN[0m
|
2631
|
+
[1m[35mSQL (0.2ms)[0m 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
|
+
[1m[36m (0.5ms)[0m [1mCOMMIT[0m
|
2633
|
+
[1m[35mChat Load (1.7ms)[0m SELECT "chats".* FROM "chats" WHERE ('{3}' && ids)
|
2634
|
+
[1m[36mChat Load (0.7ms)[0m [1mSELECT "chats".* FROM "chats" WHERE ('{2}' && ids)[0m
|
2635
|
+
[1m[35mChat Load (0.7ms)[0m SELECT "chats".* FROM "chats" WHERE ('{1}' && ids)
|