Skip to content

Wöchentlicher PostgreSQL Newsletter - 29. Mai 2011

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 29. Mai 2011 ==

== PostgreSQL Produkt Neuigkeiten ==

pgmp 1.0, ein Multi-Präzisions Rechensystem für PostgreSQL,
ist auf PGXN erschienen.

== PostgreSQL Jobs im Mai ==

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

Tom Lane pushed:

- Install defenses against overflow in BuildTupleHashTable().  The
  planner can sometimes compute very large values for numGroups, and
  in cases where we have no alternative to building a hashtable, such
  a value will get fed directly to BuildTupleHashTable as its nbuckets
  parameter.  There were two ways in which that could go bad.  First,
  BuildTupleHashTable declared the parameter as "int" but most callers
  were passing "long"s, so on 64-bit machines undetected overflow
  could occur leading to a bogus negative value.  The obvious fix for
  that is to change the parameter to "long", which is what I've done
  in HEAD.  In the back branches that seems a bit risky, though, since
  third-party code might be calling this function.  So for them, just
  put in a kluge to treat negative inputs as INT_MAX.  Second,
  hash_create can go nuts with extremely large requested table sizes
  (notably, my_log2 becomes an infinite loop for inputs larger than
  LONG_MAX/2).  What seems most appropriate to avoid that is to bound
  the initial table size request to work_mem.  This fixes bug #6035
  reported by Daniel Schreiber.  Although the reported case only
  occurs back to 8.4 since it involves WITH RECURSIVE, I think it's a
  good idea to install the defenses in all supported branches.

- Lobotomize typmod check in convert_tuples_by_position, back branches
  only.  convert_tuples_by_position was rejecting attempts to coerce a
  record field with -1 typmod to the same type with a non-default
  typmod.  This is in fact the "correct" thing to do (since we're just
  going to do a type relabeling, not invoke any length-conversion cast
  function); but it results in rejecting valid cases like bug #6020,
  because the source record's tupdesc is built from Params that don't
  have typmod assigned.  Since that's a regression from previous
  versions, which accepted this code, we have to do something about
  it.  In HEAD, I've fixed the problem properly by causing the Params
  to receive the correct typmods; but the potential for incidental
  behavioral changes seems high enough to make it unattractive to make
  the same change in released branches.  (And it couldn't be fixed
  that way in 8.4 anyway...)  Hence this patch just modifies
  convert_tuples_by_position to not complain if either the input or
  the output tupdesc has typmod -1.  This is still a shade tighter
  checking than we did before 9.0, since before that plpgsql failed to
  consider typmods at all when checking record compatibility.
  (convert_tuples_by_position is currently used only by plpgsql, so
  we're not affecting other behavior.) Back-patch to 8.4, since we
  recently back-ported convert_tuples_by_position into that branch.

- Make plpgsql complain about conflicting IN and OUT parameter names.
  The core CREATE FUNCTION code only enforces that IN parameter names
  are non-duplicate, and that OUT parameter names are separately
  non-duplicate.  This is because some function languages might not
  have any confusion between the two.  But in plpgsql, such names are
  all in the same namespace, so we'd better disallow it.  Per a recent
  complaint from Dan S.  Not back-patching since this is a small issue
  and the change could cause unexpected failures if we started to
  enforce it in a minor release.

- Avoid uninitialized bits in the result of QTN2QT().  Found with
  additional valgrind testing.  Noah Misch

- Adjust configure's probe for libselinux so it rejects too-old
  versions.  We need at least version 2.0.93, so probe for a function
  that was added in that version.  Kaigai Kohei

- Cleanup for pull-up-isReset patch.  Clear isReset before, not after,
  calling the context-specific alloc method, so as to preserve the
  option to do a tail call in MemoryContextAlloc (and also so this
  code isn't assuming that a failed alloc call won't have changed the
  context's state before failing).  Fix missed direct invocation of
  reset method.  Reformat a comment.

- Grammar cleanup for src/test/isolation/README.  Josh Kupershmidt

- Suppress extensions in partial dumps.  We initially had pg_dump emit
  CREATE EXTENSION commands unconditionally.  However, pg_dump has
  long been in the habit of not dumping procedural language
  definitions when a --schema or --table switch is given.  It seems
  appropriate to handle extensions the same way, since like PLs they
  are SQL objects that are not in any particular schema.  Per
  complaint from Adrian Schreyer.

- Adjust configure to use "+Olibmerrno" with HP-UX C compiler, if
  possible.  This is reported to be necessary on some versions of that
  OS.  In service of this, cause PGAC_PROG_CC_CFLAGS_OPT to reject
  switches that result in compiler warnings, since on yet other
  versions of that OS, the switch does nothing except provoke a
  warning.  Report and patch by Ibrar Ahmed, further tweaking by me.

- Make decompilation of optimized CASE constructs more robust.  We had
  some hacks in ruleutils.c to cope with various odd transformations
  that the optimizer could do on a CASE foo WHEN "CaseTestExpr = RHS"
  clause.  However, the fundamental impossibility of covering all
  cases was exposed by Heikki, who pointed out that the "=" operator
  could get replaced by an inlined SQL function, which could contain
  nearly anything at all.  So give up on the hacks and just print the
  expression as-is if we fail to recognize it as "CaseTestExpr = RHS".
  (We must cover that case so that decompiled rules print correctly;
  but we are not under any obligation to make EXPLAIN output be 100%
  valid SQL in all cases, and already could not do so in some other
  cases.)  This approach requires that we have some printable
  representation of the CaseTestExpr node type; I used
  "CASE_TEST_EXPR".  Back-patch to all supported branches, since the
  problem case fails in all.

- Preserve caller's memory context in ProcessCompletedNotifies().
  This is necessary to avoid long-term memory leakage, because the
  main loop in PostgresMain expects to be executing in MessageContext,
  and hence is a bit sloppy about freeing stuff that is only needed
  for the duration of processing the current client message.  The
  known case of an actual leak is when encoding conversion has to be
  done on the incoming command string, but there might be others.  Per
  report from Per-Olov Esgard.  Back-patch to 9.0, where the bug was
  introduced by the LISTEN/NOTIFY rewrite.

- Improve corner cases in pg_ctl's new wait-for-postmaster-startup
  code.  With "-w -t 0", we should report "still starting up", not
  "ok".  If we fall out of the loop without ever being able to call
  PQping (because we were never able to construct a connection
  string), report "no response", not "ok".  This gets rid of corner
  cases in which we'd claim the server had started even though it had
  not.  Also, if the file is not there at any point
  after we've waited 5 seconds, assume the postmaster has failed and
  report that, rather than almost-certainly-fruitlessly continuing to
  wait.  The pidfile should appear almost instantly even when there is
  extensive startup work to do, so 5 seconds is already a very
  conservative figure.  This part is per a gripe from MauMau --- there
  might be better ways to do it, but nothing simple enough to get done
  for 9.1.

- Fix null-dereference crash in parse_xml_decl().  parse_xml_decl's
  header comment says you can pass NULL for any unwanted output
  parameter, but it failed to honor this contract for the "standalone"
  flag.  The only currently-affected caller is xml_recv, so the net
  effect is that sending a binary XML value containing a standalone
  parameter in its xml declaration would crash the backend.  Per bug
  #6044 from Christopher Dillard.  In passing, remove useless
  initializations of parse_xml_decl's output parameters in xml_parse.
  Back-patch to 8.3, where this code was introduced.

Peter Eisentraut pushed:

- Message style improvements

- Add a "local" replication sample entry.  Also adjust alignment a bit
  to distinguish commented out from comment.

- Message improvements

- Put options in some sensible order.  For the --help output and
  reference pages of pg_dump, pg_dumpall, pg_restore, put the options
  in some consistent, mostly alphabetical, and consistent order,
  rather than newest option last or something like that.

- Remove literal tabs from message strings

- Avoid compiler warning when building without zlib.

- Allow pg_basebackup compressed tar output to stdout

- Correct description of log_connections and log_disconnections.  The
  previous claim when these parameters could be changed was incorrect.
  Fujii Masao

- Add pg_basebackup -z option for compression with default level

Robert Haas pushed:

- Improve hash_array() logic for combining hash values.  The new logic
  is less vulnerable to transpositions.  This invalidates the contents
  of hash indexes built with the old functions; hence, bump
  catversion.  Dean Rasheed

Heikki Linnakangas pushed:

- Fix integer overflow in text_format function, reported by Dean
  Rasheed.  In the passing, clarify the comment on why text_format_nv
  wrapper is needed.

- Replace strdup() with pstrdup(), to avoid leaking memory.  It's been
  like this since the seg module was introduced, so backpatch to 8.2
  which is the oldest supported version.

- Check the return code of pthread_create().  Otherwise we go into an
  infinite loop if it fails, which is what what happened on my HP-UX
  box. (I think the reason it failed on that box is a misconfiguration
  on my behalf, but that's no reason to hang.)

Bruce Momjian pushed:

- In pg_upgrade, do case-insensitive checks of locale, encoding, and
  ctype because these are often inconsistently capitalized.

- Add C comment about why we don't spell out "month" in interval

Andrew Dunstan pushed:

- Convert builddoc.bat into a perl script that actually works.  The
  old .bat file wasn't working for reasons that are unclear, and which
  it did not seem worth the trouble to ascertain.  The new perl script
  has been tested and is known to work.  Soon it will be tested
  regularly on the buildfarm.  The .bat file is kept as a simple
  wrapper for the perl script.

Peter Eisentraut pushed:

- Drop "meaning" column from error code table.  This is currently the
same as the condition name, so it doesn't add any value, only clutter.

Alvaro Herrera pushed:

- Remove unused variable.  Cédric Villemain

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Robert Haas sent in another revision of the patch to make the
visibility map crash-safe.

Alexander Korotkov sent in two more revisions of the patch to collect
statistics for array columns.

Aaron Swenson sent in a patch which changes the pg_ctl exit status
when the server is not running to 3, which the Linux Standard Base
Core Specification 3.1 requires.

Alexander Korotkov sent in a patch for GiST which moves the
GISTInsertStack structure from parent to child.  This simplifies
coding and allows maintaining parts of the tree in GISTInsertStack

Jaime Casanova sent in two more revisions of the patch to add a new

Leonardo Francalanci sent in three more revisions of the patch to use
less space in xl_xact_commit.

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

Kevin Grittner sent in patches to convert from row to tuple locking,
and to document same.

Noah Misch sent in a patch to further help the domain/array mismatch.

Fujii Masao sent in a WIP patch to allow for cascading replication.

Peter Geoghegan sent in two more revisions of the patch which
monitiors and acts on postmaster death via latches on both *n*x and

Stephen Frost sent in a PoC patch to Pre-allocate ListCells.

Tom Lane sent in a patch to change how vacuum analyzes reltuples.

MauMau sent in a patch to help distinguish PostgreSQL instances in the
Windows event log.

Josh Kupershmidt sent in a patch to enable some new tab completions
for COMMENT ON in psql.

Jeff Janes sent in a patch to add an option to pgbench which stresses
the executor.


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