prostgles-server 4.2.642 → 4.2.643

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 (86) hide show
  1. package/debug/caught-request-fix-build.log +4 -0
  2. package/debug/caught-request-fix-test-build.log +0 -0
  3. package/debug/caught-request-subscription-failure.log +603 -0
  4. package/debug/caught-validation-build.log +4 -0
  5. package/debug/caught-validation-fix-build.log +4 -0
  6. package/debug/caught-validation-fix-test-build.log +0 -0
  7. package/debug/caught-validation-test-build.log +0 -0
  8. package/debug/client-db-tx-build.log +4 -0
  9. package/debug/client-db-tx-test-server.log +3248 -0
  10. package/debug/client-db-tx-tests-build.log +0 -0
  11. package/debug/client-handler-shape-build.log +4 -0
  12. package/debug/client-handler-shape-test-server.log +544 -0
  13. package/debug/client-handler-shape-tests-build.log +0 -0
  14. package/debug/column-definitions-test-server.log +152 -164
  15. package/debug/function-client-db-tx-build.log +4 -0
  16. package/debug/function-client-db-tx-tests-build.log +0 -0
  17. package/debug/schema-types-focused-strict-check.log +0 -0
  18. package/debug/schema-types-strict-check.log +38 -0
  19. package/debug/schema-types-tests-build.log +0 -0
  20. package/debug/security-review-baseline-tests.log +3250 -0
  21. package/debug/security-review-build.log +4 -0
  22. package/debug/security-review-checkfilter-repro.log +545 -0
  23. package/debug/security-review-clientSchemaTypes.spec.ts.backup +553 -0
  24. package/debug/security-review-repro-build.log +0 -0
  25. package/debug/security-review-repro.spec.ts +591 -0
  26. package/debug/security-review-restore-build.log +0 -0
  27. package/debug/security-review-server-tests.log +3254 -0
  28. package/debug/security-review-test-build.log +0 -0
  29. package/debug/test-check-eslint.log +6 -0
  30. package/debug/test-check-lint-baseline.json +1 -0
  31. package/debug/test-check-npm-test.log +789 -0
  32. package/debug/test-check-types.log +8 -0
  33. package/debug/test-config-npm-test.log +223 -0
  34. package/debug/test-config-strict-null-check.log +50 -0
  35. package/debug/test-config-typecheck.log +8 -0
  36. package/debug/tryRunP-test-quick.log +78 -0
  37. package/debug/tryRunP-typecheck.log +42 -0
  38. package/dist/Auth/AuthTypes.d.ts +3 -3
  39. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  40. package/dist/Auth/AuthTypes.js.map +1 -1
  41. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  42. package/dist/DboBuilder/DboBuilder.js +4 -2
  43. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  44. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +1 -1
  45. package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -0
  46. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  47. package/dist/DboBuilder/dboBuilderUtils.js +2 -1
  48. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  49. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  50. package/dist/PublishParser/PublishParser.js +2 -1
  51. package/dist/PublishParser/PublishParser.js.map +1 -1
  52. package/dist/PublishParser/defineServerFunction.d.ts +2 -0
  53. package/dist/PublishParser/defineServerFunction.d.ts.map +1 -1
  54. package/dist/PublishParser/defineServerFunction.js.map +1 -1
  55. package/dist/PublishParser/getPublishedTableNames.d.ts.map +1 -1
  56. package/dist/PublishParser/getPublishedTableNames.js +2 -1
  57. package/dist/PublishParser/getPublishedTableNames.js.map +1 -1
  58. package/dist/PublishParser/publishTypesAndUtils.d.ts +1 -1
  59. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  60. package/dist/StorageClient/StorageClientTypes.d.ts +5 -4
  61. package/dist/StorageClient/StorageClientTypes.d.ts.map +1 -1
  62. package/dist/WebsocketAPI/getClientHandlers.d.ts +5 -0
  63. package/dist/WebsocketAPI/getClientHandlers.d.ts.map +1 -1
  64. package/dist/WebsocketAPI/getClientHandlers.js +33 -14
  65. package/dist/WebsocketAPI/getClientHandlers.js.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +3 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/runClientRequest.d.ts +2 -1
  71. package/dist/runClientRequest.d.ts.map +1 -1
  72. package/dist/runClientRequest.js +4 -2
  73. package/dist/runClientRequest.js.map +1 -1
  74. package/eslint.config.mjs +21 -1
  75. package/lib/Auth/AuthTypes.ts +3 -2
  76. package/lib/DboBuilder/DboBuilder.ts +7 -2
  77. package/lib/DboBuilder/dboBuilderUtils.ts +2 -0
  78. package/lib/PublishParser/PublishParser.ts +2 -1
  79. package/lib/PublishParser/defineServerFunction.ts +3 -5
  80. package/lib/PublishParser/getPublishedTableNames.ts +2 -1
  81. package/lib/PublishParser/publishTypesAndUtils.ts +1 -1
  82. package/lib/StorageClient/StorageClientTypes.ts +5 -4
  83. package/lib/WebsocketAPI/getClientHandlers.ts +63 -29
  84. package/lib/index.ts +3 -3
  85. package/lib/runClientRequest.ts +5 -1
  86. package/package.json +5 -3
File without changes
@@ -0,0 +1,4 @@
1
+
2
+ > prostgles-server@4.2.642 build
3
+ > tsc
4
+
@@ -0,0 +1,544 @@
1
+
2
+ > server_tests@1.0.0 test-server
3
+ > TEST_TYPE=server 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 Only Queries
99
+ ✔ column definition row types support SQL aliases, arrays and generated columns (8.712077ms)
100
+ ✔ lookup types propagate through database references while preserving overrides (9.50781ms)
101
+ ✔ lookup types follow FK chains by column and terminate cycles (138.247077ms)
102
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
103
+
104
+ CREATE TABLE "files" (
105
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
106
+ "storage_key" UUID UNIQUE ,
107
+ "extension" TEXT NOT NULL DEFAULT '' ,
108
+ "content_type" TEXT NOT NULL DEFAULT '' ,
109
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
110
+ "etag" TEXT NOT NULL DEFAULT '' ,
111
+ "original_name" TEXT NOT NULL ,
112
+ "original_last_modified" TIMESTAMPTZ ,
113
+ "description" TEXT ,
114
+ "url" TEXT NOT NULL DEFAULT '' ,
115
+ "cloud_url" TEXT ,
116
+ "signed_url" TEXT ,
117
+ "signed_url_expires" BIGINT ,
118
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
119
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
120
+ "deleted" TIMESTAMPTZ ,
121
+ "deleted_from_storage" TIMESTAMPTZ ,
122
+ "data" BYTEA NOT NULL CHECK (data = decode('01', 'hex'))
123
+ );
124
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
125
+ Prostgles: Created typescript schema definition file:
126
+ DBGeneratedSchema.ts
127
+ Prostgles: Created typescript schema definition file:
128
+ DBGeneratedSchema.ts
129
+ No options changed
130
+ Prostgles: Created typescript schema definition file:
131
+ DBGeneratedSchema.ts
132
+ Prostgles: Created typescript schema definition file:
133
+ DBGeneratedSchema.ts
134
+ Prostgles: Created typescript schema definition file:
135
+ DBGeneratedSchema.ts
136
+ Prostgles: Created typescript schema definition file:
137
+ DBGeneratedSchema.ts
138
+ destroying prgl instance
139
+ ✔ client publish profiles compile at startup and follow user types (1969.201488ms)
140
+ ▶ Managed storage permission and transaction safety
141
+ ✔ legacy ID-based files remain readable and replaceable (49.712275ms)
142
+ ✔ custom columns do not require or interfere with file data (21.423521ms)
143
+ ✔ filtered updates and failed validation preserve storage (15.950932ms)
144
+ ✔ failed uploads and application hooks leave no replacement objects (30.261943ms)
145
+ ✔ duplicate IDs, conflict updates and SQL-only requests cannot overwrite (23.73156ms)
146
+ ✔ PostgreSQL update policies are enforced before uploading (7.834831ms)
147
+ ✔ RLS-hidden references fail closed during storage cleanup (3.505362ms)
148
+ ✔ beforeEach lifecycle callbacks follow the outer transaction (45.482608ms)
149
+ ✔ outer rollback preserves replaced and deleted objects (31.136131ms)
150
+ ✔ a failed multi-insert waits for other uploads before cleanup (14.248493ms)
151
+ ✔ concurrent replacements leave one complete referenced object (49.245603ms)
152
+ ✔ version retention removes only unreferenced objects (88.61647ms)
153
+ ✔ foreign-key failure preserves bytes and deletion waits for commit (24.89341ms)
154
+ ✔ cloud downloads and cleanup use the committed storage key (85.718479ms)
155
+ ✔ Managed storage permission and transaction safety (534.590824ms)
156
+ destroying prgl instance
157
+ destroying prgl instance
158
+ ✔ custom joins add conditions unless override is requested (2385.379582ms)
159
+ destroying prgl instance
160
+ ✔ custom self joins use configured paths and override inferred joins (1254.187247ms)
161
+ destroying prgl instance
162
+ destroying prgl instance
163
+ destroying prgl instance
164
+ ✔ destroy allows reusing Socket.IO on a running HTTP server (3421.976906ms)
165
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
166
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
167
+
168
+ CREATE TABLE "audit_events" (
169
+ "id" BIGSERIAL PRIMARY KEY ,
170
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp() ,
171
+ "schema_name" TEXT NOT NULL ,
172
+ "table_name" TEXT NOT NULL ,
173
+ "operation" TEXT NOT NULL CHECK("operation" = 'INSERT' OR "operation" = 'UPDATE' OR "operation" = 'DELETE'),
174
+ "old_id" JSONB ,
175
+ "new_id" JSONB ,
176
+ "old_row" JSONB ,
177
+ "new_row" JSONB ,
178
+ "actor" JSONB ,
179
+ "db_context" JSONB NOT NULL CHECK(prostgles.validate_jsonb_schema('{"type":{"transaction_id":"string","transaction_started_at":"string","statement_started_at":"string","current_role":"string","session_user":"string","application_name":"string"}}'::TEXT, "db_context", '{"table":"audit_events","column":"db_context"}' ))
180
+ );
181
+ CREATE TABLE "audit_test_files" (
182
+ "id" UUID PRIMARY KEY DEFAULT gen_random_uuid() ,
183
+ "storage_key" UUID UNIQUE ,
184
+ "extension" TEXT NOT NULL DEFAULT '' ,
185
+ "content_type" TEXT NOT NULL DEFAULT '' ,
186
+ "content_length" BIGINT NOT NULL DEFAULT 0 ,
187
+ "etag" TEXT NOT NULL DEFAULT '' ,
188
+ "original_name" TEXT NOT NULL ,
189
+ "original_last_modified" TIMESTAMPTZ ,
190
+ "description" TEXT ,
191
+ "url" TEXT NOT NULL DEFAULT '' ,
192
+ "cloud_url" TEXT ,
193
+ "signed_url" TEXT ,
194
+ "signed_url_expires" BIGINT ,
195
+ "added" TIMESTAMP NOT NULL DEFAULT NOW() ,
196
+ "updated" TIMESTAMP NOT NULL DEFAULT NOW() ,
197
+ "deleted" TIMESTAMPTZ ,
198
+ "deleted_from_storage" TIMESTAMPTZ ,
199
+ "data" BYTEA NOT NULL CHECK (data = decode('01', 'hex'))
200
+ );
201
+ CREATE TABLE "audit_test_source" (
202
+ "a" int NOT NULL ,
203
+ "b" text NOT NULL ,
204
+ "value" text ,
205
+ "secret" text
206
+ );
207
+ ALTER TABLE "audit_test_source" ADD PRIMARY KEY (a, b);
208
+ CREATE TABLE "audit_test_documents" (
209
+ "id" serial PRIMARY KEY ,
210
+ "file_id" uuid NOT NULL REFERENCES audit_test_files(id)
211
+ );
212
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
213
+ IO missing. Publish has no effect without io or restApi
214
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
215
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
216
+ IO missing. Publish has no effect without io or restApi
217
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
218
+ IO missing. Publish has no effect without io or restApi
219
+ destroying prgl instance
220
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
221
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
222
+ IO missing. Publish has no effect without io or restApi
223
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
224
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
225
+ IO missing. Publish has no effect without io or restApi
226
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
227
+ Trace: Error: audit.tables cannot mix enabled and disabled entries
228
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:19:15)
229
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
230
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
231
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
232
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
233
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
234
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
235
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
236
+ at async waitForActual (node:assert:646:5)
237
+ at async strict.rejects (node:assert:769:25)
238
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:485:17)
239
+ at async Test.run (node:internal/test_runner/test:1125:7)
240
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
241
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
242
+ Trace: Error: Unknown audit table: missing_table
243
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:23:19)
244
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
245
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
246
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
247
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
248
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
249
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
250
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
251
+ at async waitForActual (node:assert:646:5)
252
+ at async strict.rejects (node:assert:769:25)
253
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:485:17)
254
+ at async Test.run (node:internal/test_runner/test:1125:7)
255
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
256
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
257
+ Trace: Error: audit.idColumns is required for audit_test_nopk without a primary key
258
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:45:19)
259
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
260
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
261
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
262
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
263
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
264
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
265
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
266
+ at async waitForActual (node:assert:646:5)
267
+ at async strict.rejects (node:assert:769:25)
268
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:485:17)
269
+ at async Test.run (node:internal/test_runner/test:1125:7)
270
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
271
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
272
+ Trace: Error: Unsupported audit target: audit_test_view
273
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:37:23)
274
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
275
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
276
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
277
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
278
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
279
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
280
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
281
+ at async waitForActual (node:assert:646:5)
282
+ at async strict.rejects (node:assert:769:25)
283
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:485:17)
284
+ at async Test.run (node:internal/test_runner/test:1125:7)
285
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
286
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
287
+ Trace: Error: Audit identity columns cannot be excluded: audit_test_source
288
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:54:19)
289
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
290
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
291
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
292
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
293
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
294
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
295
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
296
+ at async waitForActual (node:assert:646:5)
297
+ at async strict.rejects (node:assert:769:25)
298
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:485:17)
299
+ at async Test.run (node:internal/test_runner/test:1125:7)
300
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
301
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
302
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
303
+ IO missing. Publish has no effect without io or restApi
304
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
305
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
306
+ IO missing. Publish has no effect without io or restApi
307
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
308
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
309
+ IO missing. Publish has no effect without io or restApi
310
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
311
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
312
+ IO missing. Publish has no effect without io or restApi
313
+ Prostgles: SQL file executed successfuly /tmp/prostgles-audit-3hJgIN/init.sql
314
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
315
+ IO missing. Publish has no effect without io or restApi
316
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
317
+ IO missing. Publish has no effect without io or restApi
318
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
319
+ IO missing. Publish has no effect without io or restApi
320
+ Trace: Error: audit.idColumns is required for audit_test_nopk without a primary key
321
+ at parseAuditConfig (/home/s/prostgles-server-js/dist/Audit/parseAuditConfig.js:45:19)
322
+ at get resolvedAuditConfig (/home/s/prostgles-server-js/dist/Prostgles.js:133:56)
323
+ at get mergedTableConfig (/home/s/prostgles-server-js/dist/Prostgles.js:145:28)
324
+ at syncTableTriggers (/home/s/prostgles-server-js/dist/TableConfig/syncTableTriggers.js:8:25)
325
+ at /home/s/prostgles-server-js/dist/initProstgles.js:100:61
326
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
327
+ at Prostgles.initProstgles (/home/s/prostgles-server-js/dist/initProstgles.js:199:17)
328
+ at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
329
+ at async updateConfiguration (/home/s/prostgles-server-js/dist/updateConfiguration.js:58:9)
330
+ at async Object.update (/home/s/prostgles-server-js/dist/initProstgles.js:163:17)
331
+ at async waitForActual (node:assert:646:5)
332
+ at async strict.rejects (node:assert:769:25)
333
+ at async TestContext.<anonymous> (/home/s/prostgles-server-js/tests/server/dist/server/audit.spec.js:535:13)
334
+ at async Test.run (node:internal/test_runner/test:1125:7)
335
+ at async Suite.processPendingSubtests (node:internal/test_runner/test:787:7)
336
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
337
+ IO missing. Publish has no effect without io or restApi
338
+ Running queries: /* prostgles internal query that should be excluded from schema watch */
339
+
340
+ CREATE TABLE "audit_next_events" (
341
+ "id" BIGSERIAL PRIMARY KEY ,
342
+ "created_at" TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp() ,
343
+ "schema_name" TEXT NOT NULL ,
344
+ "table_name" TEXT NOT NULL ,
345
+ "operation" TEXT NOT NULL CHECK("operation" = 'INSERT' OR "operation" = 'UPDATE' OR "operation" = 'DELETE'),
346
+ "old_id" JSONB ,
347
+ "new_id" JSONB ,
348
+ "old_row" JSONB ,
349
+ "new_row" JSONB ,
350
+ "actor" JSONB ,
351
+ "db_context" JSONB NOT NULL CHECK(prostgles.validate_jsonb_schema('{"type":{"transaction_id":"string","transaction_started_at":"string","statement_started_at":"string","current_role":"string","session_user":"string","application_name":"string"}}'::TEXT, "db_context", '{"table":"audit_next_events","column":"db_context"}' ))
352
+ );
353
+ Prostgles: Initiated file manager. Max allowed file size: 1MB (maxHttpBufferSize = 1e6). To increase this set maxHttpBufferSize in socket.io server init options
354
+ IO missing. Publish has no effect without io or restApi
355
+ destroying prgl instance
356
+ ✔ Managed audit setup, row history, protection, access and query readiness (8908.447931ms)
357
+ ✔ getJSONBSchemaValidationErrorAsync with real db handlers (5.827529ms)
358
+ ✔ Parallel subscription at init causing crash in getPubSubManager: duplicate key value violates unique constraint "apps_pkey" (102.352719ms)
359
+ ✔ RLS context is isolated across implicit transactions, commit, rollback and pool reuse (21.175461ms)
360
+ ✔ subscription and sync reads isolate users with a real RLS policy (21.738142ms)
361
+ ✔ ordinary beforeEach hooks transform inputs before validation (30.850937ms)
362
+ ✔ multi false is checked after beforeEach and rolls back the update (10.526616ms)
363
+ ✔ ordinary beforeEach hooks run before PostgreSQL UPDATE policy checks (8.199055ms)
364
+ ✔ before and after hooks preserve RLS across dbx and raw tx calls (11.762202ms)
365
+ destroying prgl instance
366
+ ✔ onInsteadOfDelete receives the authenticated or anonymous request context (1220.526955ms)
367
+ ✔ Self reference recursion bug (4.066321ms)
368
+ ✔ Transactions (20.801909ms)
369
+ (server): Server-only query tests successful
370
+ (server): Starting isomorphic queries
371
+ ✔ TableConfig onMount works (3.537724ms)
372
+ ✔ Server Only Queries (20094.113468ms)
373
+ (server): DELETING items
374
+ ▶ Isomorphic queries
375
+ ✔ Deleting stale data (28.456926ms)
376
+ ✔ Error structure malformed array literal (28.584854ms)
377
+ ✔ Table info (0.737582ms)
378
+ ✔ Prepare data (35.856795ms)
379
+ ✔ Test bytea (3.800188ms)
380
+ ✔ abortSignal terminates a running query (5536.683005ms)
381
+ ✔ Client queries are aborted no more than after n seconds (0.323132ms)
382
+ ✔ Subscription tracked_columns get merged correctly (17.529534ms)
383
+ ✔ Aggregate subscription tracks FILTER and ORDER BY dependencies (976.049416ms)
384
+ ✔ CASE select and subscription dependencies (652.597183ms)
385
+ ✔ Subscription tracks non-selected ORDER BY columns (650.284705ms)
386
+ ✔ merge json (13.817746ms)
387
+ ✔ json array converted to pg array filter bug (1.942218ms)
388
+ ✔ onConflict do update (10.413614ms)
389
+ ✔ Local file upload (40.485116ms)
390
+ ✔ Local file delete (18.885582ms)
391
+ ✔ Local file update (34.066059ms)
392
+ ✔ getColumns definition (0.619006ms)
393
+ ✔ returnType (0.254278ms)
394
+ ✔ Table config triggers (4.007807ms)
395
+ ✔ $unnest_words (0.782858ms)
396
+ ✔ Group by/Distinct (0.927091ms)
397
+ ✔ sql returntype default-with-rollback (9.75577ms)
398
+ ✔ returnType: value (0.938237ms)
399
+ ✔ PostgreSQL array element (3.33455ms)
400
+ ✔ FTS filtering (3.693991ms)
401
+ ✔ $term_highlight (2.818302ms)
402
+ ✔ funcFilters: $term_highlight (1.359074ms)
403
+ (server): [{"name":null}]
404
+ (server): [{"name":"zz3zz1"}]
405
+ (server): []
406
+ ✔ subscribe skipChangedColumnsCheck false by default = sub should not fire if selected data did not change (848.490573ms)
407
+ (server): [{"name":null}]
408
+ (server): [{"name":"zz3zz1"}]
409
+ (server): [{"name":"zz3zz1"}]
410
+ (server): [{"name":"zz3zz1"}]
411
+ (server): []
412
+ ✔ subscribe skipChangedColumnsCheck true (3389.647838ms)
413
+ unsubscribe start - various
414
+ unsubscribe end - various
415
+ ✔ subscribe (51.474545ms)
416
+ ✔ subscribe to schema.table (19.815488ms)
417
+ ✔ parallel subscriptions (2030.321932ms)
418
+ (server): updateAll done in 1642
419
+ (server): updateAll done in 1636
420
+ (server): Locks: [{"pid":175,"blocking_pids":[180],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1003'\n WHERE id = 1003;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1005'\n WHERE id = 1005;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
421
+ (server): Locks: [{"pid":177,"blocking_pids":[174,179],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1060'\n WHERE id = 1060;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1059'\n WHERE id = 1059;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "},{"pid":179,"blocking_pids":[174],"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":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1059'\n WHERE id = 1059;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
422
+ (server): Locks: [{"pid":167,"blocking_pids":[178],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1069'\n WHERE id = 1069;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
423
+ (server): Locks: [{"pid":173,"blocking_pids":[131],"wait_event":null,"wait_event_type":null,"query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1131'\n WHERE id = 1131;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1130'\n WHERE id = 1130;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
424
+ (server): Locks: [{"pid":176,"blocking_pids":[174],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1264'\n WHERE id = 1264;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1265'\n WHERE id = 1265;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
425
+ (server): Locks: [{"pid":167,"blocking_pids":[180],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1268'\n WHERE id = 1268;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1266'\n WHERE id = 1266;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
426
+ (server): Locks: [{"pid":175,"blocking_pids":[131],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1383'\n WHERE id = 1383;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1382'\n WHERE id = 1382;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
427
+ (server): Locks: [{"pid":179,"blocking_pids":[131],"wait_event":null,"wait_event_type":null,"query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1690'\n WHERE id = 1690;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
428
+ (server): Locks: [{"pid":180,"blocking_pids":[179],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1728'\n WHERE id = 1728;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1727'\n WHERE id = 1727;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
429
+ (server): Locks: [{"pid":179,"blocking_pids":[178],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1782'\n WHERE id = 1782;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1785'\n WHERE id = 1785;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
430
+ (server): Locks: [{"pid":173,"blocking_pids":[131],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1888'\n WHERE id = 1888;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1889'\n WHERE id = 1889;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
431
+ (server): Locks: [{"pid":176,"blocking_pids":[131],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1928'\n WHERE id = 1928;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1926'\n WHERE id = 1926;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
432
+ (server): Locks: [{"pid":179,"blocking_pids":[131],"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 = 'slowtx1979'\n WHERE id = 1979;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n "}]
433
+ (server): Locks: [{"pid":175,"blocking_pids":[174],"wait_event":"object","wait_event_type":"Lock","query":"\n BEGIN;\n UPDATE various\n SET name = 'slowtx1984'\n WHERE id = 1984;\n SELECT pg_sleep(0.01);\n COMMIT;\n\n ","blocking_query":null}]
434
+ (server): updateAll done in 1887
435
+ ✔ subscriptions do not serialize transactions (9690.665914ms)
436
+ Created PubSubManager
437
+ throttling sub for 1700 ms
438
+ ✔ subscribeOne with throttle (1786.863437ms)
439
+ throttling finished. pushSubData...
440
+ throttling sub for 1700 ms
441
+ ✔ subscribeOne with throttle skipFirst: true (1716.002026ms)
442
+ ✔ subscribeOne without skipFirst (1069.889097ms)
443
+ ✔ subscribeOne with skipFirst: true (1581.5196ms)
444
+ ✔ subscribeOne actions: { insert: true } (1568.331772ms)
445
+ ✔ subscribeOne actions: { insert: false } (1597.355094ms)
446
+ ✔ JSON filtering (7.31984ms)
447
+ ✔ Complex filtering (4.281345ms)
448
+ ✔ template_string function (4.301054ms)
449
+ ✔ Between filtering (4.798008ms)
450
+ ✔ In filtering (3.864208ms)
451
+ ✔ Order by (4.248011ms)
452
+ ✔ Order by aliased func (1.825675ms)
453
+ ✔ Filter by aliased func (1.514694ms)
454
+ ✔ Count with Filter by aliased func (2.087443ms)
455
+ ✔ Count with Aggregate and Filter by aliased func (2.493109ms)
456
+ ✔ Count with complex filter (2.451559ms)
457
+ ✔ Order by aggregation (1.689301ms)
458
+ ✔ Aggregate FILTER and ORDER BY (2.539558ms)
459
+ ✔ Column alias func (1.917399ms)
460
+ ✔ Order by colliding alias name (1.657398ms)
461
+ ✔ Update batch example (29.175105ms)
462
+ TODO: socket.io stringifies dates
463
+ ✔ Function example (17.157861ms)
464
+ ✔ JSONB filtering (9.426528ms)
465
+ ✔ Postgis examples (19.643163ms)
466
+ ✔ jsonbSchema validation (11.068521ms)
467
+ ✔ find and findOne (2.404457ms)
468
+ ✔ Result size (3.799038ms)
469
+ ✔ Basic exists (3.318572ms)
470
+ ✔ Basic fts with shorthand notation (4.066447ms)
471
+ ✔ Exists with shortest path wildcard filter example (3.372566ms)
472
+ ✔ Exists with exact path filter example (1.880565ms)
473
+ ✔ Not Exists with exact path filter example (2.250273ms)
474
+ ✔ Upsert example (25.505686ms)
475
+ ✔ Joins example (3.391668ms)
476
+ ✔ Joins repeating table example (5.51144ms)
477
+ ✔ Join aggregate functions example (10.826633ms)
478
+ ✔ $rowhash example (9.111404ms)
479
+ ✔ Reference column nested insert (15.370363ms)
480
+ ✔ Join escaped table names with quotes (18.593015ms)
481
+ (server): {
482
+ "item": {
483
+ "\"id0\"": 1,
484
+ "\"quoted1_id\"": 1,
485
+ "\"text_col0\"": "0"
486
+ },
487
+ "runs": 0
488
+ }
489
+ (server): {
490
+ "item": {
491
+ "\"id0\"": 1,
492
+ "\"quoted1_id\"": 1,
493
+ "\"text_col0\"": "1"
494
+ },
495
+ "runs": 1
496
+ }
497
+ unsubscribe start - """quoted0"""
498
+ unsubscribe end - """quoted0"""
499
+ ✔ subscribe to escaped table name (15.784045ms)
500
+ ✔ subscribe using a filter bigger than block_size (17.042304ms)
501
+ ✔ Reverse join with agg (17.581844ms)
502
+ {
503
+ _rows: [
504
+ { id: 1, t1: null, tr2: [Array], tr3: [] },
505
+ { id: 2, t1: null, tr2: [Array], tr3: [] }
506
+ ],
507
+ runs: 1
508
+ }
509
+ {
510
+ _rows: [
511
+ { id: 1, t1: null, tr2: [Array], tr3: [] },
512
+ { id: 2, t1: null, tr2: [Array], tr3: [] }
513
+ ],
514
+ runs: 2
515
+ }
516
+ ✔ Related table subscribe (9047.746928ms)
517
+ ✔ Aggregate FILTER registers joined dependency triggers (680.009564ms)
518
+ ✔ Nested sort by computed col (11.727416ms)
519
+ ✔ Nested function on different than source column getNewQuery name bug fix (2.524682ms)
520
+ ✔ Reference column deep nested insert (23.9872ms)
521
+ ✔ Multi reference column nested insert (22.425643ms)
522
+ ✔ Join path with order by nested (12.171075ms)
523
+ ✔ Self join (22.883364ms)
524
+ ✔ One to many multi join duplicate row bug fix (25.48747ms)
525
+ (server): various id=99 count 1
526
+ (server): various id=99 count
527
+ ok
528
+ (server): various id=99 count
529
+ (server): Error in subscription callback: {"message":"column prostgles_root_table_alias.name does not exist","length":130,"name":"error","severity":"ERROR","code":"42703","position":"107","file":"parse_relation.c","line":"3716","routine":"errorMissingColumn","query":"-- prostgles query id: 922541c2-1283-49fc-ad71-eee2e1f1afc4\nSET LOCAL \"prostgles.user\" \nTO '';\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"}
530
+ ok
531
+ ✔ subscribe triggers with stale schema should fail gracefully and never block other queries (6545.99446ms)
532
+ ✔ Isomorphic queries (50124.766998ms)
533
+ ✔ Having clause (2.573771ms)
534
+ ✔ Having clause with complex filter (2.608595ms)
535
+ (server): Server isomorphic tests successful
536
+ (server): Stopping server ...
537
+ ℹ tests 124
538
+ ℹ suites 2
539
+ ℹ pass 124
540
+ ℹ fail 0
541
+ ℹ cancelled 0
542
+ ℹ skipped 0
543
+ ℹ todo 0
544
+ ℹ duration_ms 75199.372589
File without changes