== PostgreSQL Weekly News – October 23 2011 ==

== PostgreSQL Weekly News – October 23 2011 ==

PGDay.SoCal is scheduled at this year’s Southern California Linux
Exposition (SCALE10X) held in the LAX Hilton Hotel in the city of Los
Angeles, California, on Friday January 20th, 2012. Please send your
talk submissions to pgday-submissions AT googlegroups DOT com.

The schedule for Postgres Brazil 2011 is out:

Jim Mlodgenski presents “Visualizing PostgreSQL Data with Google Web Toolkit”
at NYCPUG October 25, 2011 at 6:30pm. Details an RSVP below.

== PostgreSQL Product News ==

Version 1.21.0 of tail_n_mail, a Postgres log watcher program, released.

== PostgreSQL Jobs for October ==


== PostgreSQL Local ==

pgbr will be in Sao Paulo, Brazil November 3-4, 2011.

PGConf.DE 2011, the German-speaking PostgreSQL Conference, will
take place on November 11th in the Rheinisches Industriemuseum in
Oberhausen, Germany. The schedule is now available, and registration
is open.

The fifth edition of the Italian PostgreSQL Day (PGDay.IT 2011) will
be held on November 25, 2011 in Prato, Italy.

The Call for Papers for is open for FLOSS UK, which will be held in
Edinburgh from the 20th to the 22nd March 2012. The deadline for
proposals is the 18th November 2011 and selected speakers will be
notified by the 25th November 2011. Proposals should be submitted to
postgresql2012 AT flossuk DOT org. More information at:

== 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 david@fetter.org, German language
to pwn@pgug.de, Italian language to pwn@itpug.org. Spanish language
to pwn@arpug.com.ar.

== Reviews ==

== Applied Patches ==

Magnus Hagander pushed:

– Exclude postmaster.opts from base backups. Noted by Fujii Masao

Tom Lane pushed:

– Fix pg_dump to dump casts between auto-generated types. The
heuristic for when to dump a cast failed for a cast between table
rowtypes, as reported by Frédéric Rejol. Fix it by setting the
“dump” flag for such a type the same way as the flag is set for the
underlying table or base type. This won’t result in the
auto-generated type appearing in the output, since setting its
objType to DO_DUMMY_TYPE unconditionally suppresses that. But it
will result in dumpCast doing what was intended. Back-patch to 8.3.
The 8.2 code is rather different in this area, and it doesn’t seem
worth any risk to fix a corner case that nobody has stumbled on

– Remove unnecessary AssertMacro() to suppress gcc 4.6 compiler
warning. There’s no particular value in doing AssertMacro((tup) !=
NULL) in front of code that’s certain to crash anyway if tup is
NULL. And if “tup” is actually the address of a local variable, gcc
4.6 whinges about it. That’s arguably pretty broken on gcc’s part,
but we might as well remove the useless test to silence the
warnings. This gets rid of all the -Waddress warnings in the
backend; there are some in libpq and psql that are a bit harder to

– Reject empty pg_hba.conf files. An empty HBA file is surely an
error, since it means there is no way to connect to the server.
We’ve not heard identifiable reports of people actually doing that,
but this will also close off the case Thom Brown just complained of,
namely pointing hba_file at a directory. (On at least some
platforms with some directories, it will read as an empty file.)
Perhaps this should be back-patched, but given the lack of previous
complaints, I won’t add extra work for the translators.

– Suppress -Wunused-result warnings about write() and fwrite(). This
is merely an exercise in satisfying pedants, not a bug fix, because
in every case we were checking for failure later with ferror(), or
else there was nothing useful to be done about a failure anyway.
Document the latter cases.

– Suppress remaining -Waddress warnings from recent gcc versions.
Still an exercise in satisfying pedants.

– Fix memory leak in tab completion. This was introduced in commit
e49ad77ff958b380ea6fa08c72e2dce97ac56c6b. Fixed in another, more
future-proof way in HEAD.

– Rewrite tab completion’s previous-word fetching for more sanity.
Make it return empty strings when there are no more words to the
left of the current position, instead of sometimes returning NULL
and other times returning copies of the leftmost word. Also, fetch
the words in one scan, rather than the previous wasteful approach of
starting from scratch for each word. Make the code a bit harder to
break when someone decides we need more words of context, too.
(There was actually a memory leak here, because whoever added
prev6_wd neglected to free it.)

– Simplify and improve ProcessStandbyHSFeedbackMessage logic. There’s
no need to clamp the standby’s xmin to be greater than
GetOldestXmin’s result; if there were any such need this logic would
be hopelessly inadequate anyway, because it fails to account for
within-database versus cluster-wide values of GetOldestXmin. So get
rid of that, and just rely on sanity-checking that the xmin is not
wrapped around relative to the nextXid counter. Also, don’t reset
the walsender’s xmin if the current feedback xmin is indeed out of
range; that just creates more problems than we already had. Lastly,
don’t bother to take the ProcArrayLock; there’s no need to do that
to set xmin. Also improve the comments about this in GetOldestXmin

– More cleanup after failed reduced-lock-levels-for-DDL feature.
Turns out that use of ShareUpdateExclusiveLock or
ShareRowExclusiveLock to protect DDL changes had gotten copied into
several places that were not touched by either of Simon’s original
patches for the feature, and thus neither he nor I thought to revert
them. (Indeed, it appears that two of these uses were committed
*after* the reversion, which just goes to show that git merging is
no panacea.) Change these places to use AccessExclusiveLock again.
If we ever manage to resurrect that feature, we’re going to have to
think a bit harder about how to keep lock level usage in sync for
DDL operations that aren’t within the AlterTable infrastructure.
Two of these bugs are only in HEAD, but one is in the 9.1 branch
too. Alvaro Herrera found one of them, I found the other two.

– Code review for pgstat_get_crashed_backend_activity patch. Avoid
possibly dumping core when pgstat_track_activity_query_size has a
less-than-default value; avoid uselessly searching for the query
string of a successfully-exited backend; don’t bother putting out an
ERRDETAIL if we don’t have a query to show; some other minor
stylistic improvements.

– Support synchronization of snapshots through an export/import
procedure. A transaction can export a snapshot with
pg_export_snapshot(), and then others can import it with SET
TRANSACTION SNAPSHOT. The data does not leave the server so there
are not security issues. A snapshot can only be imported while the
exporting transaction is still running, and there are some other
restrictions. I’m not totally convinced that we’ve covered all the
bases for SSI (true serializable) mode, but it works fine for lesser
isolation modes. Joachim Wieland, reviewed by Marko Tiikkaja, and
rather heavily modified by Tom Lane

– Don’t trust deferred-unique indexes for join removal. The
uniqueness condition might fail to hold intra-transaction, and
assuming it does can give incorrect query results. Per report from
Marti Raudsepp, though this is not his proposed patch. Back-patch
to 9.0, where both these features were introduced. In the released
branches, add the new IndexOptInfo field to the end of the struct,
to try to minimize ABI breakage for third-party code that may be
examining that struct.

– Improve git_changelog’s handling of inconsistent commit orderings.
Use the CommitDate not the AuthorDate, as the former is
representative of the order in which things went into the main
repository, and the latter isn’t very; we now have instances where
the AuthorDate is as much as a month before the patch really went
in. Also, get rid of the “commit order inversions” heuristic, which
turns out not to do anything very desirable. Instead we just print
commits in strict timestamp order, interpreting the “timestamp” of a
merged commit as its timestamp on the newest branch it appears in.
This fixes some cases where very ancient commits were being printed
relatively early in the report.

– Make psql support tab completion of EXECUTE
<prepared-statement-name>. Andreas Karlsson, reviewed by Josh

Robert Haas pushed:

– Make the CHECKPOINT reference page more clear. Josh Kupershmidt,
reviewed by Fujii Masao

– Document that postmaster.opts is excluded from base backups. Fujii

– Add some more regression tests for DROP IF EXISTS. KaiGai Kohei

– Consolidate DROP handling for some object types. This gets rid of a
significant amount of duplicative code. KaiGai Kohei, reviewed in
earlier versions by Dimitri Fontaine, with further review and
cleanup by me.

– Remove a few of the new DROP-IF-EXISTS regression tests. Commit
3301c83536e9da1e573e24ded2e610062dbf9cdc broke the build farm.
Let’s try to fix that.

– Add “skipping” to the NOTICE produced by DROP OPERATOR CLASS IF
EXISTS. This makes this message consistent with all the other
similar notices produced by other DROP IF EXISTS commands. Noted by
KaiGai Kohei

– Fix get_object_namespace() not to think extensions are “in” a
schema. extnamespace means something altogether different in this
context. Mostly by accident, this coding error (introduced in my
commit 82a4a777d94bec965ab2f1d04b6e6a3f0447b377) broke the buildfarm
instead of just silently doing the wrong thing.

portion was being ignored, and an error thrown anyway if the
opfamily did not exist. I broke this in commit
fd1843ff8979c0461fb3f1a9eab61140c977e32d; so backpatch to 9.1.X.
Report and diagnosis by KaiGai Kohei.

– Try to log current the query string when a backend crashes. To
avoid minimize risk inside the postmaster, we subject this feature
to a number of significant limitations. We very much wish to avoid
doing any complex processing inside the postmaster, due to the
posssibility that the crashed backend has completely corrupted
shared memory. To that end, no encoding conversion is done;
instead, we just replace anything that doesn’t look like an ASCII
character with a question mark. We limit the amount of data copied
to 1024 characters, and carefully sanity check the source of that
data. While these restrictions would doubtless be unacceptable in a
general-purpose logging facility, even this limited facility seems
like an improvement over the status quo ante. Marti Raudsepp,
reviewed by PDXPUG and myself.

Heikki Linnakangas pushed:

– Fix overly-complicated usage of errcode_for_file_access(). No need
to do “errcode(errcode_for_file_access())”, just
“errcode_for_file_access()” is enough. The extra errcode() call is
useless but harmless, so there’s no user-visible bug here.
Nevertheless, backpatch to 9.1 where this code were added.

== Rejected Patches (for now) ==

No one was disappointed this week 🙂

== Pending Patches ==

Kerem Kat sent in two more revisions of a patch to add CORRESPONDING
set operations.

Jun Ishiduka sent in two more revisions of the patch to allow taking a
base backup from a hot standby.

KaiGai Kohei sent in two more revisions of the patch to unite DROP
into a single framework.

Fujii Masao sent in another revision of the patch to fix an issue
where it is possible to drop transactions in streaming replication.

Florian Pflug sent in a patch to document how to build the docs on
OS/X with MacPorts.

Etsuro Fujita sent in another revision of the patch to allow running
ANALYZE on CSV files via the FDW supplied module interface.

Wojciech Muła and Pavel Stehule traded new revisions of the patch to
allow arrays of %TYPE in PL/pgsql.

Comments are closed.