Features Download
From: David Fetter <david <at> fetter.org>
Subject: == PostgreSQL Weekly News - June 30 2013 ==
Newsgroups: gmane.comp.db.postgresql.announce
Date: Monday 1st July 2013 06:12:06 UTC (over 3 years ago)
== PostgreSQL Weekly News - June 30 2013 ==

PostgreSQL 9.3 Beta 2 released.  TEST!

PGDay.IT 2013 will take place in Prato on October the 25th 2013. The
International Call For Papers is now open.   

== PostgreSQL Jobs for June ==


== PostgreSQL Local ==

We're going to have a booth at OSCON this year.  Please sign up and
hang out at the booth for an hour or two:

PGDay UK 2013 is July 12, 2013.  Registration is closing soon.  Book now!

PostgreSQL Brazil will be held August 15-17, 2013 in Porto Velho, RO,

Postgres Open 2013 will be in Chicago, IL, USA, September 16-18.
Early Bird registration and call for presentations closes June 30th.

pgconf.EU 2013 will be held on Oct 29-Nov 1, 2013 at the Conrad Hotel
in downtown Dublin, Ireland.  The CfP is open.

PGConf.DE 2013 will be held November 8th, 2013, at the Rhineland
Industrial Museum in Oberhausen.  The CfP is open through September
15, 2013.

== 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 ==

Peter Eisentraut pushed:

- Translation updates

- pg_receivexlog: Fix logic error.  The code checking the WAL file
  name contained a logic error and wouldn't actually catch some bad

- ecpg: Consistently use mm_strdup().  mm_strdup() is provided to
  check errors from strdup(), but some places were failing to use it.

- Fix cpluspluscheck in checksum code.  C++ is more picky about
  comparing signed and unsigned integers.

Simon Riggs pushed:

- ALTER TABLE ... ALTER CONSTRAINT for FKs.  Allow constraint
  attributes to be altered, so the default setting of NOT DEFERRABLE
  can be altered to DEFERRABLE and back.  Review by Abhijit Menon-Sen

- Reverting previous commit, pending investigation of sporadic seg
  faults from various build farm members.

- ALTER TABLE ... ALTER CONSTRAINT for FKs.  Allow constraint
  attributes to be altered, so the default setting of NOT DEFERRABLE
  can be altered to DEFERRABLE and back.  Review by Abhijit Menon-Sen

- Assert that ALTER TABLE subcommands have pass set

- Change errcode for lock_timeout to match NOWAIT.  Set errcode to

Fujii Masao pushed:

- Support clean switchover.  In replication, when we shutdown the
  master, walsender tries to send all the outstanding WAL records to
  the standby, and then to exit. This basically means that all the WAL
  records are fully synced between two servers after the clean
  shutdown of the master. So, after promoting the standby to new
  master, we can restart the stopped master as new standby without the
  need for a fresh backup from new master.  But there was one problem
  so far: though walsender tries to send all the outstanding WAL
  records, it doesn't wait for them to be replicated to the standby.
  Then, before receiving all the WAL records, walreceiver can detect
  the closure of connection and exit. We cannot guarantee that there
  is no missing WAL in the standby after clean shutdown of the master.
  In this case, backup from new master is required when restarting the
  stopped master as new standby.  This patch fixes this problem. It
  just changes walsender so that it waits for all the outstanding WAL
  records to be replicated to the standby before closing the
  replication connection.  Per discussion, this is a fix that needs to
  get backpatched rather than new feature. So, back-patch to 9.1 where
  enough infrastructure for this exists.  Patch by me, reviewed by
  Andres Freund.

Andrew Dunstan pushed:

- Properly dump dropped foreign table cols in binary-upgrade mode.  In
  binary upgrade mode, we need to recreate and then drop dropped
  columns so that all the columns get the right attribute number. This
  is true for foreign tables as well as for native tables. For foreign
  tables we have been getting the first part right but not the second,
  leading to bogus columns in the upgraded database. Fix this all the
  way back to 9.1, where foreign tables were introduced.

Alvaro Herrera pushed:

- Avoid inconsistent type declaration.  Clang 3.3 correctly complains
  that a variable of type enum MultiXactStatus cannot hold a value of
  -1, which makes sense.  Change the declared type of the variable to
  int instead, and apply casting as necessary to avoid the warning.
  Per notice from Andres Freund

- Update pg_resetxlog's documentation on multixacts.  I added some
  more functionality to it in 0ac5ad5134f27 but neglected to add it to
  the docs.  Per Peter Eisentraut in message
  [email protected]

- Document relminmxid and datminmxid.  I introduced these new fields
  in 0ac5ad5134f27 but neglected to add them to the system catalogs
  section of the docs.  Per Thom Brown in message
  [email protected]m

- Send SIGKILL to children if they don't die quickly in immediate
  shutdown.  On immediate shutdown, or during a restart-after-crash
  sequence, postmaster used to send SIGQUIT (and then abandon ship if
  shutdown); but this is not a good strategy if backends don't die
  because of that signal.  (This might happen, for example, if a
  backend gets tangled trying to malloc() due to gettext(), as in an
  example illustrated by MauMau.)  This causes problems when later
  trying to restart the server, because some processes are still
  attached to the shared memory segment.  Instead of just abandoning
  such backends to their fates, we now have postmaster hang around for
  a little while longer, send a SIGKILL after some reasonable waiting
  period, and then exit.  This makes immediate shutdown more reliable.
  There is disagreement on whether it's best for postmaster to exit
  after sending SIGKILL, or to stick around until all children have
  reported death.  If this controversy is resolved differently than
  what this patch implements, it's an easy change to make.  Bug
  reported by MauMau in message
  [email protected] MauMau and Álvaro Herrera

Noah Misch pushed:

- Renovate display of non-ASCII messages on Windows.  GNU gettext
  selects a default encoding for the messages it emits in a
  platform-specific manner; it uses the Windows ANSI code page on
  Windows and follows LC_CTYPE on other platforms.  This is
  inconvenient for PostgreSQL server processes, so realize consistent
  cross-platform behavior by calling bind_textdomain_codeset() on
  Windows each time we permanently change LC_CTYPE.  This primarily
  affects SQL_ASCII databases and processes like the postmaster that
  do not attach to a database, making their behavior consistent with
  PostgreSQL on non-Windows platforms.  Messages from SQL_ASCII
  databases use the encoding implied by the database LC_CTYPE, and
  messages from non-database processes use LC_CTYPE from the
  postmaster system environment.  PlatformEncoding becomes unused, so
  remove it.  Make write_console() prefer WriteConsoleW() to write()
  regardless of the encodings in use.  In this situation, write() will
  invariably mishandle non-ASCII characters.  elog.c has assumed that
  messages conform to the database encoding.  While usually true, this
  does not hold for SQL_ASCII and MULE_INTERNAL.  Introduce
  MessageEncoding to track the actual encoding of message text.  The
  present consumers are Windows-specific code for converting messages
  to UTF16 for use in system interfaces.  This fixes the appearance in
  Windows event logs and consoles of translated messages from
  SQL_ASCII processes like the postmaster.  Note that SQL_ASCII
  inherently disclaims a strong notion of encoding, so non-ASCII byte
  sequences interpolated into messages by %s may yet yield a
  nonsensical message.  MULE_INTERNAL has similar problems at present,
  albeit for a different reason: its lack of libiconv support or a
  conversion to UTF8.  Consequently, one need no longer restart
  Windows with a different Windows ANSI code page to broadly test
  backend logging under a given language.  Changing the user's locale
  ("Format") is enough.  Several accounts can simultaneously run
  postmasters under different locales, all correctly logging localized
  messages to Windows event logs and consoles.  Alexander Law and Noah

- Initialize pad bytes in GinFormTuple().  Every other core buffer
  page consumer initializes the bytes it furnishes to PageAddItem().
  For consistency, do the same here.  No back-patch; regardless, we
  couldn't count on the fix so long as binary upgrade can carry
  forward affected index builds.

- Document effect of constant folding on CASE.  Back-patch to all
  supported versions.  Laurenz Albe

- Cooperate with the Valgrind instrumentation framework.  Valgrind
  "client requests" in aset.c and mcxt.c teach Valgrind and its
  Memcheck tool about the PostgreSQL allocator.  This makes Valgrind
  roughly as sensitive to memory errors involving palloc chunks as it
  is to memory errors involving malloc chunks.  Further client
  requests in PageAddItem() and printtup() verify that all bits being
  added to a buffer page or furnished to an output function are
  predictably-defined.  Those tests catch failures of C-language
  functions to fully initialize the bits of a Datum, which in turn
  stymie optimizations that rely on _equalConst().  Define the
  USE_VALGRIND symbol in pg_config_manual.h to enable these additions.
  An included "suppression file" silences nominal errors we don't plan
  to fix.  Reviewed in earlier versions by Peter Geoghegan and Korry

- Refactor aset.c and mcxt.c in preparation for Valgrind cooperation.
  Move some repeated debugging code into functions and store
  intermediates in variables where not presently necessary.  No
  code-generation changes in a production build, and no functional
  changes.  This simplifies and focuses the main patch.

- Permit super-MaxAllocSize allocations with MemoryContextAllocHuge().
  The MaxAllocSize guard is convenient for most callers, because it
  reduces the need for careful attention to overflow, data type
  selection, and the SET_VARSIZE() limit.  A handful of callers are
  happy to navigate those hazards in exchange for the ability to
  allocate a larger chunk.  Introduce MemoryContextAllocHuge() and
  repalloc_huge().  Use this in tuplesort.c and tuplestore.c, enabling
  internal sorts of up to INT_MAX tuples, a factor-of-48 increase.  In
  particular, B-tree index builds can now benefit from much-larger
  maintenance_work_mem settings.  Reviewed by Stephen Frost, Simon
  Riggs and Jeff Janes.

Robert Haas pushed:

- pgbench: Add long options for all existing short options.  Fabien
  Coelho, reviewed by Fabrízio de Royes Mello, with some further
  changes by me

- pgbench: Fix inadvertent inconsistency in help message.  Per report
  from Fujii Masao.

- Define Trap and TrapMacro even in non-cassert builds.  In some
  cases, the use of these macros may be preferable to Assert() or
  AssertMacro(), since this way the caller can set the trap message.
  Andres Freund and Robert Haas

- Make the OVER keyword unreserved.  This results in a slightly less
  specific error message when OVER is used in a context where we don't
  accept window functions, but per discussion, it's worth it to get
  the benefit of not needing to reserve this keyword any more.  This
  same refactoring will also let us avoid reserving some other
  keywords that we expect to add in upcoming patches (specifically,
  IGNORE, RESPECT, and FILTER).  Troels Nielsen, with minor changes by

Tom Lane pushed:

- Tweak wording in sequence-function docs to avoid PDF build failures.
  Adjust the wording in the first para of "Sequence Manipulation
  Functions" so that neither of the link phrases in it break across
  line boundaries, in either A4- or US-page-size PDF output.  This
  fixes a reported build failure for the 9.3beta2 A4 PDF docs, and
  future-proofs this particular para against causing similar problems
  in future.  (Perhaps somebody will fix this issue in the SGML/TeX
  documentation tool chain someday, but I'm not holding my breath.)
  Back-patch to all supported branches, since the same problem could
  rise up to bite us in future updates if anyone changes anything
  earlier than this in func.sgml.

- Expect EWOULDBLOCK from a non-blocking connect() call only on
  Windows.  On Unix-ish platforms, EWOULDBLOCK may be the same as
  EAGAIN, which is *not* a success return, at least not on Linux.  We
  need to treat it as a failure to avoid giving a misleading error
  message.  Per the Single Unix Spec, only EINPROGRESS and EINTR
  returns indicate that the connection attempt is in progress.  On
  Windows, on the other hand, EWOULDBLOCK (WSAEWOULDBLOCK) is the
  expected case.  We must accept EINPROGRESS as well because Cygwin
  will return that, and it doesn't seem worth distinguishing Cygwin
  from native Windows here.  It's not very clear whether EINTR can
  occur on Windows, but let's leave that part of the logic alone in
  the absence of concrete trouble reports.  Also, remove the test for
  errno == 0, effectively reverting commit
  da9501bddb42222dc33c031b1db6ce2133bcee7b, which AFAICS was just a
  thinko; or at best it might have been a workaround for a
  platform-specific bug, which we can hope is gone now thirteen years
  later.  In any case, since libpq makes no effort to reset errno to
  zero before calling connect(), it seems unlikely that that test has
  ever reliably done anything useful.  Andres Freund and Tom Lane

- Mark index-constraint comments with correct dependency in pg_dump.
  When there's a comment on an index that was created with UNIQUE or
  PRIMARY KEY constraint syntax, we need to label the comment as
  depending on the constraint not the index, since only the constraint
  object actually appears in the dump.  This incorrect dependency can
  lead to parallel pg_restore trying to restore the comment before the
  index has been created, per bug #8257 from Lloyd Albin.  This patch
  fixes pg_dump to produce the right dependency in dumps made in the
  future.  Usually we also try to hack pg_restore to work around bogus
  dependencies, so that existing (wrong) dumps can still be restored
  in parallel mode; but that doesn't seem practical here since there's
  no easy way to relate the constraint dump entry to the comment after
  the fact.  Andres Freund

Michael Meskes pushed:

- Fixed incorrect description of EXEC SQL VAR command.  Thanks to
  MauMau  for finding and fixing this.

Heikki Linnakangas pushed:

- Track spinlock delay in microsecond granularity.  On many platforms
  the OS will round the sleep time to millisecond resolution, but
  there is no reason for us to pre-emptively round the argument to
  pg_usleep.  When the delay was measured in milliseconds and started
  from 1 ms, it sometimes took many attempts until the logic that
  increases the delay by multiplying with a random value between 1 and
  2 actually managed to bump it from 1 ms to 2 ms. That lead to a
  sequence of 1 ms waits until the delay started to increase. This
  wasn't really a problem but it looked odd if you observed the waits.
  There is no measurable difference in performance, but it's more
  readable this way.  Jeff Janes

- Inline ginCompareItemPointers function for speed.
  ginCompareItemPointers function is called heavily in gin index scans
  - inlining it speeds up some kind of queries a lot.

Bruce Momjian pushed:

- pg_upgrade:  change -u to -U, for consistency.  Change -u (user)
  option to -U, for consistency with other tools like pg_dump and
  psql.  Also expand --user to --username, again for consistency.

- pg_upgrade:  trim down --help and doc option descriptions.  Previous
  code had old/new prefixes on option values, e.g.
  --old-datadir=OLDDATADIR.  Remove them, for simplicity;  now:
  --old-datadir=DATADIR.  Also update docs to do the same.

- pg_upgrade:  remove -h option.  -h (help) is not needed;  pg_upgrade
  already supports --help and -?, which is consistent with other

- pg_upgrade:  pass username to analyze script.  If -U (user) is
  specified, pass the username into the created analyze script.  Per
  request from Ray Stell

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Laurenz Albe sent in another revision of a patch to document some
portability issues and approaches to same using floating point

Dean Rasheed sent in another revision of a patch to implement WITH
CHECK OPTION for updateable views.

Andres Freund and Fabien COELHO traded patches to implement CREATE

Alvaro Herrera sent in another revision of a patch to remove unused

Amit Kapila sent in another revision of a patch to implement ALTER
SYSTEM to change GUC variables durably across restarts of the
PostgreSQL server.

Rushabh Lathia and Pavel Stehule traded patches to allow access to the
call stack in PL/pgsql's SET DIAGNOSTICS statement.

Dimitri Fontaine sent in another revision of a patch to implement
EXTENSION templates.

Andres Freund sent in another revision of a patch to help with
generating logical changesets in WAL.

Joe Conway sent in two more revisions of a patch to add
Levenshtein-Demerau distance to fuzzystrmatch.

Alexander Korotkov and Heikki Linnakangas traded patches to add some
helpful information to GIN indexes.

Alexander Korotkov sent in another revision of a patch to do fast
scans on GIN indexes.

Alexander Korotkov and Heikki Linnakangas traded patches to optimize
ordering in a GIN index.

Michael Paquier sent in three more revisions of a patch to implement

Nicholas White sent in seven more revisions of a patch to implement
IGNORE NULLS in windowing functions.

Mark Wong sent in another revision of a patch to add an
SPI_gettypmod() function to return a field's typemod from a TupleDesc.

Heikki Linnakangas and Amit Kapila traded patches to improve the pglz
compressor's performance.

Kyotaro HORIGUCHI sent in two more revisions of a patch to reduce the
maximum error in tuple estimation after a VACUUM.

Josh Kupershmidt sent in another revision of a patch to fix some
misbehavior of pg_ctl with relative paths.

Heikki Linnakangas sent in another revision of a patch to improve the
checkpoint IO scheduler for stable transaction responses.

Pavel Stehule sent in another revision of a patch to add some new
error fields to PL/pgsql.

Szymon Guz, Ronan Deklau, and Steve Singer traded patches to fix
conversion for Decimal arguments in plpython functions.

Robins Tharakan sent in another revision of a patch to add more
regression tests for DDL affecting databases themselves (ALTER
DATABASE, e.g.).

Cedric Villemain sent in another revision of a patch to make VPATH
builds work better.

Peter Eisentraut sent in another revision of a patch to revive the
line type.

Kevin Grittner sent in another revision of a patch to allow for
refreshing materialized views concurrently.

Heikki Linnakangas sent in another revision of a patch to scale xlog
inserts better.

Fabien COELHO sent in two more revisions of a patch to add --progress
to pgbench.

Jeff Davis sent in another revision of a patch to teach pg_filedump
about page checksums.

Pavel Stehule sent in two more revisions of a patch to change the ANY
variadic elements to array in PL/pgsql.

Andres Freund sent in another revision of a patch to enable extensible
external toast tuple support.

Robert Haas sent in two more revisions of a patch to implement MVCC
access to the calalog.

Fabien COELHO sent in another revision of a patch to implement pgbench

Ian Link sent in another revision of a patch to add a query result
history on demand to psql.

Robins Tharakan sent in another revision of a patch to add regression

Bruce Momjian sent in a patch to add a way to get timezone offsets
from UTC with to_char().

Bruce Momjian sent in another revision of a patch to make pg_ctl
promote status more in line with the LSB standards for same.

Gilles Darold sent in a patch to make psql's \pset without arguments
dump out the currently set psql variables: name and content.

David Fetter sent in two more revisions of a patch to add

Fabien COELHO sent in two revisions of a patch to add another
regression test suite which is fuller but more time-consuming.

Gurjeet Singh sent in two more revisions of a patch to make AND/OR
lists more efficient.

David Fetter sent in another revision of a patch to add FILTER for
aggregates per the SQL spec.

David Fetter sent in another revision of a patch to add a WITH
ORDINALITY option for calls to set-returning functions.

Jon Nelson, Jeff Davis, and Greg Smith traded patches to fallocate /
posix_fallocate for new WAL file creation when those functions are

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