Commit Graph

32041 Commits

Author SHA1 Message Date
Tom Lane
c1c4f93056 Don't use "cp -i" in the example WAL archive_command.
This is a dangerous example to provide because on machines with GNU cp,
it will silently do the wrong thing and risk archive corruption.  Worse,
during the 9.0 cycle somebody "improved" the discussion by removing the
warning that used to be there about that, and instead leaving the
impression that the command would work as desired on most Unixen.
It doesn't.  Try to rectify the damage by providing an example that is safe
most everywhere, and then noting that you can try cp -i if you want but
you'd better test that.

In back-patching this to all supported branches, I also added an example
command for Windows, which wasn't provided before 9.0.
2011-06-17 19:13:08 -04:00
Tom Lane
a95cfd085d Obtain table locks as soon as practical during pg_dump.
For some reason, when we (I) added table lock acquisition to pg_dump,
we didn't think about making it happen as soon as possible after the
start of the transaction.  What with subsequent additions, there was
actually quite a lot going on before we got around to that; which sort
of defeats the purpose.  Rearrange the order of calls in dumpSchema()
to close the risk window as much as we easily can.  Back-patch to all
supported branches.
2011-06-17 18:19:09 -04:00
Robert Haas
925079063f Add overflow checks to int4 and int8 versions of generate_series().
The previous code went into an infinite loop after overflow.  In fact,
an overflow is not really an error; it just means that the current
value is the last one we need to return.  So, just arrange to stop
immediately when overflow is detected.

Back-patch all the way.
2011-06-17 14:32:14 -04:00
Robert Haas
ae31b59512 Fix crash in CREATE UNLOGGED TABLE.
The code that created the init fork neglected to make sure that the
relation was open at the smgr level before attempting to invoke smgr.
This didn't happen every time; only when the relcache entry was rebuilt
along the way.

Per report from Garick Hamlin.
2011-06-17 13:37:01 -04:00
Robert Haas
a3903f1bf8 Fix typo.
Per Josh Kupershmidt and Tom Lane.
2011-06-17 00:54:36 -04:00
Heikki Linnakangas
6b339a1ade Update README-SSI. Add a section to describe the "dangerous structure" that
SSI is based on, as well as the optimizations about relative commit times
and read-only transactions. Plus a bunch of other misc fixes and
improvements.

Dan Ports
2011-06-16 21:20:47 +03:00
Alvaro Herrera
bd8137ee11 Fix typo 2011-06-16 12:13:07 -04:00
Tom Lane
f90b185a8a Remove another no-longer-needed inclusion of predicate.h. 2011-06-16 11:43:43 -04:00
Heikki Linnakangas
9131bc772b pgindent run of recent SSI changes. Also, remove an unnecessary #include.
Kevin Grittner
2011-06-16 16:17:16 +03:00
Simon Riggs
9340e643e4 Respect Hot Standby controls while recycling btree index pages.
Btree pages were recycled after VACUUM deletes all records on a
page and then a subsequent VACUUM occurs after the RecentXmin
horizon is reached. Using RecentXmin meant that we did not respond
correctly to the user controls provide to avoid Hot Standby
conflicts and so spurious conflicts could be generated in some
workload combinations. We now reuse pages only when we reach
RecentGlobalXmin, which can be much later in the presence of long
running queries and is also controlled by vacuum_defer_cleanup_age
and hot_standby_feedback.

Noah Misch and Simon Riggs
2011-06-16 10:17:59 +01:00
Tom Lane
a969a2f030 Use single quotes in preference to double quotes for protecting pathnames.
Per recommendation from Peter.  Neither choice is bulletproof, but this
is the existing style and it does help prevent unexpected environment
variable substitution.
2011-06-15 21:45:50 -04:00
Tom Lane
d988d92bf0 Rework parsing of ConstraintAttributeSpec to improve NOT VALID handling.
The initial commit of the ALTER TABLE ADD FOREIGN KEY NOT VALID feature
failed to support labeling such constraints as deferrable.  The best fix
for this seems to be to fold NOT VALID into ConstraintAttributeSpec.
That's a bit more general than the documented syntax, but it allows
better-targeted syntax error messages.

In addition, do some mostly-but-not-entirely-cosmetic code review for
the whole NOT VALID patch.
2011-06-15 19:06:36 -04:00
Tom Lane
3cfecae3a3 Fix failure to account for memory used by tuplestore_putvalues().
This oversight could result in a tuplestore using much more than the
intended amount of memory.  It would only happen in a code path that loaded
a tuplestore via tuplestore_putvalues(), and many of those won't emit huge
amounts of data; but cases such as holdable cursors and plpgsql's RETURN
NEXT command could have the problem.  The fix ensures that the tuplestore
will switch to write-to-disk mode when it overruns work_mem.

The potential overrun was finite, because we would still count the space
used by the tuple pointer array, so the tuplestore code would eventually
flip into write-to-disk mode anyway.  When storing wide tuples we would
go far past the expected work_mem usage before that happened; but this
may account for the lack of prior reports.

Back-patch to 8.4, where tuplestore_putvalues was introduced.

Per bug #6061 from Yann Delorme.
2011-06-15 14:05:39 -04:00
Tom Lane
dc014e0446 Fix oversights in pg_basebackup's -z (compression) option.
The short-form -z switch didn't work, for lack of telling getopt_long
about it; and even if specified long-form, it failed to do anything,
because the various tests elsewhere in the file would take
Z_DEFAULT_COMPRESSION (which is -1) as meaning "don't compress".

Per bug #6060 from Shigehiro Honda, though I editorialized on his patch
a bit.
2011-06-15 13:15:36 -04:00
Heikki Linnakangas
2b44a2d62d The rolled-back flag on serializable xacts was pointless and redundant with
the marked-for-death flag. It was only set for a fleeting moment while a
transaction was being cleaned up at rollback. All the places that checked
for the rolled-back flag should also check the marked-for-death flag, as
both flags mean that the transaction will roll back. I also renamed the
marked-for-death into "doomed", which is a lot shorter name.
2011-06-15 13:40:24 +03:00
Heikki Linnakangas
ff4e078773 Make non-MVCC snapshots exempt from predicate locking. Scans with non-MVCC
snapshots, like in REINDEX, are basically non-transactional operations. The
DDL operation itself might participate in SSI, but there's separate
functions for that.

Kevin Grittner and Dan Ports, with some changes by me.
2011-06-15 12:12:56 +03:00
Peter Eisentraut
80721b5182 Allow psql \d tab completion to complete all relation kinds
This matches what \d actually accepts.
2011-06-14 23:51:11 +03:00
Peter Eisentraut
b48f888b64 Document that psql's \d also works with composite types
This has always been true, it was just never documented.
2011-06-14 23:51:11 +03:00
Bruce Momjian
6e66d2e424 In pg_upgrade, document that link mode has to have data directories on
the same file system, and that authentication should lock out normal
users.

Per suggestsion from #postgresql irc channel.

Backpatch to 9.1.
2011-06-14 16:48:29 -04:00
Tom Lane
f28c54c32d Fix assorted issues with build and install paths containing spaces.
Apparently there is no buildfarm critter exercising this case after all,
because it fails in several places.  With this patch, build, install,
check-world, and installcheck-world pass for me on OS X.
2011-06-14 16:41:01 -04:00
Peter Eisentraut
64bbf3641c Remove unused variable
The variable became obsolete in commit
68739ba856, but only gcc 4.6 shows the
warning.
2011-06-14 23:01:44 +03:00
Bruce Momjian
5561fe2184 In pg_upgrade, check there are no prepared transactions.
Backpatch to 9.1.
2011-06-14 14:41:33 -04:00
Alvaro Herrera
808aa18b3c Fix grammatical mistake introduced by previous commit
Per note from Tom
2011-06-14 13:48:23 -04:00
Alvaro Herrera
d60ce59963 Mention DROP TABLE as well as ALTER TABLE NO INHERIT
... when talking about how good they are in replacement of bulk DELETE
in partitioned setups.

The original wording was a bit confusing.

Per an observation from David Wheeler.
2011-06-14 12:42:02 -04:00
Robert Haas
6fdd897503 Improve accuracy of ON_ERROR_STOP documentation.
Per a gripe from Tom Lane.
2011-06-14 11:07:17 -04:00
Heikki Linnakangas
6099dfa71c Oops, forgot to change the order of entries in 2PC callback arrays when I
renumbered the resource managers. This should fix the buildfarm..
2011-06-14 15:19:40 +03:00
Heikki Linnakangas
8c8006d776 Renumber 2PC resource managers so that compared to 9.0, predicate lock rmgr
is added to the end, and existing resource managers keep their old ids.
We're not going to guarantee on-disk compatibility for 2PC state files over
major releases, but it seems better to avoid changing the ids them anyway.
It will help anyone who might want to write external tools to inspect the
state files to work with files from different versions, if nothing else.
Per complaint from Tom Lane.
2011-06-14 12:36:51 +03:00
Peter Eisentraut
95f62dc8b8 Move parse2.pl to parse.pl
We have a SCM, so we don't need to keep old versions of files around.
2011-06-14 07:35:51 +03:00
Bruce Momjian
8d49524a6a Document that bits to the right of the CIDR mask "should" be zero, not
"must".
2011-06-13 20:57:37 -04:00
Alvaro Herrera
26b10ca6b8 Fix aboriginal copy-paste mistake in error message
Spotted by Jaime Casanova
2011-06-13 17:54:56 -04:00
Alvaro Herrera
9adda3e125 Expand warnings on locks acquired by CREATE INDEX CONCURRENTLY
The previous wording wasn't explicit enough, which could misled readers
into thinking that the locks acquired are more restricted in nature than
they really are.  The resulting optimism can be damaging to morale when
confronted with reality, as has been observed in the field.

Greg Smith
2011-06-13 17:12:26 -04:00
Robert Haas
20c73f3a32 Remove parentheses from mention of current_schemas function.
This is more consistent with what we do elsewhere, and hopefully avoids
creating the perception that current_schemas takes no arguments.

As suggested by Brendan Jurd
2011-06-13 13:04:07 -04:00
Robert Haas
26e7eec5f0 Clarify that NATURAL without matching columns is like CROSS JOIN.
As suggested by Grzegorz Szpetkowski.
2011-06-13 13:00:09 -04:00
Robert Haas
f2328b0713 Add doc cross-reference to search_path discussion of current_schemas().
Brendan Jurd
2011-06-13 12:38:32 -04:00
Robert Haas
3390fceb69 Document GUC context for synchronous_standby_names/hot_standby_feedback.
Fujii Masao
2011-06-13 12:25:41 -04:00
Robert Haas
a886c94e5e In ALTER EXTENSION docs, document left_type/right_type.
Noted by Daniele Varrazzo.
2011-06-13 10:23:14 -04:00
Robert Haas
5267e5ea5e Markup fix.
Fujii Masao
2011-06-13 10:14:16 -04:00
Robert Haas
16d64a8773 More foreign table documentation improvements.
Shigeru Hanada, with some additional wordsmithing by me
2011-06-13 08:29:38 -04:00
Heikki Linnakangas
5de9c165f0 Remove now-unnecessary casts.
Kevin Grittner
2011-06-12 22:51:39 +03:00
Robert Haas
25271323d4 Corrections to ALTER FOREIGN TABLE documentation.
Shigeru Hanada, with a minor grammar correction.
2011-06-12 00:19:14 -04:00
Robert Haas
e461cffbe6 Tab completion improvements for COMMENT.
These pertain to object types introduced in PostgreSQL 9.1, so back-patch.

Josh Kupershmidt, with some kibitzing by me.
2011-06-11 23:52:55 -04:00
Bruce Momjian
a4bebdd926 Add C comment mentioning pg_stat_activity.procpid should have been
called 'pid'.
2011-06-11 10:00:28 -04:00
Tom Lane
c2ba0121c7 Work around gcc 4.6.0 bug that breaks WAL replay.
ReadRecord's habit of using both direct references to tmpRecPtr and
references to *RecPtr (which is pointing at tmpRecPtr) triggers an
optimization bug in gcc 4.6.0, which apparently has forgotten about
aliasing rules.  Avoid the compiler bug, and make the code more readable
to boot, by getting rid of the direct references.  Improve the comments
while at it.

Back-patch to all supported versions, in case they get built with 4.6.0.

Tom Lane, with some cosmetic suggestions from Alex Hunsaker
2011-06-10 17:04:29 -04:00
Heikki Linnakangas
cb2d158c58 Fix locking while setting flags in MySerializableXact.
Even if a flag is modified only by the backend owning the transaction, it's
not safe to modify it without a lock. Another backend might be setting or
clearing a different flag in the flags field concurrently, and that
operation might be lost because setting or clearing a bit in a word is not
atomic.

Make did-write flag a simple backend-private boolean variable, because it
was only set or tested in the owning backend (except when committing a
prepared transaction, but it's not worthwhile to optimize for the case of a
read-only prepared transaction). This also eliminates the need to add
locking where that flag is set.

Also, set the did-write flag when doing DDL operations like DROP TABLE or
TRUNCATE -- that was missed earlier.
2011-06-10 23:41:10 +03:00
Alvaro Herrera
d69149ed71 Add comment about pg_ctl stop 2011-06-10 15:27:38 -04:00
Alvaro Herrera
fba105b109 Use "transient" files for blind writes, take 2
"Blind writes" are a mechanism to push buffers down to disk when
evicting them; since they may belong to different databases than the one
a backend is connected to, the backend does not necessarily have a
relation to link them to, and thus no way to blow them away.  We were
keeping those files open indefinitely, which would cause a problem if
the underlying table was deleted, because the operating system would not
be able to reclaim the disk space used by those files.

To fix, have bufmgr mark such files as transient to smgr; the lower
layer is allowed to close the file descriptor when the current
transaction ends.  We must be careful to have any other access of the
file to remove the transient markings, to prevent unnecessary expensive
system calls when evicting buffers belonging to our own database (which
files we're likely to require again soon.)

This commit fixes a bug in the previous one, which neglected to cleanly
handle the LRU ring that fd.c uses to manage open files, and caused an
unacceptable failure just before beta2 and was thus reverted.
2011-06-10 13:43:02 -04:00
Alvaro Herrera
3d114b63b2 Use a constant sprintf format to silence compiler warning 2011-06-10 13:38:50 -04:00
Heikki Linnakangas
c79c570bd8 Small comment fixes and enhancements. 2011-06-10 17:22:46 +03:00
Bruce Momjian
bb8f0c4b48 Mention "pg_ctl stop" in pgindent README instructions. 2011-06-09 20:51:44 -04:00
Tom Lane
829ae4bf83 Tag 9.1beta2. 2011-06-09 19:40:42 -04:00