diff --git a/cmd/brew-postgresql-upgrade-database.rb b/cmd/brew-postgresql-upgrade-database.rb index f9b873e3f2..402054ef85 100755 --- a/cmd/brew-postgresql-upgrade-database.rb +++ b/cmd/brew-postgresql-upgrade-database.rb @@ -57,12 +57,29 @@ begin server_stopped = true end + # get 'lc_collate' from old DB" + unless quiet_system "#{old_bin}/pg_ctl", "-w", "-D", datadir, "status" + system "#{old_bin}/pg_ctl", "-w", "-D", datadir, "start" + end + + sql_for_lc_collate = "SELECT setting FROM pg_settings WHERE name LIKE 'lc_collate';" + sql_for_lc_ctype = "SELECT setting FROM pg_settings WHERE name LIKE 'lc_ctype';" + lc_collate = Utils.popen_read("#{old_bin}/psql", "postgres", "-qtAc", sql_for_lc_collate).strip + lc_ctype = Utils.popen_read("#{old_bin}/psql", "postgres", "-qtAc", sql_for_lc_ctype).strip + initdb_args = [] + initdb_args += ["--lc-collate", lc_collate] unless lc_collate.empty? + initdb_args += ["--lc-ctype", lc_ctype] unless lc_ctype.empty? + + if quiet_system "#{old_bin}/pg_ctl", "-w", "-D", datadir, "status" + system "#{old_bin}/pg_ctl", "-w", "-D", datadir, "stop" + end + ohai "Moving #{name} data from #{datadir} to #{old_datadir}..." FileUtils.mv datadir, old_datadir moved_data = true (var/"postgres").mkpath - system "#{bin}/initdb", "#{var}/postgres" + system "#{bin}/initdb", *initdb_args, "#{var}/postgres" initdb_run = true (var/"log").cd do