github.com/supabase/cli@v1.168.1/internal/db/dump/templates/dump_schema.sh (about) 1 #!/usr/bin/env bash 2 set -euo pipefail 3 4 export PGHOST="$PGHOST" 5 export PGPORT="$PGPORT" 6 export PGUSER="$PGUSER" 7 export PGPASSWORD="$PGPASSWORD" 8 export PGDATABASE="$PGDATABASE" 9 10 # Explanation of pg_dump flags: 11 # 12 # --schema-only omit data like migration history, pgsodium key, etc. 13 # --exclude-schema omit internal schemas as they are maintained by platform 14 # 15 # Explanation of sed substitutions: 16 # 17 # - do not alter superuser role "supabase_admin" 18 # - do not alter foreign data wrappers owner 19 # - do not include ACL changes on internal schemas 20 # - do not include RLS policies on cron extension schema 21 # - do not include event triggers 22 # - do not create pgtle schema and extension comments 23 # - do not create publication "supabase_realtime" 24 pg_dump \ 25 --schema-only \ 26 --quote-all-identifier \ 27 --exclude-schema "${EXCLUDED_SCHEMAS:-}" \ 28 ${EXTRA_FLAGS:-} \ 29 | sed -E 's/^CREATE SCHEMA "/CREATE SCHEMA IF NOT EXISTS "/' \ 30 | sed -E 's/^CREATE TABLE "/CREATE TABLE IF NOT EXISTS "/' \ 31 | sed -E 's/^CREATE SEQUENCE "/CREATE SEQUENCE IF NOT EXISTS "/' \ 32 | sed -E 's/^CREATE VIEW "/CREATE OR REPLACE VIEW "/' \ 33 | sed -E 's/^CREATE FUNCTION "/CREATE OR REPLACE FUNCTION "/' \ 34 | sed -E 's/^CREATE TRIGGER "/CREATE OR REPLACE TRIGGER "/' \ 35 | sed -E 's/^CREATE PUBLICATION "supabase_realtime"/-- &/' \ 36 | sed -E 's/^CREATE EVENT TRIGGER /-- &/' \ 37 | sed -E 's/^ WHEN TAG IN /-- &/' \ 38 | sed -E 's/^ EXECUTE FUNCTION /-- &/' \ 39 | sed -E 's/^ALTER EVENT TRIGGER /-- &/' \ 40 | sed -E 's/^ALTER FOREIGN DATA WRAPPER (.+) OWNER TO /-- &/' \ 41 | sed -E 's/^ALTER DEFAULT PRIVILEGES FOR ROLE "supabase_admin"/-- &/' \ 42 | sed -E "s/^GRANT (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \ 43 | sed -E "s/^REVOKE (.+) ON (.+) \"(${EXCLUDED_SCHEMAS:-})\"/-- &/" \ 44 | sed -E 's/^(CREATE EXTENSION IF NOT EXISTS "pg_tle").+/\1;/' \ 45 | sed -E 's/^COMMENT ON EXTENSION (.+)/-- &/' \ 46 | sed -E 's/^CREATE POLICY "cron_job_/-- &/' \ 47 | sed -E 's/^ALTER TABLE "cron"/-- &/' \ 48 | sed -E "${EXTRA_SED:-}" \ 49 | uniq 50 51 # Reset session config generated by pg_dump 52 echo "RESET ALL;"