Skip to content

Commit c6dc82d

Browse files
committed
fix: consistent role and search path for diff
1 parent 9bdb4e2 commit c6dc82d

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

internal/db/diff/templates/migra.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createClient } from "npm:@pgkit/client";
1+
import { createClient, sql } from "npm:@pgkit/client";
22
import { Migration } from "npm:@pgkit/migra";
33

44
// Avoids error on self-signed certificate
@@ -20,7 +20,11 @@ const extensionSchemas = [
2020
];
2121

2222
try {
23-
let sql = "";
23+
// Step down from login role to postgres
24+
await clientHead.query(sql`set role postgres`);
25+
// Use schema qualified references for pg_get_expr
26+
await clientHead.query(sql`set search_path = ''`);
27+
let result = "";
2428
for (const schema of includedSchemas) {
2529
const m = await Migration.create(clientBase, clientHead, {
2630
schema,
@@ -35,7 +39,7 @@ try {
3539
} else {
3640
m.add_all_changes(true);
3741
}
38-
sql += m.sql;
42+
result += m.sql;
3943
}
4044
if (includedSchemas.length === 0) {
4145
// Migra does not ignore custom types and triggers created by extensions, so we diff
@@ -48,7 +52,7 @@ try {
4852
e.set_safety(false);
4953
e.add(e.changes.schemas({ creations_only: true }));
5054
e.add_extension_changes();
51-
sql += e.sql;
55+
result += e.sql;
5256
}
5357
// Diff user defined entities in non-managed schemas, including extensions.
5458
const m = await Migration.create(clientBase, clientHead, {
@@ -61,7 +65,7 @@ try {
6165
});
6266
m.set_safety(false);
6367
m.add_all_changes(true);
64-
sql += m.sql;
68+
result += m.sql;
6569
// For managed schemas, we want to include triggers and RLS policies only.
6670
for (const schema of managedSchemas) {
6771
const s = await Migration.create(clientBase, clientHead, {
@@ -73,10 +77,10 @@ try {
7377
s.add(s.changes.rlspolicies({ drops_only: true }));
7478
s.add(s.changes.rlspolicies({ creations_only: true }));
7579
s.add(s.changes.triggers({ creations_only: true }));
76-
sql += s.sql;
80+
result += s.sql;
7781
}
7882
}
79-
console.log(sql);
83+
console.log(result);
8084
} catch (e) {
8185
console.error(e);
8286
} finally {

0 commit comments

Comments
 (0)