Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions internal/db/dump/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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:
Expand Down
3 changes: 1 addition & 2 deletions internal/db/dump/templates/dump_schema.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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:
#
Expand All @@ -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 "/' \
Expand Down