Skip to content

Wöchentlicher PostgreSQL Newsletter - 01. Mai 2011

Der Originalartikel befindet sich unter:

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

Magnus Hagander ist dem PostgreSQL Core Team beigetreten. Glückwunsch!

PostgreSQL Conference Europe 2011 wird vom 18. bis 21. Oktober in Amsterdam stattfinden.

== PostgreSQL Lokal ==

Das Open Database Camp findet vom 7. bis 9. Mai 2011 in Sardinien,
Italien statt.

PGCon findet am 19. und 20. Mai 2011 an der Universität
von Ottawa statt, vorher gibt es am 17. und 18. Mai
zwei Tage mit Trainings.

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

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

Michael Meskes pushed:

- In libecpg do not set an sqlda field that is 'reserved for future
  use' unless we know what should be stored in there.

Andrew Dunstan pushed:

- Adjust yywrap macro for non-reentrant scanners for MSVC.  The MSVC
  compiler complains if a macro is called with less arguments than its
  definition provides for. flex generates a macro with one argument
  for yywrap, but only supplies the argument for reentrant scanners,
  so we remove the useless argument in the non-reentrant case to
  silence the warning.

- Give getopt() a prototype and modern style arg specs.  Welcome to
  the 1990s.

- Prevent perl header overriding our *snprintf macros, and give it a
  usable PERL_UNUSED_DECL value.  This quiets compiler warnings about
  redefined macros and unused Perl__unused variables. The redefinition
  of snprintf and vsnprintf is something we want to avoid anyway, if
  we've gone to the bother of setting up the macros to point to our

- Assorted minor changes to silence Windows compiler warnings.  Mostly
  to do with macro redefinitions or object signedness.

- Use terse mode to avoid variable order dependency output in foreign
  data regression check.  Per Tom Lane's suggestion about my gripe
  about occasional errors noticed on the buildfarm.

- Use an explicit format string to keep the compiler happy.

- Force use of "%I64d" format for 64 bit ints on MinGW.  Both this and
  "%lld" work, but the compiler's format checking doesn't like "%lld",
  so we get all sorts of spurious warnings.

- Remove hard coded formats for INT64 and use configured settings

- Revert "Remove hard coded formats for INT64 and use configured
  settings instead." This reverts commit 9b1508af8971c1627cda5bb65f5e9eddb9a1a55e.
  As requested by Tom Lane.

- Revert "Force use of "%I64d" format for 64 bit ints on MinGW." This
  reverts commit 52d01c2f52c462d29ae0fdfa44c3cae129148a6d.  The
  UINT64_FORMAT bit broke the buildfarm, so I'm reverting the whole
  thing pending further investigation.

- Use a macro variable PG_PRINTF_ATTRIBUTE for the style used for
  checking printf type functions.  The style is set to "printf" for
  backwards compatibility everywhere except on Windows, where it is
  set to "gnu_printf", which eliminates hundreds of false error
  messages from modern versions of gcc arising from  %m and %ll{d,u}

- Add some casts to try to silence most of the remaining format
  warnings on MinGW-W64.

- Add some casts to try to silence most of the remaining format
  warnings on MinGW-W64.

- Use non-literal format for possibly non-standard strftime formats.
  Per recent -hackers discussion. The formats in question are %G and
  %V, and cause warnings on MinGW at least. We assume the ecpg
  application knows what it's doing if it passes these formats to the

Robert Haas pushed:

- Fix SSI-related assertion failure.  Bug #5899, reported by Marko
  Tiikkaja.  Heikki Linnakangas, reviewed by Kevin Grittner and Dan

- Regression tests for TOAST.  Kevin Grittner, per discussion of bug

- Add fast paths for cases when no serializable transactions are
  running.  Dan Ports.

- Remove partial and undocumented GRANT .. FOREIGN TABLE support.
  Instead, foreign tables are treated just like views: permissions can
  be granted using GRANT privilege ON [TABLE] foreign_table_name TO
  role, and revoked similarly.  GRANT/REVOKE .. FOREIGN TABLE is no
  longer supported, just as we don't support GRANT/REVOKE .. VIEW.
  The set of accepted permissions for foreign tables is now identical
  to the set for regular tables, and views.  Per report from Thom
  Brown, and subsequent discussion.

- Refactor broken CREATE TABLE IF NOT EXISTS support.  Per bug #5988,
  reported by Marko Tiikkaja, and further analyzed by Tom Lane, the
  previous coding was broken in several respects: even if the target
  table already existed, a subsequent CREATE TABLE IF NOT EXISTS might
  try to add additional constraints or sequences-for-serial specified
  in the new CREATE TABLE statement.  In passing, this also fixes a
  minor information leak: it's no longer possible to figure out
  whether a schema to which you don't have CREATE access contains a
  sequence named like "x_y_seq" by attempting to create a table in
  that schema called "x" with a serial column called "y".  Some more
  refactoring of this code in the future might be warranted, but that
  will need to wait for a later major release.

Bruce Momjian pushed:

- Add postmaster/postgres undocumented -b option for binary upgrades.
  This option turns off autovacuum, prevents non-super-user
  connections, and enables oid setting hooks in the backend.  The code
  continues to use the old autoavacuum disable settings for servers
  with earlier catalog versions.  This includes a catalog version bump
  to identify servers that support the -b option.

- In pg_upgrade, avoid one start/stop of the postmaster;  use the -w
  (wait) flag for pg_ctl start/stop;  remove the unused "quiet" flag
  in the functions for starting/stopping the postmaster.

- Now that pg_upgrade uses -w in pg_ctl, remove loop that retried
  testing the connection;  also restructure the libpq connection code.
  This patch also removes the unused variable postmasterPID and fixes
  a libpq structure leak that was in the testing loop.

- Reword documentation for NUMERIC with no specified precision.

- Doc wording improvement for NUMERIC limit paragraph.

- Lowercase status labels in pg_stat_replication view.

Peter Eisentraut pushed:

- Support "make check" in contrib.  Added a new option --extra-install
  to pg_regress to arrange installing the respective contrib directory
  into the temporary installation.  This is currently not yet
  supported for Windows MSVC builds.  Updated the .gitignore files for
  contrib modules to ignore the leftovers of a temp-install check run.
  Changed the exit status of "make check" in a pgxs build (which still
  does nothing) to 0 from 1.  Added "make check" in contrib to
  top-level "make check-world".

- Fix binary upgrade of altered typed tables.  Instead of dumping them
  as CREATE TABLE ... OF, dump them as normal tables with the usual
  special processing for dropped columns, and then attach them to the
  type afterward, using ALTER TABLE ... OF.  This is analogous to the
  existing handling of inherited tables.

- Rewrite installation makefile rules without for loops.  install-sh
  can install multiple files at once, so for loops are not necessary.
  This was already changed for the rest of the code some time ago, but was apparently forgotten, and the obsolete coding style has
  now been copied to the PLs as well.  This also fixes the problem
  that the for loops in question did not catch errors.

- Catch errors in for loop in makefile.  Add "|| exit" so that the
  rule aborts when a command fails.

Tom Lane pushed:

- Fix pg_size_pretty() to avoid overflow for inputs close to
  INT64_MAX.  The expression that tried to round the value to the
  nearest Tim Bunce could overflow, leading to bogus output as
  reported in bug #5993 from Nicola Cossu.  This isn't likely to ever
  happen in the intended usage of the function (if it could, we'd be
  needing to use a wider datatype instead); but it's not hard to give
  the expected output, so let's do so.

- Remove incorrect HINT for use of ALTER FOREIGN TABLE on the wrong
  relkind.  Per discussion, removing the hint seems better than
  correcting it because the adjacent analogous cases in RenameRelation
  don't have any hints, and nobody seems to have missed 'em.  Shigeru

- Complain if pg_hba.conf contains "hostssl" but SSL is disabled.
  Most commenters agreed that this is more friendly than silently
  failing to match the line during actual connection attempts.  Also,
  this will prevent corner cases that might arise when trying to
  handle such a line when the SSL code isn't turned on.  An example is
  that specifying clientcert=1 in such a line would formerly result in
  a completely misleading complaint that root.crt wasn't present, as
  seen in a recent report from Marc-Andre Laverdiere.  While we could
  have instead fixed that specific behavior, it seems likely that we'd
  have a continuing stream of such bizarre behaviors if we keep on
  allowing hostssl lines when SSL is disabled.  Back-patch to 8.4,
  where clientcert was introduced.  Earlier versions don't have this
  specific issue, and the code is enough different to make this patch
  not applicable without more work than it seems worth.

- Rephrase some not-supported error messages in pg_hba.conf
  processing.  In a couple of places we said "not supported on this
  platform" for cases that aren't really platform-specific, but could
  depend on configuration options such as --with-openssl.  Use "not
  supported by this build" instead, as that doesn't convey the
  impression that you can't fix it without moving to another OS;
  that's also more consistent with the wording used for an identical
  error case in guc.c.  No back-patch, as the clarity gain is small
  enough to not be worth burdening translators with back-branch

- Fix array- and path-creating functions to ensure padding bytes are
  zeroes.  Per recent discussion, it's important for all computed
  datums (not only the results of input functions) to not contain any
  ill-defined (uninitialized) bits.  Failing to ensure that can result
  in equal() reporting that semantically indistinguishable Consts are
  not equal, which in turn leads to bizarre and undesirable planner
  behavior, such as in a recent example from David Johnston.  We might
  eventually try to fix this in a general manner by allowing datatypes
  to define identity-testing functions, but for now the path of least
  resistance is to expect datatypes to force all unused bits into
  consistent states.  Per some testing by Noah Misch, array and path
  functions seem to be the only ones presenting risks at the moment,
  so I looked through all the functions in adt/array*.c and geo_ops.c
  and fixed them as necessary.  In the array functions, the
  easiest/safest fix is to allocate result arrays with palloc0 instead
  of palloc.  Possibly in future someone will want to look into
  whether we can just zero the padding bytes, but that looks too
  complex for a back-patchable fix.  In the path functions, we already
  had a precedent in path_in for just zeroing the one known pad field,
  so duplicate that code as needed.  Back-patch to all supported

- Add comments about the need to avoid uninitialized bits in datatype
  values.  There was already one recommendation in the documentation
  about writing C functions to ensure padding bytes are zeroes, but
  make it stronger.  Also fix an example that was still using direct
  assignment to a varlena length word, which no longer works since the
  varvarlena changes.

- Make a quick copy-editing pass over the 9.1 release notes.  Also
  remove the material about this being an alpha release.  The notes
  still need a lot of work, but they're more or less presentable as a
  beta version now.

- Tag 9.1beta1.

- Rewrite pg_size_pretty() to avoid compiler bug.  Convert it to use
  successive shifts right instead of increasing a divisor.  This is
  probably a tad more efficient than the original coding, and it's
  nicer-looking than the previous patch because we don't need a
  special case to avoid overflow in the last branch.  But the real
  reason to do it is to avoid a Solaris compiler bug, as per results
  from buildfarm member moa.

- Remove special case for xmin == xmax in HeapTupleSatisfiesVacuum().
  VACUUM was willing to remove a committed-dead tuple immediately if
  it was deleted by the same transaction that inserted it.  The idea
  is that such a tuple could never have been visible to any other
  transaction, so we don't need to keep it around to satisfy MVCC
  snapshots.  However, there was already an exception for tuples that
  are part of an update chain, and this exception created a problem:
  we might remove TOAST tuples (which are never part of an update
  chain) while their parent tuple stayed around (if it was part of an
  update chain).  This didn't pose a problem for most things, since
  the parent tuple is indeed dead: no snapshot will ever consider it
  visible.  But MVCC-safe CLUSTER had a problem, since it will try to
  copy RECENTLY_DEAD tuples to the new table.  It then has to copy
  their TOAST data too, and would fail if VACUUM had already removed
  the toast tuples.  Easiest fix is to get rid of the special case for
  xmin == xmax.  This may delay reclaiming dead space for a little bit
  in some cases, but it's by far the most reliable way to fix the
  issue.  Per bug #5998 from Mark Reid.  Back-patch to 8.3, which is
  the oldest version with MVCC-safe CLUSTER.

- Make CLUSTER lock the old table's toast table before copying data.
  We must lock out autovacuuming of the old toast table before
  computing the OldestXmin horizon we will use.  Otherwise, autovacuum
  could start on the toast table later, compute a later OldestXmin
  horizon, and remove as DEAD toast tuples that we still need (because
  we think their parent tuples are only RECENTLY_DEAD).  Per further
  thought about bug #5998.

Magnus Hagander pushed:

- timeline is not needed in BaseBackup().  This code was accidentally
  part of the patch, it's only needed for the code that's for 9.2.
  Not needing the timeline also removes the need to call
  IDENTIFY_SYSTEM.  Noted by Peter Eisentraut.

Heikki Linnakangas pushed:

- The arguments to pg_ctl kill are not optional - remove brackets in
  the docs.  Fujii Masao

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Bruce Momjian sent in a patch to correct the case of some status
messages for Sync Rep.

Alvaro Herrera sent in a patch to the docs makefile to add HISTORY to
the default build.

Merlin Moncure sent in a patch to fix a bug in tsearch/spell.c where
ALLOC_CHUNK_LIMIT_RATIO could be too large, which would waste space in
malloc'ed blocks.

Heikki Linnakangas sent in another revision of a patch to fix a memory
leak in FDW.

Dan Ports sent in a patch to add comments about memory ordering in

Peter Eisentraut sent in a patch to add a pg_upgrade check.

Zoltan Boszormenyi sent in a WIP patch to enable cross-column
statistics and extra expression statistics.

Noah Misch sent in another revision of the patch to fix an
incompatibility between ALTER TYPE DROP where there is a
composite-type column and pg_upgrade.

Gabriele Bartolini sent in a patch to smooth replication during VACUUM

Kevin Grittner sent in another revision of the patch to fix DDL with


No Trackbacks


Display comments as Linear | Threaded

Janine on :

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