1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-08 22:02:03 +03:00

32401 Commits

Author SHA1 Message Date
Peter Eisentraut
a0b5146b25 Message style and spelling improvements 2011-06-22 00:33:20 +03:00
Tom Lane
567049a764 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:48 -04:00
Heikki Linnakangas
35dd6d48ec Adjust the alternative expected output file for prepared_xacts test case,
used when max_prepared_transactions=0, for the recent changes in the test
case.
2011-06-21 17:08:56 +03:00
Heikki Linnakangas
390c52131b Fix bug in PreCommit_CheckForSerializationFailure. A transaction that has
already been marked as PREPARED cannot be killed. Kill the current
transaction instead.

One of the prepared_xacts regression tests actually hits this bug. I
removed the anomaly from the duplicate-gids test so that it fails in the
intended way, and added a new test to check serialization failures with
a prepared transaction.

Dan Ports
2011-06-21 15:02:32 +03:00
Heikki Linnakangas
0d905db20b Fix bug introduced by recent SSI patch to merge ROLLED_BACK and
MARKED_FOR_DEATH flags into one. We still need the ROLLED_BACK flag to
mark transactions that are in the process of being rolled back. To be
precise, ROLLED_BACK now means that a transaction has already been
discounted from the count of transactions with the oldest xmin, but not
yet removed from the list of active transactions.

Dan Ports
2011-06-21 15:02:26 +03:00
Tom Lane
9d6e6feded Fix missed use of "cp -i" in an example, per Fujii Masao.
Also be more careful about markup: use & not just &.
2011-06-20 16:27:36 -04:00
Tom Lane
6c560bef76 Fix thinko in previous patch for optimizing EXISTS-within-EXISTS.
When recursing after an optimization in pull_up_sublinks_qual_recurse, the
available_rels value passed down must include only the relations that are
in the righthand side of the new SEMI or ANTI join; it's incorrect to pull
up a sub-select that refers to other relations, as seen in the added test
case.  Per report from BangarRaju Vadapalli.

While at it, rethink the idea of recursing below a NOT EXISTS.  That is
essentially the same situation as pulling up ANY/EXISTS sub-selects that
are in the ON clause of an outer join, and it has the same disadvantage:
we'd force the two joins to be evaluated according to the syntactic nesting
order, because the lower join will most likely not be able to commute with
the ANTI join.  That could result in having to form a rather large join
product, whereas the handling of a correlated subselect is not quite that
dumb.  So until we can handle those cases better, #ifdef NOT_USED that
case.  (I think it's okay to pull up in the EXISTS/ANY cases, because SEMI
joins aren't so inflexible about ordering.)

Back-patch to 8.4, same as for previous patch in this area.  Fortunately
that patch hadn't made it into any shipped releases yet.
2011-06-20 14:33:42 -04:00
Peter Eisentraut
7ec70f46c6 Produce HISTORY file consistently as ASCII
The release notes may contain non-ASCII characters (for contributor
names), which lynx converts to the encoding determined by the current
locale.  The get output that is deterministic and easily readable by
everyone, we make lynx produce LATIN1 and then convert that to ASCII
with transliteration for the non-ASCII characters.
2011-06-19 23:30:11 +03:00
Tom Lane
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
Peter Eisentraut
365c72f205 Capitalization fixes 2011-06-19 00:39:19 +03:00
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
68739ba856c52e6721d6cffec21f1bf0327a9a7b, 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