== PostgreSQL Weekly News – July 03 2011 ==
== PostgreSQL Weekly News – July 03 2011 ==
CHAR(11) Conference in Cambridge, UK, 11-12 July 2011 special
conference on PostgreSQL in the areas of Cloud, High Availability and
Replication Last chance for Standard Price (£375) tickets is July 4,
after today Last Minute tickets only (£425).
Postgres Open welcomes your talks and workshops. Talks should be
oriented towards the business or development user of PostgreSQL, and
should have substantial technical content. Submissions are due by
July 8th. Submit them here:
The Denver 2011 PG DAY date has moved! Denver PG DAY 2011 will now be
held on Friday Oct 21, 2011. Call for papers is open through July 31.
Registration is free through July 31.
== PostgreSQL Product News ==
Postgres Plus Advanced Server v9.0 is now generally available.
Dubsar Mobile, a PostgreSQL-based dictionary access for mobile
pg_sample 0.05, a utility for exporting a small, sample dataset from a
larger PostgreSQL database, released.
Pyrseas 0.3.0, a toolkit for PostgreSQL version control, released on PGXN.
Postgres 9.1, Beta 2 RPM and DEB packages for linux 32 and 64 have
been published by OpenSCG.
Postgres-XC 0.9.5, a clustering system for PostgreSQL, released.
== PostgreSQL Jobs for July ==
== PostgreSQL Local ==
CHAR(11), the PostgreSQL Conference on Clustering, High Availability
and Replication is now open for online registration and bookings.
July 11-12 2011 in Cambridge, UK.
PostgreSQL Conference China 2011 will be held in Guangzhou July
PDXPUG is hosting PgDay on Sunday, July 24, 2011, one day before
OSCON, in Portland, Oregon, USA. Details here:
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.
PG-Day Denver 2011 will be held on Friday, October 21st, 2011 at
the Auraria Campus near downtown Denver, Colorado.
PostgreSQL Conference West (#PgWest) will be held September 27th-30th,
2011 at the San Jose Convention center in San Jose, California, USA.
PostgreSQL Conference Europe 2011 will be held on October 18-21 in
pgbr will be in Sao Paulo, Brazil November 3-4, 2011.
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.
== PostgreSQL in the News ==
Planet PostgreSQL: http://planet.postgresql.org/
PostgreSQL Weekly News is brought to you this week by David Fetter
Submit news and announcements by Sunday at 3:00pm Pacific time.
Please send English language ones to email@example.com, German language
to firstname.lastname@example.org, Italian language to email@example.com. Spanish language
== Reviews ==
== Applied Patches ==
Peter Eisentraut pushed:
– Remove redundant DEF_PGPORT handling. DEF_PGPORT already comes in
from pg_config.h, so we don’t need to pass it in again with a -D
option. Apparently a leftover from the shell script conversion.
– Add some strings that were not marked for translation
– Add composite-type attributes to information_schema.element_types
– Implement the collation columns of various information schema views.
Fill in the collation columns of the views attributes, columns,
domains, and element_types. Also update collation information in
– Unify spelling of “canceled”, “canceling”, “cancellation”. We had
previously (af26857a2775e7ceb0916155e931008c2116632f) established
the U.S. spellings as standard.
Robert Haas pushed:
– Avoid having two copies of the HOT-chain search logic. It’s been
like this since HOT was originally introduced, but the logic is
complex enough that this is a recipe for bugs, as we’ve already
found out with SSI. So refactor heap_hot_search_buffer() so that it
can satisfy the needs of index_getnext(), and make index_getnext()
use that rather than duplicating the logic. This change was
originally proposed by Heikki Linnakangas as part of a larger
refactoring oriented towards allowing index-only scans. I extracted
and adjusted this part, since it seems to have independent merit.
Review by Jeff Davis.
– Mention that SSPI authentication can use GSSAPI on non-Windows
systems. As noted by Christian Ullrich.
– Try again to make the visibility map crash safe. My previous
attempt was quite a bit less than half-baked with respect to
– Add a missing_ok argument to get_object_address(). This lays the
groundwork for an upcoming patch to streamline the handling of DROP
commands. KaiGai Kohei
– Fix bugs in relpersistence handling during table creation. Unlike
the relistemp field which it replaced, relpersistence must be set
correctly quite early during the table creation process, as we rely
on it quite early on for a number of purposes, including security
checks. Normally, this is set based on whether the user enters
CREATE TABLE, CREATE UNLOGGED TABLE, or CREATE TEMPORARY TABLE, but
a relation may also be made implicitly temporary by creating it in
pg_temp. This patch fixes the handling of that case, and also
disables creation of unlogged tables in temporary tablespace (such
table indeed skip WAL-logging, but we reject an explicit
specification) and creation of relations in the temporary schemas of
other sessions (which is not very sensible, and didn’t work right
anyway). Report by Amit Khandekar.
Simon Riggs pushed:
– Allow callers to pass a missing_ok flag when opening a relation.
Since the names try_relation_openrv() and try_heap_openrv() don’t
seem quite appropriate, rename the functions to
relation_openrv_extended() and heap_openrv_extended(). This is also
more general, if we have a future need for additional parameters
that are of interest to only a few callers. This is infrastructure
for a forthcoming patch to allow get_object_address() to take a
missing_ok argument as well. Patch by me, review by Noah Misch.
– Reduce impact of btree page reuse on Hot Standby by fixing off-by-1
error. WAL records of type XLOG_BTREE_REUSE_PAGE were generated
using a latestRemovedXid one higher than actually needed because xid
used was page opaque->btpo.xact rather than an actually removed xid.
Noticed on an otherwise quiet system by Noah Misch. Noah Misch and
– Introduce compact WAL record for the common case of commit
(non-DDL). XLOG_XACT_COMMIT_COMPACT leaves out invalidation
messages and relfilenodes, saving considerable space for the vast
majority of transaction commits. XLOG_XACT_COMMIT keeps same
definition as XLOG_PAGE_MAGIC 0xD067 and earlier. Leonardo
Francalanci and Simon Riggs
Alvaro Herrera pushed:
– Modernise pg_hba.conf token processing. The previous coding was
ugly, as it marked special tokens as such in the wrong stage,
relying on workarounds to figure out if they had been quoted in the
original or not. This made it impossible to have specific keywords
be recognized as such only in certain positions in HBA lines, for
example. Fix by restructuring the parser code so that it remembers
whether tokens were quoted or not. This eliminates widespread
knowledge of possible known keywords for all fields. Also improve
memory management in this area, to use memory contexts that are
reset as a whole instead of using retail pfrees; this removes a
whole lotta crufty (and probably slow) code. Instead of calling
strlen() three times in next_field_expand on the returned token to
find out whether there was a comma (and strip it), pass back the
info directly from the callee, which is simpler. In passing, update
historical artifacts in hba.c API. Authors: Brendan Jurd, Alvaro
Herrera Reviewed by Pavel Stehule
– Remove rel.h from objectaddress.h; only relcache.h is necessary.
Add rel.h to some files that now need it.
– Fix outdated comment. Extracted from a patch by Bernd Helmle
– Enable CHECK constraints to be declared NOT VALID. This means that
they can initially be added to a large existing table without
checking its initial contents, but new tuples must comply to them; a
separate pass invoked by ALTER TABLE / VALIDATE can verify existing
data and ensure it complies with the constraint, at which point it
is marked validated and becomes a normal part of the table
ecosystem. An non-validated CHECK constraint is ignored in the
planner for constraint_exclusion purposes; when validated, cached
plans are recomputed so that partitioning starts working right away.
This patch also enables domains to have unvalidated CHECK
constraints attached to them as well by way of ALTER DOMAIN / ADD
CONSTRAINT / NOT VALID, which can later be validated with ALTER
DOMAIN / VALIDATE CONSTRAINT. Thanks to Thom Brown, Dean Rasheed
and Jaime Casanova for the various reviews, and Robert Hass for
documentation wording improvement suggestions. This patch was
sponsored by Enova Financial.
Magnus Hagander pushed:
– Protect pg_stat_reset_shared() against NULL input. Per bug #6082,
reported by Steve Haslam
– Mark pg_stat_reset_shared as strict. This is the proper fix for bug
#6082 about pg_stat_reset_shared(NULL) causing a crash, and it
reverts commit 79aa44536f3980d324f486504cde643ce23bf5c6 on head.
The workaround of throwing an error from inside the function is left
on backbranches (including 9.1) since this change requires a new
Heikki Linnakangas pushed:
– Grab predicate locks on matching tuples in a lossy bitmap heap scan.
Non-lossy case was already handled correctly. Kevin Grittner
– Move the PredicateLockRelation() call from nodeSeqscan.c to
heapam.c. It’s more consistent that way, since all the other
PredicateLock* calls are made in various heapam.c and index AM
functions. The call in nodeSeqscan.c was unnecessarily aggressive
anyway, there’s no need to try to lock the relation every time a
tuple is fetched, it’s enough to do it once. This has the
user-visible effect that if a seq scan is initialized in the
executor, but never executed, we now acquire the predicate lock on
the heap relation anyway. We could avoid that by taking the lock on
the first heap_getnext() call instead, but it doesn’t seem worth the
trouble given that it feels more natural to do it in
heap_beginscan(). Also, remove the retail PredicateLockTuple()
calls from heap_getnext(). In a seqscan, started with heap_begin(),
we’re holding a whole-relation predicate lock on the heap so there’s
no need to lock the tuples individually. Kevin Grittner and me
Tom Lane pushed:
– Restore correct btree preprocessing of “indexedcol IS NULL”
conditions. Such a condition is unsatisfiable in combination with
any other type of btree-indexable condition (since we assume btree
operators are always strict). 8.3 and 8.4 had an explicit test for
this, which I removed in commit
29c4ad98293e3c5cb3fcdd413a3f4904efff8762, mistakenly thinking that
the case would be subsumed by the more general handling of IS (NOT)
NULL added in that patch. Put it back, and improve the comments
about it, and add a regression test case. Per bug #6079 from Renat
Nasyrov, and analysis by Dean Rasheed.
– Suppress compiler warning about potentially uninitialized variable.
Maybe some compilers are smart enough to not complain about the
previous coding … but mine isn’t.
– Fix EXPLAIN to handle gating Result nodes within inner-indexscan
subplans. It is possible for a NestLoop plan node to pass an OUTER
Var into an “inner indexscan” that is an Append construct (derived
from an inheritance tree or UNION ALL subquery). The OUTER tuple is
then passed down at runtime to the leaf indexscan node(s) where it
will actually be used. EXPLAIN has to likewise pass the information
about the nestloop’s outer subplan down through the Append node,
else it will fail to print the outer-reference Vars (with complaints
like “bogus varno: 65001”). However, there was a case missed in all
this: we could also have gating Result nodes that were inserted into
the appendrel plan tree to deal with pseudoconstant qual conditions.
So EXPLAIN has to pass down the outer plan node to a Result’s
subplan, too. Per example from Jon Nelson. The problem is gone in
9.1 because we replaced the nestloop outer-tuple kluge with a
Param-based data transfer mechanism. Also, so far as I can tell,
the case can’t happen before 8.4 because of restrictions on what
sorts of appendrel members could be pulled up into the parent query.
So this patch is only needed for 8.4 and 9.0.
– 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.
– Back-patch creation of tar.bz2 tarball during “make dist”. Since
commit a4d03bbcdaf7739d7e9073ee76bb186f68ddc163, “make dist” has
built both gzip- and bzip2-compressed tarballs. However, this was
pretty useless, because our tarball build script didn’t know about
it and proceeded to overwrite the bz2 file with new data.
Back-patch the change to all active branches, so that creation of
the tar.bz2 file can be removed from the build script.
– Put comments on the installable procedural languages. Per
suggestion from Josh Kupershmidt.
– Fix omissions in documentation of the pg_roles view. Somehow,
column rolconfig got removed from the documentation of the pg_roles
view in the 9.0 cycle, although the column is actually still there.
In 9.1, we’d also forgotten to document the rolreplication column.
Spotted by Sakamoto Masahiko.
Bruce Momjian pushed:
– 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
– In the pg_upgrade docs, move 50432 port mention to the place where
we talk about client access.
– In pg_upgrade 9.0 and 9.1, document suggestion of using a
non-default port number to avoid unintended client connections.
Andrew Dunstan pushed:
– Fix bat file quoting of %ENV.
== Rejected Patches (for now) ==
No one was disappointed this week 🙂
== Pending Patches ==
Heikki Linnakangas sent in a patch to remove some slowness from
Shigeru HANADA sent in another revision of the patch to add SQL/MED
per-column GENERIC OPTIONs.
Simon Riggs sent in a WIP patch to redefine SnapshotNow as a snapshot
type that includes a list of transactions-in-progress, somewhat like
an MVCC snapshot.
Gabriele Bartolini sent in a patch to add a “dry run” option ‘-n’ to
pg_archivecleanup which performs a dry-run and outputs the names of
the files to be removed to stdout.
Robert Haas sent in another revision of the patch to reduce the
overhead of frequent table locks by locking less frequently.
Robert Haas sent in an update to the patch to allow for time-delayed
KaiGai Kohei sent in three more revisions of a patch intended to fix
certain types of information leaks in views.
Alexander Korotkov, Tom Lane and Heikki Linnakangas traded versions of
a patch to build GiST indexes faster.
Martin Pihlak sent in another revision of the patch for SSL with
KaiGai Kohei sent in another revision of a patch intended to
consolidate the DROP machinery into one spot.
Kevin Grittner sent in a patch to modularize some aspects of SSI with
respect to sequential scans.
Laurenz Albe and Shigeru HANADA traded patches to fix an issue in
KaiGai Kohei sent in two revisions of a patch to fix some issues in
SECURITY LABELs on shared database objects, per review from Joe
Heikki Linnakangas sent in another WIP patch to do a latch-based
implementation of wakeup on postmaster death.
Jun Ishiduka sent in another revision of the patch to allow an online
base backup from a hot standby.
Noah Misch sent in another revision of a patch to avoid index rebuilds
for ALTER TABLE…ALTER TYPE that don’t actually need to rewrite.
Josh Kupershmidt sent in another revision of the patch to make \dd
show constraint comments.
Hitoshi Harada sent in another revision of the patch to parameterize
KaiGai Kohei sent in another revision of the patch to create a
userspace access vector cache.
Comments are closed.