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.
- package/dist/PubSubManager/getInitQuery.d.ts.map +1 -1
- package/dist/PubSubManager/getInitQuery.js +68 -70
- package/dist/PubSubManager/getInitQuery.js.map +1 -1
- package/lib/PubSubManager/getInitQuery.ts +68 -70
- package/package.json +1 -1
- package/tests/isomorphicQueries.spec.ts +18 -2
- 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,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
|
|
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
|
-
/*
|
|
352
|
+
/* Disable actual triggers if needed */
|
|
362
353
|
FOR trw IN
|
|
363
|
-
SELECT DISTINCT table_name
|
|
354
|
+
SELECT DISTINCT table_name
|
|
355
|
+
FROM old_table ot
|
|
364
356
|
WHERE NOT EXISTS (
|
|
365
|
-
|
|
366
|
-
|
|
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
|
-
|
|
373
|
-
|
|
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
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
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
|
-
|
|
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":";;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAyGjC,IAAA,uBAAO,EAAC,6BAAa,CAAC,OAAO,CAAC;;kCAE5B,IAAA,uBAAO,EAAC,6BAAa,CAAC,SAAS,CAAC;;kCAEhC,IAAA,uBAAO,EAAC,0BAAU,CAAC,IAAI,CAAC;;;;;;;kCAOxB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC,CAAC,qHAAqH,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;
|
|
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
|
|
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
|
-
/*
|
|
354
|
+
/* Disable actual triggers if needed */
|
|
364
355
|
FOR trw IN
|
|
365
|
-
SELECT DISTINCT table_name
|
|
356
|
+
SELECT DISTINCT table_name
|
|
357
|
+
FROM old_table ot
|
|
366
358
|
WHERE NOT EXISTS (
|
|
367
|
-
|
|
368
|
-
|
|
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
|
-
|
|
375
|
-
|
|
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
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
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
|
-
|
|
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
|
@@ -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: "*" });
|