Skip site navigation (1) Skip section navigation (2)

== PostgreSQL Weekly News - March 31 2013 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - March 31 2013 ==
Date: 2013-04-01 04:15:12
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-announce
== PostgreSQL Weekly News - March 31 2013 ==

The PostgreSQL Project will be releasing a security update for all supported
versions on Thursday April 4th, 2013. This release will include a fix for a
high-exposure security vulnerability. All users are strongly urged to apply the
update as soon as it is available.

== PostgreSQL Jobs for March ==

== PostgreSQL Local ==

PGCon 2013 will be held May 23-24 2013, in Ottawa at the University of

The 6th annual "Prague PostgreSQL Developers Day" conference,
organized by CSPUG (Czech and Slovak PostgreSQL Users Group), will be
held on May 30, 2013 at Faculty of Mathematics and Physics, Charles
University (Malostranske namesti 25, Prague).  The CfP is open until
April 14, 2013 <info AT p2d2 DOT cz>.  More information in Czech is at

PG Day France is the major French-speaking PostgreSQL community event.
It will be held June 13, 2013 in Nantes, France.

The CfPs for Char(13) and PGday UK, July 11 and 12, 2013,
respectively, are out and close April 19, 2013.  For Char(13), write
speakers AT char13 DOT info; for PGday UK, speakers AT
postgresqlusergroup DOT org DOT uk.

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

Save The Date!
Postgres Open 2013 will be in Chicago, IL, USA, September 16-18.
    Hotel Sax:
    Early Bird registration:

== PostgreSQL in the News ==

Planet PostgreSQL:

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(at)fetter(dot)org, German language
to pwn(at)pgug(dot)de, Italian language to pwn(at)itpug(dot)org(dot)  Spanish language
to pwn(at)arpug(dot)com(dot)ar(dot)

== Applied Patches ==

Heikki Linnakangas pushed:

- Add missing #include.  time(2) requires time.h.

- In base backup, only include our own tablespace version directory.
  If you have clusters of different versions pointing to the same
  tablespace location, we would incorrectly include all the data
  belonging to the other versions, too.  Fixes bug #7986, reported by
  Sergey Burladyan.

- Make pg_basebackup work with pre-9.3 servers, and add server version
  check.  A new 'starttli' field was added to the response of
  BASE_BACKUP command.  Make pg_basebackup tolerate the case that it's
  missing, so that it still works with older servers.  Add an explicit
  check for the server version, so that you get a nicer error message
  if you try to use it with a pre-9.1 server.  The streaming protocol
  message format changed in 9.3, so -X stream still won't work with
  pre-9.3 servers. I added a version check to ReceiveXLogStream()
  earlier, but write that slightly differently, so that in 9.4, it
  will still work with a 9.3 server. (In 9.4, the error message needs
  to be adjusted to "9.3 or above", though). Also, if the version
  check fails, don't retry.

- Add PF_PRINTF_ATTRIBUTE to on_exit_msg_fmt.  Per warning from

- Get rid of obsolete parse_version helper function.  For getting the
  server's version in numeric form, use PQserverVersion().  It does
  the exact same parsing as dumputils.c's parse_version(), and has
  been around in libpq for a long time. For the client's version, just
  use the PG_VERSION_NUM constant.

- Fix pg_dump against 9.1/9.2 servers.  The parallel pg_dump patch
  forgot to add relpages column to 9.1/9.2 version of the getTables()
  query.  Reported by Bernd Helmle.

- Move some pg_dump function around.  Move functions used only by
  pg_dump and pg_restore from dumputils.c to a new file,
  pg_backup_utils.c. dumputils.c is linked into psql and some programs
  in bin/scripts, so it seems good to keep it slim. The parallel
  functionality is moved to parallel.c, as is exit_horribly, because
  the interesting code in exit_horribly is parallel-related.  This
  refactoring gets rid of the on_exit_msg_func function pointer. It
  was problematic, because a modern gcc version with
  -Wmissing-format-attribute complained if it wasn't marked with
  PF_PRINTF_ATTRIBUTE, but the ancient gcc version that Tom Lane's old
  HP-UX box has didn't accept that attribute on a function pointer,
  and gave an error. We still use a similar function pointer trick for
  getLocalPQBuffer() function, to use a thread-local version of that
  in parallel mode on Windows, but that dodges the problem because it
  doesn't take printf-like arguments.

- Fix buffer pin leak in heap update redo routine.  In a heap update,
  if the old and new tuple were on different pages, and the new page
  no longer existed (because it was subsequently truncated away by
  vacuum), heap_xlog_update forgot to release the pin on the old
  buffer.  This bug was introduced by the "Fix multiple problems in
  WAL replay" patch, commit 3bbf668de9f1bc172371681e80a4e769b6d014c8
  (on master branch).  With full_page_writes=off, this triggered an
  "incorrect local pin count" error later in replay, if the old page
  was vacuumed.  This fixes bug #7969, reported by Yunong Xiao.
  Backpatch to 9.0, like the commit that introduced this bug.

Andrew Dunstan pushed:

- Fix a small logic bug in adjusted parallel restore code.

- Add new JSON processing functions and parser API.  The JSON parser
  is converted into a recursive descent parser, and exposed for use by
  other modules such as extensions. The API provides hooks for all the
  significant parser event such as the beginning and end of objects
  and arrays, and providing functions to handle these hooks allows for
  fairly simple construction of a wide variety of JSON processing
  functions. A set of new basic processing functions and operators is
  also added, which use this API, including operations to extract
  array elements, object fields, get the length of arrays and the set
  of keys of a field, deconstruct an object into a set of key/value
  pairs, and create records from JSON objects and arrays of objects.
  Catalog version bumped.  Andrew Dunstan, with some documentation
  assistance from Merlin Moncure.

- Fix page title for JSON Functions and Operators.

- Avoid moving data directory in upgrade testing.  Windows sometimes
  gets upset if we rename a large directory and then try to use the
  old name quickly, as seen in occasional buildfarm failures.  So we
  avoid that by building the old version in the intended destination
  in the first place instead of renaming it, similar to the change
  made for the same reason in commit b7f8465c.

Tom Lane pushed:

- Ignore invalid indexes in pg_dump.  Dumping invalid indexes can
  cause problems at restore time, for example if the reason the index
  creation failed was because it tried to enforce a uniqueness
  condition not satisfied by the table's data.  Also, if the index
  creation is in fact still in progress, it seems reasonable to
  consider it to be an uncommitted DDL change, which pg_dump wouldn't
  be expected to dump anyway.  Back-patch to all active versions, and
  teach them to ignore invalid indexes in servers back to 8.2, where
  the concept was introduced.  Michael Paquier

- Fix grammatical errors in some new message strings.  Daniele

- Reset OpenSSL randomness state in each postmaster child process.
  Previously, if the postmaster initialized OpenSSL's PRNG (which it
  will do when ssl=on in postgresql.conf), the same pseudo-random
  state would be inherited by each forked child process.  The problem
  is masked to a considerable extent if the incoming connection uses
  SSL encryption, but when it does not, identical pseudo-random state
  is made available to functions like contrib/pgcrypto.  The process's
  PID does get mixed into any requested random output, but on most
  systems that still only results in 32K or so distinct random
  sequences available across all Postgres sessions.  This might allow
  an attacker who has database access to guess the results of "secure"
  operations happening in another session.  To fix, forcibly reset the
  PRNG after fork().  Each child process that has need for random
  numbers from OpenSSL's generator will thereby be forced to go
  through OpenSSL's normal initialization sequence, which should
  provide much greater variability of the sequences.  There are other
  ways we might do this that would be slightly cheaper, but this
  approach seems the most future-proof against SSL-related code
  changes.  This has been assigned CVE-2013-1900, but since the issue
  and the patch have already been publicized on pgsql-hackers, there's
  no point in trying to hide this commit.  Back-patch to all supported
  branches.  Marko Kreen

- Avoid "variable might be clobbered by longjmp" warning.  On
  older-model gcc, the original coding of UTILITY_BEGIN_QUERY() can
  draw this error because of multiple assignments to _needCleanup.
  Rather than mark that variable volatile, we can suppress the warning
  by arranging to have just one unconditional assignment before

- Update time zone data files to tzdata release 2013b.  DST law
  changes in Chile, Haiti, Morocco, Paraguay, some Russian areas.
  Historical corrections for numerous places.

- Draft release notes for 9.2.4, 9.1.9, 9.0.13, 8.4.17.  Covers
  commits through today.  Not back-patching into back branches yet,
  since this is just for people to review in advance.

- Must check indisready not just indisvalid when dumping from 9.2
  server.  9.2 uses a kluge representation of "indislive"; we have to
  account for that when examining pg_index.  Simplest solution is to
  check indisready for 9.0 and 9.1 as well; that's harmless though
  unnecessary, so it's not worth making a version distinction for.
  Fixes oversight in commit 683abc73dff549e94555d4020dae8d02f32ed78b,
  as noted by Andres Freund.

- Document encode(bytea, 'escape')'s behavior correctly.  I changed
  this in commit fd15dba543247eb1ce879d22632b9fdb4c230831, but missed
  the fact that the SGML documentation of the function specified
  exactly what it did.  Well, one of the two places where it's
  specified documented that --- probably I looked at the other place
  and thought nothing needed to be done.  Sync the two places where
  encode() and decode() are described.

- Improve code documentation about "magnetic disk" storage manager.
  The modern incarnation of md.c is by no means specific to magnetic
  disk technology, but every so often we hear from someone who's
  misled by the label.  Try to clarify that it will work for anything
  that supports standard filesystem operations.  Per suggestion from
  Andrew Dunstan.

- Ignore extra subquery outputs in set_subquery_size_estimates().  In
  commit 0f61d4dd1b4f95832dcd81c9688dac56fd6b5687, I added code to
  copy up column width estimates for each column of a subquery.  That
  code supposed that the subquery couldn't have any output columns
  that didn't correspond to known columns of the current query level
  --- which is true when a query is parsed from scratch, but the
  assumption fails when planning a view that depends on another view
  that's been redefined (adding output columns) since the upper view
  was made.  This results in an assertion failure or even a crash, as
  per bug #8025 from lindebg.  Remove the Assert and instead skip the
  column if its resno is out of the expected range.

- Update release notes for changes through today.

Robert Haas pushed:

- sepgsql: Support for new post-ALTER access hook.  KaiGai Kohei

- Allow sepgsql labels to depend on object name.  The main change here
  is to call security_compute_create_name_raw() rather than
  security_compute_create_raw().  This ups the minimum requirement for
  libselinux from 2.0.99 to 2.1.10, but it looks like most
  distributions will have picked that up before 9.3 is out.  KaiGai

- sepgsql: Documentation improvements.  Fixes by me, per griping by
  Thom Brown.

Simon Riggs pushed:

- Allow external recovery_config_directory If required, recovery.conf
  can now be located outside of the data directory.  Server needs
  read/write permissions on this directory.

- Set recovery_config_directory for EXEC_BACKEND.  Remove comment
  questioning whether this is necessary for DataDir.  From buildfarm
  failures on Windows.

- Revoke bc5334d8679c428a709d150666b288171795bd76

- Revoke 7a5a59d378e052618d6feae64d1d2b4f2ad6f9bc

Kevin Grittner pushed:

- Fix pasto which broke docs build.  Commit
  bc5334d8679c428a709d150666b288171795bd76 accidentally included a
  second <variablelist> tag for a new list item.

Alvaro Herrera pushed:

- Add sql_drop event for event triggers.  This event takes place just
  before ddl_command_end, and is fired if and only if at least one
  object has been dropped by the command.  (For instance, DROP TABLE
  IF EXISTS of a table that does not in fact exist will not lead to
  such a trigger firing).  Commands that drop multiple objects (such
  as DROP SCHEMA or DROP OWNED BY) will cause a single event to fire.
  Some firings might be surprising, such as ALTER TABLE DROP COLUMN.
  The trigger is fired after the drop has taken place, because that
  has been deemed the safest design, to avoid exposing
  possibly-inconsistent internal state (system catalogs as well as
  current transaction) to the user function code.  This means that
  careful tracking of object identification is required during the
  object removal phase.  Like other currently existing events, there
  is support for tag filtering.  To support the new event, add a new
  pg_event_trigger_dropped_objects() set-returning function, which
  returns a set of rows comprising the objects affected by the
  command.  This is to be used within the user function code, and is
  mostly modelled after the recently introduced pg_identify_object()
  function.  Catalog version bumped due to the new function.  Dimitri
  Fontaine and Álvaro Herrera Review by Robert Haas, Tom Lane

Peter Eisentraut pushed:

- ecpg: Parallel make fix.  In some parallel make situations, the
  install-headers target could be called before the installation
  directories are created by installdirs, causing the installation to
  fail.  Fix that by making install-headers depend on installdirs.

- Add pkg-config files for libpq and ecpg libraries.  This will
  hopefully be easier to use than pg_config for users who are already
  used to the pkg-config interface.  It also works better for
  multi-arch installations.  reviewed by Tom Lane

- ecpg: Don't link compatlib with libpq.  It doesn't actually use
  libpq.  But we need to keep libpq in the CPPFLAGS for building,
  because compatlib uses ecpglib.h which uses libpq-fe.h, but we don't
  need to refer to libpq for linking.  reviewed by Tom Lane

Bruce Momjian pushed:

- Remove tab from SGML file.

- pg_upgrade:  don't copy/link files for invalid indexes.  Now that
  pg_dump no longer dumps invalid indexes, per commit
  683abc73dff549e94555d4020dae8d02f32ed78b, have pg_upgrade also skip
  them.  Previously pg_upgrade threw an error if invalid indexes
  existed.  Backpatch to 9.2, 9.1, and 9.0 (where pg_upgrade was added
  to git)

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Amit Kapila sent in another revision of a patch to allow
postgresql.conf values to be changed via SQL.

Joe Conway sent a patch for git master and back-patches for 9.1 and
9.2 to correct situations where pg_dump selectively ignores extension
configuration tables.

Jeff Davis sent in a patch to fix an issue where the page checksum
patch broke the regression tests.

Steve Singer sent in another revision of a patch to fix an issue where
an invalid PGSERVICE setting broke pg_upgrade.

Brendan Jurd sent in another revision of a patch to remove
"zero-dimensional arrays" from the code.

Michael Paquier sent in two more revisions of a patch to add REINDEX

Pavel Stehule sent in another revision of a patch to implement

Heikki Linnakangas sent a patch to document the fact that
pg_basebackup needs to be told specifically about anything located
outside $PGDATA.

Amit Kapila sent in another revision of a patch to improve update
performance by reducing the amount of WAL written for same.

Dickson S. Guedes sent in a patch to fix some examples in the JSON

pgsql-announce by date

Next:From: Magnus HaganderDate: 2013-04-02 15:19:45
Subject: PostgreSQL Conference Europe 2013 - date and location
Previous:From: Selena DeckelmannDate: 2013-03-28 23:13:44
Subject: Upcoming PostgreSQL Security Release: April 4, 2013

Privacy Policy | About PostgreSQL
Copyright © 1996-2018 The PostgreSQL Global Development Group