Commit Graph

297 Commits

Author SHA1 Message Date
Andrew Dunstan
2f2be7473b Use a more portable platform test. 2012-10-18 16:14:11 -04:00
Bruce Momjian
a9701a1d7d In pg_upgrade, issue proper error message when we can't open PG_VERSION.
Backpatch to 9.2.
2012-10-10 13:53:03 -04:00
Bruce Momjian
ce75457949 In pg_upgrade, use full path name for analyze_new_cluster.sh script.
Backpatch to 9.2.
2012-10-02 21:18:43 -04:00
Tom Lane
09ac603c36 Work around unportable behavior of malloc(0) and realloc(NULL, 0).
On some platforms these functions return NULL, rather than the more common
practice of returning a pointer to a zero-sized block of memory.  Hack our
various wrapper functions to hide the difference by substituting a size
request of 1.  This is probably not so important for the callers, who
should never touch the block anyway if they asked for size 0 --- but it's
important for the wrapper functions themselves, which mistakenly treated
the NULL result as an out-of-memory failure.  This broke at least pg_dump
for the case of no user-defined aggregates, as per report from
Matthew Carrington.

Back-patch to 9.2 to fix the pg_dump issue.  Given the lack of previous
complaints, it seems likely that there is no live bug in previous releases,
even though some of these functions were in place before that.
2012-10-02 17:32:42 -04:00
Bruce Momjian
8a7598091a In pg_upgrade, improve error reporting when the number of relation
objects does not match between the old and new clusters.

Backpatch to 9.2.
2012-10-02 11:53:45 -04:00
Bruce Momjian
ac96b851ec Adjust pg_upgrade query so toast tables related to system catalog schema
entries are not dumped.   This fixes an error caused by
droping/recreating the information_schema, but other failures were also
possible.

Backpatch to 9.2.
2012-10-02 11:46:08 -04:00
Bruce Momjian
b61837a49f In pg_upgrade, try to convert the locale names to canonical form before
comparison;  also report the old/new values if they don't match.

Backpatch to 9.2.
2012-10-02 11:42:34 -04:00
Peter Eisentraut
10bfe81dee pg_upgrade test: Disable fsync in initdb and postgres calls
This mirrors the behavior of pg_regress and makes the test run much
faster.
2012-09-26 22:41:57 -04:00
Peter Eisentraut
5cfd5bb15b pg_upgrade: Remove check for pg_config
It is no longer used, but was still being checked for.

bug #7548 from Reinhard Max
2012-09-18 22:04:28 -04:00
Andrew Dunstan
f8c81c5dde In pg_upgrade, try a few times to open a log file.
If we call pg_ctl stop, the server might continue and thus
hold a log file for a short time after it has deleted its pid file,
(which is when pg_ctl will exit), and so a subsequent attempt to
open the log file might fail.

We therefore try to open it a few times, sleeping one second between
tries, to give the server time to exit.

This corrects an error that was observed on the buildfarm.

Backpatched to 9.2,
2012-09-05 23:14:49 -04:00
Andrew Dunstan
f8f5cf33a3 Fix pg_upgrade test script's line end handling on Windows.
Call pg_dumpall using -f switch instead of redirection, to avoid
writing the output in text mode and generating spurious carriage
returns. Remove to carriage return ignoring hack introduced by
commit e442b0f0c6.

Backpatch to 9.2.
2012-09-05 18:00:31 -04:00
Andrew Dunstan
ea0b414a0d Fix line end mishandling in pg_upgrade on Windows.
pg_upgrade opened the output from pg_dumpall in text mode and
wrote the split files in text mode. This caused unwanted eating
of intended carriage returns on input and production of spurious
carriage returns on output. To avoid this, open all these files
in binary mode. On non-Windows platforms, this change has no
effect.

Backpatch to 9.0. On 9.0 and 9.1, we also switch from redirecting
pg_dumpall's output to using pg_dumpall's -f switch, for the same
reason.
2012-09-05 17:41:43 -04:00
Tom Lane
b98fd52a55 Silence -Wunused-result warning in contrib/pg_upgrade.
This is just neatnik-ism, but since we do it for comparable code in elog.c,
we may as well do it here.
2012-09-05 14:37:22 -04:00
Bruce Momjian
022cd22f0f In pg_upgrade, document why we can't issue \n\n in the command logfile
on Windows.  Slightly cleanup log output on Windows given this
restriction.

Backpatch to 9.2.
2012-09-05 00:01:13 -04:00
Andrew Dunstan
2042185baf Fix transcription error. 2012-09-04 09:39:49 -04:00
Andrew Dunstan
0829c7087e Fix command echoing in pg_upgade's analyze script for Windows. 2012-09-04 05:49:22 -04:00
Andrew Dunstan
2f0c7d5854 Indent fix_path_separator() header properly. 2012-09-03 22:59:19 -04:00
Andrew Dunstan
e442b0f0c6 Allow pg_upgrade "make check" to run on Windows/MSys.
Backpatch to 9.2.
2012-09-03 22:32:17 -04:00
Bruce Momjian
a80b8037cf In pg_upgrade, pull the port number from postmaster.pid, like we do for
socket location.  Also, prevent putting the socket in the current
directory for pre-9.1 servers in live check and non-live check mode,
because pre-9.1 pg_ctl -w can't handle it.

Backpatch to 9.2.
2012-09-03 22:15:09 -04:00
Andrew Dunstan
504aeea692 Use correct path separator for Windows builtin commands.
pg_upgrade produces a platform-specific script to remove the old
directory, but on Windows it has not been making sure that the
paths it writes as arguments for rmdir and del use the backslash
path separator, which will cause these scripts to fail.

The fix is backpatched to Release 9.0.
2012-09-03 18:06:47 -04:00
Andrew Dunstan
6259678f8f Fix bugs in exec.c that prevented pg_upgrade working in Windows.
Backpatch to 9.2 - code before that is quite different and should
not have these defects.
2012-09-03 15:31:26 -04:00
Tom Lane
f763b77193 Fix pg_upgrade to cope with non-default unix_socket_directory scenarios.
When starting either an old or new postmaster, force it to place its Unix
socket in the current directory.  This makes it even harder for accidental
connections to occur during pg_upgrade, and also works around some
scenarios where the default socket location isn't usable.  (For example,
if the default location is something other than "/tmp", it might not exist
during "make check".)

When checking an already-running old postmaster, find out its actual socket
directory location from postmaster.pid, if possible.  This dodges problems
with an old postmaster having a configured location different from the
default built into pg_upgrade's libpq.  We can't find that out if the old
postmaster is pre-9.1, so also document how to cope with such scenarios
manually.

In support of this, centralize handling of the connection-related command
line options passed to pg_upgrade's subsidiary programs, such as pg_dump.
This should make future changes easier.

Bruce Momjian and Tom Lane
2012-09-03 13:52:40 -04:00
Alvaro Herrera
088c065ce8 pg_upgrade: Fix exec_prog API to be less flaky
The previous signature made it very easy to pass something other than
the printf-format specifier in the corresponding position, without any
warning from the compiler.

While at it, move some of the escaping, redirecting and quoting
responsibilities from the callers into exec_prog() itself.  This makes
the callsites cleaner.
2012-08-27 14:29:14 -04:00
Alvaro Herrera
34c02044ed Fix thinko in comment
It was confusing symlinks with hard links.
2012-08-27 14:29:14 -04:00
Alvaro Herrera
ab577e63fa Remove analyze_new_cluster.sh on make clean, too 2012-08-27 14:29:14 -04:00
Peter Eisentraut
7afa8bed65 pg_upgrade: Run the created scripts in the test suite
Just to check that they actually work.
2012-08-23 02:29:21 -04:00
Bruce Momjian
85642ec00b Prevent pg_upgrade from crashing if it can't write to the current
directory.

Backpatch to 9.2.
2012-08-10 17:14:48 -04:00
Bruce Momjian
fbcfa90bb8 Fix pg_upgrade file share violation on Windows created by the commit
4741e9afb9.  This was done by adding an
optional second log file parameter to exec_prog(), and closing and
reopening the log file between system() calls.

Backpatch to 9.2.
2012-08-07 13:10:44 -04:00
Bruce Momjian
e8969c4733 In pg_upgrade, use pg_log() instead of prep_status() for
newline-terminated messages, per suggestion from Tom.

Backpatch to 9.2.
2012-08-03 12:43:37 -04:00
Bruce Momjian
4da8fc05f0 Simplify pg_upgrade's handling when returning directory listings.
Backpatch to 9.2.
2012-07-26 06:22:22 -04:00
Tom Lane
faf26bf117 Get rid of useless global variable in pg_upgrade.
Since the scandir() emulation was taken out of pg_upgrade, there's
no longer any need for scandir_file_pattern to exist as a global
variable.  Replace it with a local in the one remaining function
that was making use of it.
2012-07-18 01:23:12 -04:00
Tom Lane
3d6ec663bb Improve pg_upgrade's load_directory() function.
Error out on out-of-memory, rather than returning -1, which the sole
existing caller wasn't checking for anyway.  There doesn't seem to be
any use-case for making the caller check for failure here.

Detect failure return from readdir().

Use a less platform-dependent method of calculating the entrysize.
It's possible, but not yet confirmed, that this explains bug #6733,
in which Mike Wilson reports a pg_upgrade crash that did not occur
in 9.1.  (Note that load_directory is effectively new code in 9.2,
at least on platforms that have scandir().)

Fix up comments, avoid uselessly using two counters, reduce the number
of realloc calls to something sane.
2012-07-18 01:13:20 -04:00
Bruce Momjian
c742d1dbe7 Update pg_upgrade comments for recent configpath fix. 2012-07-06 09:39:22 -04:00
Bruce Momjian
2eeb5eb23f Fix PGDATAOLD and PGDATANEW to properly set pgconfig location, per
report from Tom.

Backpatch to 9.2.
2012-07-05 23:36:43 -04:00
Alvaro Herrera
666d494d19 pg_upgrade: abstract out copying of files from old cluster to new
Currently only pg_clog is copied, but some other directories could need
the same treatment as well, so create a subroutine to do it.

Extracted from my (somewhat larger) FOR KEY SHARE patch.
2012-07-05 11:38:42 -04:00
Alvaro Herrera
4741e9afb9 Make the pg_upgrade log files contain actual commands
Now the log file not only contains the output from commands executed by
system(), but also what command it was in the first place.  This
arrangement makes debugging a lot simpler.
2012-06-29 11:39:11 -04:00
Alvaro Herrera
9e26326ad6 pg_upgrade: fix off-by-one mistake in snprintf
snprintf counts trailing NUL towards the char limit.  Failing to account
for that was causing an invalid value to be passed to pg_resetxlog -l,
aborting the upgrade process.
2012-06-28 23:37:27 -04:00
Heikki Linnakangas
038f3a0509 Fix pg_upgrade, broken by the xlogid/segno -> 64-bit int refactoring.
The xlogid + segno representation of a particular WAL segment doesn't make
much sense in pg_resetxlog anymore, now that we don't use that anywhere
else. Use the WAL filename instead, since that's a convenient way to name a
particular WAL segment.

I did this partially for pg_resetxlog in the original xlogid/segno -> uint64
patch, but I neglected pg_upgrade and the docs. This should now be more
complete.
2012-06-26 07:49:02 +03:00
Peter Eisentraut
bb7520cc26 Make documentation of --help and --version options more consistent
Before, some places didn't document the short options (-? and -V),
some documented both, some documented nothing, and they were listed in
various orders.  Now this is hopefully more consistent and complete.
2012-06-18 02:46:59 +03:00
Bruce Momjian
877b55c619 Improve pg_upgrade wording for pg_ctl start failure; could be
connection failure.

Backpatch to 9.2.

Per report from Evan D. Hoffman
2012-06-15 19:57:01 -04:00
Bruce Momjian
b9212e379c In pg_upgrade, verify that the install user has the same oid on both
clusters, and make sure the new cluster has no additional users.

Backpatch to 9.1.
2012-06-13 12:19:18 -04:00
Bruce Momjian
927d61eeff Run pgindent on 9.2 source tree in preparation for first 9.3
commit-fest.
2012-06-10 15:20:04 -04:00
Bruce Momjian
8fcbfea788 In pg_upgrade, report pre-PG 8.1 plpython helper functions left in the
public schema that no longer point to valid shared object libraries, and
suggest a solution.
2012-06-01 11:40:04 -04:00
Bruce Momjian
4498a3407a Improve pg_upgrade C comment. 2012-05-27 06:45:29 -04:00
Bruce Momjian
20a3830b81 Add C comment explaining why we can't exclude checking functions in the
pg_catalog schema, even though they are not explicitly dumped (they are
implicitly dumped, e.g. create language plperl).
2012-05-27 06:35:10 -04:00
Bruce Momjian
d4696fa68f Add pg_update C comment about problems with plpython_call_handler(). 2012-05-27 06:29:45 -04:00
Bruce Momjian
45ca31d6a7 Have pg_upgrade only use one extra log file for Win32, not two. 2012-05-25 09:10:07 -04:00
Bruce Momjian
d226e236c6 On Windows, have pg_upgrade use different two files to log pg_ctl
start/stop output, to fix file share error reported by Edmund Horner
2012-05-24 20:30:39 -04:00
Bruce Momjian
476291bef0 Adjust pg_upgrade to output a separate log file for pg_ctl output on
Windows, to avoid opening a file by multiple processes.
2012-05-23 20:19:34 -04:00
Peter Eisentraut
c8e086795a Remove whitespace from end of lines
pgindent and perltidy should clean up the rest.
2012-05-15 22:19:41 +03:00