Skip to content

Wöchentlicher PostgreSQL Newsletter - 05. Juni 2011

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 05. Juni 2011 ==

Die Austin Texas PUG trifft sich am Mittwoch, dem 8. Juni
um 18:30 Uhr. Pizza wird für angemeldete Personen verfügbar
sein. Anmeldung unter austinpug AT postgresql DOT org.
Details unter:

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

devart dotConnect für PostgreSQL, ein
ADO.NET Treiber, ist erschienen.

MyJSQLView 3.29, ein GUI Werkzeug welches mit PostgreSQL verwendet
werden kann, ist erschienen.

PostgreDAC 2.6.3, ein Delphi/C++ Builder für PostgreSQL,
ist erschienen.

Slony-ctl 1.2.0, ein Set von Skripts zum Erstellen und Managen
von Slony Clustern, ist erschienen.

== PostgreSQL Jobs im Juni ==

== PostgreSQL Lokal ==

PG Session 2 über PostGIS findet am 23. Juni in Paris statt.
Der Call for Papers ist jetzt offen.

CHAR(11), die PostgreSQL Konferenz für Clustering, Hochverfügbarkeit
und Replikation hat jetzt die Registrierung eröffnet.
Die Konferenz findet am 11. und 12. Juli 2011 in Cambridge, UK statt.

PostgreSQL Conference China 2011 findet in Guangzhou am
15. und 16. Juli 2011 statt.

PDXPUG hostet PgDay am Sonntag, dem 24. Juli 2011, einen Tag
vor der OSCON in Portland, Oregon, USA. Details hier:

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.

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.

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

Alvaro Herrera pushed:

- Make message more consistent

- Remove usage of &PL_sv_undef in hashes and arrays.  According to
  perlguts, &PL_sv_undef is not the right thing to use in those cases
  because it doesn't behave the same way as an undef value via Perl
  code.  Seems the intuitive way to deal with undef values is subtly
  enough broken that it's hard to notice when misused.  The broken
  uses got inadvertently introduced in commit
  87bb2ade2ce646083f39d5ab3e3307490211ad04 by Alexey Klyukin, Alex
  Hunsaker and myself on 2011-02-17; no backpatch is necessary.  Per
  testing report from Greg Mullane.  Author: Alex Hunsaker

- Fix pg_get_constraintdef to cope with NOT VALID constraints.  This
  case was missed when NOT VALID constraints were first introduced in
  commit 722bf7017bbe796decc79c1fde03e7a83dae9ada by Simon Riggs on
  2011-02-08.  Among other things, it causes pg_dump to omit the NOT
  VALID flag when dumping such constraints, which may cause them to
  fail to load afterwards, if they contained values failing the
  constraint.  Per report from Thom Brown.

Heikki Linnakangas pushed:

- The row-version chaining in Serializable Snapshot Isolation was
  still wrong.  On further analysis, it turns out that it is not
  needed to duplicate predicate locks to the new row version at
  update, the lock on the version that the transaction saw as visible
  is enough.  However, there was a different bug in the code that
  checks for dangerous structures when a new rw-conflict happens.  Fix
  that bug, and remove all the row-version chaining related code.
  Kevin Grittner & Dan Ports, with some comment editorialization by

- SSI comment fixes and enhancements.  Notably, document that the
  conflict-out flag actually means that the transaction has a conflict
  out to a transaction that committed before the flagged transaction.
  Kevin Grittner

Magnus Hagander pushed:

- Don't include local line on platforms without support.  Since we now
  include a sample line for replication on local connections in
  pg_hba.conf, don't include it where local connections aren't
  available (such as on win32).  Also make sure we use authmethodlocal
  and not authmethod on the sample line.

- Refuse "local" lines in pg_hba.conf on platforms that don't support
  it.  This makes the behavior compatible with that of hostssl, which
  also throws an error when there is no SSL support included.

- Don't recommend upgrading to latest available Windows SDK.  We only
  support up to version 7.0, so don't recommend upgrading past it.
  The rest of the documentation around this was already updated, but
  one spot was missed.

Peter Eisentraut pushed:

- Suppress foreign data wrappers and foreign servers in partial dumps.
  This is consistent with the behavior of other global objects such as
  languages and extensions.  Omitting foreign servers also omits the
  respective user mappings.

- Recode non-ASCII characters in source to UTF-8.  For consistency,
  have all non-ASCII characters from contributors' names in the source
  be in UTF-8.  But remove some other more gratuitous uses of
  non-ASCII characters.

- Use entities to encode non-ASCII characters in SGML documentation.
  This has already been the case for the most part; just some cases
  had slipped through.

- Some copy editing of the release notes

- Sort COMMENT synopsis and add more examples.  Josh Kupershmidt

- Truncate id to <=44 characters.  This is the original DocBook SGML
  limit, but apparently most installations have changed it or ignore
  it, which is why few people have run into this problem.  pointed out
  by Brendan Jurd

Tom Lane pushed:

- Fix VACUUM so that it always updates pg_class.reltuples/relpages.
  When we added the ability for vacuum to skip heap pages by
  consulting the visibility map, we made it just not update the
  reltuples/relpages statistics if it skipped any pages.  But this
  could leave us with extremely out-of-date stats for a table that
  contains any unchanging areas, especially for TOAST tables which
  never get processed by ANALYZE.  In particular this could result in
  autovacuum making poor decisions about when to process the table, as
  in recent report from Florian Helmberger.  And in general it's a bad
  idea to not update the stats at all.  Instead, use the previous
  values of reltuples/relpages as an estimate of the tuple density in
  unvisited pages.  This approach results in a "moving average"
  estimate of reltuples, which should converge to the correct value
  over multiple VACUUM and ANALYZE cycles even when individual
  measurements aren't very good.  This new method for updating
  reltuples is used by both VACUUM and ANALYZE, with the result that
  we no longer need the grotty interconnections that caused ANALYZE to
  not update the stats depending on what had happened in the parent
  VACUUM command.  Also, fix the logic for skipping all-visible pages
  during VACUUM so that it looks ahead rather than behind to decide
  what to do, as per a suggestion from Greg Stark.  This eliminates
  useless scanning of all-visible pages at the start of the relation
  or just after a not-all-visible page.  In particular, the first few
  pages of the relation will not be invariably included in the scanned
  pages, which seems to help in not overweighting them in the
  reltuples estimate.  Back-patch to 8.4, where the visibility map was

- Fix portability bugs in use of credentials control messages for peer
  auth.  Even though our existing code for handling credentials
  control messages has been basically unchanged since 2001, it was
  fundamentally wrong: it did not ensure proper alignment of the
  supplied buffer, and it was calculating buffer sizes and message
  sizes incorrectly.  This led to failures on platforms where
  alignment padding is relevant, for instance FreeBSD on 64-bit
  platforms, as seen in a recent Debian bug report passed on by Martin
  Pitt (
  Rewrite to do the message-whacking using the macros specified in RFC
  2292, following a suggestion from Theo de Raadt in that thread.
  Tested by me on Debian/kFreeBSD-amd64; since OpenBSD and NetBSD
  document the identical CMSG API, it should work there too.
  Back-patch to all supported branches.

- Replace use of credential control messages with
  getsockopt(LOCAL_PEERCRED).  It turns out the reason we hadn't found
  out about the portability issues with our credential-control-message
  code is that almost no modern platforms use that code at all; the
  ones that used to need it now offer getpeereid(), which we choose
  first.  The last holdout was NetBSD, and they added getpeereid() as
  of 5.0.  So far as I can tell, the only live platform on which that
  code was being exercised was Debian/kFreeBSD, ie, FreeBSD kernel
  with Linux userland --- since glibc doesn't provide getpeereid(), we
  fell back to the control message code.  However, the FreeBSD kernel
  provides a LOCAL_PEERCRED socket parameter that's functionally
  equivalent to Linux's SO_PEERCRED.  That is both much simpler to use
  than control messages, and superior because it doesn't require
  receiving a message from the other end at just the right time.
  Therefore, add code to use LOCAL_PEERCRED when necessary, and rip
  out all the credential-control-message code in the backend.  (libpq
  still has such code so that it can still talk to pre-9.1 servers ...
  but eventually we can get rid of it there too.)  Clean up related
  autoconf probes, too.  This means that libpq's requirepeer parameter
  now works on exactly the same platforms where the backend supports
  peer authentication, so adjust the documentation accordingly.

- Protect GIST logic that assumes penalty values can't be negative.
  Apparently sane-looking penalty code might return small negative
  values, for example because of roundoff error.  This will confuse
  places like gistchoose().  Prevent problems by clamping negative
  penalty values to zero.  (Just to be really sure, I also made it
  force NaNs to zero.) Back-patch to all supported branches.
  Alexander Korotkov

- Further improvements in pg_ctl's new wait-for-postmaster-start
  logic.  Add a postmaster_is_alive() test to the wait loop, so that
  we stop waiting if the postmaster dies without removing its pidfile.
  Unfortunately this only helps after the postmaster has created its
  pidfile, since until then we don't know which PID to check.  But if
  it never does create the pidfile, we can give up in a relatively
  short time, so this is a useful addition in practice.  Per
  suggestion from Fujii Masao, though this doesn't look very much like
  his patch.  In addition, improve pg_ctl's ability to cope with
  pre-existing pidfiles.  Such a file might or might not represent a
  live postmaster that is going to block our postmaster from starting,
  but the previous code pre-judged the situation and gave up waiting
  immediately.  Now, we will wait for up to 5 seconds to see if our
  postmaster overwrites such a file.  This issue interacts with
  Fujii's patch because we would make the wrong conclusion if we did
  the postmaster_is_alive() test with a pre-existing PID.  All of this
  could be improved if we rewrote start_postmaster() so that it could
  report the child postmaster's PID, so that we'd know a-priori the
  correct PID to test with postmaster_is_alive().  That looks like a
  bit too much change for so late in the 9.1 development cycle,

- Allow hash joins to be interrupted while searching hash table for
  match.  Per experimentation with a recent example, in which
  unreasonable amounts of time could elapse before the backend would
  respond to a query-cancel.  This might be something to back-patch,
  but the patch doesn't apply cleanly because this code was rewritten
  for 9.1.  Given the lack of field complaints I won't bother for now.
  Cédric Villemain

- Implement getpeereid() as a src/port compatibility function.  This
  unifies a bunch of ugly #ifdef's in one place.  Per discussion, we
  only need this where HAVE_UNIX_SOCKETS, so no need to cover Windows.
  Marko Kreen, some adjustment by Tom Lane

- Typo fix.

- Disallow SELECT FOR UPDATE/SHARE on sequences.  We can't allow this
  because such an operation stores its transaction XID into the
  sequence tuple's xmax.  Because VACUUM doesn't process sequences
  (and we don't want it to start doing so), such an xmax value won't
  get frozen, meaning it will eventually refer to nonexistent pg_clog
  storage, and even wrap around completely.  Since the row lock is
  ignored by nextval and setval, the usefulness of the operation is
  highly debatable anyway.  Per reports of trouble with pgpool 3.0,
  which had ill-advisedly started using such commands as a form of
  locking.  In HEAD, also disallow SELECT FOR UPDATE/SHARE on toast
  tables.  Although this does work safely given the current
  implementation, there seems no good reason to allow it.  I refrained
  from changing that behavior in back branches, however.

- Clean up after erroneous SELECT FOR UPDATE/SHARE on a sequence.  My
  previous commit disallowed this operation, but did nothing about
  cleaning up the damage if one had already been done.  With the
  operation disallowed, it's okay to just forcibly clear xmax in a
  sequence's tuple, since any value seen there could not represent a
  live transaction's lock.  So, any sequence-specific operation will
  repair the problem automatically, whether or not the user has
  already seen "could not access status of transaction" failures.

- libpq needs its own copy of src/port/getpeereid ... on some
  platforms, anyway.  Per buildfarm.

- Looks like we can't declare getpeereid on Windows anyway ... for
  lack of the uid_t and gid_t typedefs.  Per buildfarm.

- Handle domains when checking for recursive inclusion of composite
  types.  We need this now because we allow domains over arrays, and
  we'll probably allow domains over composites pretty soon, which
  makes the problem even more obvious.  Although domains over arrays
  also exist in previous versions, this does not need to be
  back-patched, because the coding used in older versions successfully
  "looked through" domains over arrays.  The problem is exposed by not
  treating a domain as having a typelem.  Problem identified by Noah
  Misch, though I did not use his patch, since it would require
  additional work to handle domains over composites that way.  This
  approach is more future-proof.

- Need to list getpeereid.c in .gitignore, too ...

- Fix failure to check whether a rowtype's component types are
  sortable.  The existence of a btree opclass accepting composite
  types caused us to assume that every composite type is sortable.
  This isn't true of course; we need to check if the column types are
  all sortable.  There was logic for this for the case of array
  comparison (ie, check that the element type is sortable), but we
  missed the point for rowtypes.  Per Teodor's report of an ANALYZE
  failure for an unsortable composite type.  Rather than just add some
  more ad-hoc logic for this, I moved knowledge of the issue into
  typcache.c.  The typcache will now only report out array_eq,
  record_cmp, and friends as usable operators if the array or
  composite type will work with those functions.  Unfortunately we
  don't have enough info to do this for anonymous RECORD types; in
  that case, just assume it will work, and take the runtime failure as
  before if it doesn't.  This patch might be a candidate for
  back-patching at some point, but given the lack of complaints from
  the field, I'd rather just test it in HEAD for now.  Note: most of
  the places touched in this patch will need further work when we get
  around to supporting hashing of record types.

- Reset reindex-in-progress state before reverifying an exclusion
  constraint.  This avoids an Assert failure when we try to use
  ordinary index fetches while checking for exclusion conflicts.  Per
  report from Noah Misch.  No need for back-patch because the Assert
  wasn't there before 9.1.

Robert Haas pushed:

- Avoid creating init fork for unlogged indexes when it already
  exists.  Report by Greg Sabino Mullane, diagnosis and preliminary
  patch by Andres Freund, corrections by me.

- Fix vim-induced typo.

Bruce Momjian pushed:

- Use proper SGML doc entities rather than angle-brackets.  Marco

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Magnus Hagander sent in a patch to fix an infelicity in SSL handling
in pg_hba.conf.

Florian Pflug sent in two revisions of a patch to fix a bug in XPATH()
when the expression returns a scalar value.

Heikki Linnakangas sent in a patch to fix an issue with SSI predicate
locking, changing from row to tuple.

Heikki Linnakangas sent in two revisions of a patch to fix some
infelicities in nested CASE-WHEN scoping.

Alvaro Herrera sent in four revisions of a patch to enable CHECK
constraints to be declared as NOT VALID, as FOREIGN KEY ones can now.

Radoslaw Smogura sent in a patch to create BLOBs and attendant

Mark Kirkwood sent in three revisions of a patch to add the ability to
constrain backend temporary file space.

Kevin Grittner sent in a patch to fix some comments in the SSI code.

Teodor Sigaev and Tom Lane traded patches to fix an issue with VACUUM
and composite row types.

Robert Haas sent in two revisions of a patch to clean up

Pavel Stehule sent in another revision of the patch to enhance GET

Andrew Chernow sent in two revisions of a patch to fix an issue in

Kevin Grittner sent in two revisions of a patch to fix an infelicity
in DDL under SSI.

Alexander Korotkov sent in a WIP patch to do a faster GiST index build.

Robert Haas sent in a WIP patch to reduce the overhead of frequent
table locks.

Gurjeet Singh sent in two more revisions of a patch to allow psql to
include files relative to the current file.

Josh Kupershmidt sent in another revision of the patch to allow \dd to
show constraint comments in psql.

Pavel Stehule sent in a WIP patch to add some new diagnostics to


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