Skip to content

Commit 36dfffb

Browse files
Fix CREATE POLICY quote handling to only quote when necessary
- Replace hardcoded quote wrapping with QuoteUtils.quote() in CreatePolicyStmt and AlterPolicyStmt methods - Policy names like 'user_policy', 'admin_policy', 'simple_policy' are now correctly unquoted - Policy names with spaces or special characters (e.g. 'Simple Policy') are still properly quoted - Updated test snapshots to reflect correct quoting behavior - All 269 test suites pass with 380 tests passing Co-Authored-By: Dan Lynch <[email protected]>
1 parent 0d074d8 commit 36dfffb

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

packages/deparser/__tests__/pretty/__snapshots__/create-policy-pretty.test.ts.snap

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`non-pretty: pretty/create_policy-1.sql 1`] = `"CREATE POLICY "user_policy" ON users AS PERMISSIVE FOR ALL TO authenticated_users USING (user_id = current_user_id())"`;
3+
exports[`non-pretty: pretty/create_policy-1.sql 1`] = `"CREATE POLICY user_policy ON users AS PERMISSIVE FOR ALL TO authenticated_users USING (user_id = current_user_id())"`;
44

5-
exports[`non-pretty: pretty/create_policy-2.sql 1`] = `"CREATE POLICY "admin_policy" ON sensitive_data AS RESTRICTIVE FOR SELECT TO admin_role USING (department = current_user_department()) WITH CHECK (approved = true)"`;
5+
exports[`non-pretty: pretty/create_policy-2.sql 1`] = `"CREATE POLICY admin_policy ON sensitive_data AS RESTRICTIVE FOR SELECT TO admin_role USING (department = current_user_department()) WITH CHECK (approved = true)"`;
66

7-
exports[`non-pretty: pretty/create_policy-3.sql 1`] = `"CREATE POLICY "complex_policy" ON documents AS PERMISSIVE FOR UPDATE TO document_editors USING (owner_id = current_user_id() OR (shared = true AND permissions @> '{"edit": true}')) WITH CHECK (status <> 'archived' AND last_modified > (now() - '1 day'::interval))"`;
7+
exports[`non-pretty: pretty/create_policy-3.sql 1`] = `"CREATE POLICY complex_policy ON documents AS PERMISSIVE FOR UPDATE TO document_editors USING (owner_id = current_user_id() OR (shared = true AND permissions @> '{"edit": true}')) WITH CHECK (status <> 'archived' AND last_modified > (now() - '1 day'::interval))"`;
88

9-
exports[`non-pretty: pretty/create_policy-4.sql 1`] = `"CREATE POLICY "simple_policy" ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
9+
exports[`non-pretty: pretty/create_policy-4.sql 1`] = `"CREATE POLICY simple_policy ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
1010

11-
exports[`non-pretty: pretty/create_policy-5.sql 1`] = `"CREATE POLICY "simple_policy" ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
11+
exports[`non-pretty: pretty/create_policy-5.sql 1`] = `"CREATE POLICY simple_policy ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
1212

1313
exports[`non-pretty: pretty/create_policy-6.sql 1`] = `"CREATE POLICY "Simple Policy" ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
1414

15-
exports[`non-pretty: pretty/create_policy-7.sql 1`] = `"CREATE POLICY "simplepolicy" ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
15+
exports[`non-pretty: pretty/create_policy-7.sql 1`] = `"CREATE POLICY simplepolicy ON posts AS PERMISSIVE FOR SELECT TO PUBLIC USING (published = true)"`;
1616

1717
exports[`pretty: pretty/create_policy-1.sql 1`] = `
18-
"CREATE POLICY "user_policy"
18+
"CREATE POLICY user_policy
1919
ON users
2020
AS PERMISSIVE
2121
FOR ALL
@@ -26,7 +26,7 @@ exports[`pretty: pretty/create_policy-1.sql 1`] = `
2626
`;
2727

2828
exports[`pretty: pretty/create_policy-2.sql 1`] = `
29-
"CREATE POLICY "admin_policy"
29+
"CREATE POLICY admin_policy
3030
ON sensitive_data
3131
AS RESTRICTIVE
3232
FOR SELECT
@@ -40,7 +40,7 @@ exports[`pretty: pretty/create_policy-2.sql 1`] = `
4040
`;
4141

4242
exports[`pretty: pretty/create_policy-3.sql 1`] = `
43-
"CREATE POLICY "complex_policy"
43+
"CREATE POLICY complex_policy
4444
ON documents
4545
AS PERMISSIVE
4646
FOR UPDATE
@@ -57,7 +57,7 @@ exports[`pretty: pretty/create_policy-3.sql 1`] = `
5757
`;
5858

5959
exports[`pretty: pretty/create_policy-4.sql 1`] = `
60-
"CREATE POLICY "simple_policy"
60+
"CREATE POLICY simple_policy
6161
ON posts
6262
AS PERMISSIVE
6363
FOR SELECT
@@ -68,7 +68,7 @@ exports[`pretty: pretty/create_policy-4.sql 1`] = `
6868
`;
6969

7070
exports[`pretty: pretty/create_policy-5.sql 1`] = `
71-
"CREATE POLICY "simple_policy"
71+
"CREATE POLICY simple_policy
7272
ON posts
7373
AS PERMISSIVE
7474
FOR SELECT
@@ -90,7 +90,7 @@ exports[`pretty: pretty/create_policy-6.sql 1`] = `
9090
`;
9191

9292
exports[`pretty: pretty/create_policy-7.sql 1`] = `
93-
"CREATE POLICY "simplepolicy"
93+
"CREATE POLICY simplepolicy
9494
ON posts
9595
AS PERMISSIVE
9696
FOR SELECT

packages/deparser/src/deparser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6679,7 +6679,7 @@ export class Deparser implements DeparserVisitor {
66796679

66806680
const initialParts = ['CREATE', 'POLICY'];
66816681
if (node.policy_name) {
6682-
initialParts.push(`"${node.policy_name}"`);
6682+
initialParts.push(QuoteUtils.quote(node.policy_name));
66836683
}
66846684

66856685
output.push(initialParts.join(' '));
@@ -6758,7 +6758,7 @@ export class Deparser implements DeparserVisitor {
67586758
const output: string[] = ['ALTER', 'POLICY'];
67596759

67606760
if (node.policy_name) {
6761-
output.push(`"${node.policy_name}"`);
6761+
output.push(QuoteUtils.quote(node.policy_name));
67626762
}
67636763

67646764
if (node.table) {

0 commit comments

Comments
 (0)