prostgles-server 4.2.64 → 4.2.67
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.
- package/dist/PubSubManager/getInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/getInitQuery.js +16 -11
- package/dist/PubSubManager/getInitQuery.js.map +1 -1
- package/lib/PubSubManager/getInitQuery.ts +16 -11
- package/package.json +1 -1
- package/tests/isomorphicQueries.spec.ts +43 -27
- package/tests/server/package-lock.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,eAAO,MAAM,YAAY,SAAwB,aAAa,KAAG,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"getInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,eAAO,MAAM,YAAY,SAAwB,aAAa,KAAG,QAAQ,MAAM,CAukB9E,CAAA"}
|
|
@@ -199,9 +199,13 @@ BEGIN
|
|
|
199
199
|
|
|
200
200
|
DECLARE view_def_query TEXT := '';
|
|
201
201
|
|
|
202
|
+
DECLARE escaped_table TEXT;
|
|
203
|
+
|
|
202
204
|
BEGIN
|
|
203
205
|
|
|
204
206
|
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
207
|
+
|
|
208
|
+
escaped_table := format('%I', TG_TABLE_NAME);
|
|
205
209
|
|
|
206
210
|
SELECT string_agg(
|
|
207
211
|
format(
|
|
@@ -220,7 +224,7 @@ BEGIN
|
|
|
220
224
|
)
|
|
221
225
|
INTO unions
|
|
222
226
|
FROM prostgles.v_triggers
|
|
223
|
-
WHERE table_name =
|
|
227
|
+
WHERE table_name = escaped_table;
|
|
224
228
|
|
|
225
229
|
|
|
226
230
|
/* unions = 'old_table union new_table' or any one of the tables */
|
|
@@ -238,11 +242,11 @@ BEGIN
|
|
|
238
242
|
)
|
|
239
243
|
||
|
|
240
244
|
COALESCE((
|
|
241
|
-
SELECT ', ' || string_agg(format(E' %
|
|
245
|
+
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
242
246
|
FROM (
|
|
243
247
|
SELECT DISTINCT related_view_name, related_view_def
|
|
244
248
|
FROM prostgles.v_triggers
|
|
245
|
-
WHERE table_name =
|
|
249
|
+
WHERE table_name = escaped_table
|
|
246
250
|
AND related_view_name IS NOT NULL
|
|
247
251
|
AND related_view_def IS NOT NULL
|
|
248
252
|
) t
|
|
@@ -295,7 +299,7 @@ BEGIN
|
|
|
295
299
|
${(0, PubSubManager_1.asValue)(PubSubManager_1.PubSubManager.DELIMITER)},
|
|
296
300
|
|
|
297
301
|
${(0, PubSubManager_1.asValue)(PubSubManager_1.NOTIF_TYPE.data)},
|
|
298
|
-
COALESCE(
|
|
302
|
+
COALESCE(escaped_table, 'MISSING'),
|
|
299
303
|
COALESCE(TG_OP, 'MISSING'),
|
|
300
304
|
CASE WHEN has_errors
|
|
301
305
|
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
@@ -350,7 +354,9 @@ BEGIN
|
|
|
350
354
|
--RAISE NOTICE 'DELETE trigger_add_remove_func table: % ', ' ' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM prostgles.app_triggers) , ' 0 ');
|
|
351
355
|
--RAISE NOTICE 'DELETE trigger_add_remove_func old_table: % ', '' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM old_table), ' 0 ');
|
|
352
356
|
|
|
353
|
-
|
|
357
|
+
SELECT count(*)
|
|
358
|
+
FROM old_table
|
|
359
|
+
INTO changed_triggers_count;
|
|
354
360
|
|
|
355
361
|
/* Disable actual triggers if needed */
|
|
356
362
|
FOR trw IN
|
|
@@ -385,11 +391,10 @@ BEGIN
|
|
|
385
391
|
/* If newly added listeners on table then CREATE table data watch triggers */
|
|
386
392
|
ELSIF TG_OP = 'INSERT' THEN
|
|
387
393
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
394
|
+
SELECT count(*)
|
|
395
|
+
FROM new_table
|
|
396
|
+
INTO changed_triggers_count;
|
|
397
|
+
|
|
393
398
|
/* Loop through newly added tables to add data watch triggers */
|
|
394
399
|
FOR trw IN
|
|
395
400
|
|
|
@@ -422,7 +427,7 @@ BEGIN
|
|
|
422
427
|
'prostgles_triggers_' || trw.table_name || '_update',
|
|
423
428
|
'prostgles_triggers_' || trw.table_name || '_delete'
|
|
424
429
|
)
|
|
425
|
-
) = 3
|
|
430
|
+
) = 3
|
|
426
431
|
THEN
|
|
427
432
|
query := concat_ws(E'\n',
|
|
428
433
|
format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_insert'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":";;;AACA,mDAAoF;AACpF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAErC,QAAA,YAAY,GAAG;IAC1B,uBAAuB,EAAE,mCAAmC;IAC5D,eAAe,EAAE,sCAAsC;IACvD,iBAAiB,EAAE,6BAA6B;IAChD,oBAAoB,EAAE,oCAAoC;CAClD,CAAC;AAEJ,MAAM,YAAY,GAAG,KAAK;IAE/B,MAAM,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAmB,EAAE;QAC9D,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,WAAW,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,8BAA8B,EAAE,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAElI,OAAO;;;;;;;IAOP,6BAAa,CAAC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEA+BkB,IAAA,uBAAO,EAAC,OAAO,CAAC;yEACb,IAAA,uBAAO,EAAC,OAAO,CAAC;+BAC1D,IAAA,uBAAO,EAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BjC,IAAA,uBAAO,EAAC,OAAO,CAAC,KAAK,IAAA,uBAAO,EAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAsGpB,oBAAY,CAAC,eAAe
|
|
1
|
+
{"version":3,"file":"getInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,9 +201,13 @@ BEGIN
|
|
|
201
201
|
|
|
202
202
|
DECLARE view_def_query TEXT := '';
|
|
203
203
|
|
|
204
|
+
DECLARE escaped_table TEXT;
|
|
205
|
+
|
|
204
206
|
BEGIN
|
|
205
207
|
|
|
206
208
|
--PERFORM pg_notify('debug', concat_ws(' ', 'TABLE', TG_TABLE_NAME, TG_OP));
|
|
209
|
+
|
|
210
|
+
escaped_table := format('%I', TG_TABLE_NAME);
|
|
207
211
|
|
|
208
212
|
SELECT string_agg(
|
|
209
213
|
format(
|
|
@@ -222,7 +226,7 @@ BEGIN
|
|
|
222
226
|
)
|
|
223
227
|
INTO unions
|
|
224
228
|
FROM prostgles.v_triggers
|
|
225
|
-
WHERE table_name =
|
|
229
|
+
WHERE table_name = escaped_table;
|
|
226
230
|
|
|
227
231
|
|
|
228
232
|
/* unions = 'old_table union new_table' or any one of the tables */
|
|
@@ -240,11 +244,11 @@ BEGIN
|
|
|
240
244
|
)
|
|
241
245
|
||
|
|
242
246
|
COALESCE((
|
|
243
|
-
SELECT ', ' || string_agg(format(E' %
|
|
247
|
+
SELECT ', ' || string_agg(format(E' %s AS ( \n %s \n ) ', related_view_name, related_view_def), ', ')
|
|
244
248
|
FROM (
|
|
245
249
|
SELECT DISTINCT related_view_name, related_view_def
|
|
246
250
|
FROM prostgles.v_triggers
|
|
247
|
-
WHERE table_name =
|
|
251
|
+
WHERE table_name = escaped_table
|
|
248
252
|
AND related_view_name IS NOT NULL
|
|
249
253
|
AND related_view_def IS NOT NULL
|
|
250
254
|
) t
|
|
@@ -297,7 +301,7 @@ BEGIN
|
|
|
297
301
|
${asValue(PubSubManager.DELIMITER)},
|
|
298
302
|
|
|
299
303
|
${asValue(NOTIF_TYPE.data)},
|
|
300
|
-
COALESCE(
|
|
304
|
+
COALESCE(escaped_table, 'MISSING'),
|
|
301
305
|
COALESCE(TG_OP, 'MISSING'),
|
|
302
306
|
CASE WHEN has_errors
|
|
303
307
|
THEN concat_ws('; ', 'error', err_text, err_detail, err_hint, 'query: ' || query )
|
|
@@ -352,7 +356,9 @@ BEGIN
|
|
|
352
356
|
--RAISE NOTICE 'DELETE trigger_add_remove_func table: % ', ' ' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM prostgles.app_triggers) , ' 0 ');
|
|
353
357
|
--RAISE NOTICE 'DELETE trigger_add_remove_func old_table: % ', '' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM old_table), ' 0 ');
|
|
354
358
|
|
|
355
|
-
|
|
359
|
+
SELECT count(*)
|
|
360
|
+
FROM old_table
|
|
361
|
+
INTO changed_triggers_count;
|
|
356
362
|
|
|
357
363
|
/* Disable actual triggers if needed */
|
|
358
364
|
FOR trw IN
|
|
@@ -387,11 +393,10 @@ BEGIN
|
|
|
387
393
|
/* If newly added listeners on table then CREATE table data watch triggers */
|
|
388
394
|
ELSIF TG_OP = 'INSERT' THEN
|
|
389
395
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
396
|
+
SELECT count(*)
|
|
397
|
+
FROM new_table
|
|
398
|
+
INTO changed_triggers_count;
|
|
399
|
+
|
|
395
400
|
/* Loop through newly added tables to add data watch triggers */
|
|
396
401
|
FOR trw IN
|
|
397
402
|
|
|
@@ -424,7 +429,7 @@ BEGIN
|
|
|
424
429
|
'prostgles_triggers_' || trw.table_name || '_update',
|
|
425
430
|
'prostgles_triggers_' || trw.table_name || '_delete'
|
|
426
431
|
)
|
|
427
|
-
) = 3
|
|
432
|
+
) = 3
|
|
428
433
|
THEN
|
|
429
434
|
query := concat_ws(E'\n',
|
|
430
435
|
format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_insert'),
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
//@ts-ignore
|
|
8
8
|
describe
|
|
9
9
|
} from "node:test";
|
|
10
|
-
import { pickKeys } from "prostgles-types";
|
|
10
|
+
import { SubscriptionHandler, pickKeys } from "prostgles-types";
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log: (msg: string, extra?: any) => void) => {
|
|
@@ -466,6 +466,27 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
|
|
|
466
466
|
assert.equal(+res, 1)
|
|
467
467
|
});
|
|
468
468
|
|
|
469
|
+
|
|
470
|
+
const testToEnsureTriggersAreDisabled = async (sub: SubscriptionHandler, table_name: string) => {
|
|
471
|
+
const getTableTriggers = async (table_name: string) => {
|
|
472
|
+
return await db.sql?.(`
|
|
473
|
+
SELECT tgname, tgenabled = 'O' as enabled
|
|
474
|
+
FROM pg_catalog.pg_trigger
|
|
475
|
+
WHERE tgname like format('prostgles_triggers_%s_', \${table_name}) || '%'
|
|
476
|
+
`,
|
|
477
|
+
{ table_name },
|
|
478
|
+
{ returnType: "rows" }
|
|
479
|
+
) as { tgname: string; enabled: boolean; }[];
|
|
480
|
+
}
|
|
481
|
+
await sub.unsubscribe();
|
|
482
|
+
let validTriggers = await getTableTriggers(table_name)
|
|
483
|
+
assert.equal(validTriggers.filter(t => t.enabled).length, 3);
|
|
484
|
+
await db.sql?.(`DELETE FROM prostgles.app_triggers`, []); // WHERE table_name = $1
|
|
485
|
+
validTriggers = await getTableTriggers(table_name)
|
|
486
|
+
assert.equal(validTriggers.length, 3);
|
|
487
|
+
assert.equal(validTriggers.filter(t => t.enabled).length, 0);
|
|
488
|
+
}
|
|
489
|
+
|
|
469
490
|
await test("subscribe", async () => {
|
|
470
491
|
await tryRunP("subscribe", async (resolve, reject) => {
|
|
471
492
|
await db.various.insert!({ id: 99 });
|
|
@@ -474,7 +495,7 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
|
|
|
474
495
|
|
|
475
496
|
if(item && item.name === "zz3zz3"){
|
|
476
497
|
await db.various.delete!({ name: "zz3zz3" });
|
|
477
|
-
await sub
|
|
498
|
+
await testToEnsureTriggersAreDisabled(sub, "various");
|
|
478
499
|
resolve(true)
|
|
479
500
|
}
|
|
480
501
|
});
|
|
@@ -490,9 +511,6 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
|
|
|
490
511
|
await db.various.insert!({ id: 99 });
|
|
491
512
|
const start = Date.now(); // name: "zz3zz"
|
|
492
513
|
const sub = await db.various.subscribeOne!({ id: 99 }, { throttle: 1700 }, async item => {
|
|
493
|
-
// const item = items[0]
|
|
494
|
-
// console.log(item)
|
|
495
|
-
|
|
496
514
|
const now = Date.now();
|
|
497
515
|
if(item && item.name === "zz3zz2" && now - start > 1600 && now - start < 1800){
|
|
498
516
|
await db.various.delete!({ name: "zz3zz2" });
|
|
@@ -991,28 +1009,26 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
|
|
|
991
1009
|
assert.deepStrictEqual(exists1, exists2)
|
|
992
1010
|
});
|
|
993
1011
|
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
// });
|
|
1015
|
-
// });
|
|
1012
|
+
await test("subscribe to escaped table name", async () => {
|
|
1013
|
+
await tryRunP("subscribe to escaped table name", async (resolve, reject) => {
|
|
1014
|
+
const filter = { [`"text_col0"`]: "0" }
|
|
1015
|
+
let runs = 0;
|
|
1016
|
+
const sub = await db[`"""quoted0"""`].subscribe!(filter, { }, async items => {
|
|
1017
|
+
const item = items[0];
|
|
1018
|
+
if(item && item[`"text_col0"`] === "0"){
|
|
1019
|
+
if(!runs){
|
|
1020
|
+
db[`"""quoted0"""`].update!(filter, filter);
|
|
1021
|
+
}
|
|
1022
|
+
runs++;
|
|
1023
|
+
if(runs < 2){
|
|
1024
|
+
return;
|
|
1025
|
+
}
|
|
1026
|
+
await testToEnsureTriggersAreDisabled(sub, `"""quoted0"""`);
|
|
1027
|
+
resolve(true);
|
|
1028
|
+
}
|
|
1029
|
+
});
|
|
1030
|
+
});
|
|
1031
|
+
});
|
|
1016
1032
|
|
|
1017
1033
|
await test("Reverse join with agg", async () => {
|
|
1018
1034
|
const inserted = await db.tr1.insert!({ tr2: { t1: "a", t2: "b" } }, { returning: "*" });
|