Features Download
From: David Fetter <david <at> fetter.org>
Subject: == PostgreSQL Weekly News - December 09 2012 ==
Newsgroups: gmane.comp.db.postgresql.announce
Date: Monday 10th December 2012 06:38:59 UTC (over 5 years ago)
== PostgreSQL Weekly News - December 09 2012 ==

PostgreSQL bug fix versions 9.2.2, 9.1.7, 9.0.11 and 8.4.15 released.
Upgrade ASAP!

PGDG now has a repository for .deb (Debian/Ubuntu) packages.

PGCon 2013 will be held May 23-24 2013, in Ottawa at the University of
Ottawa.  The Call for Papers is open.

== PostgreSQL Product News ==

E-Maj 1.0.0, a PostgreSQL extension that offers the capability to log
updates performed on one or several sets of tables, and cancel these
updates if needed, resettting the table set to a predefined stable

pg_activity, an htop-like utility for PostgreSQL server activity
monitoring, released.

pgbouncer 1.5.4, a light-weight connection pooler for PostgreSQL, released.

pg_repack 1.1.8, a fork of pg_reorg, released.

PostgreSQL Session will be held on March 28th, 2013 in Paris,
France.  The Call for Papers is open.

PL/Proxy 2.5, a database partitioning system implemented as a PL, released.

== PostgreSQL Local ==

The FOSDEM PGDay conference that will be held before FOSDEM in
Brussels, Belgium, on Feb 1st, 2013.  The CfP for both this event and
for the PG track of FOSDEM are open.

PGDay NYC 2013 will be held on March 22, 2013 in New York City.  The
CfP submission deadline is January 7th, 2013 at noon eastern time.
papers AT nycpug DOT org.

== 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 [email protected], German language
to [email protected], Italian language to [email protected]  Spanish language
to [email protected]

== Applied Patches ==

Heikki Linnakangas pushed:

- Refactor the code implementing standby-mode logic.  It is now easier
  to see that it's a state machine, making the code easier to
  understand overall.

- Track the timeline associated with minRecoveryPoint, for more sanity
  checks.  This allows recovery to notice certain incorrect recovery
  scenarios.  If a server has recovered to point X on timeline 5, and
  you restart recovery, it better be on timeline 5 when it reaches
  point X again, not on some timeline with a higher ID. This can
  happen e.g if you a standby server is shut down, a new timeline
  appears in the WAL archive, and the standby server is restarted. It
  will try to follow the new timeline, which is wrong because some WAL
  on the old timeline was already replayed before shutdown.  Requires
  an initdb (or at least pg_resetxlog), because this adds a field to
  the control file.

- Write exact xlog position of timeline switch in the timeline history
  file.  This allows us to do some more rigorous sanity checking for
  various incorrect point-in-time recovery scenarios, and provides
  more information for debugging purposes. It will also come handy in
  the upcoming patch to allow timeline switches to be replicated by
  streaming replication.

- Downgrade a status message from LOG to DEBUG2.  I never intended
  this to be anything other than a debugging aid, but forgot to change
  the level before committing.

- Add pgstatginindex() function to get the size of the GIN pending
  list.  Fujii Masao, reviewed by Kyotaro Horiguchi.

- Oops, meant to change the comment in writeTimeLineHistory.

Simon Riggs pushed:

- Clarify when to use PageSetLSN/PageGetLSN().  Update README to
  explain prerequisites for correct access to LSN fields of a page.
  Independent chunk removed from checksums patch to reduce size of

- Clarify locking for PageGetLSN() in XLogCheckBuffer()

- Refactor inCommit flag into generic delayChkpt flag.  Rename
  PGXACT->inCommit flag into delayChkpt flag, and generalise comments
  to allow use in other situations, such as the forthcoming potential
  use in checksum patch.  Replace wait loop to look for VXIDs with
  delayChkpt set.  No user visible changes, not behaviour changes at
  present.  Simon Riggs, reviewed and rebased by Jeff Davis

- Avoid holding vmbuffer pin after VACUUM.  During VACUUM if we pause
  to perform a cycle of index cleanup we drop the vmbuffer pin, so we
  should do the same thing when heap scan completes. This avoids
  holding vmbuffer pin across the main index cleanup in VACUUM, which
  could be minutes or hours longer than necessary for correctness.
  Bug report and suggested fix from Pavan Deolasee

- Must not reach consistency before XLOG_BACKUP_RECORD When waiting
  for an XLOG_BACKUP_RECORD the minRecoveryPoint will be incorrect, so
  we must not declare recovery as consistent before we have seen the
  record. Major bug allowing recovery to end too early in some cases,
  allowing people to see inconsistent db.  This patch to HEAD and 9.2,
  other fix required for 9.1 and 9.0 Simon Riggs and Andres Freund,
  bug report by Jeff Janes

- Clarify that COPY FREEZE is not a hard rule.  Remove message when
  FREEZE not honoured, clarify reasons in comments and docs.

- Optimize COPY FREEZE with CREATE TABLE also.  Jeff Davis, additional
  test by me

- Correct xmax test for COPY FREEZE

Andrew Dunstan pushed:

- Attempt to unbreak MSVC builds broken by
  f21bb9cfb5646e1793dcc9c0ea697bab99afa523.  We can't use type uint,
  so use uint32.

- Revert "Add mode where contrib installcheck runs each module in a
  separately named database." This reverts commit

Tom Lane pushed:

- Fix documentation of path(polygon) function.  Obviously, this
  returns type "path", but somebody made a copy-and-pasteo long ago.
  Dagfinn Ilmari Mannsåker

- Update release notes for 9.2.2, 9.1.7, 9.0.11, 8.4.15, 8.3.22.

- Attempt to un-break Windows builds with USE_LDAP.  The buildfarm
  shows this case is entirely broken, and I'm betting the reason is
  lack of any include file.

- Ensure recovery pause feature doesn't pause unless users can
  connect.  If we're not in hot standby mode, then there's no way for
  users to connect to reset the recoveryPause flag, so we shouldn't
  pause.  The code was aware of this but the test to see if pausing
  was safe was seriously inadequate: it wasn't paying attention to
  reachedConsistency, and besides what it was testing was that we
  could legally enter hot standby, not that we have done so.  Get rid
  of that in favor of checking LocalHotStandbyActive, which because of
  the coding in CheckRecoveryConsistency is tantamount to checking
  that we have told the postmaster to enter hot standby.  Also, move
  the recoveryPausesHere() call that reacts to asynchronous
  recoveryPause requests so that it's not in the middle of application
  of a WAL record.  I put it next to the recoveryStopsHere() call ---
  in future those are going to need to interact significantly, so this
  seems like a good waystation.  Also, don't bother trying to read
  another WAL record if we've already decided not to continue
  recovery.  This was no big deal when the code was written
  originally, but now that reading a record might entail actions like
  fetching an archive file, it seems a bit silly to do it like that.
  Per report from Jeff Janes and subsequent discussion.  The pause
  feature needs quite a lot more work, but this gets rid of some
  indisputable bugs, and seems safe enough to back-patch.

- Fix intermittent crash in DROP INDEX CONCURRENTLY.  When
  deleteOneObject closes and reopens the pg_depend relation, we must
  see to it that the relcache pointer held by the calling function
  (typically performMultipleDeletions) is updated.  Usually the
  relcache entry is retained so that the pointer value doesn't change,
  which is why the problem had escaped notice ... but after a cache
  flush event there's no guarantee that the same memory will be
  reassigned.  To fix, change the recursive functions' APIs so that we
  pass around a "Relation *" not just "Relation".  Per investigation
  of occasional buildfarm failures.  This is trivial to reproduce with
  -DCLOBBER_CACHE_ALWAYS, which points up the sad lack of any
  buildfarm member running that way on a regular basis.

- Improve pl/pgsql to support composite-type expressions in RETURN.
  For some reason lost in the mists of prehistory, RETURN was only
  coded to allow a simple reference to a composite variable when the
  function's return type is composite.  Allow an expression instead,
  while preserving the efficiency of the original code path in the
  case where the expression is indeed just a composite variable's
  name.  Likewise for RETURN NEXT.  As is true in various other
  places, the supplied expression must yield exactly the number and
  data types of the required columns.  There was some discussion of
  relaxing that for pl/pgsql, but no consensus yet, so this patch
  doesn't address that.  Asif Rehman, reviewed by Pavel Stehule

- Support automatically-updatable views.  This patch makes "simple"
  views automatically updatable, without the need to create either
  INSTEAD OF triggers or INSTEAD rules.  "Simple" views are those
  classified as updatable according to SQL-92 rules.  The rewriter
  transforms INSERT/UPDATE/DELETE commands on such views directly into
  an equivalent command on the underlying table, which will generally
  have noticeably better performance than is possible with either
  triggers or user-written rules.  A view that has INSTEAD OF triggers
  or INSTEAD rules continues to operate the same as before.  For the
  moment, security_barrier views are not considered simple.  Also, we
  do not support WITH CHECK OPTION.  These features may be added in
  future.  Dean Rasheed, reviewed by Amit Kapila

- Fix assorted bugs in privileges-for-types patch.  Commit
  729205571e81b4767efc42ad7beb53663e08d1ff added privileges on data
  types, but there were a number of oversights.  The implementation of
  default privileges for types missed a few places, and pg_dump was
  utterly innocent of the whole concept.  Per bug #7741 from Nathan
  Alden, and subsequent wider investigation.

Bruce Momjian pushed:

- In pg_upgrade, fix bug where no users were dumped in pg_dumpall
  binary-upgrade mode;  instead only skip dumping the current user.
  This bug was introduced in during the removal of split_old_dump().
  Bug discovered during local testing.

- Revert initdb --sync-only patch that had incorrect commit messages.

- Add initdb --sync-only option to sync the data directory to durable
  storage.  Have pg_upgrade use it, and enable server options
  fsync=off and full_page_writes=off.  Document that users turning
  fsync from off to on should run initdb --sync-only.  [ Previous
  commit was incorrectly applied as a git merge. ]

- In initdb.c, rename some newly created functions, and move the
  directory creation and xlog symlink creation to separate functions.
  Per suggestions from Andrew Dunstan.

- Restore set -x in pg_upgrade/test.sh, so the user can see what is
  being executed.

- In pg_upgrade testing script, turn off command echo at the end so
  status report is clearer.

- In initdb.c, move auth warning code into main() from secondary

- Improve pg_upgrade's status display Pg_upgrade displays file names during
  copy and database names during dump/restore.  Andrew Dunstan identified
  bugs: 1.  long file names were being truncated to 60 _leading_
  which often do not change for long file names 2.  file names were
truncated to
  60 characters in log files 3.  carriage returns were being output to log
  This commit fixes these --- it prints 60 _trailing_ characters to the
  display, and full path names without carriage returns to log files.  It
  suppresses status output to the log file unless verbose mode is used.

Peter Eisentraut pushed:

- Fix build of LDAP URL feature.  Some code was not ifdef'ed out for
  non-LDAP builds.  patch from Bruce Momjian

- Add support for LDAP URLs.  Allow specifying LDAP authentication
  parameters as RFC 4516 LDAP URLs.

- Update iso.org page link.  The old one is responding with 404.

Michael Meskes pushed:

- Include isinf.o in libecpg if isinf() is not available on the
  system.  Patch done by Jiang Guiqing .

Alvaro Herrera pushed:

- Update comment at top of index_create.  I neglected to update it in
  commit f4c4335.  Michael Paquier

- Background worker processes.  Background workers are postmaster
  subprocesses that run arbitrary user-specified code.  They can
  request shared memory access as well as backend database
  connections; or they can just use plain libpq frontend database
  connections.  Modules listed in shared_preload_libraries can
  register background workers in their _PG_init() function; this is
  early enough that it's not necessary to provide an extra GUC option,
  because the necessary extra resources can be allocated early on.
  Modules can install more than one bgworker, if necessary.  Care is
  taken that these extra processes do not interfere with other
  postmaster tasks: only one such process is started on each
  ServerLoop iteration.  This means a large number of them could be
  waiting to be started up and postmaster is still able to quickly
  service external connection requests.  Also, shutdown sequence
  should not be impacted by a worker process that's reasonably well
  behaved (i.e. promptly responds to termination signals.) The current
  implementation lets worker processes specify their start time, i.e.
  at what point in the server startup process they are to be started:
  right after postmaster start (in which case they mustn't ask for
  shared memory access), when consistent state has been reached
  (useful during recovery in a HOT standby server), or when recovery
  has terminated (i.e. when normal backends are allowed).  In case of
  a bgworker crash, actions to take depend on registration data: if
  shared memory was requested, then all other connections are taken
  down (as well as other bgworkers), just like it were a regular
  backend crashing.  The bgworker itself is restarted, too, within a
  configurable timeframe (which can be configured to be never).  More
  features to add to this framework can be imagined without much
  effort, and have been discussed, but this seems good enough as a
  useful unit already.  An elementary sample module is supplied.
  Author: Álvaro Herrera.  This patch is loosely based on prior
  patches submitted by KaiGai Kohei, and unsubmitted code by Simon
  Riggs.  Reviewed by: KaiGai Kohei, Markus Wanner, Andres Freund,
  Heikki Linnakangas, Simon Riggs, Amit Kapila

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Erik Rijkers sent in tests for the regexp search optimizations.

Andrew Dunstan sent in a patch to make it possible for old versions of
make to work when creating separate databases for contrib modules
during "make check"

Dimitri Fontaine sent in two more revisions of a patch to implement
CREATE EXTENSION default_full_version.

Michael Paquier sent in a patch to fix a missing argument to

KaiGai Kohei sent in two more revisions of a patch to implement
writeable foreign tables.

Amit Kapila sent in two more revisions of a patch to compute the max
LSN of data pages.

Andres Freund sent in a patch to fix an infelicity in LDAP URLs.

Pavan Deolasee sent in a patch to help in Hot Standby conflict
resolution handling.

Alexander Korotkov and Tomas Vondra traded new revisions of patches to
store additional information in GIN indexes.

Jeff Davis sent in another revision of a patch to add page checksums.

Phil Sorber sent in two more revisions of a patch to create a pg_ping

Jeff Davis sent in another revision of a patch to remove

Dimitri Fontaine sent in another revision of a patch to enable dumping
an extension's script.

Pavan Deolasee sent in a patch to help fix an infelicity in pg_dump
with respect to its read-only mode.

Pavan Deolasee sent in two revisions of a patch to make VACUUM more

Shigeru HANADA and Tomas Vondra traded patches to optimize dropping
multiple tables in a single transaction.

Amit Kapila sent in another revision of a patch to improve performance
by reducing WAL traffic for update operations.

Bruce Momjian sent in two more revisions of a patch to fix a
pg_upgrade issue when it runs into invalid indexes.

Pavan Deolasee sent in some optimizations in lazy_scan_heap.

Dan Farina sent in two revisions of a patch sketching out a hook into
the logging collector.

Tomas Vondra sent in another revision of a patch to change pgbench by
aggregating info written into log.

Tomas Vondra sent in another revision of a patch to allow trimming the
log message output.

Jan Wieck sent in another revision of a patch to fix an infelicity in

Tomas Vondra sent in another revision of a patch to add new statistics
for WAL dirty buffer writes.

KaiGai Kohei sent in another revision of a patch to create
OAT_POST_ALTER object access hooks.

Michael Paquier sent in two more revisions of a patch to add REINDEX

Sent via pgsql-announce mailing list ([email protected])
To make changes to your subscription:
CD: 40ms