Commit Graph

2058 Commits

Author SHA1 Message Date
Robert Haas a64bdf5f65 Allow sepgsql regression tests to be run from a user homedir.
KaiGai Kohei, with some changes by me.
2011-08-19 11:53:14 -04:00
Bruce Momjian 00a7c9014a In pg_upgrade, don't copy visibility map files from clusters that did not
have crash-safe visibility maps to clusters that expect crash-safety.

Request from Robert Haas.
2011-08-19 11:20:30 -04:00
Robert Haas ffaf9eca4c Typo fix. 2011-08-18 13:10:43 -04:00
Bruce Momjian 2411fbdac4 In pg_upgrade, avoid dumping orphaned temporary tables. This makes the
pg_upgrade schema matching pattern match pg_dump/pg_dumpall.

Fix for 9.0, 9.1, and 9.2.
2011-08-15 22:40:14 -04:00
Peter Eisentraut 85612039b9 Message style improvements 2011-08-14 21:03:08 +03:00
Robert Haas b69f2e3640 Teach vacuumlo to limit number of removals, via new -l option.
Also, handle failure better: don't just blindly keep trying to delete
stuff after the transaction has already failed.

Tim Lewis, reviewed by Josh Kupershmidt, with further hacking by me.
2011-08-08 09:16:45 -04:00
Robert Haas 68cbb9f4e7 Modestly improve pgbench's checking for invalid ranges.
The old check against MAX_RANDOM_VALUE is clearly irrelevant since
getrand() no longer calls random().  Instead, check whether min and max
are close enough together to avoid an overflow inside getrand(), as
suggested by Tom Lane.  This is still somewhat silly, because we're
using atoi(), which doesn't check for overflow anyway and (at least on
my system) will cheerfully return 0 when given "4294967296".  But that's
a problem for another commit.
2011-08-05 12:53:03 -04:00
Robert Haas 4af43ee3f1 Make pgbench use erand48() rather than random().
glibc renders random() thread-safe by wrapping a futex lock around it;
testing reveals that this limits the performance of pgbench on machines
with many CPU cores.  Rather than switching to random_r(), which is
only available on GNU systems and crashes unless you use undocumented
alchemy to initialize the random state properly, switch to our built-in
implementation of erand48(), which is both thread-safe and concurrent.

Since the list of reasons not to use the operating system's erand48()
is getting rather long, rename ours to pg_erand48() (and similarly
for our implementations of lrand48() and srand48()) and just always
use those.  We were already doing this on Cygwin anyway, and the
glibc implementation is not quite thread-safe, so pgbench wouldn't
be able to use that either.

Per discussion with Tom Lane.
2011-08-03 16:26:40 -04:00
Bruce Momjian a31dc392d6 Fix pg_update to properly test for the data directory's existence on
Win32.

Backpatch to 9.1.
2011-07-30 01:50:55 -04:00
Robert Haas 60fb25a3f5 Move new pgbench options to correct section of --help output. 2011-07-29 16:43:57 -04:00
Robert Haas 8cca49d8a0 Add some environment checks prior to sepgsql regression testing.
This probably needs more work, but it's a start.

KaiGai Kohei
2011-07-25 10:51:02 -04:00
Robert Haas 7c26395661 Add new pgbench options, --tablespace and --index-tablespace.
Per a request from Greg Smith.
2011-07-25 09:16:14 -04:00
Robert Haas 2d6fee09eb Add new pgbench switch, --unlogged-tables.
This entails adjusting pgbench to use getopt_long() rather
than getopt().
2011-07-25 06:55:12 -04:00
Bruce Momjian 081a5518c0 In pg_upgrade on Windows, check if the directory is writable by actually
creating and removing a file because access() doesn't work on that
platform.

Backpatch to 9.1 where this check was added.
2011-07-24 01:43:57 -04:00
Bruce Momjian 43aa40e155 In pg_upgrade, add C comment about why we don't try to do shared file
writes for logging.
2011-07-21 17:13:17 -04:00
Bruce Momjian 17a16eeb7c In pg_upgrade, fix the -l/log option to work on Windows.
Also, double-quote the log file name in all places, to allow (on all
platforms) log file names with spaces.

Back patch to 9.0 and 9.1.
2011-07-20 18:31:03 -04:00
Bruce Momjian 6b43fddee4 In pg_upgrade, use pg_strudup(), for consistency. 2011-07-20 16:37:17 -04:00
Tom Lane cacd42d62c Rewrite libxml error handling to be more robust.
libxml reports some errors (like invalid xmlns attributes) via the error
handler hook, but still returns a success indicator to the library caller.
This causes us to miss some errors that are important to report.  Since the
"generic" error handler hook doesn't know whether the message it's getting
is for an error, warning, or notice, stop using that and instead start
using the "structured" error handler hook, which gets enough information
to be useful.

While at it, arrange to save and restore the error handler hook setting in
each libxml-using function, rather than assuming we can set and forget the
hook.  This should improve the odds of working nicely with third-party
libraries that also use libxml.

In passing, volatile-ize some local variables that get modified within
PG_TRY blocks.  I noticed this while testing with an older gcc version
than I'd previously tried to compile xml.c with.

Florian Pflug and Tom Lane, with extensive review/testing by Noah Misch
2011-07-20 13:03:49 -04:00
Peter Eisentraut bf6be7af25 Put inline declaration before return type
gcc -Wextra complains that the other way around is obsolescent, and
this was the only place where it was written in this order.
2011-07-19 07:57:38 +03:00
Tom Lane 1af37ec96d Replace errdetail("%s", ...) with errdetail_internal("%s", ...).
There may be some other places where we should use errdetail_internal,
but they'll have to be evaluated case-by-case.  This commit just hits
a bunch of places where invoking gettext is obviously a waste of cycles.
2011-07-16 14:22:18 -04:00
Peter Eisentraut 912bc4f038 Make pg_upgrade output more consistent with project style
Add errno-based output to error messages where appropriate, reformat
blocks to about 72 characters per line, use spaces instead of tabs for
indentation, and other style adjustments.
2011-07-12 07:13:51 +03:00
Peter Eisentraut d7fb49314d Fix use of unportable %m format 2011-07-07 22:48:59 +03:00
Tom Lane 6e6cc5910b Make the file_fdw validator check that a filename option has been provided.
This was already a runtime failure condition, but it's better to check
at validation time if possible.  Lightly modified version of a patch
by Shigeru Hanada.
2011-07-05 18:46:03 -04:00
Peter Eisentraut 76dfcb942f Postgres -> PostgreSQL in error message 2011-07-05 22:41:14 +03:00
Alvaro Herrera b93f5a5673 Move Trigger and TriggerDesc structs out of rel.h into a new reltrigger.h
This lets us stop including rel.h into execnodes.h, which is a widely
used header.
2011-07-04 14:35:58 -04:00
Tom Lane acb9198b96 Make distprep and *clean build targets recurse into all subdirectories.
Certain subdirectories do not get built if corresponding options are not
selected at configure time.  However, "make distprep" should visit such
directories anyway, so that constructing derived files to be included in
the tarball happens without requiring all configure options to be given
in the tarball build script.  Likewise, it's better if cleanup actions
unconditionally visit all directories (for example, this ensures proper
cleanup if someone has done a manual make in such a subdirectory).

To handle this, set up a convention that subdirectories that are
conditionally included in SUBDIRS should be added to ALWAYS_SUBDIRS
instead when they are excluded.

Back-patch to 9.1, so that plpython's spiexceptions.h will get provided
in 9.1 tarballs.  There don't appear to be any instances where distprep
actions got missed in previous releases, and anyway this fix requires
gmake 3.80 so we don't want to apply it before 9.1.
2011-07-03 13:55:12 -04:00
Bruce Momjian a88f4496b7 Change pg_upgrade to use port 50432 by default to avoid unintended
client connections during the upgrade.  Also rename data/bin/port
environment variables to being with 'PG'.  Also no longer honor PGPORT.
2011-07-01 18:17:12 -04:00
Alvaro Herrera 6f3efa76b0 Remove rel.h from objectaddress.h; only relcache.h is necessary.
Add rel.h to some files that now need it.
2011-06-28 17:08:29 -04:00
Joe Conway 8af3596d6b Async dblink functions require a named connection, and therefore should
use DBLINK_GET_NAMED_CONN rather than DBLINK_GET_CONN.
Problem found by Peter Eisentraut and patch by Fujii Masao.
2011-06-25 15:58:07 -07:00
Bruce Momjian 0b44818ead In pg_upgrade, check that the binary and data directories are the same
major version.

Backpatch to 9.1.

Dan McGee
2011-06-22 20:48:34 -04:00
Bruce Momjian 3b3c2cf180 In pg_upgrade, fix odd function parameter wrapping. 2011-06-22 19:30:46 -04:00
Bruce Momjian effbe6ecb4 Rename pg_upgrade directory validation function, for clarity. 2011-06-22 17:50:40 -04:00
Bruce Momjian 559b114dd4 Adjust pg_upgrade check for pg_upgrade_support to happen after the
binary directory has been validated.

Backpatch to 9.1.

Dan McGee
2011-06-22 17:47:23 -04:00
Bruce Momjian b06ad7def8 Fix pg_upgrade status message capitalization mistake.
Backpatch to 9.1 and 9.0.

Dan McGee
2011-06-22 14:49:54 -04:00
Tom Lane ca59dfa6f7 Apply upstream fix for blowfish signed-character bug (CVE-2011-2483).
A password containing a character with the high bit set was misprocessed
on machines where char is signed (which is most).  This could cause the
preceding one to three characters to fail to affect the hashed result,
thus weakening the password.  The result was also unportable, and failed
to match some other blowfish implementations such as OpenBSD's.

Since the fix changes the output for such passwords, upstream chose
to provide a compatibility hack: password salts beginning with $2x$
(instead of the usual $2a$ for blowfish) are intentionally processed
"wrong" to give the same hash as before.  Stored password hashes can
thus be modified if necessary to still match, though it'd be better
to change any affected passwords.

In passing, sync a couple other upstream changes that marginally improve
performance and/or tighten error checking.

Back-patch to all supported branches.  Since this issue is already
public, no reason not to commit the fix ASAP.
2011-06-21 14:41:05 -04:00
Bruce Momjian e3df3572f6 In pg_upgrade, clean up code layout in validateDirectoryOption(). 2011-06-15 17:23:02 -04:00
Bruce Momjian 07d17a73ec In pg_upgrade, check there are no prepared transactions. 2011-06-14 14:53:35 -04:00
Bruce Momjian 6560407c7d Pgindent run before 9.1 beta2. 2011-06-09 14:32:50 -04:00
Tom Lane 3ebc061c18 Make citext's equality and hashing functions collation-insensitive.
This is an ugly hack to get around the fact that significant parts of the
core backend assume they don't need to worry about passing collation to
equality and hashing functions.  That's true for the core string datatypes,
but citext should ideally have equality behavior that depends on the
specified collation's LC_CTYPE.  However, there's no chance of fixing the
core before 9.2, so we'll have to live with this compromise arrangement for
now.  Per bug #6053 from Regina Obe.

The code changes in this commit should be reverted in full once the core
code is up to speed, but be careful about reverting the docs changes:
I fixed a number of obsolete statements while at it.
2011-06-08 15:25:02 -04:00
Peter Eisentraut ba4cacf075 Recode non-ASCII characters in source to UTF-8
For consistency, have all non-ASCII characters from contributors'
names in the source be in UTF-8.  But remove some other more
gratuitous uses of non-ASCII characters.
2011-05-31 23:11:46 +03:00
Peter Eisentraut 4d7d6386d7 Remove literal tabs from message strings 2011-05-28 01:01:42 +03:00
Bruce Momjian 11c08c3fd7 In pg_upgrade, do case-insensitive checks of locale, encoding, and ctype
because these are often inconsistently capitalized.
2011-05-24 15:59:34 -04:00
Heikki Linnakangas ea896da394 Replace strdup() with pstrdup(), to avoid leaking memory.
It's been like this since the seg module was introduced, so backpatch to
8.2 which is the oldest supported version.
2011-05-18 22:49:22 -04:00
Bruce Momjian 1f35944607 In pg_upgrade, clean up handling of invalid directory specification by
checking the stat() errno value more strictly.
2011-05-18 22:22:40 -04:00
Bruce Momjian 772a5f1e5b Improve pg_upgrade error reporting if the bin or data directories do not
exist or are not directories.
2011-05-18 18:37:25 -04:00
Peter Eisentraut 0ee391b77a /contrib/foo -> contrib/foo
Since contrib is a relative directory specification, a leading slash
is inappropriate.
2011-05-19 00:30:31 +03:00
Bruce Momjian 92ff915018 Improve pg_upgrade X_OK comment. 2011-05-18 12:25:34 -04:00
Bruce Momjian 6fbf4e0e7c Fix pg_upgrade build problem on Windows when using X_OK access
permission check on the current directory.
2011-05-18 12:13:37 -04:00
Bruce Momjian e728701fb4 Update pg_upgrade directory check error message. 2011-05-16 12:32:36 -04:00
Bruce Momjian bda27e502f Add pg_upgrade check to make sure the user has full access permission in
the current directory;  if not, throw an error.
2011-05-16 11:01:29 -04:00
Bruce Momjian 6c19bd96bc Allow pg_upgrade to honor libpq environment variables. Add 'local'
checks for PGHOST and PGHOSTADDR.
2011-05-16 10:48:40 -04:00
Alvaro Herrera c6eb5740b3 Fix assorted typos 2011-05-12 08:52:56 -04:00
Peter Eisentraut 94a8fde403 Put options help in alphabetical order 2011-05-10 21:48:07 +03:00
Peter Eisentraut 00fad9f6fe Format pg_upgrade --version in line with conventions 2011-05-10 21:40:29 +03:00
Peter Eisentraut 4c78846cb3 Add bug report line to pg_upgrade --help output 2011-05-10 21:37:55 +03:00
Peter Eisentraut 3a8dcd9a1f Put pg_test_fsync --help and --version output in line with conventions
Foremost, it should go to stdout.
2011-05-10 21:34:26 +03:00
Bruce Momjian 5059cf6ebf In pg_upgrade, remove suggestion of setting pg_hba.conf to 'trust', now
that we report the libpq connection failure string.  Per suggestion from
Robert Haas.
2011-05-10 10:42:43 -04:00
Bruce Momjian 78318d63d7 In pg_upgrade, add status message about superuser check. 2011-05-09 08:55:36 -04:00
Bruce Momjian e6a7402842 Add C comment why client encoding can be set in pg_upgrade. 2011-05-07 22:30:35 -04:00
Bruce Momjian 1609ca5adb In pg_upgrade, report non-super-user username in error message. 2011-05-07 12:17:21 -04:00
Bruce Momjian 81301b8578 Check that the pg_upgrade user specified is a super-user.
Also report the error message when the post-pg_ctl connection fails.

Per private bug report from EnterpriseDB.
2011-05-07 08:55:45 -04:00
Bruce Momjian 5c5f83507c Adjust pg_upgrade FATAL error messages to have consistent newlines.
Also adjust some error message capitalization for consistency.
2011-05-06 21:47:42 -04:00
Peter Eisentraut b24181b26f Improve pg_archivecleanup and pg_standby --help output
For consistency with other tools, put the options before further usage
information.

In pg_standby, remove the supposedly deprecated -l option from the
given example invocation.
2011-05-05 23:19:13 +03:00
Peter Eisentraut d6d823c8b0 Improve formatting of pg_upgrade --help output 2011-05-05 23:19:13 +03:00
Bruce Momjian 6c4d2bd914 Now that pg_upgrade uses -w in pg_ctl, remove loop that retried testing
the connection;  also restructure the libpq connection code.

This patch also removes the unused variable postmasterPID and fixes a
libpq structure leak that was in the testing loop.
2011-04-26 10:15:18 -04:00
Bruce Momjian 44091442db In pg_upgrade, avoid one start/stop of the postmaster; use the -w
(wait) flag for pg_ctl start/stop;  remove the unused "quiet" flag in
the functions for starting/stopping the postmaster.
2011-04-25 20:18:23 -04:00
Peter Eisentraut f8ebe3bcc5 Support "make check" in contrib
Added a new option --extra-install to pg_regress to arrange installing
the respective contrib directory into the temporary installation.
This is currently not yet supported for Windows MSVC builds.

Updated the .gitignore files for contrib modules to ignore the
leftovers of a temp-install check run.

Changed the exit status of "make check" in a pgxs build (which still
does nothing) to 0 from 1.

Added "make check" in contrib to top-level "make check-world".
2011-04-25 22:27:11 +03:00
Bruce Momjian 76dd09bbec Add postmaster/postgres undocumented -b option for binary upgrades.
This option turns off autovacuum, prevents non-super-user connections,
and enables oid setting hooks in the backend.  The code continues to use
the old autoavacuum disable settings for servers with earlier catalog
versions.

This includes a catalog version bump to identify servers that support
the -b option.
2011-04-25 12:00:21 -04:00
Bruce Momjian f6322b3191 In pg_upgrade, only compile copy_file() on non-Win32 systems.
Per report from Andrew Dunstan.
2011-04-23 20:28:29 -04:00
Tom Lane bb85030630 Fix contrib/btree_gist to handle collations properly.
Make use of the collation attached to the index column, instead of
hard-wiring DEFAULT_COLLATION_OID.  (Note: in theory this could require
reindexing btree_gist indexes on textual columns, but I rather doubt anyone
has one with a non-default declared collation as yet.)
2011-04-22 20:19:58 -04:00
Tom Lane 474ff212e5 De-kludge contrib/btree_gin for collations.
Using DEFAULT_COLLATION_OID in the comparePartial functions was not only
a lame hack, but outright wrong, because the compare functions for
collation-aware types were already responding to the declared index
collation.  So comparePartial would have the wrong expectation about
the index's sort order, possibly leading to missing matches for prefix
searches.
2011-04-22 18:22:38 -04:00
Bruce Momjian 0262251c33 Pg_upgrade C comment addition.
Document why we do the missing new database check during the check
phase.
2011-04-20 05:45:31 -04:00
Bruce Momjian 7228d02989 Throw error for mismatched pg_upgrade clusters
If someone removes the 'postgres' database from the old cluster and the
new cluster has a 'postgres' database, the number of databases will not
match.  We actually could upgrade such a setup, but it would violate the
1-to-1 mapping of database counts, so we throw an error instead.

Previously they got an error during the upgrade, and not at the check
stage; PG 9.0.4 does the same.
2011-04-19 21:00:29 -04:00
Bruce Momjian 0341944706 Add C comment
Add C comment about why we throw an error if the pg_upgrade old/new
database counts don't match.
2011-04-19 19:15:13 -04:00
Peter Eisentraut 385942f46c Refix the unaccent regression test on MSVC properly
... for some value of "properly".  Instead of overriding REGRESS_OPTS,
set the variables ENCODING and NO_LOCALE, which is more expressive and
allows overriding by the user.  Fix vcregress.pl to handle that.
2011-04-19 22:52:52 +03:00
Peter Eisentraut 001cbb145f Avoid unused variable warnings for certain configurations 2011-04-19 20:01:51 +03:00
Andrew Dunstan b7b86924c6 Attempt to remedy buildfarm breakage caused by commit f536d4194. 2011-04-18 09:27:30 -04:00
Peter Eisentraut f536d41942 Rename pg_regress option --multibyte to --encoding
Also refactor things a little bit so that the same methods for setting
test locale and encoding can be used everywhere.
2011-04-15 08:42:05 +03:00
Tom Lane d64713df7e Pass collations to functions in FunctionCallInfoData, not FmgrInfo.
Since collation is effectively an argument, not a property of the function,
FmgrInfo is really the wrong place for it; and this becomes critical in
cases where a cached FmgrInfo is used for varying purposes that might need
different collation settings.  Fix by passing it in FunctionCallInfoData
instead.  In particular this allows a clean fix for bug #5970 (record_cmp
not working).  This requires touching a bit more code than the original
method, but nobody ever thought that collations would not be an invasive
patch...
2011-04-12 19:19:24 -04:00
Peter Eisentraut 5caa3479c2 Clean up most -Wunused-but-set-variable warnings from gcc 4.6
This warning is new in gcc 4.6 and part of -Wall.  This patch cleans
up most of the noise, but there are some still warnings that are
trickier to remove.
2011-04-11 22:28:45 +03:00
Andrew Dunstan c1d82a936f Remove CRLF line endings in new cube results file. 2011-04-10 18:26:53 -04:00
Andrew Dunstan 210f95f1cd Adjust regression tests on cube and ECPG for MinGW 64 bit compiler.
Backport to 9.0, we're not supporting this compiler on earlier releases.
2011-04-10 16:57:42 -04:00
Bruce Momjian bf50caf105 pgindent run before PG 9.1 beta 1. 2011-04-10 11:42:00 -04:00
Peter Eisentraut 1eb2231fc4 Allow pg_upgrade with PGCLIENTENCODING set
This used to work, but since PGCLIENTENCODING is now a connection
option variable, pg_upgrade would prevent it.
2011-04-07 19:24:47 +03:00
Bruce Momjian e69d32158c Simplify structure of query used to gather database object information
in pg_upgrade.
2011-04-07 06:23:12 -04:00
Tom Lane 2594cf0e8c Revise the API for GUC variable assign hooks.
The previous functions of assign hooks are now split between check hooks
and assign hooks, where the former can fail but the latter shouldn't.
Aside from being conceptually clearer, this approach exposes the
"canonicalized" form of the variable value to guc.c without having to do
an actual assignment.  And that lets us fix the problem recently noted by
Bernd Helmle that the auto-tune patch for wal_buffers resulted in bogus
log messages about "parameter "wal_buffers" cannot be changed without
restarting the server".  There may be some speed advantage too, because
this design lets hook functions avoid re-parsing variable values when
restoring a previous state after a rollback (they can store a pre-parsed
representation of the value instead).  This patch also resolves a
longstanding annoyance about custom error messages from variable assign
hooks: they should modify, not appear separately from, guc.c's own message
about "invalid parameter value".
2011-04-07 00:12:02 -04:00
Peter Eisentraut c75163842c Replace the confusing exit_nicely() by an atexit/on_exit hook 2011-04-06 23:00:44 +03:00
Robert Haas 595a441ae9 Add missing check on invocation of trusted procedures.
KaiGai Kohei
2011-04-04 13:25:42 -04:00
Bruce Momjian da3418cea9 Mention pg_upgrade sets autovacuum_freeze_max_age to maximum. 2011-03-30 17:45:54 -04:00
Bruce Momjian d609b08ead Expand comment on how pg_upgrade is turning off autovacuum. 2011-03-30 17:37:00 -04:00
Bruce Momjian d67b0bf471 In pg_upgrade, add C comment about how autovacuum is disabled. 2011-03-29 11:11:45 -04:00
Alvaro Herrera e5948e3504 Add missing #include 2011-03-28 10:37:29 -03:00
Bruce Momjian 898a14e1a0 Remove unused copy_dir() function from pg_upgrade. 2011-03-15 20:52:35 -04:00
Bruce Momjian 303b7fcd10 Modify pg_test_fsync to match the behavior of git head in regards to
O_DIRECT behavior.
2011-03-10 20:25:41 -05:00
Itagaki Takahiro 2d8de0a50b Cleanup copyright years and file names in the header comments of some files. 2011-03-10 15:05:33 +09:00
Bruce Momjian d367d41d66 Fix file descriptor leaks in pg_upgrade in failure code paths. 2011-03-08 21:36:17 -05:00
Bruce Momjian 05d93c38a7 Tighten pg_upgrade check for pre-8.4 toast table name matching. 2011-03-06 21:57:37 -05:00
Tom Lane dfe18f18d2 Fix a couple more missing "static" markers. 2011-03-06 20:14:01 -05:00
Bruce Momjian a54ba23c08 Improve pg_upgrade relation name check logic for pre-8.4 servers. 2011-03-06 06:34:58 -05:00
Bruce Momjian 8f87dcd863 Update new pg_upgrade comment about pre-8.4 TOAST tables. 2011-03-05 22:09:35 -05:00