From bd265564a20c4542e94d20d348e3002d8fd3edf3 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Wed, 18 Feb 2026 12:09:55 -0600 Subject: [PATCH] Handle insufficient privileges in pg_stat_statements migration Wrap CREATE EXTENSION in a PL/pgSQL DO block that catches insufficient_privilege so the migration completes successfully even when the DB user is not a superuser. --- .../20250707214530_enable_pg_stat_statements.exs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/priv/repo/migrations/20250707214530_enable_pg_stat_statements.exs b/priv/repo/migrations/20250707214530_enable_pg_stat_statements.exs index 7de2c3e..59f5a47 100644 --- a/priv/repo/migrations/20250707214530_enable_pg_stat_statements.exs +++ b/priv/repo/migrations/20250707214530_enable_pg_stat_statements.exs @@ -1,7 +1,19 @@ defmodule Aprsme.Repo.Migrations.EnablePgStatStatements do use Ecto.Migration - def change do - execute "CREATE EXTENSION IF NOT EXISTS pg_stat_statements" + def up do + execute """ + DO $$ + BEGIN + CREATE EXTENSION IF NOT EXISTS pg_stat_statements; + EXCEPTION WHEN insufficient_privilege THEN + RAISE NOTICE 'Skipping pg_stat_statements: insufficient privileges (requires superuser)'; + END; + $$ + """ + end + + def down do + execute "DROP EXTENSION IF EXISTS pg_stat_statements" end end