diff --git a/internal/db/dump/dump.go b/internal/db/dump/dump.go index 35b399890..7fb37a38d 100644 --- a/internal/db/dump/dump.go +++ b/internal/db/dump/dump.go @@ -56,11 +56,11 @@ func Run(ctx context.Context, path string, config pgconn.Config, schema, exclude func DumpSchema(ctx context.Context, config pgconn.Config, schema []string, keepComments, dryRun bool, stdout io.Writer) error { var env []string if len(schema) > 0 { - env = append(env, "EXTRA_FLAGS=--schema "+strings.Join(schema, "|")) + env = append(env, "INCLUDED_SCHEMAS="+strings.Join(schema, "|")) } else { env = append(env, "EXCLUDED_SCHEMAS="+strings.Join(utils.InternalSchemas, "|"), - "EXTRA_FLAGS=--extension '*'", + "INCLUDED_SCHEMAS=*", ) } if !keepComments { @@ -140,8 +140,11 @@ func dump(ctx context.Context, config pgconn.Config, script string, env []string if dryRun { envMap := make(map[string]string, len(allEnvs)) for _, e := range allEnvs { - parts := strings.Split(e, "=") - envMap[parts[0]] = parts[1] + index := strings.IndexByte(e, '=') + if index < 0 { + continue + } + envMap[e[:index]] = e[index+1:] } expanded := os.Expand(script, func(key string) string { // Bash variable expansion is unsupported: diff --git a/internal/db/dump/templates/dump_schema.sh b/internal/db/dump/templates/dump_schema.sh index c4432502c..696072c3b 100755 --- a/internal/db/dump/templates/dump_schema.sh +++ b/internal/db/dump/templates/dump_schema.sh @@ -12,7 +12,6 @@ export PGDATABASE="$PGDATABASE" # --schema-only omit data like migration history, pgsodium key, etc. # --exclude-schema omit internal schemas as they are maintained by platform # --no-comments only object owner can set comment, omit to allow restore by non-superuser -# --extension '*' prevents event triggers from being dumped, bash escaped with single quote # # Explanation of sed substitutions: # @@ -23,8 +22,8 @@ pg_dump \ --schema-only \ --quote-all-identifier \ --exclude-schema "${EXCLUDED_SCHEMAS:-}" \ + --schema "${INCLUDED_SCHEMAS:-}" \ --no-comments \ - ${EXTRA_FLAGS:-} \ | sed -E 's/^CREATE SCHEMA "/CREATE SCHEMA IF NOT EXISTS "/' \ | sed -E 's/^CREATE TABLE "/CREATE TABLE IF NOT EXISTS "/' \ | sed -E 's/^CREATE SEQUENCE "/CREATE SEQUENCE IF NOT EXISTS "/' \