Skip to content

Wöchentlicher PostgreSQL Newsletter - 24. Juli 2011

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 24. Juli 2011 ==

== PostgreSQL Produkt Neuigkeiten ==

pgbuildfarm Client 4.6 ist erschienen.

== PostgreSQL Jobs im Juli ==

== PostgreSQL Lokal ==

PGDay Porto Alegre findet am 19. August 19 2011
in Porto Alegre, RS, Brasilien statt.

Postgres Open 2011, eine Konferenz die sich auf den Umbruch der
Datenbankindustrie durch PostgreSQL konzentriert, wird vom 14. bis 16.
September 2011 in Chicago, Illinois im Westin Michigan Avenue
Hotel stattfinden.

PG-Day Denver 2011 findet am Freitag, dem 21. Oktober 2011 auf dem
Auraria Campus in der Nähe von Downtown Denver, Colorado statt.

PostgreSQL Conference West (#PgWest) findet vom 27. bis 30. September
2011 im San Jose Convention Center in Jan Jose, Kalifornen, USA statt.

PostgreSQL Conference Europe 2011 findet vom 18. bis
21. Oktober in Amsterdam statt.

pgbr findet in Sao Paulo, Brazilien, am 3. und 4. November 2011 statt.

PGConf.DE 2011 ist die Deutschsprachige PostgreSQL Konferenz
und wird am 11. November 2011 im Rheinischen Industriemuseum
in Oberhausen, Deutschland, stattfinden. Der Call for Papers ist offen.

== PostgreSQL in den News ==

Planet PostgreSQL:

Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David Fetter.

Sende Neuigkeiten und Ankündigungen bis Sonntag, 15 Uhr Pazifischer
Zeit. Bitte sende englische Beiträge an, deutsche an, italienische an, spanische an

== Reviews ==

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

- 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

- Avoid index rebuild for no-rewrite ALTER TABLE .. ALTER TYPE.  Noah
  Misch.  Review and minor cosmetic changes by me.

- Remove superfluous variable.  Reported by Peter Eisentraut.

- 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().

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

- Improve sepgsql and SECURITY LABEL documentation.  KaiGai Kohei,
  based on feedback from Yeb Havinga, with some corrections by me.

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

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

Peter Eisentraut pushed:

- Remove claim that the project is not represented in the SQL working
  group We have a few people involved there now.

- Note that information_schema.sql_languages was removed in SQL:2008

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

- Change debug message from ereport to elog

- Fix typo

- 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

Michael Meskes pushed:

- Made ecpglib write double with a precision of 15 digits.  Patch
  originally by Akira Kurosawa <>.

- Adapted expected result for latest change to ecpglib.

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

- 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

- 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

- 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

- 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

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

  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.

- 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

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

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

- Introduce sending servers as new category for replication params.
  Fujii Masao

- Minor doc additions for cascading replication.

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

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

- 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

- 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

Bruce Momjian pushed:

- In pg_upgrade, use pg_strudup(), for consistency.

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

- In pg_upgrade, add C comment about why we don't try to do shared
  file writes for logging.

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

Andrew Dunstan pushed:

- Unbreak Windows builds broken by EDITOR_LINENUMBER_ARG change.

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

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

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.


No Trackbacks


Display comments as Linear | Threaded

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Form options