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,659 @@
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
+ CREATE TABLE "uuid_text" (
88
+ "id" UUID ,
89
+ "col1" TEXT REFERENCES lookup_col1 (id) ,
90
+ "col2" TEXT REFERENCES lookup_col1 (id) ,
91
+ "col3" TEXT REFERENCES lookup_col1
92
+ );
93
+ DROP TABLE IF EXISTS "api_table";
94
+ CREATE TABLE "api_table" (
95
+ "id" SERIAL PRIMARY KEY
96
+ );
97
+ CREATE TABLE "rec_ref" (
98
+ "id" SERIAL PRIMARY KEY
99
+ );
100
+ CREATE TABLE "rec" (
101
+ "id" SERIAL PRIMARY KEY ,
102
+ "parent_id" INTEGER REFERENCES rec ,
103
+ "recf" INTEGER REFERENCES rec_ref
104
+ );
105
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
106
+ Prostgles: Created typescript schema definition file:
107
+ DBGeneratedSchema.ts
108
+ (server): prostgles onReady
109
+ (server): Waiting for client...
110
+ (client) t+ 0ms Started client...
111
+ onSocketConnect G9i-ukwV6FhLRxN0AAAA
112
+ (server): Client connected -> console does not work. use log function. socket.id: G9i-ukwV6FhLRxN0AAAA
113
+ (client) t+ 40ms Client connect.
114
+ (client) t+ 172ms TEST_NAME: main Started
115
+ Client log (client) t+ 183ms Starting isomorphic queries
116
+ ▶ Isomorphic queries
117
+ ✔ Deleting stale data (19.686031ms)
118
+ {
119
+ message: 'malformed array literal: "a"',
120
+ length: 149,
121
+ name: 'error',
122
+ severity: 'ERROR',
123
+ code: '22P02',
124
+ detail: 'Array value must start with "{" or dimension information.',
125
+ position: '325',
126
+ file: 'arrayfuncs.c',
127
+ line: '262',
128
+ routine: 'array_in',
129
+ query: '-- prostgles query id: face7d25-ed03-4a1c-9d24-f0d1fb45c97c\n' +
130
+ 'SET LOCAL "prostgles.user" \n' +
131
+ `TO '{"id":"1","type":"public"}';\n` +
132
+ 'SELECT \n' +
133
+ ' "prostgles_root_table_alias"."id" AS "id", \n' +
134
+ ' "prostgles_root_table_alias"."h" AS "h", \n' +
135
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
136
+ ' FROM ( \n' +
137
+ ' SELECT * \n' +
138
+ ' FROM items \n' +
139
+ ` WHERE "h" = 'a' \n` +
140
+ ' ) prostgles_root_table_alias \n' +
141
+ ' LIMIT 0',
142
+ code_info: 'invalid_text_representation'
143
+ }
144
+ {
145
+ message: 'malformed array literal: "a"',
146
+ length: 149,
147
+ name: 'error',
148
+ severity: 'ERROR',
149
+ code: '22P02',
150
+ detail: 'Array value must start with "{" or dimension information.',
151
+ position: '325',
152
+ file: 'arrayfuncs.c',
153
+ line: '262',
154
+ routine: 'array_in',
155
+ query: '-- prostgles query id: eb80b0de-70be-4d9d-9023-59c378a1522c\n' +
156
+ 'SET LOCAL "prostgles.user" \n' +
157
+ `TO '{"id":"1","type":"public"}';\n` +
158
+ 'SELECT \n' +
159
+ ' "prostgles_root_table_alias"."id" AS "id", \n' +
160
+ ' "prostgles_root_table_alias"."h" AS "h", \n' +
161
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
162
+ ' FROM ( \n' +
163
+ ' SELECT * \n' +
164
+ ' FROM items \n' +
165
+ ` WHERE "h" = 'a' \n` +
166
+ ' ) prostgles_root_table_alias \n' +
167
+ ' LIMIT 0',
168
+ code_info: 'invalid_text_representation'
169
+ }
170
+ ✔ Error structure malformed array literal (42.014222ms)
171
+ ✔ Table info (8.465584ms)
172
+ ✔ Prepare data (40.912033ms)
173
+ ✔ Test bytea (8.784874ms)
174
+ ✔ abortSignal terminates a running query (5550.866856ms)
175
+ ✔ Client queries are aborted no more than after n seconds (14015.319198ms)
176
+ ✔ Subscription tracked_columns get merged correctly (0.639218ms)
177
+ getPubSubManagerInitQuery: No prostgles.versions table found. Creating...
178
+ Created PubSubManager
179
+ ✔ Aggregate subscription tracks FILTER and ORDER BY dependencies (1050.762596ms)
180
+ ✔ CASE select and subscription dependencies (666.626212ms)
181
+ ✔ Subscription tracks non-selected ORDER BY columns (658.17407ms)
182
+ ✔ merge json (10.461093ms)
183
+ ✔ json array converted to pg array filter bug (2.815957ms)
184
+ ✔ onConflict do update (12.445457ms)
185
+ ✔ Local file upload (60.25344ms)
186
+ ✔ Local file delete (38.445797ms)
187
+ ✔ Local file update (62.07687ms)
188
+ ✔ getColumns definition (2.396406ms)
189
+ ✔ returnType (1.320713ms)
190
+ ✔ Table config triggers (11.302003ms)
191
+ ✔ $unnest_words (2.503507ms)
192
+ ✔ Group by/Distinct (4.212352ms)
193
+ ✔ sql returntype default-with-rollback (28.028146ms)
194
+ ✔ returnType: value (2.314639ms)
195
+ ✔ PostgreSQL array element (9.272099ms)
196
+ ✔ FTS filtering (16.053635ms)
197
+ ✔ $term_highlight (8.859466ms)
198
+ ✔ funcFilters: $term_highlight (5.041546ms)
199
+ Client log (client) t+ 22557ms [{"name":null}]
200
+ Client log (client) t+ 22565ms [{"name":"zz3zz1"}]
201
+ Pushing 1 rows to socket x9
202
+ Client log (client) t+ 23211ms []
203
+ ✔ subscribe skipChangedColumnsCheck false by default = sub should not fire if selected data did not change (878.733539ms)
204
+ Pushing 0 rows to socket
205
+ Client log (client) t+ 25953ms [{"name":null}]
206
+ Client log (client) t+ 25959ms [{"name":"zz3zz1"}]
207
+ Client log (client) t+ 26179ms [{"name":"zz3zz1"}]
208
+ Client log (client) t+ 26396ms [{"name":"zz3zz1"}]
209
+ Pushing 1 rows to socket x4
210
+ Client log (client) t+ 26611ms []
211
+ ✔ subscribe skipChangedColumnsCheck true (3398.442913ms)
212
+ Pushing 0 rows to socket
213
+ Pushing 1 rows to socket x4
214
+ Client log unsubscribe start - various
215
+ Client log unsubscribe end - various
216
+ ✔ subscribe (60.268014ms)
217
+ Pushing 0 rows to socket
218
+ Pushing 1 rows to socket
219
+ ✔ subscribe to schema.table (20.982074ms)
220
+ Pushing 2 rows to socket
221
+ ✔ parallel subscriptions (2010.351622ms)
222
+ Client log (client) t+ 33067ms updateAll done in 1661
223
+ Client log (client) t+ 34688ms updateAll done in 1617
224
+ Pushing 0 rows to socket
225
+ Pushing 3 rows to socket
226
+ Client log (client) t+ 35270ms Locks: [{"pid":99,"blocking_pids":[96],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1017'\n WHERE id = 1017;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1015'\n WHERE id = 1015;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
227
+ Client log (client) t+ 35285ms Locks: [{"pid":99,"blocking_pids":[100],"wait_event":null,"wait_event_type":null,"query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1025'\n WHERE id = 1025;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
228
+ Client log (client) t+ 35293ms Locks: [{"pid":101,"blocking_pids":[92],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1031'\n WHERE id = 1031;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1030'\n WHERE id = 1030;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
229
+ Client log (client) t+ 35335ms Locks: [{"pid":95,"blocking_pids":[101],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1058'\n WHERE id = 1058;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
230
+ Client log (client) t+ 35374ms Locks: [{"pid":93,"blocking_pids":[92],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1090'\n WHERE id = 1090;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1088'\n WHERE id = 1088;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
231
+ Client log (client) t+ 35886ms Locks: [{"pid":95,"blocking_pids":[93],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1451'\n WHERE id = 1451;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1454'\n WHERE id = 1454;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
232
+ Client log (client) t+ 35902ms Locks: [{"pid":96,"blocking_pids":[95],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1465'\n WHERE id = 1465;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1462'\n WHERE id = 1462;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
233
+ Client log (client) t+ 35973ms Locks: [{"pid":92,"blocking_pids":[97],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1514'\n WHERE id = 1514;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
234
+ Client log (client) t+ 36094ms Locks: [{"pid":99,"blocking_pids":[97],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1595'\n WHERE id = 1595;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
235
+ Client log (client) t+ 36203ms Locks: [{"pid":98,"blocking_pids":[96],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1676'\n WHERE id = 1676;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1675'\n WHERE id = 1675;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
236
+ Client log (client) t+ 36219ms Locks: [{"pid":93,"blocking_pids":[97],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1687'\n WHERE id = 1687;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1686'\n WHERE id = 1686;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
237
+ Client log (client) t+ 36382ms Locks: [{"pid":97,"blocking_pids":[96],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1802'\n WHERE id = 1802;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1800'\n WHERE id = 1800;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
238
+ Client log (client) t+ 36513ms Locks: [{"pid":98,"blocking_pids":[81],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1897'\n WHERE id = 1897;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1894'\n WHERE id = 1894;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
239
+ Client log (client) t+ 36600ms Locks: [{"pid":81,"blocking_pids":[101],"wait_event":null,"wait_event_type":null,"query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1955'\n WHERE id = 1955;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
240
+ Client log (client) t+ 36638ms Locks: [{"pid":96,"blocking_pids":[93],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1980'\n WHERE id = 1980;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1982'\n WHERE id = 1982;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
241
+ Pushing 997 rows to socket
242
+ Client log (client) t+ 36667ms updateAll done in 1960
243
+ Pushing 1000 rows to socket x2
244
+ ✔ subscriptions do not serialize transactions (9772.742347ms)
245
+ Pushing 3 rows to socket
246
+ Pushing 1 rows to socket
247
+ throttling sub for 1700 ms
248
+ throttling finished. pushSubData...
249
+ Pushing 1 rows to socket
250
+ throttling sub for 1700 ms
251
+ ✔ subscribeOne with throttle (1741.765167ms)
252
+ throttling sub for 1700 ms
253
+ throttling finished. pushSubData...
254
+ ✔ subscribeOne with throttle skipFirst: true (1703.005966ms)
255
+ Pushing 1 rows to socket
256
+ throttling finished. pushSubData...
257
+ Pushing 1 rows to socket
258
+ ✔ subscribeOne without skipFirst (1026.209776ms)
259
+ Pushing 0 rows to socket
260
+ Pushing 1 rows to socket
261
+ ✔ subscribeOne with skipFirst: true (1532.497848ms)
262
+ Pushing 0 rows to socket x2
263
+ ✔ subscribeOne actions: { insert: true } (1546.296321ms)
264
+ Pushing 1 rows to socket
265
+ ✔ subscribeOne actions: { insert: false } (1551.798438ms)
266
+ ✔ JSON filtering (6.796889ms)
267
+ ✔ Complex filtering (5.076085ms)
268
+ ✔ template_string function (4.335095ms)
269
+ ✔ Between filtering (3.976215ms)
270
+ ✔ In filtering (3.921096ms)
271
+ ✔ Order by (3.717897ms)
272
+ ✔ Order by aliased func (2.438075ms)
273
+ ✔ Filter by aliased func (2.272279ms)
274
+ ✔ Count with Filter by aliased func (3.008641ms)
275
+ ✔ Count with Aggregate and Filter by aliased func (2.730276ms)
276
+ ✔ Count with complex filter (2.948601ms)
277
+ ✔ Order by aggregation (2.350923ms)
278
+ ✔ Aggregate FILTER and ORDER BY (2.601729ms)
279
+ ✔ Column alias func (2.335606ms)
280
+ ✔ Order by colliding alias name (2.450068ms)
281
+ ✔ Update batch example (18.050361ms)
282
+ Client log TODO: socket.io stringifies dates
283
+ ✔ Function example (26.084601ms)
284
+ ✔ JSONB filtering (10.407689ms)
285
+ ✔ Postgis examples (21.372049ms)
286
+ ✔ jsonbSchema validation (10.890918ms)
287
+ ✔ find and findOne (3.999166ms)
288
+ ✔ Result size (2.917804ms)
289
+ ✔ Basic exists (5.095138ms)
290
+ ✔ Basic fts with shorthand notation (7.226744ms)
291
+ ✔ Exists with shortest path wildcard filter example (5.616451ms)
292
+ ✔ Exists with exact path filter example (2.624817ms)
293
+ ✔ Not Exists with exact path filter example (3.343398ms)
294
+ ✔ Upsert example (18.262317ms)
295
+ ✔ Joins example (5.775656ms)
296
+ ✔ Joins repeating table example (7.442494ms)
297
+ ✔ Join aggregate functions example (12.474127ms)
298
+ ✔ $rowhash example (7.210328ms)
299
+ ✔ Reference column nested insert (11.580033ms)
300
+ ✔ Join escaped table names with quotes (23.001021ms)
301
+ Pushing 0 rows to socket x2
302
+ Client log (client) t+ 48041ms {
303
+ "item": {
304
+ "\"id0\"": 1,
305
+ "\"quoted1_id\"": 1,
306
+ "\"text_col0\"": "0"
307
+ },
308
+ "runs": 0
309
+ }
310
+ Client log (client) t+ 48054ms {
311
+ "item": {
312
+ "\"id0\"": 1,
313
+ "\"quoted1_id\"": 1,
314
+ "\"text_col0\"": "1"
315
+ },
316
+ "runs": 1
317
+ }
318
+ Client log unsubscribe start - """quoted0"""
319
+ Client log unsubscribe end - """quoted0"""
320
+ ✔ subscribe to escaped table name (27.88309ms)
321
+ Pushing 1 rows to socket x2
322
+ ✔ subscribe using a filter bigger than block_size (20.386808ms)
323
+ ✔ Reverse join with agg (22.572322ms)
324
+ Pushing 0 rows to socket
325
+ 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}
326
+ 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}
327
+ ✔ Related table subscribe (9058.663518ms)
328
+ Pushing 2 rows to socket x2
329
+ ✔ Aggregate FILTER registers joined dependency triggers (669.007788ms)
330
+ ✔ Nested sort by computed col (7.360619ms)
331
+ ✔ Nested function on different than source column getNewQuery name bug fix (2.608795ms)
332
+ ✔ Reference column deep nested insert (20.381672ms)
333
+ ✔ Multi reference column nested insert (13.413573ms)
334
+ ✔ Join path with order by nested (7.533913ms)
335
+ ✔ Self join (12.584678ms)
336
+ ✔ One to many multi join duplicate row bug fix (9.063016ms)
337
+ Client log (client) t+ 57910ms various id=99 count 1
338
+ Pushing 1 rows to socket x3
339
+ Client log (client) t+ 57912ms various id=99 count
340
+ Client log ok
341
+ Error within running subscription
342
+ _psqlWS_..various.{"id":99}.{"select":{"name":1}}.m.sub {
343
+ message: 'column prostgles_root_table_alias.name does not exist',
344
+ length: 130,
345
+ name: 'error',
346
+ severity: 'ERROR',
347
+ code: '42703',
348
+ position: '133',
349
+ file: 'parse_relation.c',
350
+ line: '3716',
351
+ routine: 'errorMissingColumn',
352
+ query: '-- prostgles query id: 0dec77e3-caf2-4af8-a9a5-bd866981fde0\n' +
353
+ 'SET LOCAL "prostgles.user" \n' +
354
+ `TO '{"id":"1","type":"public"}';\n` +
355
+ 'SELECT \n' +
356
+ ' "prostgles_root_table_alias"."name" AS "name" \n' +
357
+ ' FROM ( \n' +
358
+ ' SELECT * \n' +
359
+ ' FROM various \n' +
360
+ ' WHERE "id" = 99 \n' +
361
+ ' ) prostgles_root_table_alias \n' +
362
+ ' LIMIT 1000',
363
+ code_info: 'undefined_column'
364
+ }
365
+ Client log (client) t+ 59934ms various id=99 count
366
+ Client log (client) t+ 59935ms 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: 0dec77e3-caf2-4af8-a9a5-bd866981fde0\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"}
367
+ Client log ok
368
+ ✔ subscribe triggers with stale schema should fail gracefully and never block other queries (6547.863128ms)
369
+ ✔ Isomorphic queries (64264.201183ms)
370
+ ✔ Having clause (3.440873ms)
371
+ ✔ Having clause with complex filter (2.470073ms)
372
+ Client log (client) t+ 64468ms auth.user: {"sid":"main","uid":"1","id":"1","type":"public"}
373
+ ✔ Nested join having clause (3.317544ms)
374
+ ▶ isomorphic typed queries
375
+ ✔ isLookupTable DB Types from colConf (0.252285ms)
376
+ ✔ isLookupTable DB Types from reference column actual definition (0.173922ms)
377
+ ✔ isLookupTable pkey column itself is typed (0.139732ms)
378
+ ✔ isomorphic typed queries (0.782102ms)
379
+ ▶ Client only queries
380
+ ✔ modifyClientSchema adds custom table and column metadata (3.028541ms)
381
+ ✔ SQL Stream more than 1k records (21.363521ms)
382
+ ✔ SQL Stream persistedConnection with streamLimit works for subsequent queries (11.55986ms)
383
+ ✔ SQL Stream ensure the connection is never released (same pg_backend_pid is the same for subsequent) when using persistConnectionId (10.315118ms)
384
+ ✔ SQL Stream stop kills the query (1029.642949ms)
385
+ ✔ SQL Stream limit works (25.648325ms)
386
+ ✔ SQL Stream stop with terminate kills the query (expect flakiness) (135.9398ms)
387
+ ✔ SQL Stream (15.489961ms)
388
+ ✔ SQL Stream parallel execution + parameters (13.371556ms)
389
+ ✔ SQL Stream query error structure matches default sql run error (11.316916ms)
390
+ ✔ SQL Stream streamLimit (13.967795ms)
391
+ ✔ SQL Stream table fields are the same as on default request (59.147233ms)
392
+ ✔ SQL Stream works for multiple statements (21.549282ms)
393
+ Client log (client) t+ 65869ms Checking public data
394
+ ✔ Check tableSchema (27.308014ms)
395
+ ✔ Security rules example (53.141855ms)
396
+ Client log (client) t+ 65937ms Started testRealtime
397
+ Client log (client) t+ 65962ms 1790244860825: sub stats: x10 -> 0 x20 ->0
398
+ Client log (client) t+ 65968ms 1790244860831: sync stats: x10 -> 0 x20 -> 0
399
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 0)
400
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 1)
401
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 2)
402
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 3)
403
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 4)
404
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 5)
405
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 6)
406
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 7)
407
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 8)
408
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 9)
409
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 10)
410
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 11)
411
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 12)
412
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 13)
413
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 14)
414
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 15)
415
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 16)
416
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 17)
417
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 18)
418
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 19)
419
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 20)
420
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 21)
421
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 22)
422
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 23)
423
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 24)
424
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 25)
425
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 26)
426
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 27)
427
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 28)
428
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 29)
429
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 30)
430
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 31)
431
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 32)
432
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 33)
433
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 34)
434
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 35)
435
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 36)
436
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 37)
437
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 38)
438
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 39)
439
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 40)
440
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 41)
441
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 42)
442
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 43)
443
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 44)
444
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 45)
445
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 46)
446
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 47)
447
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 48)
448
+ Client log (client) t+ 65969ms 1790244860832: sync: p.$update({ x: 10 }); (id: 49)
449
+ Pushing 0 rows to socket x3
450
+ upsertData (from client): inserted( 0 ) updated( 50 ) total( 50 )
451
+ last insert undefined
452
+ last update {"id":49,"x":10,"y":49,"flight_number":"FN49","last_updated":1790244860832}
453
+ Client log (client) t+ 66033ms 1790244860896: sub stats: x10 -> 50 x20 ->0
454
+ Pushing 50 rows to socket
455
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
456
+ last insert undefined
457
+ last update undefined
458
+ server.syncBatch planes: inserted( 0 ) updated( 50 ) deleted( 0 ) pushed to client( 50 ) total( 100 ) undefined
459
+ Client log (client) t+ 66043ms 1790244860906: sync stats: x10 -> 50 x20 -> 0
460
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 50)
461
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 51)
462
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 52)
463
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 53)
464
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 54)
465
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 55)
466
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 56)
467
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 57)
468
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 58)
469
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 59)
470
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 60)
471
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 61)
472
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 62)
473
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 63)
474
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 64)
475
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 65)
476
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 66)
477
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 67)
478
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 68)
479
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 69)
480
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 70)
481
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 71)
482
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 72)
483
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 73)
484
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 74)
485
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 75)
486
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 76)
487
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 77)
488
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 78)
489
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 79)
490
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 80)
491
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 81)
492
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 82)
493
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 83)
494
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 84)
495
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 85)
496
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 86)
497
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 87)
498
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 88)
499
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 89)
500
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 90)
501
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 91)
502
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 92)
503
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 93)
504
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 94)
505
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 95)
506
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 96)
507
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 97)
508
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 98)
509
+ Client log (client) t+ 66043ms 1790244860906: sync: p.$update({ x: 10 }); (id: 99)
510
+ Client log (client) t+ 66048ms 1790244860911: sync stats: x10 -> 100 x20 -> 0
511
+ {
512
+ syncIssue: 'sync.lr[synced_field] is greater than lastRow[synced_field]'
513
+ } planes
514
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 1 )
515
+ last insert undefined
516
+ last update undefined
517
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
518
+ last insert undefined
519
+ last update undefined
520
+ upsertData (from client): inserted( 0 ) updated( 50 ) total( 50 )
521
+ last insert undefined
522
+ last update {"id":99,"x":10,"y":99,"flight_number":"FN99","last_updated":1790244860906}
523
+ Client log (client) t+ 66147ms 1790244861010: sub stats: x10 -> 100 x20 ->0
524
+ Pushing 100 rows to socket
525
+ server.syncBatch planes: inserted( 0 ) updated( 50 ) deleted( 0 ) pushed to client( 0 ) total( 100 ) undefined
526
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 50 )
527
+ last insert undefined
528
+ last update undefined
529
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
530
+ last insert undefined
531
+ last update undefined
532
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 0 ) total( 50 ) undefined
533
+ Client log (client) t+ 68150ms 1790244863013: sub: db.planes.update({}, { x: 20, last_updated });
534
+ Client log (client) t+ 68170ms 1790244863029: sub: Updated to x20 100
535
+ upsertData (from WAL): inserted( 0 ) updated( 0 ) total( 49 )
536
+ last insert undefined
537
+ last update undefined
538
+ Client log (client) t+ 68186ms 1790244863049: sync stats: x10 -> 50 x20 -> 50
539
+ Client log (client) t+ 68204ms 1790244863067: sync stats: x10 -> 0 x20 -> 100
540
+ ✔ Realtime (2282.390887ms)
541
+ Client log (client) t+ 68204ms 1790244863067: sync end: Finished replication test. Inserting 100 rows then updating two times took: 267ms
542
+ Client log (client) t+ 68207ms sync handlesOnData true 100
543
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
544
+ last insert undefined
545
+ last update undefined x2
546
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 100 ) total( 100 ) undefined
547
+ ✔ sync handlesOnData true -> false no data bug (2001.86911ms)
548
+ ﹣ Security rules example (0.299532ms) # SKIP
549
+ ✔ Client only queries (5738.819264ms)
550
+ ▶ React hooks
551
+ ✔ useFind (529.420536ms)
552
+ {
553
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
554
+ }
555
+ ✔ useSubscribe (528.778003ms)
556
+ ✔ useFindOne (508.522937ms)
557
+ Pushing 1 rows to socket
558
+ {
559
+ message: 'items4.named is invalid/disallowed for filtering. Allowed columns: added, "id", "public", "name"'
560
+ }
561
+ ✔ useSubscribeOne (528.687893ms)
562
+ ✔ useCount (516.183736ms)
563
+ ✔ useSize (516.305285ms)
564
+ ✔ useCount planes (256.781692ms)
565
+ Pushing 2 rows to socket
566
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
567
+ last insert undefined
568
+ last update undefined
569
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
570
+ last insert undefined
571
+ last update undefined
572
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
573
+ Client log (client) t+ 73928ms 1790244868791: sync stats: x10 -> 0 x20 -> 99
574
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
575
+ last insert undefined
576
+ last update undefined
577
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 2 ) total( 100 ) undefined
578
+ ✔ useSync (570.840143ms)
579
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
580
+ last insert undefined
581
+ last update undefined x2
582
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
583
+ Client log (client) t+ 74208ms 1790244869071: sync stats: x10 -> 0 x20 -> 100
584
+ Client log (client) t+ 74208ms 1790244869071: sync end: Finished replication test. Inserting 100 rows then updating two times took: 6271ms
585
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
586
+ Client log (client) t+ 74489ms 1790244869352: sync stats: x10 -> 0 x20 -> 99
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( 1 ) total( 1 ) undefined
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
+ ✔ useSync updates invalidate useMemo without mutating old data (369.251551ms)
596
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
597
+ last insert undefined
598
+ last update {"id":0,"x":232,"last_updated":1790244869377}
599
+ Client log (client) t+ 74555ms 1790244869418: sync stats: x10 -> 0 x20 -> 99
600
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
601
+ last insert undefined
602
+ last update undefined
603
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) 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( 1 ) total( 1 ) undefined
608
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
609
+ last insert undefined
610
+ last update undefined x2
611
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
612
+ Client log (client) t+ 74845ms 1790244869708: sync stats: x10 -> 0 x20 -> 99
613
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
614
+ upsertData (from WAL): inserted( 0 ) updated( 1 ) total( 1 )
615
+ last insert undefined
616
+ last update {"id":0,"x":32,"last_updated":1790244869708}
617
+ Client log (client) t+ 74857ms 1790244869720: sync stats: x10 -> 0 x20 -> 99
618
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
619
+ last insert undefined
620
+ last update undefined
621
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 1 ) undefined
622
+ ✔ concurrent useSync hooks with matching options all update (330.660159ms)
623
+ Client log (client) t+ 74896ms 1790244869759: sync stats: x10 -> 0 x20 -> 99
624
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
625
+ last insert undefined
626
+ last update undefined
627
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
628
+ (server): Client disconnected. socket.id: G9i-ukwV6FhLRxN0AAAA
629
+ onSocketConnect uIS1ymOFbjEmSA7_AAAB
630
+ (server): Client connected -> console does not work. use log function. socket.id: uIS1ymOFbjEmSA7_AAAB
631
+ Client log (client) t+ 75152ms Disconnected
632
+ Client log (client) t+ 76273ms Client connect.
633
+ schemaChanged must syncHandler.destroySyncs()
634
+ Client log (client) t+ 76382ms Reconnected
635
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 50 )
636
+ last insert undefined
637
+ last update undefined
638
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 51 ) total( 101 ) undefined
639
+ Client log (client) t+ 76422ms 1790244871285: sync stats: x10 -> 0 x20 -> 99
640
+ Client log (client) t+ 76424ms TEST_NAME: main Started
641
+ Client log (client) t+ 76456ms 1790244871319: sync stats: x10 -> 0 x20 -> 99
642
+ upsertData (from client): inserted( 0 ) updated( 0 ) total( 1 )
643
+ last insert undefined
644
+ last update undefined x2
645
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
646
+ server.syncBatch planes: inserted( 0 ) updated( 0 ) deleted( 0 ) pushed to client( 1 ) total( 2 ) undefined
647
+ Client log (client) t+ 76460ms TEST_NAME: main Finished OK
648
+ ✔ concurrent useSync hooks receive inserts after a socket reconnect (1593.02711ms)
649
+ ✔ React hooks (6249.770435ms)
650
+ Client test successful
651
+ (server): Stopping server ...
652
+ ℹ tests 122
653
+ ℹ suites 4
654
+ ℹ pass 121
655
+ ℹ fail 0
656
+ ℹ cancelled 0
657
+ ℹ skipped 1
658
+ ℹ todo 0
659
+ ℹ duration_ms 83668.467565