From f2427ee2ca906e8e1009c7327a618bf6beb08339 Mon Sep 17 00:00:00 2001 From: yyyyaaa Date: Thu, 11 Dec 2025 11:58:04 +0700 Subject: [PATCH 1/3] fix(ci): promise-returning function makes each test result always return true --- scripts/test-all-packages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test-all-packages.js b/scripts/test-all-packages.js index bffeab04..f1e57e80 100755 --- a/scripts/test-all-packages.js +++ b/scripts/test-all-packages.js @@ -128,7 +128,7 @@ function runPgpmCommand(command, dbname, packageName, packagePath, projectRoot) return result.success; } -async function testPackage(packagePath, projectRoot, useDocker) { +function testPackage(packagePath, projectRoot, useDocker) { const packageName = path.basename(packagePath); const dbname = dbsafename(packagePath); From fdf2ff44e52a4926cbf65cf1370c90d90429b535 Mon Sep 17 00:00:00 2001 From: Zhi Zhen Date: Thu, 11 Dec 2025 20:18:43 +0800 Subject: [PATCH 2/3] fixed integration test --- .../schemas/collections_public/schema.sql | 2 +- .../revert/roles/administrator/role.sql | 17 ++++++++++++++++- .../revert/roles/anonymous/role.sql | 15 ++++++++++++++- .../revert/roles/authenticated/role.sql | 15 ++++++++++++++- .../deploy/procedures/verify_function.sql | 15 ++++++++++++++- 5 files changed, 59 insertions(+), 5 deletions(-) diff --git a/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql b/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql index ce20108b..058fcd32 100644 --- a/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql +++ b/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql @@ -1,6 +1,6 @@ BEGIN; -DROP SCHEMA collections_public; +DROP SCHEMA collections_public CASCADE; COMMIT; diff --git a/packages/security/default-roles/revert/roles/administrator/role.sql b/packages/security/default-roles/revert/roles/administrator/role.sql index 7d37b49d..9568b117 100644 --- a/packages/security/default-roles/revert/roles/administrator/role.sql +++ b/packages/security/default-roles/revert/roles/administrator/role.sql @@ -2,6 +2,21 @@ BEGIN; -DROP ROLE administrator; +DO $revert$ +BEGIN + IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'administrator') THEN + REVOKE anonymous FROM administrator; + REVOKE authenticated FROM administrator; + REASSIGN OWNED BY administrator TO CURRENT_USER; + DROP OWNED BY administrator CASCADE; + BEGIN + DROP ROLE administrator; + EXCEPTION + WHEN dependent_objects_still_exist THEN + RAISE NOTICE 'Skipping drop of administrator role because dependent objects remain elsewhere'; + END; + END IF; +END; +$revert$; COMMIT; diff --git a/packages/security/default-roles/revert/roles/anonymous/role.sql b/packages/security/default-roles/revert/roles/anonymous/role.sql index 7fe39a3d..111a5f70 100644 --- a/packages/security/default-roles/revert/roles/anonymous/role.sql +++ b/packages/security/default-roles/revert/roles/anonymous/role.sql @@ -2,6 +2,19 @@ BEGIN; -DROP ROLE anonymous; +DO $revert$ +BEGIN + IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'anonymous') THEN + REASSIGN OWNED BY anonymous TO CURRENT_USER; + DROP OWNED BY anonymous CASCADE; + BEGIN + DROP ROLE anonymous; + EXCEPTION + WHEN dependent_objects_still_exist THEN + RAISE NOTICE 'Skipping drop of anonymous role because dependent objects remain elsewhere'; + END; + END IF; +END; +$revert$; COMMIT; diff --git a/packages/security/default-roles/revert/roles/authenticated/role.sql b/packages/security/default-roles/revert/roles/authenticated/role.sql index fc2d088c..03cbb9d8 100644 --- a/packages/security/default-roles/revert/roles/authenticated/role.sql +++ b/packages/security/default-roles/revert/roles/authenticated/role.sql @@ -2,6 +2,19 @@ BEGIN; -DROP ROLE authenticated; +DO $revert$ +BEGIN + IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'authenticated') THEN + REASSIGN OWNED BY authenticated TO CURRENT_USER; + DROP OWNED BY authenticated CASCADE; + BEGIN + DROP ROLE authenticated; + EXCEPTION + WHEN dependent_objects_still_exist THEN + RAISE NOTICE 'Skipping drop of authenticated role because dependent objects remain elsewhere'; + END; + END IF; +END; +$revert$; COMMIT; diff --git a/packages/utils/verify/deploy/procedures/verify_function.sql b/packages/utils/verify/deploy/procedures/verify_function.sql index 823e1e2b..b74eaf42 100644 --- a/packages/utils/verify/deploy/procedures/verify_function.sql +++ b/packages/utils/verify/deploy/procedures/verify_function.sql @@ -9,12 +9,26 @@ CREATE FUNCTION verify_function (_name text, _user text DEFAULT NULL) AS $$ DECLARE check_user text; + func_oid oid; BEGIN IF (_user IS NOT NULL) THEN check_user = _user; ELSE check_user = CURRENT_USER; END IF; + IF position('(' IN _name) > 0 THEN + func_oid = to_regprocedure(_name); + IF func_oid IS NULL THEN + RAISE EXCEPTION 'Nonexistent function --> %', _name + USING HINT = 'Please check'; + END IF; + IF has_function_privilege(check_user, func_oid, 'execute') THEN + RETURN TRUE; + ELSE + RAISE EXCEPTION 'Nonexistent function --> %', _name + USING HINT = 'Please check'; + END IF; + END IF; IF EXISTS ( SELECT has_function_privilege(check_user, p.oid, 'execute') @@ -34,4 +48,3 @@ $$ LANGUAGE 'plpgsql' IMMUTABLE; COMMIT; - From 5e11c1a131679a8dc80617ae0b5aeabf523dd8c5 Mon Sep 17 00:00:00 2001 From: Zhi Zhen Date: Fri, 19 Dec 2025 22:31:17 +0800 Subject: [PATCH 3/3] revert unrelated changes --- .../schemas/collections_public/schema.sql | 2 +- .../revert/roles/administrator/role.sql | 17 +---------------- .../revert/roles/anonymous/role.sql | 15 +-------------- .../revert/roles/authenticated/role.sql | 15 +-------------- .../deploy/procedures/verify_function.sql | 15 +-------------- 5 files changed, 5 insertions(+), 59 deletions(-) diff --git a/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql b/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql index 058fcd32..ce20108b 100644 --- a/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql +++ b/packages/meta/db-meta-schema/revert/schemas/collections_public/schema.sql @@ -1,6 +1,6 @@ BEGIN; -DROP SCHEMA collections_public CASCADE; +DROP SCHEMA collections_public; COMMIT; diff --git a/packages/security/default-roles/revert/roles/administrator/role.sql b/packages/security/default-roles/revert/roles/administrator/role.sql index 9568b117..7d37b49d 100644 --- a/packages/security/default-roles/revert/roles/administrator/role.sql +++ b/packages/security/default-roles/revert/roles/administrator/role.sql @@ -2,21 +2,6 @@ BEGIN; -DO $revert$ -BEGIN - IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'administrator') THEN - REVOKE anonymous FROM administrator; - REVOKE authenticated FROM administrator; - REASSIGN OWNED BY administrator TO CURRENT_USER; - DROP OWNED BY administrator CASCADE; - BEGIN - DROP ROLE administrator; - EXCEPTION - WHEN dependent_objects_still_exist THEN - RAISE NOTICE 'Skipping drop of administrator role because dependent objects remain elsewhere'; - END; - END IF; -END; -$revert$; +DROP ROLE administrator; COMMIT; diff --git a/packages/security/default-roles/revert/roles/anonymous/role.sql b/packages/security/default-roles/revert/roles/anonymous/role.sql index 111a5f70..7fe39a3d 100644 --- a/packages/security/default-roles/revert/roles/anonymous/role.sql +++ b/packages/security/default-roles/revert/roles/anonymous/role.sql @@ -2,19 +2,6 @@ BEGIN; -DO $revert$ -BEGIN - IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'anonymous') THEN - REASSIGN OWNED BY anonymous TO CURRENT_USER; - DROP OWNED BY anonymous CASCADE; - BEGIN - DROP ROLE anonymous; - EXCEPTION - WHEN dependent_objects_still_exist THEN - RAISE NOTICE 'Skipping drop of anonymous role because dependent objects remain elsewhere'; - END; - END IF; -END; -$revert$; +DROP ROLE anonymous; COMMIT; diff --git a/packages/security/default-roles/revert/roles/authenticated/role.sql b/packages/security/default-roles/revert/roles/authenticated/role.sql index 03cbb9d8..fc2d088c 100644 --- a/packages/security/default-roles/revert/roles/authenticated/role.sql +++ b/packages/security/default-roles/revert/roles/authenticated/role.sql @@ -2,19 +2,6 @@ BEGIN; -DO $revert$ -BEGIN - IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'authenticated') THEN - REASSIGN OWNED BY authenticated TO CURRENT_USER; - DROP OWNED BY authenticated CASCADE; - BEGIN - DROP ROLE authenticated; - EXCEPTION - WHEN dependent_objects_still_exist THEN - RAISE NOTICE 'Skipping drop of authenticated role because dependent objects remain elsewhere'; - END; - END IF; -END; -$revert$; +DROP ROLE authenticated; COMMIT; diff --git a/packages/utils/verify/deploy/procedures/verify_function.sql b/packages/utils/verify/deploy/procedures/verify_function.sql index b74eaf42..823e1e2b 100644 --- a/packages/utils/verify/deploy/procedures/verify_function.sql +++ b/packages/utils/verify/deploy/procedures/verify_function.sql @@ -9,26 +9,12 @@ CREATE FUNCTION verify_function (_name text, _user text DEFAULT NULL) AS $$ DECLARE check_user text; - func_oid oid; BEGIN IF (_user IS NOT NULL) THEN check_user = _user; ELSE check_user = CURRENT_USER; END IF; - IF position('(' IN _name) > 0 THEN - func_oid = to_regprocedure(_name); - IF func_oid IS NULL THEN - RAISE EXCEPTION 'Nonexistent function --> %', _name - USING HINT = 'Please check'; - END IF; - IF has_function_privilege(check_user, func_oid, 'execute') THEN - RETURN TRUE; - ELSE - RAISE EXCEPTION 'Nonexistent function --> %', _name - USING HINT = 'Please check'; - END IF; - END IF; IF EXISTS ( SELECT has_function_privilege(check_user, p.oid, 'execute') @@ -48,3 +34,4 @@ $$ LANGUAGE 'plpgsql' IMMUTABLE; COMMIT; +