From 8732075dc94caab90c4e8ce0b3a2e17a7d633d74 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Fri, 26 Jun 2026 19:07:03 +0800 Subject: [PATCH] fix(vastbase): avoid backslash escape in role grants SQL --- apps/desktop/src/lib/databaseUserAdmin.ts | 2 +- packages/app-tests/databaseUserAdmin.test.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/lib/databaseUserAdmin.ts b/apps/desktop/src/lib/databaseUserAdmin.ts index ebed111bc..5c2c0cd14 100644 --- a/apps/desktop/src/lib/databaseUserAdmin.ts +++ b/apps/desktop/src/lib/databaseUserAdmin.ts @@ -244,7 +244,7 @@ FROM ( ) FROM target t CROSS JOIN pg_catalog.pg_namespace n - WHERE n.nspname NOT LIKE 'pg\\_%' ESCAPE '\\' + WHERE n.nspname NOT LIKE 'pg~_%' ESCAPE '~' AND n.nspname <> 'information_schema' AND (has_schema_privilege(t.rolname, n.oid, 'USAGE') OR has_schema_privilege(t.rolname, n.oid, 'CREATE')) UNION ALL diff --git a/packages/app-tests/databaseUserAdmin.test.ts b/packages/app-tests/databaseUserAdmin.test.ts index eb1f1cc12..e38a316f9 100644 --- a/packages/app-tests/databaseUserAdmin.test.ts +++ b/packages/app-tests/databaseUserAdmin.test.ts @@ -172,4 +172,6 @@ test("builds PostgreSQL role metadata SQL without directly requiring rolbypassrl assert.doesNotMatch(listSql, /r\.rolbypassrls/); assert.doesNotMatch(grantsSql, /r\.rolbypassrls/); assert.match(grantsSql, /AS rolbypassrls/); + assert.match(grantsSql, /n\.nspname NOT LIKE 'pg~_%' ESCAPE '~'/); + assert.ok(!grantsSql.includes("ESCAPE '\\'")); });