@@ -809,16 +809,18 @@ function runMigrations({
809809 const icebergDefaultShard = icebergShards . length > 0 ? icebergShards [ 0 ] : ''
810810
811811 if ( migrationsToRun . length > 0 ) {
812- await client . query ( SQL `SELECT
813- set_config('storage.install_roles', ${ dbInstallRoles } , false),
814- set_config('storage.multitenant', ${ isMultitenant ? 'true' : 'false' } , false),
815- set_config('storage.anon_role', ${ dbAnonRole } , false),
816- set_config('storage.authenticated_role', ${ dbAuthenticatedRole } , false),
817- set_config('storage.service_role', ${ dbServiceRole } , false),
818- set_config('storage.super_user', ${ dbSuperUser } , false),
819- set_config('storage.iceberg_default_shard', ${ icebergDefaultShard } , false),
820- set_config('storage.iceberg_shards', ${ icebergShardVar } , false),
821- set_config('storage.vector_bucket_provider', ${ vectorBucketProvider } , false);
812+ // set_config requires literal values, not bound parameters.
813+ const lit = ( v : string | boolean ) => `'${ String ( v ) . replace ( / ' / g, "''" ) } '`
814+ await client . query ( `SELECT
815+ set_config('storage.install_roles', ${ lit ( dbInstallRoles ) } , false),
816+ set_config('storage.multitenant', ${ lit ( isMultitenant ? 'true' : 'false' ) } , false),
817+ set_config('storage.anon_role', ${ lit ( dbAnonRole ) } , false),
818+ set_config('storage.authenticated_role', ${ lit ( dbAuthenticatedRole ) } , false),
819+ set_config('storage.service_role', ${ lit ( dbServiceRole ) } , false),
820+ set_config('storage.super_user', ${ lit ( dbSuperUser ) } , false),
821+ set_config('storage.iceberg_default_shard', ${ lit ( icebergDefaultShard ) } , false),
822+ set_config('storage.iceberg_shards', ${ lit ( icebergShardVar ) } , false),
823+ set_config('storage.vector_bucket_provider', ${ lit ( vectorBucketProvider ) } , false);
822824 ` )
823825 }
824826
0 commit comments