== 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.
Early Bird registration:
== 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(at)fetter(dot)org, German language
to pwn(at)pgug(dot)de, Italian language to pwn(at)itpug(dot)org(dot) Spanish language
== 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
- 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
- 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
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
== 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
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
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 Hagander||Date: 2013-04-02 15:19:45|
|Subject: PostgreSQL Conference Europe 2013 - date and location|
|Previous:||From: Selena Deckelmann||Date: 2013-03-28 23:13:44|
|Subject: Upcoming PostgreSQL Security Release: April 4, 2013|