prostgles-server 4.2.62 → 4.2.63

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.
@@ -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,CA0jB9E,CAAA"}
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,CAwjB9E,CAAA"}
@@ -316,17 +316,7 @@ BEGIN
316
316
 
317
317
 
318
318
  RETURN NULL;
319
-
320
- /*
321
- EXCEPTION WHEN OTHERS THEN
322
- DELETE FROM prostgles.app_triggers; -- delete all or will need to loop through all conditions to find issue;
323
- RAISE NOTICE 'trigger dropped due to exception';
324
- ${"--EXCEPTION_WHEN_COLUMN_WAS_RENAMED_THEN_DROP_TRIGGER"};
325
-
326
-
327
-
328
- RETURN NULL;
329
- */
319
+
330
320
  END;
331
321
 
332
322
  --COMMIT;
@@ -339,6 +329,7 @@ BEGIN
339
329
  DECLARE operations TEXT[] := ARRAY['insert', 'update', 'delete'];
340
330
  DECLARE op TEXT;
341
331
  DECLARE query TEXT;
332
+ DECLARE trg_name TEXT;
342
333
  DECLARE trw RECORD;
343
334
  DECLARE app RECORD;
344
335
  DECLARE start_time BIGINT;
@@ -350,7 +341,7 @@ BEGIN
350
341
 
351
342
  --RAISE NOTICE 'prostgles.app_triggers % ', TG_OP;
352
343
 
353
- /* If no other listeners (app_triggers) left on table then DROP actual table data watch triggers */
344
+ /* If no other listeners (app_triggers) left on table then DISABLE actual table data watch triggers */
354
345
  IF TG_OP = 'DELETE' THEN
355
346
 
356
347
  --RAISE NOTICE 'DELETE trigger_add_remove_func table: % ', ' ' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM prostgles.app_triggers) , ' 0 ');
@@ -358,19 +349,26 @@ BEGIN
358
349
 
359
350
  select count(*) from old_table into changed_triggers_count;
360
351
 
361
- /* Drop actual triggers if needed */
352
+ /* Disable actual triggers if needed */
362
353
  FOR trw IN
363
- SELECT DISTINCT table_name FROM old_table ot
354
+ SELECT DISTINCT table_name
355
+ FROM old_table ot
364
356
  WHERE NOT EXISTS (
365
- SELECT 1 FROM prostgles.app_triggers t
366
- WHERE t.table_name = ot.table_name
367
- )
357
+ SELECT 1 FROM prostgles.app_triggers t
358
+ WHERE t.table_name = ot.table_name
359
+ )
360
+ AND EXISTS (
361
+ SELECT trigger_name from information_schema.triggers
362
+ WHERE trigger_name = 'your_trigger_name'
363
+ )
368
364
  LOOP
369
365
 
370
366
  FOREACH op IN ARRAY operations
371
367
  LOOP
372
- --RAISE NOTICE ' DROP DATA TRIGGER FOR: % ', trw.table_name;
373
- EXECUTE format(' DROP TRIGGER IF EXISTS %I ON %I ;' , 'prostgles_triggers_' || trw.table_name || '_' || op, trw.table_name);
368
+ trg_name := concat_ws('_', 'prostgles_triggers', trw.table_name, op);
369
+
370
+ --EXECUTE format(' DROP TRIGGER IF EXISTS %I ON %s ;' , trg_name, trw.table_name);
371
+ EXECUTE format(' ALTER TABLE %s DISABLE TRIGGER %I ;', trg_name, trw.table_name);
374
372
  END LOOP;
375
373
 
376
374
  END LOOP;
@@ -405,47 +403,57 @@ BEGIN
405
403
  AND table_name = nt.table_name
406
404
  )
407
405
  LOOP
408
-
409
- /*
410
- RAISE NOTICE ' CREATE DATA TRIGGER FOR: % TABLE EXISTS?', trw.table_name, SELECT EXISTS (
411
- SELECT 1
412
- FROM information_schema.tables
413
- WHERE table_schema = 'public'
414
- AND table_name = nt.table_name
415
- );
416
- */
417
406
 
418
- query := format(
419
- $q$
420
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
421
- CREATE TRIGGER %1$I
422
- AFTER INSERT ON %2$I
423
- REFERENCING NEW TABLE AS new_table
424
- FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
425
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
426
- $q$,
427
- 'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
428
- ) || format(
429
- $q$
430
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
431
- CREATE TRIGGER %1$I
432
- AFTER UPDATE ON %2$I
433
- REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
434
- FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
435
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
436
- $q$,
437
- 'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
438
- ) || format(
439
- $q$
440
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
441
- CREATE TRIGGER %1$I
442
- AFTER DELETE ON %2$I
443
- REFERENCING OLD TABLE AS old_table
444
- FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
445
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
446
- $q$,
447
- 'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
448
- );
407
+ IF (
408
+ SELECT COUNT(*)
409
+ FROM information_schema.triggers
410
+ WHERE trigger_name IN (
411
+ 'prostgles_triggers_' || trw.table_name || '_insert',
412
+ 'prostgles_triggers_' || trw.table_name || '_update',
413
+ 'prostgles_triggers_' || trw.table_name || '_delete'
414
+ )
415
+ ) = 3 AND false
416
+ THEN
417
+ query := concat_ws(E'\n',
418
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_insert'),
419
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_update'),
420
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_delete')
421
+ );
422
+ ELSE
423
+
424
+ query := format(
425
+ $q$
426
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
427
+ CREATE TRIGGER %1$I
428
+ AFTER INSERT ON %2$s
429
+ REFERENCING NEW TABLE AS new_table
430
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
431
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
432
+ $q$,
433
+ 'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
434
+ ) || format(
435
+ $q$
436
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
437
+ CREATE TRIGGER %1$I
438
+ AFTER UPDATE ON %2$s
439
+ REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
440
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
441
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
442
+ $q$,
443
+ 'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
444
+ ) || format(
445
+ $q$
446
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
447
+ CREATE TRIGGER %1$I
448
+ AFTER DELETE ON %2$I
449
+ REFERENCING OLD TABLE AS old_table
450
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
451
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
452
+ $q$,
453
+ 'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
454
+ );
455
+ END IF;
456
+
449
457
 
450
458
  --RAISE NOTICE ' % ', query;
451
459
 
@@ -455,20 +463,10 @@ BEGIN
455
463
  DO $e$
456
464
  BEGIN
457
465
  /* ${PubSubManager_1.PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
458
- IF EXISTS (
459
- SELECT 1
460
- FROM information_schema.tables
461
- WHERE table_schema = 'public'
462
- AND table_name = %L
463
- ) THEN
464
-
465
- %s
466
-
467
- END IF;
466
+ %s
468
467
 
469
468
  END $e$;
470
469
  $q$,
471
- trw.table_name,
472
470
  query
473
471
  ) ;
474
472
 
@@ -1 +1 @@
1
- {"version":3,"file":"getInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getInitQuery.ts"],"names":[],"mappings":"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"}
@@ -318,17 +318,7 @@ BEGIN
318
318
 
319
319
 
320
320
  RETURN NULL;
321
-
322
- /*
323
- EXCEPTION WHEN OTHERS THEN
324
- DELETE FROM prostgles.app_triggers; -- delete all or will need to loop through all conditions to find issue;
325
- RAISE NOTICE 'trigger dropped due to exception';
326
- ${"--EXCEPTION_WHEN_COLUMN_WAS_RENAMED_THEN_DROP_TRIGGER"};
327
-
328
-
329
-
330
- RETURN NULL;
331
- */
321
+
332
322
  END;
333
323
 
334
324
  --COMMIT;
@@ -341,6 +331,7 @@ BEGIN
341
331
  DECLARE operations TEXT[] := ARRAY['insert', 'update', 'delete'];
342
332
  DECLARE op TEXT;
343
333
  DECLARE query TEXT;
334
+ DECLARE trg_name TEXT;
344
335
  DECLARE trw RECORD;
345
336
  DECLARE app RECORD;
346
337
  DECLARE start_time BIGINT;
@@ -352,7 +343,7 @@ BEGIN
352
343
 
353
344
  --RAISE NOTICE 'prostgles.app_triggers % ', TG_OP;
354
345
 
355
- /* If no other listeners (app_triggers) left on table then DROP actual table data watch triggers */
346
+ /* If no other listeners (app_triggers) left on table then DISABLE actual table data watch triggers */
356
347
  IF TG_OP = 'DELETE' THEN
357
348
 
358
349
  --RAISE NOTICE 'DELETE trigger_add_remove_func table: % ', ' ' || COALESCE((SELECT concat_ws(' ', string_agg(table_name, ' & '), count(*), min(inserted) ) FROM prostgles.app_triggers) , ' 0 ');
@@ -360,19 +351,26 @@ BEGIN
360
351
 
361
352
  select count(*) from old_table into changed_triggers_count;
362
353
 
363
- /* Drop actual triggers if needed */
354
+ /* Disable actual triggers if needed */
364
355
  FOR trw IN
365
- SELECT DISTINCT table_name FROM old_table ot
356
+ SELECT DISTINCT table_name
357
+ FROM old_table ot
366
358
  WHERE NOT EXISTS (
367
- SELECT 1 FROM prostgles.app_triggers t
368
- WHERE t.table_name = ot.table_name
369
- )
359
+ SELECT 1 FROM prostgles.app_triggers t
360
+ WHERE t.table_name = ot.table_name
361
+ )
362
+ AND EXISTS (
363
+ SELECT trigger_name from information_schema.triggers
364
+ WHERE trigger_name = 'your_trigger_name'
365
+ )
370
366
  LOOP
371
367
 
372
368
  FOREACH op IN ARRAY operations
373
369
  LOOP
374
- --RAISE NOTICE ' DROP DATA TRIGGER FOR: % ', trw.table_name;
375
- EXECUTE format(' DROP TRIGGER IF EXISTS %I ON %I ;' , 'prostgles_triggers_' || trw.table_name || '_' || op, trw.table_name);
370
+ trg_name := concat_ws('_', 'prostgles_triggers', trw.table_name, op);
371
+
372
+ --EXECUTE format(' DROP TRIGGER IF EXISTS %I ON %s ;' , trg_name, trw.table_name);
373
+ EXECUTE format(' ALTER TABLE %s DISABLE TRIGGER %I ;', trg_name, trw.table_name);
376
374
  END LOOP;
377
375
 
378
376
  END LOOP;
@@ -407,47 +405,57 @@ BEGIN
407
405
  AND table_name = nt.table_name
408
406
  )
409
407
  LOOP
410
-
411
- /*
412
- RAISE NOTICE ' CREATE DATA TRIGGER FOR: % TABLE EXISTS?', trw.table_name, SELECT EXISTS (
413
- SELECT 1
414
- FROM information_schema.tables
415
- WHERE table_schema = 'public'
416
- AND table_name = nt.table_name
417
- );
418
- */
419
408
 
420
- query := format(
421
- $q$
422
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
423
- CREATE TRIGGER %1$I
424
- AFTER INSERT ON %2$I
425
- REFERENCING NEW TABLE AS new_table
426
- FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
427
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
428
- $q$,
429
- 'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
430
- ) || format(
431
- $q$
432
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
433
- CREATE TRIGGER %1$I
434
- AFTER UPDATE ON %2$I
435
- REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
436
- FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
437
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
438
- $q$,
439
- 'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
440
- ) || format(
441
- $q$
442
- DROP TRIGGER IF EXISTS %1$I ON %2$I;
443
- CREATE TRIGGER %1$I
444
- AFTER DELETE ON %2$I
445
- REFERENCING OLD TABLE AS old_table
446
- FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
447
- COMMENT ON TRIGGER %1$I ON %2$I IS 'Prostgles internal trigger used to notify when data in the table changed';
448
- $q$,
449
- 'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
450
- );
409
+ IF (
410
+ SELECT COUNT(*)
411
+ FROM information_schema.triggers
412
+ WHERE trigger_name IN (
413
+ 'prostgles_triggers_' || trw.table_name || '_insert',
414
+ 'prostgles_triggers_' || trw.table_name || '_update',
415
+ 'prostgles_triggers_' || trw.table_name || '_delete'
416
+ )
417
+ ) = 3 AND false
418
+ THEN
419
+ query := concat_ws(E'\n',
420
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_insert'),
421
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_update'),
422
+ format(' ALTER TABLE %s ENABLE TRIGGER %I ;', trw.table_name, 'prostgles_triggers_' || trw.table_name || '_delete')
423
+ );
424
+ ELSE
425
+
426
+ query := format(
427
+ $q$
428
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
429
+ CREATE TRIGGER %1$I
430
+ AFTER INSERT ON %2$s
431
+ REFERENCING NEW TABLE AS new_table
432
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
433
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
434
+ $q$,
435
+ 'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
436
+ ) || format(
437
+ $q$
438
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
439
+ CREATE TRIGGER %1$I
440
+ AFTER UPDATE ON %2$s
441
+ REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
442
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
443
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
444
+ $q$,
445
+ 'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
446
+ ) || format(
447
+ $q$
448
+ DROP TRIGGER IF EXISTS %1$I ON %2$s;
449
+ CREATE TRIGGER %1$I
450
+ AFTER DELETE ON %2$I
451
+ REFERENCING OLD TABLE AS old_table
452
+ FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
453
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
454
+ $q$,
455
+ 'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
456
+ );
457
+ END IF;
458
+
451
459
 
452
460
  --RAISE NOTICE ' % ', query;
453
461
 
@@ -457,20 +465,10 @@ BEGIN
457
465
  DO $e$
458
466
  BEGIN
459
467
  /* ${ PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
460
- IF EXISTS (
461
- SELECT 1
462
- FROM information_schema.tables
463
- WHERE table_schema = 'public'
464
- AND table_name = %L
465
- ) THEN
466
-
467
- %s
468
-
469
- END IF;
468
+ %s
470
469
 
471
470
  END $e$;
472
471
  $q$,
473
- trw.table_name,
474
472
  query
475
473
  ) ;
476
474
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.62",
3
+ "version": "4.2.63",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -474,7 +474,7 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
474
474
 
475
475
  if(item && item.name === "zz3zz3"){
476
476
  await db.various.delete!({ name: "zz3zz3" });
477
- sub.unsubscribe();
477
+ await sub.unsubscribe();
478
478
  resolve(true)
479
479
  }
480
480
  });
@@ -989,7 +989,23 @@ export const isomorphicQueries = async (db: DBOFullyTyped | DBHandlerClient, log
989
989
  }
990
990
  }, { select: "*" });
991
991
  assert.deepStrictEqual(exists1, exists2)
992
- })
992
+ });
993
+
994
+ await test("subscribe to escaped table name", async () => {
995
+ await tryRunP("subscribe to escaped table name", async (resolve, reject) => {
996
+ let sub;
997
+ sub = await db[`"""quoted0"""`].subscribe!({ [`"text_col0"`]: "0" }, { }, async items => {
998
+ const item = items[0];
999
+
1000
+ if(item && item[`"text_col0"`] === "0"){
1001
+ setTimeout(async () => {
1002
+ await sub.unsubscribe();
1003
+ resolve(true);
1004
+ }, 50);
1005
+ }
1006
+ });
1007
+ });
1008
+ });
993
1009
 
994
1010
  await test("Reverse join with agg", async () => {
995
1011
  const inserted = await db.tr1.insert!({ tr2: { t1: "a", t2: "b" } }, { returning: "*" });
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "4.2.61",
24
+ "version": "4.2.62",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "bluebird": "^3.7.2",