1- import { createClient } from "npm:@pgkit/client" ;
1+ import { createClient , sql } from "npm:@pgkit/client" ;
22import { Migration } from "npm:@pgkit/migra" ;
33
44// Avoids error on self-signed certificate
@@ -20,7 +20,11 @@ const extensionSchemas = [
2020] ;
2121
2222try {
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,
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
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 , {
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