Postgres Open 2011, a conference focused on disruption of the database
industry through PostgreSQL, will take place September 14-16, 2011 in
Chicago, Illinois at the Westin Michigan Avenue hotel.http://postgresopen.org

PGConf.DE 2011 is the German-speaking PostgreSQL Conference and will
take place on November 11th in the Rheinisches Industriemuseum in
Oberhausen, Germany. Call for Papers is open.http://2011.pgconf.de/

– 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.http://git.postgresql.org/pg/commitdiff/cd1f0d04bf06938c0ee5728fc8424d62bcf2eef3

– 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.http://git.postgresql.org/pg/commitdiff/ca59dfa6f727fe3bf3a01904ec30e87f7fa5a67e

– 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.http://git.postgresql.org/pg/commitdiff/811f1cec8cd39d426a824223e3c4a6fa5b0f856e

– Add the possibility to pass –flag arguments to xgettext calls. The
–flag argument can be used to tell xgettext the arguments of which
functions should be flagged with c-format in the PO files, instead
of guessing based on the presence of format specifiers, which fails
if no format specifiers are present but the translation accidentally
introduces one. Appropriate flag settings have been added for each
message catalog. based on a patch by Christoph Berg for bug #6066http://git.postgresql.org/pg/commitdiff/cb5a7bc2dce4377036bd70a69b2b7b3bc821036f

– Remove extra copying of TupleDescs for heap_create_with_catalog.
Some callers were creating copies of tuple descriptors to pass to
that function, stating in code comments that it was necessary
because it modified the passed descriptor. Code inspection reveals
this not to be true, and indeed not all callers are passing copies
in the first place. So remove the extra ones and the misleading
comments about this behavior as well.http://git.postgresql.org/pg/commitdiff/a40a5d9468a5f9f11d355ebf07f7741f5c267588

Heikki Linnakangas pushed:

– 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 Portshttp://git.postgresql.org/pg/commitdiff/7cb2ff9621a6129cc251f9d06bf23d3f9d426173

– 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 Portshttp://git.postgresql.org/pg/commitdiff/1eea8e8a06bc718836c34b8f7da9420b38fc4851

– Remove pointless const qualifiers from function arguments in the SSI
code. As Tom Lane pointed out, “const Relation foo” doesn’t
guarantee that you can’t modify the data the “foo” pointer points
to. It just means that you can’t change the pointer to point to
something else within the function, which is not very useful.http://git.postgresql.org/pg/commitdiff/5da417f7c4b2adb5b2aa4d6c86354f8de87dcde9

– Add notion of a “transform function” that can simplify function
calls. Initially, we use this only to eliminate calls to the
varchar() function in cases where the length is not being reduced
and, therefore, the function call is equivalent to a RelabelType
operation. The most significant effect of this is that we can avoid
a table rewrite when changing a varchar(X) column to a varchar(Y)
column, where Y > X. Noah Misch, reviewed by me and Alexey Klyukinhttp://git.postgresql.org/pg/commitdiff/8f9fe6edce358f7904e0db119416b4d1080a83aa

– Make deadlock_timeout PGC_SUSET rather than PGC_SIGHUP. This allows
deadlock_timeout to be reduced for transactions that are
particularly likely to be involved in a deadlock, thus detecting it
more quickly. It is also potentially useful as a poor-man’s
deadlock priority mechanism: a transaction with a high
deadlock_timeout is less likely to be chosen as the victim than one
with a low deadlock_timeout. Since that could be used to game the
system, we make this PGC_SUSET rather than PGC_USERSET. At some
point, it might be worth thinking about a more explicit priority
mechanism, since using this is far from fool-proof. But let’s see
whether there’s enough use case to justify the additional work
before we go down that route. Noah Misch, reviewed by Shigeru
Hanadahttp://git.postgresql.org/pg/commitdiff/7095003cbef630fe29c2299cc819fd37c691d0b0

– Make the visibility map crash-safe. This involves two main changes
from the previous behavior. First, when we set a bit in the
visibility map, emit a new WAL record of type XLOG_HEAP2_VISIBLE.
Replay sets the page-level PD_ALL_VISIBLE bit and the visibility map
bit. Second, when inserting, updating, or deleting a tuple, we can
no longer get away with clearing the visibility map bit after
releasing the lock on the corresponding heap page, because an
intervening crash might leave the visibility map bit set and the
page-level bit clear. Making this work requires a bit of interface
refactoring. In passing, a few minor but related cleanups: change
the test in visibilitymap_set and visibilitymap_clear to throw an
error if the wrong page (or no page) is pinned, rather than silently
doing nothing; this case should never occur. Also, remove duplicate
definitions of InvalidXLogRecPtr. Patch by me, review by Noah
Misch.http://git.postgresql.org/pg/commitdiff/503c7305a1e379f95649eef1a694d0c1dbdc674a