1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00
Commit Graph

32193 Commits

Author SHA1 Message Date
68306da488 Fix thinko in previous patch to always update pg_class.reltuples/relpages.
I mis-simplified the test where ANALYZE decided if it could get away
without doing anything: under the new regime, that's never allowed.  Per
bug #6068 from Jeff Janes.  Back-patch to 8.4, just like previous patch.
2011-06-19 14:00:55 -04:00
365c72f205 Capitalization fixes 2011-06-19 00:39:19 +03:00
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
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
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
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
a3903f1bf8 Fix typo.
Per Josh Kupershmidt and Tom Lane.
2011-06-17 00:54:36 -04:00
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
bd8137ee11 Fix typo 2011-06-16 12:13:07 -04:00
f90b185a8a Remove another no-longer-needed inclusion of predicate.h. 2011-06-16 11:43:43 -04:00
9131bc772b pgindent run of recent SSI changes. Also, remove an unnecessary #include.
Kevin Grittner
2011-06-16 16:17:16 +03:00
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
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
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
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
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
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
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
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
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
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
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
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
5561fe2184 In pg_upgrade, check there are no prepared transactions.
Backpatch to 9.1.
2011-06-14 14:41:33 -04:00
808aa18b3c Fix grammatical mistake introduced by previous commit
Per note from Tom
2011-06-14 13:48:23 -04:00
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
6fdd897503 Improve accuracy of ON_ERROR_STOP documentation.
Per a gripe from Tom Lane.
2011-06-14 11:07:17 -04:00
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
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
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
8d49524a6a Document that bits to the right of the CIDR mask "should" be zero, not
"must".
2011-06-13 20:57:37 -04:00
26b10ca6b8 Fix aboriginal copy-paste mistake in error message
Spotted by Jaime Casanova
2011-06-13 17:54:56 -04:00
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
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
26e7eec5f0 Clarify that NATURAL without matching columns is like CROSS JOIN.
As suggested by Grzegorz Szpetkowski.
2011-06-13 13:00:09 -04:00
f2328b0713 Add doc cross-reference to search_path discussion of current_schemas().
Brendan Jurd
2011-06-13 12:38:32 -04:00
3390fceb69 Document GUC context for synchronous_standby_names/hot_standby_feedback.
Fujii Masao
2011-06-13 12:25:41 -04:00
a886c94e5e In ALTER EXTENSION docs, document left_type/right_type.
Noted by Daniele Varrazzo.
2011-06-13 10:23:14 -04:00
5267e5ea5e Markup fix.
Fujii Masao
2011-06-13 10:14:16 -04:00
16d64a8773 More foreign table documentation improvements.
Shigeru Hanada, with some additional wordsmithing by me
2011-06-13 08:29:38 -04:00
5de9c165f0 Remove now-unnecessary casts.
Kevin Grittner
2011-06-12 22:51:39 +03:00
25271323d4 Corrections to ALTER FOREIGN TABLE documentation.
Shigeru Hanada, with a minor grammar correction.
2011-06-12 00:19:14 -04:00
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
a4bebdd926 Add C comment mentioning pg_stat_activity.procpid should have been
called 'pid'.
2011-06-11 10:00:28 -04:00
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
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
d69149ed71 Add comment about pg_ctl stop 2011-06-10 15:27:38 -04:00
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
3d114b63b2 Use a constant sprintf format to silence compiler warning 2011-06-10 13:38:50 -04:00
c79c570bd8 Small comment fixes and enhancements. 2011-06-10 17:22:46 +03:00