Features Download
From: David Fetter <david <at> fetter.org>
Subject: == PostgreSQL Weekly News - October 14 2012 ==
Newsgroups: gmane.comp.db.postgresql.announce
Date: Monday 15th October 2012 05:37:46 UTC (over 5 years ago)
== PostgreSQL Weekly News - October 14 2012 ==

The 6th annual Highload++ conference will be on October 22-23, 2012 in
Moscow, Russia.

== PostgreSQL Product News ==

Barman 1.1.0, a backup and recovery manager for PostgreSQL, released.
Features: 9.2 support, pre/post backup hook scripts and Debian/Ubuntu

pgpool-II 3.2.1, 3.1.5 and 3.0.9, a multi-purpose middleware which can
provide connection pooling, replication, load balancing, parallel
execution and more, released.

Skytools 3.1.1, a package of tools developed by Skype for replication
and failover including PgQ, a generic queuing framework and Londiste,
a row-based master-slave replication replication system, released:

== PostgreSQL Jobs for October ==


== PostgreSQL Local ==

PostgreSQL Conference Europe 2012 will be in Prague, Czech Republic
on October 23-26.

There will be a PGDay November 9, 2012 at USP, São Paulo

PostgreSQL Day Argentina 2012 will be held on November 13th in Bernal,
Buenos Aires, at the National University of Quilmes.  It will cover
topics for PostgreSQL users, developers and contributors, as well as
decision and policy makers.  For more information about the
conference, please see the website at

This year Ecuador's PGDay will be held at Quito city on November 17th,
2012.  The Call for Papers is open until October 10.  Send proposals
to Jaime Casanova jaime  2ndquadrant  com.

The sixth edition of the Italian PostgreSQL Day (PGDay.IT 2012) will
be held on November 23, 2012 in Prato, Tuscany.  The International
Call for Papers is now open. Talks and presentations in English are
accepted.  Information in English for papers submission is available

== 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 protected], German language
to [email protected], Italian language to [email protected]  Spanish language
to [email protected]

== Applied Patches ==

Heikki Linnakangas pushed:

- Fix walsender handling of postmaster shutdown, to not go into
  endless loop.  This bug was introduced by my patch to use the
  regular die/quickdie signal handlers in walsender processes. I tried
  to make walsender exit at next CHECK_FOR_INTERRUPTS() by setting
  ProcDiePending, but that's not enough, you need to set
  InterruptPending too. On second thoght, it was not a very good way
  to make walsender exit anyway, so use proc_exit(0) instead.  Also,
  send a CommandComplete message before exiting; that's what we did
  before, and you get a nicer error message in the standby that way.
  Reported by Thom Brown.

- Say ANALYZE, not VACUUM, in error message on analyze in hot standby.
  Tomonaru Katsumata

- Remove stray newline in comment.

- Put the logic to wait for WAL in standby mode to a separate
  function.  This is just refactoring with no user-visible effect, to
  make the code more readable.

- Fix silly bug in previous refactoring.  I extracted the refactoring
  patch from a larger patch that contained other changes too, but
  missed one unintentional change and didn't test enough...

- Fix thinko in previous commit.  Since postgres.h includes palloc.h,
  definitions that affect the latter must be present before the former
  is included.  Per buildfarm results

- Improve replication connection timeouts.  Rename replication_timeout
  to wal_sender_timeout, and add a new setting called
  wal_receiver_timeout that does the same at the walreceiver side.
  There was previously no timeout in walreceiver, so if the network
  went down, for example, the walreceiver could take a long time to
  notice that the connection was lost. Now with the two settings, both
  sides of a replication connection will detect a broken connection
  similarly.  It is no longer necessary to manually set
  wal_receiver_status_interval to a value smaller than the timeout.
  Both wal sender and receiver now automatically send a "ping" message
  if more than 1/2 of the configured timeout has elapsed, and it
  hasn't received any messages from the other end.  Amit Kapila,
  heavily edited by me.

Robert Haas pushed:

- Add #define for UUIDOID.  Phil Sorber and Thom Brown. Reviewed by
  Laurenz Albe.

Alvaro Herrera pushed:

- Add support for easily declaring static inline functions.  We
  already had those, but they forced modules to spell out the function
  bodies twice.  Eliminate some duplicates we had already grown.
  Extracted from a somewhat larger patch from Andres Freund.

- Rename USE_INLINE to PG_USE_INLINE.  The former name was too likely
  to conflict with symbols from external headers; and, as seen in
  recent buildfarm failures in member spoonbill, it has now happened
  at least in plpython.

- restore permission bits

Tom Lane pushed:

- Code review for 64-bit-large-object patch.  Fix
  broken-on-bigendian-machines byte-swapping functions, add missed
  update of alternate regression expected file, improve error
  reporting, remove some unnecessary code, sync testlo64.c with
  current testlo.c (it seems to have been cloned from a very old copy
  of that), assorted cosmetic improvements.

- Fix lo_read, lo_write, lo_truncate to cope with "size_t" length
  parameters.  libpq defines these functions as accepting "size_t"
  lengths ... but the underlying backend functions expect signed int32
  length parameters, and so will misinterpret any value exceeding
  INT_MAX.  Fix the libpq side to throw error rather than possibly
  doing something unexpected.  This is a bug of long standing, but I
  doubt it's worth back-patching.  The problem is really pretty
  academic anyway with lo_read/lo_write, since any caller expecting
  sane behavior would have to have provided a multi-gigabyte buffer.
  It's slightly more pressing with lo_truncate, but still we haven't
  supported large objects over 2GB until now.

- Fix lo_export usage in example programs.  lo_export returns -1, not
  zero, on failure.

- Fix lo_import and lo_export to return useful error messages more
  often.  I found that these functions tend to return -1 while leaving
  an empty error message string in the PGconn, if they suffer some
  kind of I/O error on the file.  The reason is that lo_close, which
  thinks it's executed a perfectly fine SQL command, clears the
  errorMessage.  The minimum-change workaround is to reorder
  operations here so that we don't fill the errorMessage until after

- Remove unnecessary overhead in backend's large-object operations.
  Do read/write permissions checks at most once per large object
  descriptor, not once per lo_read or lo_write call as before.  The
  repeated tests were quite useless in the read case since the
  snapshot-based tests were guaranteed to produce the same answer
  every time.  In the write case, the extra tests could in principle
  detect revocation of write privileges after a series of writes has
  started --- but there's a race condition there anyway, since we'd
  check privileges before performing and certainly before committing
  the write.  So there's no real advantage to checking every single
  time, and we might as well redefine it as "only check the first
  time".  On the same reasoning, remove the LargeObjectExists checks
  in inv_write and inv_truncate.  We already checked existence when
  the descriptor was opened, and checking again doesn't provide any
  real increment of safety that would justify the cost.

- Fix PGXS support for building loadable modules on AIX.  Building a
  shlib on AIX requires use of the mkldexport.sh script, but we failed
  to install that, preventing its use from non-source-tree contexts.
  Also, Makefile.aix had the wrong idea about where to find the
  installed copy of the postgres.imp symbol file used by AIX.  Per
  report from John Pierce.  Patch all the way back, since this has
  been broken since the beginning of PGXS.

- Set procost to 10 for each of the pg_foo_is_visible() functions.
  The idea here is to make sure the planner will evaluate these
  functions last not first among the filter conditions in psql pattern
  search and tab-completion queries.  We've discussed this several
  times, and there was consensus to do it back in August, but we
  didn't want to do it just before a release.  Now seems like a safer
  time.  No catversion bump, since this catalog change doesn't create
  a backend incompatibility nor any regression test result changes.

- Update obsolete text in fdwhandler.sgml.  Etsuro Fujita, with some
  wording adjustment by me.

- Update obsolete comment.  We no longer use GetNewOidWithIndex on
  pg_largeobject; rather, pg_largeobject_metadata's regular OID column
  is considered the repository of OIDs for large objects.  The special
  functionality is still needed for TOAST tables however.

- Create an improved FDW option validator function for contrib/dblink.
  dblink now has its own validator function dblink_fdw_validator(),
  which is better than the core function postgresql_fdw_validator()
  because it gets the list of legal options from libpq instead of
  having a hard-wired list.  Make the dblink extension module provide
  a standard foreign data wrapper dblink_fdw that encapsulates use of
  this validator, and recommend use of that wrapper instead of making
  up wrappers on the fly.  Unfortunately, because ad-hoc wrappers
  *were* recommended practice previously, it's not clear when we can
  get rid of postgresql_fdw_validator without causing upgrade
  problems.  But this is a step in the right direction.  Shigeru
  Hanada, reviewed by KaiGai Kohei

- Remove configure-option-dependent test cases from dblink tests.  The
  HINTs generated for these error cases vary across builds.  We could
  try to work around that, but the test cases aren't really useful
  enough to justify taking any trouble.  Per buildfarm.

- Fix cross-type case in partial row matching for hashed subplans.
  When hashing a subplan like "WHERE (a, b) NOT IN (SELECT x, y FROM
  ...)", findPartialMatch() attempted to match rows using the
  hashtable's internal equality operators, which of course are for x
  and y's datatypes.  What we need to use are the potentially
  cross-type operators for a=x, b=y, etc.  Failure to do that leads to
  wrong answers or even crashes.  The scope for problems is limited to
  cases where we have different types with compatible hash functions
  (else we'd not be using a hashed subplan), but for example int4 vs
  int8 can cause the problem.  Per bug #7597 from Bo Jensen.  This has
  been wrong since the hashed-subplan code was written, so patch all
  the way back.

- Make equal() ignore CoercionForm fields for better planning with
  casts.  This change ensures that the planner will see implicit and
  explicit casts as equivalent for all purposes, except in the
  minority of cases where there's actually a semantic difference (as
  reflected by having a 3-argument cast function).  In particular,
  this fixes cases where the EquivalenceClass machinery failed to
  consider two references to a varchar column as equivalent if one was
  implicitly cast to text but the other was explicitly cast to text,
  as seen in bug #7598 from Vaclav Juza.  We have had similar bugs
  before in other parts of the planner, so I think it's time to fix
  this problem at the core instead of continuing to band-aid around
  it.  Remove set_coercionform_dontcare(), which represents the
  band-aid previously in use for allowing matching of index and
  constraint expressions with inconsistent cast labeling.  (We can
  probably get rid of COERCE_DONTCARE altogether, but I don't think
  removing that enum value in back branches would be wise; it's
  possible there's third party code referring to it.) Back-patch to
  9.2.  We could go back further, and might want to once this has been
  tested more; but for the moment I won't risk destabilizing plan
  choices in long-since-stable branches.

- Fix unportable format string.  Per compiler warning.

- Get rid of COERCE_DONTCARE.  We don't need this hack any more.

- Fix oversight in new code for printing rangetable aliases.  In
  commit 11e131854f8231a21613f834c40fe9d046926387, I missed the case
  of a CTE RTE that doesn't have a user-defined alias, but does have
  an alias assigned by set_rtable_names().  Per report from Peter
  Eisentraut.  While at it, refactor slightly to reduce code

- Split up process latch initialization for more-fail-soft behavior.
  In the previous coding, new backend processes would attempt to
  create their self-pipe during the OwnLatch call in InitProcess.
  However, pipe creation could fail if the kernel is short of
  resources; and the system does not recover gracefully from a FATAL
  error right there, since we have armed the dead-man switch for this
  process and not yet set up the on_shmem_exit callback that would
  disarm it.  The postmaster then forces an unnecessary database-wide
  crash and restart, as reported by Sean Chittenden.  There are
  various ways we could rearrange the code to fix this, but the
  simplest and sanest seems to be to split out creation of the
  self-pipe into a new function InitializeLatchSupport, which must be
  called from a place where failure is allowed.  For most processes
  that gets called in InitProcess or InitAuxiliaryProcess, but
  processes that don't call either but still use latches need their
  own calls.  Back-patch to 9.1, which has only a part of the latch
  logic that 9.2 and HEAD have, but nonetheless includes this bug.

Peter Eisentraut pushed:

- Remove generation of repl_gram.h.  It was apparently never

- Remove _FORTIFY_SOURCE.  Apparently, on some glibc versions this
  causes warnings when optimization is not enabled.  Altogether, there
  appear to be too many incompatibilities surrounding this.

- Refactor flex and bison make rules.  Numerous flex and bison make
  rules have appeared in the source tree over time, and they are all
  virtually identical, so we can replace them by pattern rules with
  some variables for customization.  Users of pgxs will also be able
  to benefit from this.

Simon Riggs pushed:

- Add microsecs/op display to pg_test_fsync utility e.g. fsync
  2103.613 ops/sec (   475 microsecs/op) Peter Geoghegan

- Use tablespace_option consistently on doc page.  Fujii Masao

Bruce Momjian pushed:

- In pg_upgrade, issue proper error message when we can't open
  PG_VERSION.  Backpatch to 9.2.

- In our source code, make a copy of getopt's 'optarg' string
  arguments, rather than just storing a pointer.

Andrew Dunstan pushed:

- Unbreak MSVC builds after recent Makefile refactoring.  Based on a
  suggestion by Peter Eisentraut.

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Amit Kapila sent in another revision of the patch to increase
performance of update operations by decreasing WAL volume.

KaiGai Kohei sent in another revision of the patch to add row-level
access control.

Andres Freund sent in a patch to make MemSetLoop stop ignoring the
'val' parameter.

Peter Geoghegan sent in a patch to fix the FORTIFY_SOURCE fix of

Peter Geoghegan and Alvaro Herrera traded new revisions of the patch
to add embedded lists.

Noah Misch and Brar Piening traded revisions of the patch to allow
compiling with Microsoft Visual Studio 2012 RC.

Alexander Korotkov sent in another revision of the patch to sharpen
statistics and selectivity estimation for ranges.

Shigeru HANADA sent in another revision of the patch to add a FDW for

Heikki Linnakangas sent in another revision of the patch to ease
switching timeline over streaming replication.

Sébastien Lardière sent in two revisions of a patch to add TRUNCATE IF
EXISTS functionality.

Vik Reykja sent in two revisions of a patch to add DEALLOCATE IF
EXISTS functionality.

Marco Nenciarini sent in another revision of the patch to add array
ELEMENT foreign keys.

Joel Jacobson sent in another revision of the patch to ensure that
pg_dump dumps functions in a deterministic order.

Pavel Stehule sent in another revision of the patch to add enhanced
error fields.

Zoltan Boszormenyi sent in five more revisions of a patch to make
pg_basebackup configure and start standby.

Marcus Wanner sent in a patch to fix an issue where WAL_DEBUG logs
spurious data.

Dean Rasheed sent in another revision of the patch to make VIEWs
updateable automatically where appropriate.

Abhijit Menon-Sen sent in a patch to clarify the meanings of
tup_returned and tup_fetched.

Dimitri Fontaine sent in another revision of the patch to deparse DDL
in service of event triggers.

Pavel Stehule and Shigeru HANADA traded patches to add \gset to
psql, setting a set of variables to the row returned.

Bruce Momjian sent in a patch to fix log_line_prefix and session

Michael Paquier sent in another revision of the patch to add REINDEX

Guillaume Lelarge sent in a patch to fix a bug in pg_restore -c.

Fujii Masao sent in a patch to fix a typo in Heikki Linnakangas's
patch to ensure that standbys detect network partitions faster.

KaiGai Kohei sent in another revision of the patch to extend the
arguments of OAT_POST_CREATE for sepgsql.

Phil Sorber sent in a WIP patch to create a pg_ping utility.

Andrew Dunstan sent in another revision of the patch to allow pg_dump
to run in parallel.

Satoshi Nagayasu sent in two more revisions of a patch to add a
pg_stat_lwlocks view.

Gilles Darold sent in a patch to add IF EXISTS to DROP statements in
pg_restore, bullet-proofing same against that type of confusing

Josh Kupershmidt sent in a patch to fix the string escaping in
tutorial/syscat.source, as it had not kept up with
standards_conforming_strings' modern default.

Sent via pgsql-announce mailing list ([email protected])
To make changes to your subscription:
CD: 3ms