prostgles-server 4.2.645 → 4.2.647

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 (75) hide show
  1. package/debug/after-commit-fix-build.log +4 -0
  2. package/debug/after-commit-fix-client-build.log +0 -0
  3. package/debug/after-commit-fix-client.log +674 -0
  4. package/debug/after-commit-fix-lint.log +4 -0
  5. package/debug/after-commit-fix-server.log +542 -0
  6. package/debug/after-commit-fix-test-build.log +0 -0
  7. package/debug/after-commit-fix-typecheck.log +8 -0
  8. package/debug/after-commit-review-build.log +4 -0
  9. package/debug/after-commit-review-regressions.log +604 -0
  10. package/debug/after-commit-review-reproductions.patch +62 -0
  11. package/debug/after-commit-review-restored-build.log +0 -0
  12. package/debug/after-commit-review-server.log +3249 -0
  13. package/debug/after-commit-review-test-build.log +0 -0
  14. package/debug/after-commit-review-typecheck.log +8 -0
  15. package/debug/after-commit-review-withUserRLS.original.ts +554 -0
  16. package/debug/after-commit-shared-query-build.log +4 -0
  17. package/debug/after-commit-shared-query-lint.log +4 -0
  18. package/debug/after-commit-shared-query-server.log +3253 -0
  19. package/debug/auth-request-build.log +4 -0
  20. package/debug/auth-request-lint.log +4 -0
  21. package/debug/auth-request-server-tests.log +3249 -0
  22. package/debug/auth-request-test-build.log +0 -0
  23. package/debug/auth-request-typecheck.log +4 -0
  24. package/dist/Auth/AuthTypes.d.ts +7 -5
  25. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  26. package/dist/Auth/AuthTypes.js.map +1 -1
  27. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +13 -0
  28. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  29. package/dist/DboBuilder/TableHandler/TableHandler.js +13 -0
  30. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  31. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.d.ts.map +1 -1
  32. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js +12 -0
  33. package/dist/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.js.map +1 -1
  34. package/dist/DboBuilder/TableHandler/isApplicableHook.js +1 -1
  35. package/dist/DboBuilder/TableHandler/isApplicableHook.js.map +1 -1
  36. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  37. package/dist/DboBuilder/TableHandler/updateBatch.js +18 -0
  38. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  39. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts +1 -0
  40. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts.map +1 -1
  41. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js +6 -4
  42. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js.map +1 -1
  43. package/dist/Prostgles.d.ts +2 -0
  44. package/dist/Prostgles.d.ts.map +1 -1
  45. package/dist/Prostgles.js +2 -0
  46. package/dist/Prostgles.js.map +1 -1
  47. package/dist/PublishParser/publishTypesAndUtils.d.ts +15 -1
  48. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  49. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  50. package/dist/TableHooks/TableHooks.d.ts +12 -4
  51. package/dist/TableHooks/TableHooks.d.ts.map +1 -1
  52. package/dist/WebsocketAPI/getClientHandlers.d.ts +9 -0
  53. package/dist/WebsocketAPI/getClientHandlers.d.ts.map +1 -1
  54. package/dist/WebsocketAPI/getClientHandlers.js +12 -1
  55. package/dist/WebsocketAPI/getClientHandlers.js.map +1 -1
  56. package/dist/index.d.ts +2 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/initProstgles.d.ts +3 -11
  60. package/dist/initProstgles.d.ts.map +1 -1
  61. package/dist/initProstgles.js +1 -11
  62. package/dist/initProstgles.js.map +1 -1
  63. package/lib/Auth/AuthTypes.ts +7 -5
  64. package/lib/DboBuilder/TableHandler/TableHandler.ts +13 -0
  65. package/lib/DboBuilder/TableHandler/executeAfterHooksCheckAndPostValidation.ts +13 -0
  66. package/lib/DboBuilder/TableHandler/isApplicableHook.ts +1 -1
  67. package/lib/DboBuilder/TableHandler/updateBatch.ts +28 -1
  68. package/lib/DboBuilder/ViewHandler/getReturnTypeQuery.ts +8 -3
  69. package/lib/Prostgles.ts +7 -0
  70. package/lib/PublishParser/publishTypesAndUtils.ts +16 -1
  71. package/lib/TableHooks/TableHooks.ts +14 -2
  72. package/lib/WebsocketAPI/getClientHandlers.ts +37 -0
  73. package/lib/index.ts +5 -0
  74. package/lib/initProstgles.ts +7 -30
  75. package/package.json +1 -1
@@ -0,0 +1,674 @@
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
+ INSERT INTO "lookup_col1" ("id", "description") VALUES ('a','desc') ON CONFLICT DO NOTHING;
14
+ INSERT INTO "lookup_col1" ("id", "description") VALUES ('b',null) ON CONFLICT DO NOTHING;
15
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
16
+
17
+ CREATE TABLE "files" (
18
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
19
+ "storage_key" UUID UNIQUE ,
20
+ "extension" TEXT NOT NULL DEFAULT '' ,
21
+ "content_type" TEXT NOT NULL DEFAULT '' ,
22
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
23
+ "etag" TEXT NOT NULL DEFAULT '' ,
24
+ "original_name" TEXT NOT NULL ,
25
+ "original_last_modified" TIMESTAMPTZ ,
26
+ "description" TEXT ,
27
+ "url" TEXT NOT NULL DEFAULT '' ,
28
+ "cloud_url" TEXT ,
29
+ "signed_url" TEXT ,
30
+ "signed_url_expires" BIGINT ,
31
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
32
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
33
+ "deleted" TIMESTAMPTZ ,
34
+ "deleted_from_storage" TIMESTAMPTZ ,
35
+ "data" BYTEA NOT NULL CHECK (data = decode('01', 'hex')) ,
36
+ "version" INTEGER NOT NULL DEFAULT 1 ,
37
+ "metadata" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"type":{"description":{"type":"string"}}}'::TEXT, "metadata", '{"table":"files","column":"metadata"}' ))
38
+ );
39
+ CREATE TABLE "files_versions" (
40
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
41
+ "storage_key" UUID NOT NULL ,
42
+ "extension" TEXT NOT NULL DEFAULT '' ,
43
+ "content_type" TEXT NOT NULL DEFAULT '' ,
44
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
45
+ "etag" TEXT NOT NULL DEFAULT '' ,
46
+ "original_name" TEXT NOT NULL ,
47
+ "original_last_modified" TIMESTAMPTZ ,
48
+ "description" TEXT ,
49
+ "url" TEXT NOT NULL DEFAULT '' ,
50
+ "cloud_url" TEXT ,
51
+ "signed_url" TEXT ,
52
+ "signed_url_expires" BIGINT ,
53
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
54
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
55
+ "deleted" TIMESTAMPTZ ,
56
+ "deleted_from_storage" TIMESTAMPTZ ,
57
+ "file_id" UUID NOT NULL ,
58
+ "version" INTEGER NOT NULL ,
59
+ "created" TIMESTAMP NOT NULL DEFAULT NOW() ,
60
+ "metadata" JSONB CHECK(prostgles.validate_jsonb_schema('{"nullable":true,"type":{"description":{"type":"string"}}}'::TEXT, "metadata", '{"table":"files_versions","column":"metadata"}' ))
61
+ );
62
+ ALTER TABLE "files_versions" ADD CONSTRAINT "prostgles_file_version_e24fec525e76b3433749621f589d35d9" FOREIGN KEY (file_id) REFERENCES "files"(id) ON DELETE CASCADE;
63
+ CREATE UNIQUE INDEX "prostgles_file_version_9692aae50022f45f1098646939b287b1_key" ON "files_versions" (file_id, version);
64
+ COMMENT ON INDEX "prostgles_file_version_9692aae50022f45f1098646939b287b1_key" IS 'd4af15d064cae99adac0c1194199a9e3';
65
+ CREATE TABLE "users_public_info" (
66
+ "id" SERIAL PRIMARY KEY ,
67
+ "name" TEXT ,
68
+ "avatar" UUID REFERENCES files ON DELETE CASCADE ,
69
+ "sid" TEXT
70
+ );
71
+ DROP TABLE IF EXISTS "users";
72
+ CREATE TABLE "users" (
73
+ "id" SERIAL PRIMARY KEY ,
74
+ "email" TEXT NOT NULL ,
75
+ "status" TEXT NOT NULL CHECK("status" = 'active' OR "status" = 'disabled' OR "status" = 'pending'),
76
+ "type" TEXT NOT NULL ,
77
+ "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"}' ))
78
+ );
79
+ DROP TABLE IF EXISTS "tjson";
80
+ CREATE TABLE "tjson" (
81
+ "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"}' )),
82
+ "colOneOf" TEXT NOT NULL CHECK("colOneOf" = 'a' OR "colOneOf" = 'b' OR "colOneOf" = 'c'),
83
+ "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"}' )),
84
+ "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"}' )),
85
+ "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"}' ))
86
+ );
87
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
88
+
89
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col1) REFERENCES lookup_col1(id);
90
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col2) REFERENCES lookup_col1(id);
91
+ ALTER TABLE "uuid_text" ADD FOREIGN KEY (col3) REFERENCES lookup_col1(id);
92
+ DROP TABLE IF EXISTS "api_table";
93
+ CREATE TABLE "api_table" (
94
+ "id" SERIAL PRIMARY KEY
95
+ );
96
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
97
+ (server): prostgles onReady
98
+ (server): Waiting for client...
99
+ (client) t+ 0ms Started client...
100
+ onSocketConnect CEYv0EqFvZAPWnoeAAAA
101
+ (server): Client connected -> console does not work. use log function. socket.id: CEYv0EqFvZAPWnoeAAAA
102
+ (client) t+ 39ms Client connect.
103
+ (client) t+ 164ms TEST_NAME: main Started
104
+ Client log (client) t+ 176ms Starting isomorphic queries
105
+ ▶ Isomorphic queries
106
+ ✔ Deleting stale data (17.363579ms)
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: '262',
117
+ routine: 'array_in',
118
+ query: '-- prostgles query id: 6b2f012f-415a-48f4-9d71-ae5a4543badb\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: '262',
143
+ routine: 'array_in',
144
+ query: '-- prostgles query id: 59976e5c-1667-4067-94ff-7686a3dcf9b7\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 (43.661514ms)
160
+ ✔ Table info (1.209841ms)
161
+ ✔ Prepare data (63.393736ms)
162
+ ✔ Test bytea (18.393242ms)
163
+ ✔ abortSignal terminates a running query (5543.963044ms)
164
+ ✔ Client queries are aborted no more than after n seconds (14012.179334ms)
165
+ ✔ Subscription tracked_columns get merged correctly (0.599271ms)
166
+ Created PubSubManager
167
+ ✔ Aggregate subscription tracks FILTER and ORDER BY dependencies (1016.680612ms)
168
+ ✔ CASE select and subscription dependencies (660.835343ms)
169
+ ✔ Subscription tracks non-selected ORDER BY columns (648.148446ms)
170
+ ✔ merge json (15.067256ms)
171
+ ✔ json array converted to pg array filter bug (2.922648ms)
172
+ ✔ onConflict do update (12.947839ms)
173
+ ✔ Local file upload (65.543442ms)
174
+ ✔ Local file delete (33.776842ms)
175
+ ✔ Local file update (57.212212ms)
176
+ ✔ getColumns definition (4.081815ms)
177
+ ✔ returnType (0.961261ms)
178
+ ✔ Table config triggers (9.156944ms)
179
+ ✔ $unnest_words (3.359927ms)
180
+ ✔ Group by/Distinct (5.014776ms)
181
+ ✔ sql returntype default-with-rollback (39.335614ms)
182
+ ✔ returnType: value (3.473519ms)
183
+ ✔ PostgreSQL array element (11.202922ms)
184
+ ✔ FTS filtering (16.732732ms)
185
+ ✔ $term_highlight (14.683518ms)
186
+ ✔ funcFilters: $term_highlight (3.685676ms)
187
+ Client log (client) t+ 22527ms [{"name":null}]
188
+ Client log (client) t+ 22535ms [{"name":"zz3zz1"}]
189
+ Pushing 1 rows to socket x9
190
+ Client log (client) t+ 23172ms []
191
+ ✔ subscribe skipChangedColumnsCheck false by default = sub should not fire if selected data did not change (859.996419ms)
192
+ Pushing 0 rows to socket
193
+ Client log (client) t+ 25909ms [{"name":null}]
194
+ Client log (client) t+ 25916ms [{"name":"zz3zz1"}]
195
+ Client log (client) t+ 26133ms [{"name":"zz3zz1"}]
196
+ Client log (client) t+ 26352ms [{"name":"zz3zz1"}]
197
+ Pushing 1 rows to socket x4
198
+ Client log (client) t+ 26566ms []
199
+ ✔ subscribe skipChangedColumnsCheck true (3394.601889ms)
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 (52.16933ms)
205
+ Pushing 0 rows to socket
206
+ Pushing 1 rows to socket
207
+ ✔ subscribe to schema.table (17.799931ms)
208
+ Pushing 2 rows to socket
209
+ ✔ parallel subscriptions (2010.028951ms)
210
+ Client log (client) t+ 33106ms updateAll done in 1754
211
+ Client log (client) t+ 34806ms updateAll done in 1695
212
+ Pushing 0 rows to socket
213
+ Pushing 3 rows to socket
214
+ Client log (client) t+ 35324ms Locks: [{"pid":207,"blocking_pids":[206],"wait_event":"object","wait_event_type":"Lock","query":"commit","blocking_query":"commit"}]
215
+ Pushing 997 rows to socket
216
+ Client log (client) t+ 36818ms updateAll done in 1996
217
+ Pushing 1000 rows to socket x2
218
+ ✔ subscriptions do not serialize transactions (9978.427061ms)
219
+ Pushing 3 rows to socket
220
+ Pushing 1 rows to socket
221
+ throttling sub for 1700 ms
222
+ throttling finished. pushSubData...
223
+ Pushing 1 rows to socket
224
+ throttling sub for 1700 ms
225
+ ✔ subscribeOne with throttle (1740.694023ms)
226
+ throttling sub for 1700 ms
227
+ throttling finished. pushSubData...
228
+ ✔ subscribeOne with throttle skipFirst: true (1703.206204ms)
229
+ Pushing 1 rows to socket
230
+ throttling finished. pushSubData...
231
+ Pushing 1 rows to socket
232
+ ✔ subscribeOne without skipFirst (1036.294832ms)
233
+ Pushing 0 rows to socket
234
+ Pushing 1 rows to socket
235
+ ✔ subscribeOne with skipFirst: true (1540.752058ms)
236
+ Pushing 0 rows to socket x2
237
+ ✔ subscribeOne actions: { insert: true } (1536.8757ms)
238
+ Pushing 1 rows to socket
239
+ ✔ subscribeOne actions: { insert: false } (1546.691596ms)
240
+ ✔ JSON filtering (4.517702ms)
241
+ ✔ Complex filtering (3.654495ms)
242
+ ✔ template_string function (4.187993ms)
243
+ ✔ Between filtering (3.051699ms)
244
+ ✔ In filtering (3.114005ms)
245
+ ✔ Order by (3.612454ms)
246
+ ✔ Order by aliased func (2.387939ms)
247
+ ✔ Filter by aliased func (1.993347ms)
248
+ ✔ Count with Filter by aliased func (2.826593ms)
249
+ ✔ Count with Aggregate and Filter by aliased func (2.856125ms)
250
+ ✔ Count with complex filter (2.373057ms)
251
+ ✔ Order by aggregation (1.899492ms)
252
+ ✔ Aggregate FILTER and ORDER BY (2.275209ms)
253
+ ✔ Column alias func (1.74628ms)
254
+ ✔ Order by colliding alias name (1.631925ms)
255
+ ✔ Update batch example (13.230923ms)
256
+ Client log TODO: socket.io stringifies dates
257
+ ✔ Function example (22.901082ms)
258
+ ✔ JSONB filtering (13.49544ms)
259
+ ✔ Postgis examples (21.874731ms)
260
+ ✔ jsonbSchema validation (15.912476ms)
261
+ ✔ find and findOne (3.264113ms)
262
+ ✔ Result size (4.151393ms)
263
+ ✔ Basic exists (8.44807ms)
264
+ ✔ Basic fts with shorthand notation (6.206331ms)
265
+ ✔ Exists with shortest path wildcard filter example (7.94739ms)
266
+ ✔ Exists with exact path filter example (2.810228ms)
267
+ ✔ Not Exists with exact path filter example (8.41046ms)
268
+ ✔ Upsert example (17.027127ms)
269
+ ✔ Joins example (5.4173ms)
270
+ ✔ Joins repeating table example (4.806142ms)
271
+ ✔ Join aggregate functions example (6.817436ms)
272
+ ✔ $rowhash example (4.629161ms)
273
+ ✔ Reference column nested insert (6.755357ms)
274
+ ✔ Join escaped table names with quotes (10.795933ms)
275
+ Pushing 0 rows to socket x2
276
+ Client log (client) t+ 48162ms {
277
+ "item": {
278
+ "\"id0\"": 1,
279
+ "\"quoted1_id\"": 1,
280
+ "\"text_col0\"": "0"
281
+ },
282
+ "runs": 0
283
+ }
284
+ Client log (client) t+ 48169ms {
285
+ "item": {
286
+ "\"id0\"": 1,
287
+ "\"quoted1_id\"": 1,
288
+ "\"text_col0\"": "1"
289
+ },
290
+ "runs": 1
291
+ }
292
+ Client log unsubscribe start - """quoted0"""
293
+ Client log unsubscribe end - """quoted0"""
294
+ ✔ subscribe to escaped table name (13.103452ms)
295
+ Pushing 1 rows to socket x2
296
+ ✔ subscribe using a filter bigger than block_size (13.962542ms)
297
+ ✔ Reverse join with agg (12.654706ms)
298
+ Pushing 0 rows to socket
299
+ 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}
300
+ 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}
301
+ ✔ Related table subscribe (9040.150737ms)
302
+ Pushing 2 rows to socket x2
303
+ ✔ Aggregate FILTER registers joined dependency triggers (673.896021ms)
304
+ ✔ Nested sort by computed col (14.163646ms)
305
+ ✔ Nested function on different than source column getNewQuery name bug fix (3.164182ms)
306
+ ✔ Reference column deep nested insert (15.779941ms)
307
+ ✔ Multi reference column nested insert (22.821004ms)
308
+ ✔ Join path with order by nested (16.085961ms)
309
+ ✔ Self join (19.338593ms)
310
+ ✔ One to many multi join duplicate row bug fix (12.935712ms)
311
+ Client log (client) t+ 58023ms various id=99 count 1
312
+ Pushing 1 rows to socket x3
313
+ Client log (client) t+ 58026ms various id=99 count
314
+ Client log ok
315
+ Error within running subscription
316
+ _psqlWS_..various.{"id":99}.{"select":{"name":1}}.m.sub {
317
+ message: 'column prostgles_root_table_alias.name does not exist',
318
+ length: 130,
319
+ name: 'error',
320
+ severity: 'ERROR',
321
+ code: '42703',
322
+ position: '133',
323
+ file: 'parse_relation.c',
324
+ line: '3716',
325
+ routine: 'errorMissingColumn',
326
+ query: '-- prostgles query id: d8773688-3d06-4c64-8d5c-773abb5d98d7\n' +
327
+ 'SET LOCAL "prostgles.user" \n' +
328
+ `TO '{"id":"1","type":"public"}';\n` +
329
+ 'SELECT \n' +
330
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
331
+ ' FROM ( \n' +
332
+ ' SELECT * \n' +
333
+ ' FROM various \n' +
334
+ ' WHERE "id" = 99 \n' +
335
+ ' ) prostgles_root_table_alias \n' +
336
+ ' LIMIT 1000',
337
+ code_info: 'undefined_column'
338
+ }
339
+ Client log (client) t+ 60047ms various id=99 count
340
+ Client log (client) t+ 60047ms 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":"3716","routine":"errorMissingColumn","query":"-- prostgles query id: d8773688-3d06-4c64-8d5c-773abb5d98d7\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"}
341
+ Client log ok
342
+ ✔ subscribe triggers with stale schema should fail gracefully and never block other queries (6552.037912ms)
343
+ ✔ Isomorphic queries (64386.955518ms)
344
+ ✔ Having clause (2.7539ms)
345
+ ✔ Having clause with complex filter (2.879606ms)
346
+ Client log (client) t+ 64584ms auth.user: {"sid":"main","uid":"1","id":"1","type":"public"}
347
+ ✔ Nested join having clause (4.320795ms)
348
+ ▶ isomorphic typed queries
349
+ ✔ isLookupTable DB Types from colConf (0.258892ms)
350
+ ✔ isLookupTable DB Types from reference column actual definition (0.164941ms)
351
+ ✔ isLookupTable pkey column itself is typed (0.155242ms)
352
+ ✔ isomorphic typed queries (0.812165ms)
353
+ ▶ Client only queries
354
+ ✔ modifyClientSchema adds custom table and column metadata (3.945898ms)
355
+ ✔ SQL Stream more than 1k records (19.275999ms)
356
+ ✔ SQL Stream persistedConnection with streamLimit works for subsequent queries (10.731308ms)
357
+ ✔ SQL Stream ensure the connection is never released (same pg_backend_pid is the same for subsequent) when using persistConnectionId (8.268419ms)
358
+ ✔ SQL Stream stop kills the query (1030.694965ms)
359
+ ✔ SQL Stream limit works (29.180519ms)
360
+ ✔ SQL Stream stop with terminate kills the query (expect flakiness) (137.858195ms)
361
+ ✔ SQL Stream (16.380966ms)
362
+ ✔ SQL Stream parallel execution + parameters (14.508155ms)
363
+ ✔ SQL Stream query error structure matches default sql run error (12.254531ms)
364
+ ✔ SQL Stream streamLimit (11.257215ms)
365
+ ✔ SQL Stream table fields are the same as on default request (29.931432ms)
366
+ ✔ SQL Stream works for multiple statements (11.816805ms)
367
+ Client log (client) t+ 65938ms Checking public data
368
+ ✔ Check tableSchema (17.175142ms)
369
+ ✔ Security rules example (42.958709ms)
370
+ Client log (client) t+ 65997ms Started testRealtime
371
+ Client log (client) t+ 66022ms 1790596825418: sub stats: x10 -> 0 x20 ->0
372
+ Client log (client) t+ 66029ms 1790596825425: sync stats: x10 -> 0 x20 -> 0
373
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 0)
374
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 1)
375
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 2)
376
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 3)
377
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 4)
378
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 5)
379
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 6)
380
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 7)
381
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 8)
382
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 9)
383
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 10)
384
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 11)
385
+ Client log (client) t+ 66029ms 1790596825425: sync: p.$update({ x: 10 }); (id: 12)
386
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 13)
387
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 14)
388
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 15)
389
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 16)
390
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 17)
391
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 18)
392
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 19)
393
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 20)
394
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 21)
395
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 22)
396
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 23)
397
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 24)
398
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 25)
399
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 26)
400
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 27)
401
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 28)
402
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 29)
403
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 30)
404
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 31)
405
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 32)
406
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 33)
407
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 34)
408
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 35)
409
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 36)
410
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 37)
411
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 38)
412
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 39)
413
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 40)
414
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 41)
415
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 42)
416
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 43)
417
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 44)
418
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 45)
419
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 46)
420
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 47)
421
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 48)
422
+ Client log (client) t+ 66030ms 1790596825426: sync: p.$update({ x: 10 }); (id: 49)
423
+ Pushing 0 rows to socket x3
424
+ upsertData (from client): inserted( 0 ) updated( 50 ) total( 50 )
425
+ last insert undefined
426
+ last update {"id":49,"x":10,"y":49,"flight_number":"FN49","last_updated":1790596825426}
427
+ Client log (client) t+ 66096ms 1790596825492: sub stats: x10 -> 50 x20 ->0
428
+ Pushing 50 rows to socket
429
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
430
+ last insert undefined
431
+ last update undefined
432
+ server.syncBatch planes: inserted( 0 ) updated( 50 ) deleted( 0 ) pushed to client( 50 ) total( 100 ) undefined
433
+ Client log (client) t+ 66112ms 1790596825508: sync stats: x10 -> 50 x20 -> 0
434
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 50)
435
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 51)
436
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 52)
437
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 53)
438
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 54)
439
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 55)
440
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 56)
441
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 57)
442
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 58)
443
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 59)
444
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 60)
445
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 61)
446
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 62)
447
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 63)
448
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 64)
449
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 65)
450
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 66)
451
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 67)
452
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 68)
453
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 69)
454
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 70)
455
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 71)
456
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 72)
457
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 73)
458
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 74)
459
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 75)
460
+ Client log (client) t+ 66112ms 1790596825508: sync: p.$update({ x: 10 }); (id: 76)
461
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 77)
462
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 78)
463
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 79)
464
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 80)
465
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 81)
466
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 82)
467
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 83)
468
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 84)
469
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 85)
470
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 86)
471
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 87)
472
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 88)
473
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 89)
474
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 90)
475
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 91)
476
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 92)
477
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 93)
478
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 94)
479
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 95)
480
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 96)
481
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 97)
482
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 98)
483
+ Client log (client) t+ 66113ms 1790596825509: sync: p.$update({ x: 10 }); (id: 99)
484
+ Client log (client) t+ 66116ms 1790596825512: sync stats: x10 -> 100 x20 -> 0
485
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 1 )
486
+ last insert undefined
487
+ last update undefined
488
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 50 )
489
+ last insert undefined
490
+ last update {"id":50,"x":10,"last_updated":1790596825508}
491
+ Client log (client) t+ 66230ms 1790596825626: sub stats: x10 -> 51 x20 ->0
492
+ Pushing 51 rows to socket
493
+ upsertData (from WAL): inserted( 0 ) updated( 49 ) total( 49 )
494
+ last insert undefined
495
+ last update {"id":99,"x":10,"last_updated":1790596825509}
496
+ Client log (client) t+ 66385ms 1790596825781: sub stats: x10 -> 100 x20 ->0
497
+ Client log (client) t+ 68386ms 1790596827782: sub: db.planes.update({}, { x: 20, last_updated });
498
+ Client log (client) t+ 68398ms 1790596827792: sub: Updated to x20 100
499
+ Pushing 100 rows to socket
500
+ Client log (client) t+ 68416ms 1790596827812: sync stats: x10 -> 50 x20 -> 50
501
+ Client log (client) t+ 68433ms 1790596827829: sync stats: x10 -> 0 x20 -> 100
502
+ ✔ Realtime (2452.331558ms)
503
+ Client log (client) t+ 68433ms 1790596827829: sync end: Finished replication test. Inserting 100 rows then updating two times took: 436ms
504
+ Client log (client) t+ 68435ms sync handlesOnData true 100
505
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 23 )
506
+ last insert undefined
507
+ last update undefined x2
508
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 100 ) total( 100 ) undefined
509
+ ✔ sync handlesOnData true -> false no data bug (2001.832866ms)
510
+ ﹣ Security rules example (0.295294ms) # SKIP
511
+ ✔ Client only queries (5852.059454ms)
512
+ ▶ React hooks
513
+ ✔ useFind (523.284239ms)
514
+ {
515
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
516
+ }
517
+ ✔ useSubscribe (528.051566ms)
518
+ ✔ useFindOne (512.377165ms)
519
+ Pushing 1 rows to socket
520
+ {
521
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
522
+ }
523
+ ✔ useSubscribeOne (527.331315ms)
524
+ ✔ useCount (508.206258ms)
525
+ ✔ useSize (508.296707ms)
526
+ ✔ useCount planes (253.848391ms)
527
+ Pushing 2 rows to socket
528
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
529
+ last insert undefined
530
+ last update undefined
531
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
532
+ last insert undefined
533
+ last update undefined
534
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
535
+ Client log (client) t+ 74099ms 1790596833495: sync stats: x10 -> 0 x20 -> 99
536
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
537
+ last insert undefined
538
+ last update undefined
539
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 2 ) total( 100 ) undefined
540
+ ✔ useSync (542.09312ms)
541
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
542
+ last insert undefined
543
+ last update undefined x2
544
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
545
+ Client log (client) t+ 74370ms 1790596833766: sync stats: x10 -> 0 x20 -> 100
546
+ Client log (client) t+ 74370ms 1790596833766: sync end: Finished replication test. Inserting 100 rows then updating two times took: 6373ms
547
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
548
+ Client log (client) t+ 74642ms 1790596834038: sync stats: x10 -> 0 x20 -> 99
549
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
550
+ last insert undefined
551
+ last update undefined
552
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
553
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
554
+ last insert undefined
555
+ last update undefined
556
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
557
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
558
+ last insert undefined
559
+ last update {"id":0,"x":232,"last_updated":1790596834068}
560
+ Client log (client) t+ 74692ms 1790596834088: sync stats: x10 -> 0 x20 -> 99
561
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
562
+ last insert undefined
563
+ last update undefined
564
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
565
+ ✔ useSync updates invalidate useMemo without mutating old data (350.047422ms)
566
+ Client log (client) t+ 74713ms 1790596834109: sync stats: x10 -> 0 x20 -> 99
567
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
568
+ last insert undefined
569
+ last update undefined x2
570
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
571
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
572
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
573
+ last insert undefined
574
+ last update undefined x2
575
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
576
+ Client log (client) t+ 74987ms 1790596834383: sync stats: x10 -> 0 x20 -> 99
577
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
578
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
579
+ last insert undefined
580
+ last update {"id":0,"x":32,"last_updated":1790596834387}
581
+ Client log (client) t+ 75003ms 1790596834399: sync stats: x10 -> 0 x20 -> 99
582
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
583
+ last insert undefined
584
+ last update undefined
585
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
586
+ ✔ concurrent useSync hooks with matching options all update (318.687855ms)
587
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
588
+ last insert undefined
589
+ last update undefined
590
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 51 ) total( 52 ) undefined
591
+ Client log (client) t+ 75296ms Reconnected
592
+ Client log (client) t+ 75312ms TEST_NAME: main Started
593
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
594
+ last insert undefined
595
+ last update undefined
596
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
597
+ last insert undefined
598
+ last update undefined
599
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 152 ) total( 202 ) undefined
600
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 52 ) total( 53 ) undefined
601
+ Client log (client) t+ 75325ms 1790596834721: sync stats: x10 -> 1 x20 -> 100
602
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999000)
603
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999001)
604
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999002)
605
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999003)
606
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999004)
607
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999005)
608
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999006)
609
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999007)
610
+ Client log (client) t+ 75325ms 1790596834721: sync: p.$update({ x: 10 }); (id: 999008)
611
+ Client log (client) t+ 75325ms 1790596834721: sync end: Finished replication test. Inserting 100 rows then updating two times took: 7328ms
612
+ Client log (client) t+ 75329ms 1790596834725: sync stats: x10 -> 10 x20 -> 100
613
+ Client log (client) t+ 75329ms 1790596834725: sync end: Finished replication test. Inserting 100 rows then updating two times took: 7332ms
614
+ (server): Client disconnected. socket.id: CEYv0EqFvZAPWnoeAAAA
615
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
616
+ last insert undefined
617
+ last update {"id":999000,"x":10,"last_updated":1790596834721}
618
+ onSocketConnect TdOR740R53pz5tynAAAB
619
+ (server): Client connected -> console does not work. use log function. socket.id: TdOR740R53pz5tynAAAB
620
+ Client log (client) t+ 75335ms Disconnected
621
+ Client log (client) t+ 76103ms Client connect.
622
+ schemaChanged must syncHandler.destroySyncs()
623
+ Client log (client) t+ 76216ms Reconnected
624
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
625
+ last insert undefined
626
+ last update undefined
627
+ Client log (client) t+ 76244ms TEST_NAME: main Started
628
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
629
+ last insert undefined
630
+ last update undefined
631
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
632
+ last insert undefined
633
+ last update undefined
634
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 153 ) total( 203 ) undefined
635
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 53 ) total( 54 ) undefined
636
+ Client log (client) t+ 76266ms 1790596835662: sync stats: x10 -> 2 x20 -> 100
637
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999001)
638
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999002)
639
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999003)
640
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999004)
641
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999005)
642
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999006)
643
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999007)
644
+ Client log (client) t+ 76266ms 1790596835662: sync: p.$update({ x: 10 }); (id: 999008)
645
+ Client log (client) t+ 76266ms 1790596835662: sync end: Finished replication test. Inserting 100 rows then updating two times took: 8269ms
646
+ Client log (client) t+ 76270ms 1790596835666: sync stats: x10 -> 10 x20 -> 100
647
+ Client log (client) t+ 76270ms 1790596835666: sync end: Finished replication test. Inserting 100 rows then updating two times took: 8273ms
648
+ ✔ concurrent useSync hooks receive inserts after reattachment and reconnect (1266.56743ms)
649
+ Client log (client) t+ 76278ms TEST_NAME: main Finished OK
650
+ ✔ React hooks (5839.589224ms)
651
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
652
+ last insert undefined
653
+ last update {"id":999001,"x":10,"last_updated":1790596835662}
654
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
655
+ last insert undefined
656
+ last update undefined
657
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
658
+ upsertData (from WAL): inserted( 0 ) updated( 7 ) total( 7 )
659
+ last insert undefined
660
+ last update {"id":999008,"x":10,"last_updated":1790596835662}
661
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
662
+ last insert undefined
663
+ last update undefined
664
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 7 ) total( 8 ) undefined
665
+ Client test successful
666
+ (server): Stopping server ...
667
+ ℹ tests 122
668
+ ℹ suites 4
669
+ ℹ pass 121
670
+ ℹ fail 0
671
+ ℹ cancelled 0
672
+ ℹ skipped 1
673
+ ℹ todo 0
674
+ ℹ duration_ms 84305.157514