From d0d24668a55a24e6c7ded0baf8fe6a38133245d3 Mon Sep 17 00:00:00 2001 From: MasseElch <12862103+masseelch@users.noreply.github.com> Date: Mon, 14 Feb 2022 19:26:09 +0100 Subject: [PATCH] sql/migrate: fix reverse of odd length slices (#582) --- sql/migrate/migrate.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sql/migrate/migrate.go b/sql/migrate/migrate.go index 53f1204efe4..d9adefeef3f 100644 --- a/sql/migrate/migrate.go +++ b/sql/migrate/migrate.go @@ -286,7 +286,7 @@ var ( "{{ now.Unix }}{{ with .Name }}_{{ . }}{{ end }}.down.sql", )), C: template.Must(template.New("").Funcs(templateFuncs).Parse( - "{{ range rev .Changes }}{{ println (sem .Reverse) }}{{ end }}", + "{{ range rev .Changes }}{{ with .Reverse }}{{ println (sem .) }}{{ end }}{{ end }}", )), }, }, @@ -345,8 +345,12 @@ func (f *templateFile) Name() string { return f.n } // reverse changes for the down migration. func reverse(changes []*Change) []*Change { - rev := make([]*Change, len(changes)) - for i, j := 0, len(changes)-1; i < j; i, j = i+1, j-1 { + n := len(changes) + rev := make([]*Change, n) + if n%2 == 1 { + rev[n/2] = changes[n/2] + } + for i, j := 0, n-1; i < j; i, j = i+1, j-1 { rev[i], rev[j] = changes[j], changes[i] } return rev