prostgles-server 4.2.639 → 4.2.641

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 (98) hide show
  1. package/debug/diff-review-build.log +4 -0
  2. package/debug/diff-review-test-server.log +551 -0
  3. package/debug/diff-review-tests-build.log +0 -0
  4. package/debug/nested-aggregate-build.log +4 -0
  5. package/debug/nested-aggregate-test-compile.log +0 -0
  6. package/debug/nested-aggregate-test-server.log +586 -0
  7. package/debug/sort-query-build.log +4 -0
  8. package/debug/sort-query-tests-build.log +0 -0
  9. package/debug/sync-logging-build.log +4 -0
  10. package/debug/sync-logging-main.log +688 -0
  11. package/debug/sync-logging-server-build.log +0 -0
  12. package/debug/sync-race-client-build.log +12 -0
  13. package/debug/sync-race-main-e2e-final.log +659 -0
  14. package/debug/sync-race-main-e2e.log +643 -0
  15. package/debug/sync-race-server-build.log +11 -0
  16. package/debug/sync-race-test-lib-final.log +59 -0
  17. package/debug/sync-race-test-lib.log +59 -0
  18. package/debug/sync-review-build.log +4 -0
  19. package/debug/sync-review-client-build.log +0 -0
  20. package/debug/sync-review-main-final.log +685 -0
  21. package/debug/sync-review-main.log +644 -0
  22. package/debug/sync-review-server-build.log +0 -0
  23. package/debug/sync-review-syncData.js +147 -0
  24. package/debug/sync-review-without-reconcile.log +647 -0
  25. package/dist/Auth/AuthHandler.d.ts +2 -2
  26. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  27. package/dist/Auth/AuthHandler.js.map +1 -1
  28. package/dist/Auth/AuthTypes.d.ts +2 -2
  29. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  30. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts +2 -2
  31. package/dist/Auth/utils/getClientRequestIPsInfo.d.ts.map +1 -1
  32. package/dist/DBEventsManager.d.ts +5 -5
  33. package/dist/DBEventsManager.d.ts.map +1 -1
  34. package/dist/DBEventsManager.js.map +1 -1
  35. package/dist/DboBuilder/DboBuilderTypes.d.ts +1 -1
  36. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  37. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  38. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +4 -3
  39. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  40. package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -1
  41. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  42. package/dist/DboBuilder/dboBuilderUtils.js +3 -2
  43. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  44. package/dist/DboBuilder/runSql/QueryStreamer.d.ts +2 -2
  45. package/dist/DboBuilder/runSql/QueryStreamer.d.ts.map +1 -1
  46. package/dist/Logging.d.ts +4 -0
  47. package/dist/Logging.d.ts.map +1 -1
  48. package/dist/Prostgles.d.ts +4 -4
  49. package/dist/Prostgles.d.ts.map +1 -1
  50. package/dist/Prostgles.js.map +1 -1
  51. package/dist/ProstglesTypes.d.ts +3 -3
  52. package/dist/ProstglesTypes.d.ts.map +1 -1
  53. package/dist/PubSubManager/PubSubManager.d.ts +8 -7
  54. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  55. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  56. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.d.ts +2 -2
  57. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.d.ts.map +1 -1
  58. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.js +1 -3
  59. package/dist/PubSubManager/SyncReplication/getSyncUtilFunctions.js.map +1 -1
  60. package/dist/PubSubManager/SyncReplication/logSyncError.d.ts +6 -0
  61. package/dist/PubSubManager/SyncReplication/logSyncError.d.ts.map +1 -0
  62. package/dist/PubSubManager/SyncReplication/logSyncError.js +18 -0
  63. package/dist/PubSubManager/SyncReplication/logSyncError.js.map +1 -0
  64. package/dist/PubSubManager/SyncReplication/syncData.d.ts.map +1 -1
  65. package/dist/PubSubManager/SyncReplication/syncData.js +48 -27
  66. package/dist/PubSubManager/SyncReplication/syncData.js.map +1 -1
  67. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  68. package/dist/PubSubManager/addSync.js +3 -3
  69. package/dist/PubSubManager/addSync.js.map +1 -1
  70. package/dist/PubSubManager/addTrigger.d.ts +2 -2
  71. package/dist/PubSubManager/addTrigger.d.ts.map +1 -1
  72. package/dist/PubSubManager/addTrigger.js.map +1 -1
  73. package/dist/WebsocketAPI/onSocketConnected.d.ts +2 -2
  74. package/dist/WebsocketAPI/onSocketConnected.d.ts.map +1 -1
  75. package/dist/WebsocketAPI/onSocketConnected.js.map +1 -1
  76. package/dist/WebsocketAPI/pushSocketSchema.d.ts +2 -2
  77. package/dist/WebsocketAPI/pushSocketSchema.d.ts.map +1 -1
  78. package/dist/WebsocketAPI/pushSocketSchema.js.map +1 -1
  79. package/lib/Auth/AuthHandler.ts +2 -2
  80. package/lib/Auth/AuthTypes.ts +2 -2
  81. package/lib/Auth/utils/getClientRequestIPsInfo.ts +2 -2
  82. package/lib/DBEventsManager.ts +5 -5
  83. package/lib/DboBuilder/DboBuilderTypes.ts +1 -1
  84. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +5 -4
  85. package/lib/DboBuilder/dboBuilderUtils.ts +7 -2
  86. package/lib/DboBuilder/runSql/QueryStreamer.ts +2 -2
  87. package/lib/Logging.ts +5 -0
  88. package/lib/Prostgles.ts +2 -2
  89. package/lib/ProstglesTypes.ts +3 -3
  90. package/lib/PubSubManager/PubSubManager.ts +7 -6
  91. package/lib/PubSubManager/SyncReplication/getSyncUtilFunctions.ts +3 -8
  92. package/lib/PubSubManager/SyncReplication/logSyncError.ts +22 -0
  93. package/lib/PubSubManager/SyncReplication/syncData.ts +54 -30
  94. package/lib/PubSubManager/addSync.ts +3 -4
  95. package/lib/PubSubManager/addTrigger.ts +2 -2
  96. package/lib/WebsocketAPI/onSocketConnected.ts +2 -2
  97. package/lib/WebsocketAPI/pushSocketSchema.ts +2 -2
  98. package/package.json +1 -1
@@ -0,0 +1,644 @@
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 9y9rembly42ROyiCAAAA
101
+ (server): Client connected -> console does not work. use log function. socket.id: 9y9rembly42ROyiCAAAA
102
+ (client) t+ 41ms Client connect.
103
+ (client) t+ 166ms TEST_NAME: main Started
104
+ Client log (client) t+ 182ms Starting isomorphic queries
105
+ ▶ Isomorphic queries
106
+ ✔ Deleting stale data (22.873576ms)
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: 475aedb6-b2cd-4c0f-a418-1f90413bc8e3\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: 18862e42-5de1-41fc-a4df-c7f8485b6a8f\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 (56.600113ms)
160
+ ✔ Table info (2.024471ms)
161
+ ✔ Prepare data (52.846327ms)
162
+ ✔ Test bytea (11.64669ms)
163
+ ✔ abortSignal terminates a running query (5553.043695ms)
164
+ ✔ Client queries are aborted no more than after n seconds (14011.38912ms)
165
+ ✔ Subscription tracked_columns get merged correctly (0.757652ms)
166
+ Created PubSubManager
167
+ ✔ Aggregate subscription tracks FILTER and ORDER BY dependencies (1006.365248ms)
168
+ ✔ CASE select and subscription dependencies (668.793972ms)
169
+ ✔ Subscription tracks non-selected ORDER BY columns (659.614494ms)
170
+ ✔ merge json (11.14751ms)
171
+ ✔ json array converted to pg array filter bug (1.435646ms)
172
+ ✔ onConflict do update (7.824972ms)
173
+ ✔ Local file upload (53.392021ms)
174
+ ✔ Local file delete (16.41341ms)
175
+ ✔ Local file update (43.070966ms)
176
+ ✔ getColumns definition (1.563345ms)
177
+ ✔ returnType (0.754789ms)
178
+ ✔ Table config triggers (5.475945ms)
179
+ ✔ $unnest_words (1.403774ms)
180
+ ✔ Group by/Distinct (2.436876ms)
181
+ ✔ sql returntype default-with-rollback (25.729358ms)
182
+ ✔ returnType: value (1.754247ms)
183
+ ✔ PostgreSQL array element (13.455225ms)
184
+ ✔ FTS filtering (8.25657ms)
185
+ ✔ $term_highlight (7.367497ms)
186
+ ✔ funcFilters: $term_highlight (2.928503ms)
187
+ Client log (client) t+ 22458ms [{"name":null}]
188
+ Client log (client) t+ 22466ms [{"name":"zz3zz1"}]
189
+ Pushing 1 rows to socket x9
190
+ Client log (client) t+ 23105ms []
191
+ ✔ subscribe skipChangedColumnsCheck false by default = sub should not fire if selected data did not change (862.770838ms)
192
+ Pushing 0 rows to socket
193
+ Client log (client) t+ 25839ms [{"name":null}]
194
+ Client log (client) t+ 25847ms [{"name":"zz3zz1"}]
195
+ Client log (client) t+ 26064ms [{"name":"zz3zz1"}]
196
+ Client log (client) t+ 26281ms [{"name":"zz3zz1"}]
197
+ Pushing 1 rows to socket x4
198
+ Client log (client) t+ 26499ms []
199
+ ✔ subscribe skipChangedColumnsCheck true (3393.205265ms)
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 (60.585548ms)
205
+ Pushing 0 rows to socket
206
+ Pushing 1 rows to socket
207
+ ✔ subscribe to schema.table (20.686538ms)
208
+ Pushing 2 rows to socket
209
+ ✔ parallel subscriptions (2013.774401ms)
210
+ Client log (client) t+ 32924ms updateAll done in 1624
211
+ Client log (client) t+ 34503ms updateAll done in 1575
212
+ Pushing 0 rows to socket
213
+ Pushing 3 rows to socket
214
+ Client log (client) t+ 35122ms Locks: [{"pid":160,"blocking_pids":[152],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1055'\n WHERE id = 1055;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
215
+ Client log (client) t+ 35127ms Locks: [{"pid":155,"blocking_pids":[156],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1059'\n WHERE id = 1059;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
216
+ Client log (client) t+ 35306ms Locks: [{"pid":160,"blocking_pids":[155,158],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1183'\n WHERE id = 1183;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1180'\n WHERE id = 1180;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "},{"pid":158,"blocking_pids":[155],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1182'\n WHERE id = 1182;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1180'\n WHERE id = 1180;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
217
+ Client log (client) t+ 35598ms Locks: [{"pid":158,"blocking_pids":[159],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1385'\n WHERE id = 1385;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1384'\n WHERE id = 1384;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
218
+ Client log (client) t+ 35818ms Locks: [{"pid":159,"blocking_pids":[157],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1541'\n WHERE id = 1541;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1543'\n WHERE id = 1543;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
219
+ Client log (client) t+ 35940ms Locks: [{"pid":160,"blocking_pids":[153],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1631'\n WHERE id = 1631;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1632'\n WHERE id = 1632;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
220
+ Client log (client) t+ 36030ms Locks: [{"pid":156,"blocking_pids":[153],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1691'\n WHERE id = 1691;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1688'\n WHERE id = 1688;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
221
+ Client log (client) t+ 36083ms Locks: [{"pid":153,"blocking_pids":[157],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1723'\n WHERE id = 1723;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1724'\n WHERE id = 1724;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
222
+ Client log (client) t+ 36199ms Locks: [{"pid":152,"blocking_pids":[155],"wait_event":null,"wait_event_type":null,"query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1809'\n WHERE id = 1809;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1810'\n WHERE id = 1810;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
223
+ Client log (client) t+ 36283ms Locks: [{"pid":156,"blocking_pids":[152],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1869'\n WHERE id = 1869;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
224
+ Client log (client) t+ 36349ms Locks: [{"pid":141,"blocking_pids":[152],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1915'\n WHERE id = 1915;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1912'\n WHERE id = 1912;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
225
+ Pushing 996 rows to socket
226
+ Client log (client) t+ 36467ms updateAll done in 1947
227
+ Pushing 1000 rows to socket x2
228
+ ✔ subscriptions do not serialize transactions (9686.837609ms)
229
+ Pushing 3 rows to socket
230
+ Pushing 1 rows to socket
231
+ throttling sub for 1700 ms
232
+ throttling finished. pushSubData...
233
+ Pushing 1 rows to socket
234
+ throttling sub for 1700 ms
235
+ ✔ subscribeOne with throttle (1728.927439ms)
236
+ throttling sub for 1700 ms
237
+ throttling finished. pushSubData...
238
+ ✔ subscribeOne with throttle skipFirst: true (1703.384201ms)
239
+ Pushing 1 rows to socket
240
+ throttling finished. pushSubData...
241
+ Pushing 1 rows to socket
242
+ ✔ subscribeOne without skipFirst (1038.102545ms)
243
+ Pushing 0 rows to socket
244
+ Pushing 1 rows to socket
245
+ ✔ subscribeOne with skipFirst: true (1532.470235ms)
246
+ Pushing 0 rows to socket x2
247
+ ✔ subscribeOne actions: { insert: true } (1547.291531ms)
248
+ Pushing 1 rows to socket
249
+ ✔ subscribeOne actions: { insert: false } (1543.599833ms)
250
+ ✔ JSON filtering (4.858181ms)
251
+ ✔ Complex filtering (3.528748ms)
252
+ ✔ template_string function (4.234123ms)
253
+ ✔ Between filtering (3.050034ms)
254
+ ✔ In filtering (2.883393ms)
255
+ ✔ Order by (3.540494ms)
256
+ ✔ Order by aliased func (2.125207ms)
257
+ ✔ Filter by aliased func (1.725795ms)
258
+ ✔ Count with Filter by aliased func (2.53586ms)
259
+ ✔ Count with Aggregate and Filter by aliased func (2.341012ms)
260
+ ✔ Count with complex filter (2.302019ms)
261
+ ✔ Order by aggregation (2.031517ms)
262
+ ✔ Aggregate FILTER and ORDER BY (2.405699ms)
263
+ ✔ Column alias func (2.414584ms)
264
+ ✔ Order by colliding alias name (2.666773ms)
265
+ ✔ Update batch example (6.010085ms)
266
+ Client log TODO: socket.io stringifies dates
267
+ ✔ Function example (17.071503ms)
268
+ ✔ JSONB filtering (6.187583ms)
269
+ ✔ Postgis examples (17.548471ms)
270
+ ✔ jsonbSchema validation (13.142239ms)
271
+ ✔ find and findOne (2.946496ms)
272
+ ✔ Result size (5.856524ms)
273
+ ✔ Basic exists (5.809774ms)
274
+ ✔ Basic fts with shorthand notation (3.965755ms)
275
+ ✔ Exists with shortest path wildcard filter example (7.677977ms)
276
+ ✔ Exists with exact path filter example (1.409505ms)
277
+ ✔ Not Exists with exact path filter example (1.228813ms)
278
+ ✔ Upsert example (9.986477ms)
279
+ ✔ Joins example (1.934511ms)
280
+ ✔ Joins repeating table example (2.572554ms)
281
+ ✔ Join aggregate functions example (6.497434ms)
282
+ ✔ $rowhash example (4.018364ms)
283
+ ✔ Reference column nested insert (7.028392ms)
284
+ ✔ Join escaped table names with quotes (15.957605ms)
285
+ Pushing 0 rows to socket x2
286
+ Client log (client) t+ 47760ms {
287
+ "item": {
288
+ "\"id0\"": 1,
289
+ "\"quoted1_id\"": 1,
290
+ "\"text_col0\"": "0"
291
+ },
292
+ "runs": 0
293
+ }
294
+ Client log (client) t+ 47767ms {
295
+ "item": {
296
+ "\"id0\"": 1,
297
+ "\"quoted1_id\"": 1,
298
+ "\"text_col0\"": "1"
299
+ },
300
+ "runs": 1
301
+ }
302
+ Client log unsubscribe start - """quoted0"""
303
+ Client log unsubscribe end - """quoted0"""
304
+ ✔ subscribe to escaped table name (15.528296ms)
305
+ Pushing 1 rows to socket x2
306
+ ✔ subscribe using a filter bigger than block_size (16.646228ms)
307
+ ✔ Reverse join with agg (18.137738ms)
308
+ Pushing 0 rows to socket
309
+ 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}
310
+ 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}
311
+ ✔ Related table subscribe (9038.613051ms)
312
+ Pushing 2 rows to socket x2
313
+ ✔ Aggregate FILTER registers joined dependency triggers (661.130667ms)
314
+ ✔ Nested sort by computed col (7.690768ms)
315
+ ✔ Nested function on different than source column getNewQuery name bug fix (3.092254ms)
316
+ ✔ Reference column deep nested insert (22.495219ms)
317
+ ✔ Multi reference column nested insert (20.968855ms)
318
+ ✔ Join path with order by nested (16.044497ms)
319
+ ✔ Self join (28.986031ms)
320
+ ✔ One to many multi join duplicate row bug fix (19.342914ms)
321
+ Client log (client) t+ 57630ms various id=99 count 1
322
+ Pushing 1 rows to socket x3
323
+ Client log (client) t+ 57654ms various id=99 count
324
+ Client log ok
325
+ Error within running subscription
326
+ _psqlWS_..various.{"id":99}.{"select":{"name":1}}.m.sub {
327
+ message: 'column prostgles_root_table_alias.name does not exist',
328
+ length: 130,
329
+ name: 'error',
330
+ severity: 'ERROR',
331
+ code: '42703',
332
+ position: '133',
333
+ file: 'parse_relation.c',
334
+ line: '3716',
335
+ routine: 'errorMissingColumn',
336
+ query: '-- prostgles query id: 525a4d73-d91d-4af2-babc-6f8433f5847c\n' +
337
+ 'SET LOCAL "prostgles.user" \n' +
338
+ `TO '{"id":"1","type":"public"}';\n` +
339
+ 'SELECT \n' +
340
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
341
+ ' FROM ( \n' +
342
+ ' SELECT * \n' +
343
+ ' FROM various \n' +
344
+ ' WHERE "id" = 99 \n' +
345
+ ' ) prostgles_root_table_alias \n' +
346
+ ' LIMIT 1000',
347
+ code_info: 'undefined_column'
348
+ }
349
+ Client log (client) t+ 59674ms various id=99 count
350
+ Client log (client) t+ 59674ms 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: 525a4d73-d91d-4af2-babc-6f8433f5847c\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"}
351
+ Client log ok
352
+ ✔ subscribe triggers with stale schema should fail gracefully and never block other queries (6571.125312ms)
353
+ ✔ Isomorphic queries (64008.043935ms)
354
+ ✔ Having clause (3.69269ms)
355
+ ✔ Having clause with complex filter (2.36552ms)
356
+ Client log (client) t+ 64210ms auth.user: {"sid":"main","uid":"1","id":"1","type":"public"}
357
+ ✔ Nested join having clause (3.02065ms)
358
+ ▶ isomorphic typed queries
359
+ ✔ isLookupTable DB Types from colConf (0.175059ms)
360
+ ✔ isLookupTable DB Types from reference column actual definition (0.09573ms)
361
+ ✔ isLookupTable pkey column itself is typed (0.073943ms)
362
+ ✔ isomorphic typed queries (0.48341ms)
363
+ ▶ Client only queries
364
+ ✔ modifyClientSchema adds custom table and column metadata (3.401897ms)
365
+ ✔ SQL Stream more than 1k records (21.070805ms)
366
+ ✔ SQL Stream persistedConnection with streamLimit works for subsequent queries (11.854555ms)
367
+ ✔ SQL Stream ensure the connection is never released (same pg_backend_pid is the same for subsequent) when using persistConnectionId (10.79232ms)
368
+ ✔ SQL Stream stop kills the query (1029.739757ms)
369
+ ✔ SQL Stream limit works (31.608865ms)
370
+ ✔ SQL Stream stop with terminate kills the query (expect flakiness) (133.332325ms)
371
+ ✔ SQL Stream (15.688139ms)
372
+ ✔ SQL Stream parallel execution + parameters (14.623171ms)
373
+ ✔ SQL Stream query error structure matches default sql run error (14.121077ms)
374
+ ✔ SQL Stream streamLimit (13.061256ms)
375
+ ✔ SQL Stream table fields are the same as on default request (30.585154ms)
376
+ ✔ SQL Stream works for multiple statements (13.802782ms)
377
+ Client log (client) t+ 65575ms Checking public data
378
+ ✔ Check tableSchema (19.237816ms)
379
+ ✔ Security rules example (65.607613ms)
380
+ Client log (client) t+ 65658ms Started testRealtime
381
+ Client log (client) t+ 65681ms 1790258462386: sub stats: x10 -> 0 x20 ->0
382
+ Client log (client) t+ 65689ms 1790258462394: sync stats: x10 -> 0 x20 -> 0
383
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 0)
384
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 1)
385
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 2)
386
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 3)
387
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 4)
388
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 5)
389
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 6)
390
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 7)
391
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 8)
392
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 9)
393
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 10)
394
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 11)
395
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 12)
396
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 13)
397
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 14)
398
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 15)
399
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 16)
400
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 17)
401
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 18)
402
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 19)
403
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 20)
404
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 21)
405
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 22)
406
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 23)
407
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 24)
408
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 25)
409
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 26)
410
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 27)
411
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 28)
412
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 29)
413
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 30)
414
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 31)
415
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 32)
416
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 33)
417
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 34)
418
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 35)
419
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 36)
420
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 37)
421
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 38)
422
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 39)
423
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 40)
424
+ Client log (client) t+ 65690ms 1790258462395: sync: p.$update({ x: 10 }); (id: 41)
425
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 42)
426
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 43)
427
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 44)
428
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 45)
429
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 46)
430
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 47)
431
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 48)
432
+ Client log (client) t+ 65691ms 1790258462396: sync: p.$update({ x: 10 }); (id: 49)
433
+ Pushing 0 rows to socket x3
434
+ upsertData (from client): inserted( 0 ) updated( 50 ) total( 50 )
435
+ last insert undefined
436
+ last update {"id":49,"x":10,"y":49,"flight_number":"FN49","last_updated":1790258462396}
437
+ Client log (client) t+ 65759ms 1790258462464: sub stats: x10 -> 50 x20 ->0
438
+ Pushing 50 rows to socket
439
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
440
+ last insert undefined
441
+ last update undefined
442
+ server.syncBatch planes: inserted( 0 ) updated( 50 ) deleted( 0 ) pushed to client( 50 ) total( 100 ) undefined
443
+ Client log (client) t+ 65770ms 1790258462475: sync stats: x10 -> 50 x20 -> 0
444
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 50)
445
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 51)
446
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 52)
447
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 53)
448
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 54)
449
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 55)
450
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 56)
451
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 57)
452
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 58)
453
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 59)
454
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 60)
455
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 61)
456
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 62)
457
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 63)
458
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 64)
459
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 65)
460
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 66)
461
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 67)
462
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 68)
463
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 69)
464
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 70)
465
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 71)
466
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 72)
467
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 73)
468
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 74)
469
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 75)
470
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 76)
471
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 77)
472
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 78)
473
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 79)
474
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 80)
475
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 81)
476
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 82)
477
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 83)
478
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 84)
479
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 85)
480
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 86)
481
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 87)
482
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 88)
483
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 89)
484
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 90)
485
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 91)
486
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 92)
487
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 93)
488
+ Client log (client) t+ 65770ms 1790258462475: sync: p.$update({ x: 10 }); (id: 94)
489
+ Client log (client) t+ 65771ms 1790258462476: sync: p.$update({ x: 10 }); (id: 95)
490
+ Client log (client) t+ 65771ms 1790258462476: sync: p.$update({ x: 10 }); (id: 96)
491
+ Client log (client) t+ 65771ms 1790258462476: sync: p.$update({ x: 10 }); (id: 97)
492
+ Client log (client) t+ 65771ms 1790258462476: sync: p.$update({ x: 10 }); (id: 98)
493
+ Client log (client) t+ 65771ms 1790258462476: sync: p.$update({ x: 10 }); (id: 99)
494
+ Client log (client) t+ 65775ms 1790258462480: sync stats: x10 -> 100 x20 -> 0
495
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 1 )
496
+ last insert undefined
497
+ last update undefined
498
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 50 )
499
+ last insert undefined
500
+ last update {"id":50,"x":10,"last_updated":1790258462475}
501
+ Client log (client) t+ 65901ms 1790258462606: sub stats: x10 -> 51 x20 ->0
502
+ Pushing 51 rows to socket
503
+ upsertData (from WAL): inserted( 0 ) updated( 49 ) total( 49 )
504
+ last insert undefined
505
+ last update {"id":99,"x":10,"last_updated":1790258462476}
506
+ Client log (client) t+ 66050ms 1790258462755: sub stats: x10 -> 100 x20 ->0
507
+ Client log (client) t+ 68051ms 1790258464756: sub: db.planes.update({}, { x: 20, last_updated });
508
+ Client log (client) t+ 68076ms 1790258464775: sub: Updated to x20 100
509
+ Pushing 100 rows to socket
510
+ Client log (client) t+ 68091ms 1790258464796: sync stats: x10 -> 50 x20 -> 50
511
+ Client log (client) t+ 68106ms 1790258464811: sync stats: x10 -> 0 x20 -> 100
512
+ Client log (client) t+ 68106ms 1790258464811: sync end: Finished replication test. Inserting 100 rows then updating two times took: 448ms
513
+ ✔ Realtime (2466.419563ms)
514
+ Client log (client) t+ 68109ms sync handlesOnData true 100
515
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 5 )
516
+ last insert undefined
517
+ last update undefined x2
518
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 100 ) total( 100 ) undefined
519
+ ✔ sync handlesOnData true -> false no data bug (2001.528503ms)
520
+ ﹣ Security rules example (0.283753ms) # SKIP
521
+ ✔ Client only queries (5898.229344ms)
522
+ ▶ React hooks
523
+ ✔ useFind (524.993021ms)
524
+ {
525
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
526
+ }
527
+ ✔ useSubscribe (533.312187ms)
528
+ ✔ useFindOne (512.606929ms)
529
+ Pushing 1 rows to socket
530
+ {
531
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
532
+ }
533
+ ✔ useSubscribeOne (528.855806ms)
534
+ ✔ useCount (516.780775ms)
535
+ ✔ useSize (511.288631ms)
536
+ ✔ useCount planes (256.887908ms)
537
+ Pushing 2 rows to socket
538
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
539
+ last insert undefined
540
+ last update undefined
541
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
542
+ last insert undefined
543
+ last update undefined
544
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
545
+ Client log (client) t+ 73830ms 1790258470535: sync stats: x10 -> 0 x20 -> 99
546
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
547
+ last insert undefined
548
+ last update undefined
549
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 2 ) total( 100 ) undefined
550
+ ✔ useSync (570.359374ms)
551
+ Client log (client) t+ 74102ms 1790258470807: sync stats: x10 -> 0 x20 -> 100
552
+ Client log (client) t+ 74102ms 1790258470807: sync end: Finished replication test. Inserting 100 rows then updating two times took: 6444ms
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 client): inserted( 0 ) updated( 0 ) total( 1 )
558
+ last insert undefined
559
+ last update undefined
560
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
561
+ Client log (client) t+ 74417ms 1790258471122: sync stats: x10 -> 0 x20 -> 99
562
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
563
+ last insert undefined
564
+ last update undefined x2
565
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
566
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
567
+ ✔ useSync updates invalidate useMemo without mutating old data (390.156654ms)
568
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
569
+ last insert undefined
570
+ last update {"id":0,"x":232,"last_updated":1790258471140}
571
+ Client log (client) t+ 74467ms 1790258471172: sync stats: x10 -> 0 x20 -> 99
572
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
573
+ last insert undefined
574
+ last update undefined
575
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
576
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
577
+ last insert undefined
578
+ last update undefined
579
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
580
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
581
+ last insert undefined
582
+ last update undefined x2
583
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
584
+ Client log (client) t+ 74760ms 1790258471465: sync stats: x10 -> 0 x20 -> 99
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 (341.447606ms)
587
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
588
+ last insert undefined
589
+ last update {"id":0,"x":32,"last_updated":1790258471483}
590
+ Client log (client) t+ 74804ms 1790258471509: sync stats: x10 -> 0 x20 -> 99
591
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
592
+ last insert undefined
593
+ last update undefined
594
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
595
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
596
+ last insert undefined
597
+ last update undefined
598
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
599
+ Client log (client) t+ 75109ms Reconnected
600
+ Client log (client) t+ 75149ms TEST_NAME: main Started
601
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
602
+ last insert undefined
603
+ last update undefined
604
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
605
+ last insert undefined
606
+ last update undefined
607
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 2 ) total( 3 ) undefined
608
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 102 ) total( 152 ) undefined
609
+ Client log (client) t+ 75181ms 1790258471886: sync stats: x10 -> 0 x20 -> 99
610
+ (server): Client disconnected. socket.id: 9y9rembly42ROyiCAAAA
611
+ onSocketConnect Vkyij3jwZ0DQfVkRAAAB
612
+ (server): Client connected -> console does not work. use log function. socket.id: Vkyij3jwZ0DQfVkRAAAB
613
+ Client log (client) t+ 75184ms Disconnected
614
+ Client log (client) t+ 76296ms Client connect.
615
+ schemaChanged must syncHandler.destroySyncs()
616
+ Client log (client) t+ 76408ms Reconnected
617
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
618
+ last insert undefined
619
+ last update undefined
620
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 102 ) total( 152 ) undefined
621
+ Client log (client) t+ 76441ms TEST_NAME: main Started
622
+ Client log (client) t+ 76443ms 1790258473148: sync stats: x10 -> 0 x20 -> 99
623
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
624
+ last insert undefined
625
+ last update undefined
626
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 3 ) total( 4 ) undefined
627
+ Client log (client) t+ 76459ms 1790258473164: sync stats: x10 -> 0 x20 -> 99
628
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
629
+ last insert undefined
630
+ last update undefined
631
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
632
+ Client log (client) t+ 76469ms TEST_NAME: main Finished OK
633
+ ✔ concurrent useSync hooks receive inserts after reattachment and reconnect (1669.657381ms)
634
+ ✔ React hooks (6357.705725ms)
635
+ Client test successful
636
+ (server): Stopping server ...
637
+ ℹ tests 122
638
+ ℹ suites 4
639
+ ℹ pass 121
640
+ ℹ fail 0
641
+ ℹ cancelled 0
642
+ ℹ skipped 1
643
+ ℹ todo 0
644
+ ℹ duration_ms 83712.176077
File without changes