prostgles-server 4.2.647 → 4.2.648

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.github/workflows/main.yml +1 -1
  2. package/debug/inspect-ui-sync.cjs +24 -0
  3. package/debug/subscription-cleanup-repro.log +662 -0
  4. package/debug/subscription-cleanup-trace.log +7230 -0
  5. package/debug/sync-bigint-DBGeneratedSchema.backup +489 -0
  6. package/debug/sync-bigint-build.log +4 -0
  7. package/debug/sync-bigint-client-build.log +0 -0
  8. package/debug/sync-bigint-lint.log +4 -0
  9. package/debug/sync-bigint-server-build.log +0 -0
  10. package/debug/sync-comment-DBGeneratedSchema.backup +489 -0
  11. package/debug/sync-delay-gate-DBGeneratedSchema.backup +489 -0
  12. package/debug/sync-delay-gate-build.log +0 -0
  13. package/debug/sync-diff-review-test.log +132 -0
  14. package/debug/sync-followup-build.log +4 -0
  15. package/debug/sync-notification-before.log +121 -0
  16. package/debug/sync-trigger-cleanup-before.log +134 -0
  17. package/debug/sync-trigger-fix-e2e.log +1758 -0
  18. package/debug/sync-trigger-fix-npm-test.log +1815 -0
  19. package/debug/sync-trigger-lint.log +4 -0
  20. package/debug/trace-subscription-cleanup.cjs +19 -0
  21. package/debug/ui-sync-database-snapshot.log +8 -0
  22. package/debug/ui-sync-investigation.md +30 -0
  23. package/debug/ui-sync-server-tests.log +553 -0
  24. package/dist/PubSubManager/PubSubManager.d.ts +8 -25
  25. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  26. package/dist/PubSubManager/PubSubManager.js +27 -23
  27. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  28. package/dist/PubSubManager/deleteOrphanedTriggers.d.ts.map +1 -1
  29. package/dist/PubSubManager/deleteOrphanedTriggers.js +5 -3
  30. package/dist/PubSubManager/deleteOrphanedTriggers.js.map +1 -1
  31. package/dist/PubSubManager/init/getDataWatchFunctionQuery.d.ts.map +1 -1
  32. package/dist/PubSubManager/init/getDataWatchFunctionQuery.js +1 -2
  33. package/dist/PubSubManager/init/getDataWatchFunctionQuery.js.map +1 -1
  34. package/dist/PubSubManager/init/getPubSubManagerInitQuery.d.ts.map +1 -1
  35. package/dist/PubSubManager/init/getPubSubManagerInitQuery.js +3 -2
  36. package/dist/PubSubManager/init/getPubSubManagerInitQuery.js.map +1 -1
  37. package/dist/PubSubManager/notifListener.js +2 -2
  38. package/dist/PubSubManager/notifListener.js.map +1 -1
  39. package/dist/PubSubManager/refreshTriggers.d.ts.map +1 -1
  40. package/dist/PubSubManager/refreshTriggers.js +5 -3
  41. package/dist/PubSubManager/refreshTriggers.js.map +1 -1
  42. package/lib/PubSubManager/PubSubManager.ts +31 -28
  43. package/lib/PubSubManager/deleteOrphanedTriggers.ts +5 -3
  44. package/lib/PubSubManager/init/getDataWatchFunctionQuery.ts +1 -2
  45. package/lib/PubSubManager/init/getPubSubManagerInitQuery.ts +3 -2
  46. package/lib/PubSubManager/notifListener.ts +2 -2
  47. package/lib/PubSubManager/refreshTriggers.ts +7 -5
  48. package/package.json +1 -1
@@ -0,0 +1,662 @@
1
+
2
+ > server_tests@1.0.0 test-client
3
+ > TEST_TYPE=client node --trace-uncaught --test dist/server/index.js
4
+
5
+ Prostgles: SQL file executed successfuly /home/s/prostgles-server-js/tests/server/init.sql
6
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
7
+
8
+ DROP TABLE IF EXISTS "lookup_col1" CASCADE;
9
+ CREATE TABLE IF NOT EXISTS "lookup_col1" (
10
+ id TEXT PRIMARY KEY
11
+ , "description" TEXT
12
+ );
13
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
14
+
15
+ CREATE TABLE "files" (
16
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
17
+ "storage_key" UUID UNIQUE ,
18
+ "extension" TEXT NOT NULL DEFAULT '' ,
19
+ "content_type" TEXT NOT NULL DEFAULT '' ,
20
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
21
+ "etag" TEXT NOT NULL DEFAULT '' ,
22
+ "original_name" TEXT NOT NULL ,
23
+ "original_last_modified" TIMESTAMPTZ ,
24
+ "description" TEXT ,
25
+ "url" TEXT NOT NULL DEFAULT '' ,
26
+ "cloud_url" TEXT ,
27
+ "signed_url" TEXT ,
28
+ "signed_url_expires" BIGINT ,
29
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
30
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
31
+ "deleted" TIMESTAMPTZ ,
32
+ "deleted_from_storage" TIMESTAMPTZ ,
33
+ "data" BYTEA NOT NULL CHECK (data = decode('01', 'hex')) ,
34
+ "version" INTEGER NOT NULL DEFAULT 1 ,
35
+ "metadata" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"type":{"description":{"type":"string"}}}'::TEXT, "metadata", '{"table":"files","column":"metadata"}' ))
36
+ );
37
+ CREATE TABLE "files_versions" (
38
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
39
+ "storage_key" UUID NOT NULL ,
40
+ "extension" TEXT NOT NULL DEFAULT '' ,
41
+ "content_type" TEXT NOT NULL DEFAULT '' ,
42
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
43
+ "etag" TEXT NOT NULL DEFAULT '' ,
44
+ "original_name" TEXT NOT NULL ,
45
+ "original_last_modified" TIMESTAMPTZ ,
46
+ "description" TEXT ,
47
+ "url" TEXT NOT NULL DEFAULT '' ,
48
+ "cloud_url" TEXT ,
49
+ "signed_url" TEXT ,
50
+ "signed_url_expires" BIGINT ,
51
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
52
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
53
+ "deleted" TIMESTAMPTZ ,
54
+ "deleted_from_storage" TIMESTAMPTZ ,
55
+ "file_id" UUID NOT NULL ,
56
+ "version" INTEGER NOT NULL ,
57
+ "created" TIMESTAMP NOT NULL DEFAULT NOW() ,
58
+ "metadata" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"type":{"description":{"type":"string"}}}'::TEXT, "metadata", '{"table":"files_versions","column":"metadata"}' ))
59
+ );
60
+ ALTER TABLE "files_versions" ADD CONSTRAINT "prostgles_file_version_e24fec525e76b3433749621f589d35d9" FOREIGN KEY (file_id) REFERENCES "files"(id) ON DELETE CASCADE;
61
+ CREATE UNIQUE INDEX "prostgles_file_version_9692aae50022f45f1098646939b287b1_key" ON "files_versions" (file_id, version);
62
+ COMMENT ON INDEX "prostgles_file_version_9692aae50022f45f1098646939b287b1_key" IS 'd4af15d064cae99adac0c1194199a9e3';
63
+ CREATE TABLE "users_public_info" (
64
+ "id" SERIAL PRIMARY KEY ,
65
+ "name" TEXT ,
66
+ "avatar" UUID REFERENCES files ON DELETE CASCADE ,
67
+ "sid" TEXT
68
+ );
69
+ DROP TABLE IF EXISTS "users";
70
+ CREATE TABLE "users" (
71
+ "id" SERIAL PRIMARY KEY ,
72
+ "email" TEXT NOT NULL ,
73
+ "status" TEXT NOT NULL CHECK("status" = 'active' OR "status" = 'disabled' OR "status" = 'pending'),
74
+ "type" TEXT NOT NULL ,
75
+ "preferences" JSONB NOT NULL CHECK(prostgles.validate_jsonb_schema('{"type":{"showIntro":{"type":"boolean","optional":true},"theme":{"enum":["light","dark","auto"],"optional":true},"others":{"type":"any[]"}}}'::TEXT, "preferences", '{"table":"users","column":"preferences"}' ))
76
+ );
77
+ DROP TABLE IF EXISTS "tjson";
78
+ CREATE TABLE "tjson" (
79
+ "json" JSONB NOT NULL CHECK(prostgles.validate_jsonb_schema('{"type":{"a":{"type":"boolean"},"arr":{"enum":["1","2","3"]},"arr1":{"enum":[1,2,3]},"arr2":{"type":"integer[]"},"arrStr":{"type":"string[]","optional":true,"nullable":true},"o":{"optional":true,"nullable":true,"oneOfType":[{"o1":"integer"},{"o2":"boolean"}]}}}'::TEXT, "json", '{"table":"tjson","column":"json"}' )),
80
+ "colOneOf" TEXT NOT NULL CHECK("colOneOf" = 'a' OR "colOneOf" = 'b' OR "colOneOf" = 'c'),
81
+ "status" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"oneOfType":[{"ok":{"type":"string"}},{"err":{"type":"string"}},{"loading":{"type":{"loaded":{"type":"number"},"total":{"type":"number"}}}}]}'::TEXT, "status", '{"table":"tjson","column":"status"}' )),
82
+ "jsonOneOf" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"oneOfType":[{"command":{"enum":["a"]}},{"command":{"enum":["b"]},"option":{"type":"integer[]"}}]}'::TEXT, "jsonOneOf", '{"table":"tjson","column":"jsonOneOf"}' )),
83
+ "table_config" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"type":{"referencedTables":{"optional":true,"arrayOfType":{"name":"string","minFiles":"number"}},"recType":{"nullable":true,"optional":true,"record":{"keysEnum":["a","b"],"values":{"type":{"bools":"boolean[]"}}}}}}'::TEXT, "table_config", '{"table":"tjson","column":"table_config"}' ))
84
+ );
85
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
86
+
87
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col1) REFERENCES lookup_col1(id);
88
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col2) REFERENCES lookup_col1(id);
89
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col3) REFERENCES lookup_col1(id);
90
+ DROP TABLE IF EXISTS "api_table";
91
+ CREATE TABLE "api_table" (
92
+ "id" SERIAL PRIMARY KEY
93
+ );
94
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
95
+ Prostgles: Created typescript schema definition file:
96
+ DBGeneratedSchema.ts
97
+ (server): prostgles onReady
98
+ (server): Waiting for client...
99
+ (client) t+ 0ms Started client...
100
+ onSocketConnect FvZpMZLahx0kZUxAAAAA
101
+ (server): Client connected -> console does not work. use log function. socket.id: FvZpMZLahx0kZUxAAAAA
102
+ (client) t+ 41ms Client connect.
103
+ (client) t+ 172ms TEST_NAME: main Started
104
+ Client log (client) t+ 183ms Starting isomorphic queries
105
+ ▶ Isomorphic queries
106
+ ✔ Deleting stale data (23.511753ms)
107
+ {
108
+ message: 'malformed array literal: "a"',
109
+ length: 149,
110
+ name: 'error',
111
+ severity: 'ERROR',
112
+ code: '22P02',
113
+ detail: 'Array value must start with "{" or dimension information.',
114
+ position: '325',
115
+ file: 'arrayfuncs.c',
116
+ line: '317',
117
+ routine: 'array_in',
118
+ query: '-- prostgles query id: 1bebcd6b-7d01-45ef-9fc0-d4a33db59ce8\n' +
119
+ 'SET LOCAL "prostgles.user" \n' +
120
+ `TO '{"id":"1","type":"public"}';\n` +
121
+ 'SELECT \n' +
122
+ ' "prostgles_root_table_alias"."id" AS "id", \n' +
123
+ ' "prostgles_root_table_alias"."h" AS "h", \n' +
124
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
125
+ ' FROM ( \n' +
126
+ ' SELECT * \n' +
127
+ ' FROM items \n' +
128
+ ` WHERE "h" = 'a' \n` +
129
+ ' ) prostgles_root_table_alias \n' +
130
+ ' LIMIT 0',
131
+ code_info: 'invalid_text_representation'
132
+ }
133
+ {
134
+ message: 'malformed array literal: "a"',
135
+ length: 149,
136
+ name: 'error',
137
+ severity: 'ERROR',
138
+ code: '22P02',
139
+ detail: 'Array value must start with "{" or dimension information.',
140
+ position: '325',
141
+ file: 'arrayfuncs.c',
142
+ line: '317',
143
+ routine: 'array_in',
144
+ query: '-- prostgles query id: a223e24a-dd37-4a84-b613-039b310d8ef9\n' +
145
+ 'SET LOCAL "prostgles.user" \n' +
146
+ `TO '{"id":"1","type":"public"}';\n` +
147
+ 'SELECT \n' +
148
+ ' "prostgles_root_table_alias"."id" AS "id", \n' +
149
+ ' "prostgles_root_table_alias"."h" AS "h", \n' +
150
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
151
+ ' FROM ( \n' +
152
+ ' SELECT * \n' +
153
+ ' FROM items \n' +
154
+ ` WHERE "h" = 'a' \n` +
155
+ ' ) prostgles_root_table_alias \n' +
156
+ ' LIMIT 0',
157
+ code_info: 'invalid_text_representation'
158
+ }
159
+ ✔ Error structure malformed array literal (31.759387ms)
160
+ ✔ Table info (1.632686ms)
161
+ ✔ Prepare data (49.876713ms)
162
+ ✔ Test bytea (7.18731ms)
163
+ ✔ abortSignal terminates a running query (5529.769575ms)
164
+ ✔ Client queries are aborted no more than after n seconds (14007.657768ms)
165
+ ✔ Subscription tracked_columns get merged correctly (0.407561ms)
166
+ Created PubSubManager
167
+ ✔ Aggregate subscription tracks FILTER and ORDER BY dependencies (961.043345ms)
168
+ ✔ CASE select and subscription dependencies (639.642905ms)
169
+ ✔ Subscription tracks non-selected ORDER BY columns (640.472769ms)
170
+ ✔ merge json (9.312261ms)
171
+ ✔ json array converted to pg array filter bug (2.172478ms)
172
+ ✔ onConflict do update (8.212338ms)
173
+ ✔ Local file upload (34.271166ms)
174
+ ✔ Local file delete (20.374404ms)
175
+ ✔ Local file update (51.630748ms)
176
+ ✔ getColumns definition (1.566073ms)
177
+ ✔ returnType (0.823926ms)
178
+ ✔ Table config triggers (7.126575ms)
179
+ ✔ $unnest_words (2.125963ms)
180
+ ✔ Group by/Distinct (3.621168ms)
181
+ ✔ sql returntype default-with-rollback (22.950055ms)
182
+ ✔ returnType: value (2.048758ms)
183
+ ✔ PostgreSQL array element (7.547215ms)
184
+ ✔ FTS filtering (8.243329ms)
185
+ ✔ $term_highlight (4.864341ms)
186
+ ✔ funcFilters: $term_highlight (2.986439ms)
187
+ Client log (client) t+ 22285ms [{"name":null}]
188
+ Client log (client) t+ 22290ms [{"name":"zz3zz1"}]
189
+ Pushing 1 rows to socket x9
190
+ Client log (client) t+ 22920ms []
191
+ ✔ subscribe skipChangedColumnsCheck false by default = sub should not fire if selected data did not change (846.136291ms)
192
+ Pushing 0 rows to socket
193
+ Client log (client) t+ 25636ms [{"name":null}]
194
+ Client log (client) t+ 25640ms [{"name":"zz3zz1"}]
195
+ Client log (client) t+ 25846ms [{"name":"zz3zz1"}]
196
+ Client log (client) t+ 26052ms [{"name":"zz3zz1"}]
197
+ Pushing 1 rows to socket x4
198
+ Client log (client) t+ 26257ms []
199
+ ✔ subscribe skipChangedColumnsCheck true (3336.733238ms)
200
+ Pushing 0 rows to socket
201
+ Pushing 1 rows to socket x4
202
+ Client log unsubscribe start - various
203
+ Client log unsubscribe end - various
204
+ ✔ subscribe (26.875967ms)
205
+ Pushing 0 rows to socket
206
+ Pushing 1 rows to socket
207
+ ✔ subscribe to schema.table (14.563156ms)
208
+ Pushing 2 rows to socket
209
+ ✔ parallel subscriptions (2007.745789ms)
210
+ Client log (client) t+ 32642ms updateAll done in 1632
211
+ Client log (client) t+ 34236ms updateAll done in 1592
212
+ Pushing 0 rows to socket
213
+ Pushing 3 rows to socket
214
+ Pushing 996 rows to socket
215
+ Client log (client) t+ 36188ms updateAll done in 1941
216
+ Pushing 1000 rows to socket x2
217
+ ✔ subscriptions do not serialize transactions (9689.556368ms)
218
+ Pushing 3 rows to socket
219
+ Pushing 1 rows to socket
220
+ throttling sub for 1700 ms
221
+ throttling finished. pushSubData...
222
+ Pushing 1 rows to socket
223
+ throttling sub for 1700 ms
224
+ ✔ subscribeOne with throttle (1723.445114ms)
225
+ throttling sub for 1700 ms
226
+ throttling finished. pushSubData...
227
+ ✔ subscribeOne with throttle skipFirst: true (1701.808593ms)
228
+ Pushing 1 rows to socket
229
+ throttling finished. pushSubData...
230
+ Pushing 1 rows to socket
231
+ ✔ subscribeOne without skipFirst (1013.870904ms)
232
+ Pushing 0 rows to socket
233
+ Pushing 1 rows to socket
234
+ ✔ subscribeOne with skipFirst: true (1515.584717ms)
235
+ Pushing 0 rows to socket x2
236
+ ✔ subscribeOne actions: { insert: true } (1528.991461ms)
237
+ Pushing 1 rows to socket
238
+ ✔ subscribeOne actions: { insert: false } (1525.909355ms)
239
+ ✔ JSON filtering (2.415ms)
240
+ ✔ Complex filtering (2.097883ms)
241
+ ✔ template_string function (2.921599ms)
242
+ ✔ Between filtering (2.738374ms)
243
+ ✔ In filtering (2.642901ms)
244
+ ✔ Order by (2.955806ms)
245
+ ✔ Order by aliased func (1.371376ms)
246
+ ✔ Filter by aliased func (1.084339ms)
247
+ ✔ Count with Filter by aliased func (1.401915ms)
248
+ ✔ Count with Aggregate and Filter by aliased func (1.262189ms)
249
+ ✔ Count with complex filter (1.248576ms)
250
+ ✔ Order by aggregation (1.142883ms)
251
+ ✔ Aggregate FILTER and ORDER BY (1.20674ms)
252
+ ✔ Column alias func (1.920625ms)
253
+ ✔ Order by colliding alias name (1.80065ms)
254
+ ✔ Update batch example (5.325892ms)
255
+ Client log TODO: socket.io stringifies dates
256
+ ✔ Function example (12.467398ms)
257
+ ✔ JSONB filtering (5.578751ms)
258
+ ✔ Postgis examples (7.925948ms)
259
+ ✔ jsonbSchema validation (7.106791ms)
260
+ ✔ find and findOne (1.384309ms)
261
+ ✔ Result size (1.08443ms)
262
+ ✔ Basic exists (2.069524ms)
263
+ ✔ Basic fts with shorthand notation (2.463608ms)
264
+ ✔ Exists with shortest path wildcard filter example (2.947523ms)
265
+ ✔ Exists with exact path filter example (0.972811ms)
266
+ ✔ Not Exists with exact path filter example (0.971888ms)
267
+ ✔ Upsert example (8.906904ms)
268
+ ✔ Joins example (1.939486ms)
269
+ ✔ Joins repeating table example (3.923759ms)
270
+ ✔ Join aggregate functions example (21.3722ms)
271
+ ✔ $rowhash example (7.68633ms)
272
+ ✔ Reference column nested insert (12.461345ms)
273
+ ✔ Join escaped table names with quotes (14.144193ms)
274
+ Pushing 0 rows to socket x2
275
+ Client log (client) t+ 47361ms {
276
+ "item": {
277
+ "\"id0\"": 1,
278
+ "\"quoted1_id\"": 1,
279
+ "\"text_col0\"": "0"
280
+ },
281
+ "runs": 0
282
+ }
283
+ Client log (client) t+ 47368ms {
284
+ "item": {
285
+ "\"id0\"": 1,
286
+ "\"quoted1_id\"": 1,
287
+ "\"text_col0\"": "1"
288
+ },
289
+ "runs": 1
290
+ }
291
+ Client log unsubscribe start - """quoted0"""
292
+ Client log unsubscribe end - """quoted0"""
293
+ ✔ subscribe to escaped table name (16.262364ms)
294
+ Pushing 1 rows to socket x2
295
+ ✔ subscribe using a filter bigger than block_size (15.206698ms)
296
+ ✔ Reverse join with agg (9.179217ms)
297
+ Pushing 0 rows to socket
298
+ Client log {"_rows":[{"id":1,"t1":null,"tr2":[{"id":1,"tr1_id":1,"t1":"a","t2":"b"}],"tr3":[]},{"id":2,"t1":null,"tr2":[{"id":2,"tr1_id":2,"t1":"a","t2":"b"}],"tr3":[]}],"runs":1}
299
+ Client log {"_rows":[{"id":1,"t1":null,"tr2":[{"id":1,"tr1_id":1,"t1":"a","t2":"b"},{"id":3,"tr1_id":1,"t1":"a","t2":"b"}],"tr3":[]},{"id":2,"t1":null,"tr2":[{"id":2,"tr1_id":2,"t1":"a","t2":"b"}],"tr3":[]}],"runs":2}
300
+ ✔ Related table subscribe (9032.842441ms)
301
+ Pushing 2 rows to socket x2
302
+ ✔ Aggregate FILTER registers joined dependency triggers (641.881301ms)
303
+ ✔ Nested sort by computed col (9.052976ms)
304
+ ✔ Nested function on different than source column getNewQuery name bug fix (1.70337ms)
305
+ ✔ Reference column deep nested insert (11.123423ms)
306
+ ✔ Multi reference column nested insert (10.34226ms)
307
+ ✔ Join path with order by nested (7.876051ms)
308
+ ✔ Self join (13.417455ms)
309
+ ✔ One to many multi join duplicate row bug fix (10.986508ms)
310
+ Client log (client) t+ 57140ms various id=99 count 1
311
+ Pushing 1 rows to socket x3
312
+ Client log (client) t+ 57146ms various id=99 count
313
+ Client log ok
314
+ Error within running subscription
315
+ _psqlWS_..various.{"id":99}.{"select":{"name":1}}.m.sub {
316
+ message: 'column prostgles_root_table_alias.name does not exist',
317
+ length: 130,
318
+ name: 'error',
319
+ severity: 'ERROR',
320
+ code: '42703',
321
+ position: '133',
322
+ file: 'parse_relation.c',
323
+ line: '3665',
324
+ routine: 'errorMissingColumn',
325
+ query: '-- prostgles query id: 5eabebba-c3d7-4870-b06f-79ad6dc211bf\n' +
326
+ 'SET LOCAL "prostgles.user" \n' +
327
+ `TO '{"id":"1","type":"public"}';\n` +
328
+ 'SELECT \n' +
329
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
330
+ ' FROM ( \n' +
331
+ ' SELECT * \n' +
332
+ ' FROM various \n' +
333
+ ' WHERE "id" = 99 \n' +
334
+ ' ) prostgles_root_table_alias \n' +
335
+ ' LIMIT 1000',
336
+ code_info: 'undefined_column'
337
+ }
338
+ Client log (client) t+ 59160ms various id=99 count
339
+ Client log (client) t+ 59160ms Error in subscription callback: {"message":"column prostgles_root_table_alias.name does not exist","length":130,"name":"error","severity":"ERROR","code":"42703","position":"133","file":"parse_relation.c","line":"3665","routine":"errorMissingColumn","query":"-- prostgles query id: 5eabebba-c3d7-4870-b06f-79ad6dc211bf\nSET LOCAL \"prostgles.user\" \nTO '{\"id\":\"1\",\"type\":\"public\"}';\nSELECT \n \"prostgles_root_table_alias\".\"name\" AS \"name\" \n FROM ( \n SELECT * \n FROM various \n WHERE \"id\" = 99 \n ) prostgles_root_table_alias \n LIMIT 1000","code_info":"undefined_column"}
340
+ Client log ok
341
+ ✔ subscribe triggers with stale schema should fail gracefully and never block other queries (6533.244062ms)
342
+ ✔ Isomorphic queries (63480.996463ms)
343
+ ✔ Having clause (5.770283ms)
344
+ ✔ Having clause with complex filter (5.531311ms)
345
+ Client log (client) t+ 63689ms auth.user: {"sid":"main","uid":"1","id":"1","type":"public"}
346
+ ✔ Nested join having clause (4.183424ms)
347
+ ▶ isomorphic typed queries
348
+ ✔ isLookupTable DB Types from colConf (0.218876ms)
349
+ ✔ isLookupTable DB Types from reference column actual definition (0.140922ms)
350
+ ✔ isLookupTable pkey column itself is typed (0.122278ms)
351
+ ✔ isomorphic typed queries (0.652354ms)
352
+ ▶ Client only queries
353
+ ✔ modifyClientSchema adds custom table and column metadata (3.475999ms)
354
+ ✔ SQL Stream more than 1k records (13.971984ms)
355
+ ✔ SQL Stream persistedConnection with streamLimit works for subsequent queries (5.978653ms)
356
+ ✔ SQL Stream ensure the connection is never released (same pg_backend_pid is the same for subsequent) when using persistConnectionId (5.866835ms)
357
+ ✔ SQL Stream stop kills the query (1016.887638ms)
358
+ ✔ SQL Stream limit works (18.965846ms)
359
+ ✔ SQL Stream stop with terminate kills the query (expect flakiness) (133.105693ms)
360
+ ✔ SQL Stream (7.994001ms)
361
+ ✔ SQL Stream parallel execution + parameters (6.636198ms)
362
+ ✔ SQL Stream query error structure matches default sql run error (7.789167ms)
363
+ ✔ SQL Stream streamLimit (7.104136ms)
364
+ ✔ SQL Stream table fields are the same as on default request (16.403973ms)
365
+ ✔ SQL Stream works for multiple statements (8.410907ms)
366
+ Client log (client) t+ 64959ms Checking public data
367
+ ✔ Check tableSchema (16.419252ms)
368
+ ✔ Security rules example (45.485675ms)
369
+ Client log (client) t+ 65018ms Started testRealtime
370
+ Client log (client) t+ 65044ms 1790705136570: sub stats: x10 -> 0 x20 ->0
371
+ Client log (client) t+ 65052ms 1790705136578: sync stats: x10 -> 0 x20 -> 0
372
+ Client log (client) t+ 65052ms 1790705136578: sync: p.$update({ x: 10 }); (id: 0)
373
+ Client log (client) t+ 65052ms 1790705136578: sync: p.$update({ x: 10 }); (id: 1)
374
+ Client log (client) t+ 65052ms 1790705136578: sync: p.$update({ x: 10 }); (id: 2)
375
+ Client log (client) t+ 65052ms 1790705136578: sync: p.$update({ x: 10 }); (id: 3)
376
+ Client log (client) t+ 65052ms 1790705136578: sync: p.$update({ x: 10 }); (id: 4)
377
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 5)
378
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 6)
379
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 7)
380
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 8)
381
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 9)
382
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 10)
383
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 11)
384
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 12)
385
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 13)
386
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 14)
387
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 15)
388
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 16)
389
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 17)
390
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 18)
391
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 19)
392
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 20)
393
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 21)
394
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 22)
395
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 23)
396
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 24)
397
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 25)
398
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 26)
399
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 27)
400
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 28)
401
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 29)
402
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 30)
403
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 31)
404
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 32)
405
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 33)
406
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 34)
407
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 35)
408
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 36)
409
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 37)
410
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 38)
411
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 39)
412
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 40)
413
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 41)
414
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 42)
415
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 43)
416
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 44)
417
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 45)
418
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 46)
419
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 47)
420
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 48)
421
+ Client log (client) t+ 65053ms 1790705136579: sync: p.$update({ x: 10 }); (id: 49)
422
+ Pushing 0 rows to socket x3
423
+ upsertData (from client): inserted( 0 ) updated( 50 ) total( 50 )
424
+ last insert undefined
425
+ last update {"id":49,"x":10,"y":49,"flight_number":"FN49","last_updated":1790705136579}
426
+ Client log (client) t+ 65126ms 1790705136652: sub stats: x10 -> 50 x20 ->0
427
+ Pushing 50 rows to socket
428
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
429
+ last insert undefined
430
+ last update undefined
431
+ server.syncBatch planes: inserted( 0 ) updated( 50 ) deleted( 0 ) pushed to client( 50 ) total( 100 ) undefined
432
+ Client log (client) t+ 65139ms 1790705136665: sync stats: x10 -> 50 x20 -> 0
433
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 50)
434
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 51)
435
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 52)
436
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 53)
437
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 54)
438
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 55)
439
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 56)
440
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 57)
441
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 58)
442
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 59)
443
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 60)
444
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 61)
445
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 62)
446
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 63)
447
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 64)
448
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 65)
449
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 66)
450
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 67)
451
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 68)
452
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 69)
453
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 70)
454
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 71)
455
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 72)
456
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 73)
457
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 74)
458
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 75)
459
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 76)
460
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 77)
461
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 78)
462
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 79)
463
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 80)
464
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 81)
465
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 82)
466
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 83)
467
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 84)
468
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 85)
469
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 86)
470
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 87)
471
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 88)
472
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 89)
473
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 90)
474
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 91)
475
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 92)
476
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 93)
477
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 94)
478
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 95)
479
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 96)
480
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 97)
481
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 98)
482
+ Client log (client) t+ 65139ms 1790705136665: sync: p.$update({ x: 10 }); (id: 99)
483
+ Client log (client) t+ 65143ms 1790705136669: sync stats: x10 -> 100 x20 -> 0
484
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 1 )
485
+ last insert undefined
486
+ last update undefined
487
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 50 )
488
+ last insert undefined
489
+ last update {"id":50,"x":10,"last_updated":1790705136665}
490
+ Client log (client) t+ 65261ms 1790705136787: sub stats: x10 -> 51 x20 ->0
491
+ Pushing 51 rows to socket
492
+ upsertData (from WAL): inserted( 0 ) updated( 49 ) total( 49 )
493
+ last insert undefined
494
+ last update {"id":99,"x":10,"last_updated":1790705136665}
495
+ Client log (client) t+ 65407ms 1790705136933: sub stats: x10 -> 100 x20 ->0
496
+ Client log (client) t+ 67407ms 1790705138933: sub: db.planes.update({}, { x: 20, last_updated });
497
+ Client log (client) t+ 67414ms 1790705138937: sub: Updated to x20 100
498
+ Pushing 100 rows to socket
499
+ Client log (client) t+ 67421ms 1790705138947: sync stats: x10 -> 50 x20 -> 50
500
+ Client log (client) t+ 67429ms 1790705138955: sync stats: x10 -> 0 x20 -> 100
501
+ ✔ Realtime (2424.473229ms)
502
+ Client log (client) t+ 67429ms 1790705138955: sync end: Finished replication test. Inserting 100 rows then updating two times took: 411ms
503
+ Client log (client) t+ 67430ms sync handlesOnData true 100
504
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
505
+ last insert undefined
506
+ last update undefined x2
507
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 100 ) total( 100 ) undefined
508
+ ✔ sync handlesOnData true -> false no data bug (2001.469622ms)
509
+ ﹣ Security rules example (0.111288ms) # SKIP
510
+ ✔ Client only queries (5741.355766ms)
511
+ ▶ React hooks
512
+ ✔ useFind (513.535293ms)
513
+ {
514
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
515
+ }
516
+ ✔ useSubscribe (518.564118ms)
517
+ ✔ useFindOne (505.195441ms)
518
+ Pushing 1 rows to socket
519
+ {
520
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
521
+ }
522
+ ✔ useSubscribeOne (511.168038ms)
523
+ ✔ useCount (506.669225ms)
524
+ ✔ useSize (505.849662ms)
525
+ ✔ useCount planes (253.134482ms)
526
+ Pushing 2 rows to socket
527
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
528
+ last insert undefined
529
+ last update undefined
530
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
531
+ last insert undefined
532
+ last update undefined
533
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
534
+ Client log (client) t+ 73042ms 1790705144568: sync stats: x10 -> 0 x20 -> 99
535
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
536
+ last insert undefined
537
+ last update undefined
538
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 2 ) total( 100 ) undefined
539
+ ✔ useSync (541.176275ms)
540
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
541
+ last insert undefined
542
+ last update undefined
543
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
544
+ Client log (client) t+ 73308ms 1790705144834: sync stats: x10 -> 0 x20 -> 100
545
+ Client log (client) t+ 73308ms 1790705144834: sync end: Finished replication test. Inserting 100 rows then updating two times took: 6290ms
546
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
547
+ last insert undefined
548
+ last update undefined
549
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
550
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
551
+ last insert undefined
552
+ last update undefined x2
553
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
554
+ Client log (client) t+ 73569ms 1790705145095: sync stats: x10 -> 0 x20 -> 99
555
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
556
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
557
+ last insert undefined
558
+ last update {"id":0,"x":232,"last_updated":1790705145105}
559
+ Client log (client) t+ 73594ms 1790705145120: sync stats: x10 -> 0 x20 -> 99
560
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
561
+ last insert undefined
562
+ last update undefined
563
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
564
+ ✔ useSync updates invalidate useMemo without mutating old data (312.319871ms)
565
+ Client log (client) t+ 73617ms 1790705145143: sync stats: x10 -> 0 x20 -> 99
566
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
567
+ last insert undefined
568
+ last update undefined x2
569
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
570
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
571
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
572
+ last insert undefined
573
+ last update undefined x2
574
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
575
+ Client log (client) t+ 73883ms 1790705145409: sync stats: x10 -> 0 x20 -> 99
576
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
577
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
578
+ last insert undefined
579
+ last update {"id":0,"x":32,"last_updated":1790705145417}
580
+ Client log (client) t+ 73909ms 1790705145435: sync stats: x10 -> 0 x20 -> 99
581
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
582
+ last insert undefined
583
+ last update undefined
584
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
585
+ ✔ concurrent useSync hooks with matching options all update (312.663856ms)
586
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
587
+ last insert undefined
588
+ last update undefined
589
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 51 ) total( 52 ) undefined
590
+ Client log (client) t+ 74205ms Reconnected
591
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
592
+ last insert undefined
593
+ last update undefined
594
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 151 ) total( 201 ) undefined
595
+ Client log (client) t+ 74249ms TEST_NAME: main Started
596
+ Client log (client) t+ 74254ms 1790705145780: sync stats: x10 -> 1 x20 -> 100
597
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999000)
598
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999001)
599
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999002)
600
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999003)
601
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999004)
602
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999005)
603
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999006)
604
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999007)
605
+ Client log (client) t+ 74255ms 1790705145781: sync: p.$update({ x: 10 }); (id: 999008)
606
+ Client log (client) t+ 74255ms 1790705145781: sync end: Finished replication test. Inserting 100 rows then updating two times took: 7237ms
607
+ Client log (client) t+ 74264ms 1790705145790: sync stats: x10 -> 10 x20 -> 100
608
+ Client log (client) t+ 74265ms 1790705145791: sync end: Finished replication test. Inserting 100 rows then updating two times took: 7247ms
609
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
610
+ last insert undefined
611
+ last update undefined
612
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 52 ) total( 53 ) undefined
613
+ Client log (client) t+ 74291ms 1790705145817: sync stats: x10 -> 10 x20 -> 100
614
+ Client log (client) t+ 74292ms 1790705145818: sync end: Finished replication test. Inserting 100 rows then updating two times took: 7274ms
615
+ upsertData (from client): inserted( 0 ) updated( 9 ) total( 10 )
616
+ last insert undefined
617
+ last update {"id":999008,"x":10,"y":999999,"flight_number":null,"last_updated":1790705145781}
618
+ server.syncBatch planes: inserted( 0 ) updated( 9 ) deleted( 0 ) pushed to client( 1 ) total( 11 ) undefined
619
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 1 )
620
+ last insert undefined
621
+ last update undefined
622
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
623
+ last insert undefined
624
+ last update undefined
625
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 9 ) total( 10 ) undefined
626
+ (server): Client disconnected. socket.id: FvZpMZLahx0kZUxAAAAA
627
+ onSocketConnect UhylHu7rxBUz7Z57AAAB
628
+ (server): Client connected -> console does not work. use log function. socket.id: UhylHu7rxBUz7Z57AAAB
629
+ Client log (client) t+ 74302ms Disconnected
630
+ Client log (client) t+ 75596ms Client connect.
631
+ schemaChanged must syncHandler.destroySyncs()
632
+ Client log (client) t+ 75715ms Reconnected
633
+ Client log (client) t+ 75745ms TEST_NAME: main Started
634
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
635
+ last insert undefined
636
+ last update undefined
637
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 152 ) total( 202 ) undefined
638
+ Client log (client) t+ 75755ms 1790705147281: sync stats: x10 -> 10 x20 -> 100
639
+ Client log (client) t+ 75755ms 1790705147281: sync end: Finished replication test. Inserting 100 rows then updating two times took: 8737ms
640
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
641
+ last insert undefined
642
+ last update undefined
643
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 9 )
644
+ last insert undefined
645
+ last update undefined
646
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 53 ) total( 54 ) undefined
647
+ Client log (client) t+ 75762ms 1790705147288: sync stats: x10 -> 10 x20 -> 100
648
+ Client log (client) t+ 75762ms 1790705147288: sync end: Finished replication test. Inserting 100 rows then updating two times took: 8744ms
649
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 10 ) undefined
650
+ ✔ concurrent useSync hooks receive inserts after reattachment and reconnect (1860.07152ms)
651
+ ✔ React hooks (6340.86733ms)
652
+ Client log (client) t+ 75772ms TEST_NAME: main Finished OK
653
+ Client test successful
654
+ (server): Stopping server ...
655
+ ℹ tests 122
656
+ ℹ suites 4
657
+ ℹ pass 121
658
+ ℹ fail 0
659
+ ℹ cancelled 0
660
+ ℹ skipped 1
661
+ ℹ todo 0
662
+ ℹ duration_ms 84071.713405