== PostgreSQL Weekly News - July 24 2011 == - Mailing list pgsql-announce

From David Fetter
Subject == PostgreSQL Weekly News - July 24 2011 ==
Date
Msg-id 20110725052810.GA12109@fetter.org
Whole thread Raw
List pgsql-announce
== PostgreSQL Weekly News - July 24 2011 ==

== PostgreSQL Product News ==

pgbuildfarm client 4.6 released.
https://github.com/PGBuildFarm/client-code

== PostgreSQL Jobs for July ==

http://archives.postgresql.org/pgsql-jobs/2011-07/threads.php

== PostgreSQL Local ==

PGDay Porto Alegre will be on August 19, 2011 in Porto Alegre, RS, Brazil.
http://www.postgresql.org.br/eventos/2011/pgday/rs

Postgres Open 2011, a conference focused on disruption of the database
industry through PostgreSQL, will take place September 14-16, 2011 in
Chicago, Illinois at the Westin Michigan Avenue hotel.
http://postgresopen.org

PG-Day Denver 2011 will be held on Friday, October 21st, 2011 at
the Auraria Campus near downtown Denver, Colorado.
http://pgday.consistentstate.com/

PostgreSQL Conference West (#PgWest) will be held September 27th-30th,
2011 at the San Jose Convention center in San Jose, California, USA.
http://www.postgresqlconference.org

PostgreSQL Conference Europe 2011 will be held on October 18-21 in
Amsterdam.
http://2011.pgconf.eu/

pgbr will be in Sao Paulo, Brazil November 3-4, 2011.
http://pgbr.postgresql.org.br/

PGConf.DE 2011 is the German-speaking PostgreSQL Conference and will
take place on November 11th in the Rheinisches Industriemuseum in
Oberhausen, Germany.  Call for Papers is open.
http://2011.pgconf.de/

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

Robert Haas pushed:

- Add pg_opfamily_is_visible.  We already have similar functions for
  many other object types, including operator classes, so it seems
  like we should have this one, too.  Extracted from a larger patch by
  Josh Kupershmidt
  http://git.postgresql.org/pg/commitdiff/b59d2fe4970e689a50e802960ef0812acaf88221

- Create a "fast path" for acquiring weak relation locks.  When an
  AccessShareLock, RowShareLock, or RowExclusiveLock is requested on
  an unshared database relation, and we can verify that no conflicting
  locks can possibly be present, record the lock in a per-backend
  queue, stored within the PGPROC, rather than in the primary lock
  table.  This eliminates a great deal of contention on the lock
  manager LWLocks.  This patch also refactors the interface between
  GetLockStatusData() and pg_lock_status() to be a bit more abstract,
  so that we don't rely so heavily on the lock manager's internal
  representation details.  The new fast path lock structures don't
  have a LOCK or PROCLOCK structure to return, so we mustn't depend on
  that for purposes of listing outstanding locks.  Review by Jeff
  Davis.
  http://git.postgresql.org/pg/commitdiff/3cba8999b343648c4c528432ab3d51400194e93b

- Avoid index rebuild for no-rewrite ALTER TABLE .. ALTER TYPE.  Noah
  Misch.  Review and minor cosmetic changes by me.
  http://git.postgresql.org/pg/commitdiff/367bc426a1c22b9f6badb06cd41fc438fd034639

- Remove superfluous variable.  Reported by Peter Eisentraut.
  http://git.postgresql.org/pg/commitdiff/cdd61237d6265fa355afa772ca3eee39e4905bcb

- Some refinement for the "fast path" lock patch.  1. In
  GetLockStatusData, avoid initializing instance before we've ensured
  that the array is large enough.  Otherwise, if repalloc moves the
  block around, we're hosed.  2. Add the word "Relation" to the name
  of some identifiers, to avoid assuming that the fast-path mechanism
  will only ever apply to relations (though these particular parts
  certainly will).  Some of the macros could possibly use similar
  treatment, but the names are getting awfully long already.  3. Add a
  missing word to comment in AtPrepare_Locks().
  http://git.postgresql.org/pg/commitdiff/8e5ac74c1249820ca55481223a95b9124b4a4f95

- Minor improvement to pg_seclabel documentation.  This is a bit more
  consistent with the way pg_description is documented, and also
  include a useful cross-link.
  http://git.postgresql.org/pg/commitdiff/550cd074f9436c0500c1718e792d3d72a304bf8b

- Improve sepgsql and SECURITY LABEL documentation.  KaiGai Kohei,
  based on feedback from Yeb Havinga, with some corrections by me.
  http://git.postgresql.org/pg/commitdiff/d79a601fd9ec59772395d16b33fe79296021a350

- Support SECURITY LABEL on databases, tablespaces, and roles.  This
  requires a new shared catalog, pg_shseclabel.  Along the way, fix
  the security_label regression tests so that they don't monkey with
  the labels of any pre-existing objects.  This is unlikely to matter
  in practice, since only the label for the "dummy" provider was being
  manipulated.  But this way still seems cleaner.  KaiGai Kohei, with
  fairly extensive hacking by me.
  http://git.postgresql.org/pg/commitdiff/463f2625a5fb183b6a8925ccde98bb3889f921d9

- Unbreak unlogged tables.  I broke this in commit
  5da79169d3e9f0fab47da03318c44075b3f824c5, which was obviously
  insufficiently well tested.  Add some regression tests in the hope
  of making future slip-ups more likely to be noticed.
  http://git.postgresql.org/pg/commitdiff/6f1be5a67a758499beab0082b6e63b3040913268

Peter Eisentraut pushed:

- Remove claim that the project is not represented in the SQL working
  group We have a few people involved there now.
  http://git.postgresql.org/pg/commitdiff/7ed8f6c517ba6bada6bfb9a4dd4216e3b97bc2ba

- Note that information_schema.sql_languages was removed in SQL:2008
  http://git.postgresql.org/pg/commitdiff/3835855589d8fe8bd5ea0fa51a5a539756223612

- Put inline declaration before return type.  gcc -Wextra complains
  that the other way around is obsolescent, and this was the only
  place where it was written in this order.
  http://git.postgresql.org/pg/commitdiff/bf6be7af2532da6674dcb9335c0953044a787427

- Change debug message from ereport to elog
  http://git.postgresql.org/pg/commitdiff/30f854537d0d2e9220976fe7016c909daabea612

- Fix typo
  http://git.postgresql.org/pg/commitdiff/6307fff3586294214e3f256035b82bbba9a9054a

- Change EDITOR_LINENUMBER_SWITCH to an environment variable.  Also
  change "switch" to "arg" because "switch" is a bit of a sloppy term.
  So the environment variable is called PSQL_EDITOR_LINENUMBER_ARG.
  Set "+" as hardcoded default value on Unix (since "vi" is the
  hardcoded default editor), so many users won't have to configure
  this at all.  Move the documentation around a bit to centralize the
  editor configuration under environment variables, rather than
  repeating bits of it under every backslash command that invokes an
  editor.
  http://git.postgresql.org/pg/commitdiff/79b3ca06d820032ad84446e0a021b56422172d86

Michael Meskes pushed:

- Made ecpglib write double with a precision of 15 digits.  Patch
  originally by Akira Kurosawa <kurosawa-akira@mxc.nes.nec.co.jp>.
  http://git.postgresql.org/pg/commitdiff/8f8a273c4d2433de57f6f0356f44ab47b7387641

- Adapted expected result for latest change to ecpglib.
  http://git.postgresql.org/pg/commitdiff/3406dd22fdd794d90c75a1272a57db8faa7c826d

Tom Lane pushed:

- Add GET STACKED DIAGNOSTICS plpgsql command to retrieve exception
  info.  This is more SQL-spec-compliant, more easily extensible, and
  better performing than the old method of inventing special
  variables.  Pavel Stehule, reviewed by Shigeru Hanada and David
  Wheeler
  http://git.postgresql.org/pg/commitdiff/3d4890c0c5d27dfdf7d1a8816d7bdcdba3c39d21

- Rewrite libxml error handling to be more robust.  libxml reports
  some errors (like invalid xmlns attributes) via the error handler
  hook, but still returns a success indicator to the library caller.
  This causes us to miss some errors that are important to report.
  Since the "generic" error handler hook doesn't know whether the
  message it's getting is for an error, warning, or notice, stop using
  that and instead start using the "structured" error handler hook,
  which gets enough information to be useful.  While at it, arrange to
  save and restore the error handler hook setting in each libxml-using
  function, rather than assuming we can set and forget the hook.  This
  should improve the odds of working nicely with third-party libraries
  that also use libxml.  In passing, volatile-ize some local variables
  that get modified within PG_TRY blocks.  I noticed this while
  testing with an older gcc version than I'd previously tried to
  compile xml.c with.  Florian Pflug and Tom Lane, with extensive
  review/testing by Noah Misch
  http://git.postgresql.org/pg/commitdiff/cacd42d62cb2ddf32135b151f627780a5509780f

- Ensure that xpath() escapes special characters in string values.
  Without this it's possible for the output to not be legal XML, as
  illustrated by the added regression test cases.  NB: this change
  will need to be called out as an incompatibility in the 9.2 release
  notes, since it's possible somebody was relying on the old behavior,
  even though it's clearly wrong.  Florian Pflug, reviewed by Radoslaw
  Smogura
  http://git.postgresql.org/pg/commitdiff/aaf15e5c1cf8d2c27d2f9841343f00027762cb4e

- Make xpath() do something useful with XPath expressions that return
  scalars.  Previously, xpath() simply returned an empty array if the
  expression did not yield a node set.  This is useless for
  expressions that return scalars, such as one with name() at the top
  level.  Arrange to return the scalar value as a single-element xml
  array, instead.  (String values will be suitably escaped.) This
  change will also cause xpath_exists() to return true, not false, for
  such expressions.  Florian Pflug, reviewed by Radoslaw Smogura
  http://git.postgresql.org/pg/commitdiff/0ce7676aa03a2501fde949fea211ba5cd84c2ded

- Fix PQsetvalue() to avoid possible crash when adding a new tuple.
  PQsetvalue unnecessarily duplicated the logic in pqAddTuple, and
  didn't duplicate it exactly either --- pqAddTuple does not care what
  is in the tuple-pointer array positions beyond the last valid entry,
  whereas the code in PQsetvalue assumed such positions would contain
  NULL.  This led to possible crashes if PQsetvalue was applied to a
  PGresult that had previously been enlarged with pqAddTuple, for
  instance one built from a server query.  Fix by relying on
  pqAddTuple instead of duplicating logic, and not assuming anything
  about the contents of res->tuples[res->ntups].  Back-patch to 8.4,
  where PQsetvalue was introduced.  Andrew Chernow
  http://git.postgresql.org/pg/commitdiff/a9f0dbc39df88ea7672352d3e7070d2603491bec

- Rethink behavior of CREATE OR REPLACE during CREATE EXTENSION.  The
  original implementation simply did nothing when replacing an
  existing object during CREATE EXTENSION.  The folly of this was
  exposed by a report from Marc Munro: if the existing object belongs
  to another extension, we are left in an inconsistent state.  We
  should insist that the object does not belong to another extension,
  and then add it to the current extension if not already a member.
  http://git.postgresql.org/pg/commitdiff/988cccc620dd8c16d77f88ede167b22056176324

- Use OpenSSL's SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER flag.  This
  disables an entirely unnecessary "sanity check" that causes failures
  in nonblocking mode, because OpenSSL complains if we move or compact
  the write buffer.  The only actual requirement is that we not modify
  pending data once we've attempted to send it, which we don't.  Per
  testing and research by Martin Pihlak, though this fix is a lot
  simpler than his patch.  I put the same change into the backend,
  although it's less clear whether it's necessary there.  We do use
  nonblock mode in some situations in streaming replication, so seems
  best to keep the same behavior in the backend as in libpq.
  Back-patch to all supported releases.
  http://git.postgresql.org/pg/commitdiff/d0c23026b2499ba9d6797359241ade076a5a677d

- Improve libpq's error reporting for SSL failures.  In many cases,
  pqsecure_read/pqsecure_write set up useful error messages, which
  were then overwritten with useless ones by their callers.  Fix this
  by defining the responsibility to set an error message to be
  entirely that of the lower-level function when using SSL.
  Back-patch to 8.3; the code is too different in 8.2 to be worth the
  trouble.
  http://git.postgresql.org/pg/commitdiff/fee476da952a1f02f7ccf6e233fb4824c2bf6af4

- Fix previous patch so it also works if not USE_SSL (mea culpa).  On
  balance, the need to cover this case changes my mind in favor of
  pushing all error-message generation duties into the two fe-secure.c
  routines.  So do it that way.
  http://git.postgresql.org/pg/commitdiff/bcf23ba4bf8323f875168c5dbc93265a140753e8

Simon Riggs pushed:

- Cascading replication feature for streaming log-based replication.
  Standby servers can now have WALSender processes, which can work
  with either WALReceiver or archive_commands to pass data.  Fully
  updated docs, including new conceptual terms of sending server,
  upstream and downstream servers.  WALSenders terminated when promote
  to master.  Fujii Masao, review, rework and doc rewrite by Simon
  Riggs
  http://git.postgresql.org/pg/commitdiff/5286105800c7d5902f98f32e11b209c471c0c69c

- Introduce sending servers as new category for replication params.
  Fujii Masao
  http://git.postgresql.org/pg/commitdiff/4bd8ed31b76fde16ee00c123751e25019e4d9854

- Minor doc additions for cascading replication.
  http://git.postgresql.org/pg/commitdiff/6ba77bce9378cb9c5fb89a4d30bf77c2a17b0d64

- Remove O(N^2) performance issue with multiple SAVEPOINTs.
  Subtransaction locks now released en masse at main commit, rather
  than repeatedly re-scanning for locks as we ascend the nested
  transaction tree.  Split transaction state TBLOCK_SUBEND into two
  states, TBLOCK_SUBCOMMIT and TBLOCK_SUBRELEASE to allow the commit
  path to be optimised using the existing code in
  ResourceOwnerRelease() which appears to have been intended for this
  usage, judging from comments therein.
  http://git.postgresql.org/pg/commitdiff/7cb7122800ec996d4849ce9b4ad3065db19a2aae

Alvaro Herrera pushed:

- Add expected regress output on stricter isolation levels.  These new
  files allow the new FK tests on isolationtester to pass on the
  serializable and repeatable read isolation levels (which are
  untested by the buildfarm).  Author: Kevin Grittner Reviewed by Noah
  Misch
  http://git.postgresql.org/pg/commitdiff/a0eae1a2eeb6c0e9deffeccad2f9921d8e561fb5

- Make isolationtester more robust on locked commands.  Noah Misch
  diagnosed the buildfarm problems in the isolation tests partly as
  failure to differentiate backends properly; the old code was using
  backend IDs, which is not good enough because a new backend might
  use an already used ID.  Use PIDs instead.  Also, the code was
  purposely careless about other concurrent activity, because it isn't
  expected; and in fact, it doesn't affect the vast majority of the
  time.  However, it can be observed that autovacuum can block tables
  for long enough to cause sporadic failures.  The new code accounts
  for that by ignoring locks held by processes not explicitly declared
  in our spec file.  Author: Noah Misch
  http://git.postgresql.org/pg/commitdiff/c8dfc892327b1a1e14efe110b0f1f267ef56c7a9

- Increase deadlock_timeout to 100ms in FK isolation tests.  The
  previous value of 20ms is dangerously close to the time actually
  spent just waiting for the deadlock to happen, so on occasion it
  causes the test to fail simply because the other session didn't get
  to run early enough, not managing to cause the deadlock that needs
  to be detected.  With this new value, it's expected that most
  machines on normal load will be able to pass the test.  Author: Noah
  Misch
  http://git.postgresql.org/pg/commitdiff/d6db0e4e0e382cd5683a767424d05a0361af232a

Bruce Momjian pushed:

- In pg_upgrade, use pg_strudup(), for consistency.
  http://git.postgresql.org/pg/commitdiff/6b43fddee4cbc1bca71546e15e898d19bee7bcb1

- In pg_upgrade, fix the -l/log option to work on Windows.  Also,
  double-quote the log file name in all places, to allow (on all
  platforms) log file names with spaces.  Back patch to 9.0 and 9.1.
  http://git.postgresql.org/pg/commitdiff/17a16eeb7c4fd0c6dce80521247a20d76706b2bb

- In pg_upgrade, add C comment about why we don't try to do shared
  file writes for logging.
  http://git.postgresql.org/pg/commitdiff/43aa40e1551b9e8d30b376de6d6a9b976ae54332

- In pg_upgrade on Windows, check if the directory is writable by
  actually creating and removing a file because access() doesn't work
  on that platform.  Backpatch to 9.1 where this check was added.
  http://git.postgresql.org/pg/commitdiff/081a5518c0a7dcccfc76a12ae9d593648b68ce53

Andrew Dunstan pushed:

- Unbreak Windows builds broken by EDITOR_LINENUMBER_ARG change.
  http://git.postgresql.org/pg/commitdiff/e399eb74d96270bf1d4a0bb9f4503cac3d90c1e2

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Alexander Korotkov sent in two more revisions of the patch to do fast
GiST index builds.

Peter Eisentraut sent in a patch to allow reporting of hostnames from
pg_hba.conf in error messages.

KaiGai Kohei and Yeb Havinga traded revisions of the patch to create a
userspace access vector cache.

Josh Kupershmidt sent in two more revisions of the patch to allow
psql's \dd to show constraint comments.

Robert Haas sent in another revision of a patch to enable lazy vxid
locks.

Kevin Grittner sent in two revisions of a patch to fix bug 6123.

Robert Haas sent in a patch to eliminate sinval in several places
where it was slowing things down.

Alvaro Herrera sent in a patch to catalog NOT NULL constraints.

Josh Kupershmidt sent in a patch to fix some wrong descriptions in
\d+, and an patch for 8.4 which documents the fact that it's possible
to put comments on index columns.

Hitoshi Harada and Yeb Havinga traded patches to optimize aggregates
in JOINs.

Josh Kupershmidt sent in another revision of the patch to fix describe
comments in psql.

Laurenz Albe sent in a doc patch explaining more about how foreign
data wrappers work from the implementor's point of view.

Florian Pflug sent in a patch, per discussion around a similar issue
in JSON, which changes behavior in cases of non-UTF8-encoded content.

Andrew Dunstan sent in a patch to clean up python usage in the source
code for PL/PythonU.


pgsql-announce by date:

Previous
From: David Fetter
Date:
Subject: == PostgreSQL Weekly News - July 17 2011 ==
Next
From: Boris Kolpackov
Date:
Subject: ODB C++ ORM adds support for PostgreSQL