Features Download
From: David Fetter <david <at> fetter.org>
Subject: == PostgreSQL Weekly News - August 26 2012 ==
Newsgroups: gmane.comp.db.postgresql.announce
Date: Monday 27th August 2012 06:50:47 UTC (over 4 years ago)
== PostgreSQL Weekly News - August 26 2012 ==

== PostgreSQL Product News ==

DataArchitect 4.3, a database architecture and modeling tool, released.

PostgreSQL PHP Generator 12.8, a GUI CRUD web application generator for
PostgreSQL, released.

psqlODBC 09.01.0200 released.

Postgres Plus xDB Replication Server BETA with Multi-Master support is

== PostgreSQL Jobs for August ==


== PostgreSQL Local ==

PostgreSQL Session will be held on October 4th, 2012, in Paris,
France.  More information at:

PostgreSQL Conference Europe 2012 will be in Prague, Czech Republic
on October 23-26.

PostgreSQL Day Argentina 2012 will be held on November 13th in Bernal,
Buenos Aires, at the National University of Quilmes.  It will cover
topics for PostgreSQL users, developers and contributors, as well as
decision and policy makers.  For more information about the
conference, please see the website at

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

- Don't get confused if a WAL partial record header has xl_tot_len ==
  0.  If a WAL record header was split across pages, but xl_tot_len
  was 0, we would get confused and conclude that we had already read
  the whole record, and proceed to CRC check it. That can lead to a
  crash in RecordIsValid(), which isn't careful to not read beyond
  end-of-record, as defined by xl_tot_len.  Add an explicit sanity
  check for xl_tot_len <= SizeOfXlogRecord.  Also, make
  RecordIsValid() more robust by checking in each step that it doesn't
  try to access memory beyond end of record, even if a length field in
  the record's or a backup block's header is bogus.  Per report and
  analysis by Tom Lane.

- Fix typo in example.

Tom Lane pushed:

- Fix bugs in contrib/pg_trgm's LIKE pattern analysis code.
  Extraction of trigrams did not process LIKE escape sequences
  properly, leading to possible misidentification of trigrams near
  escapes, resulting in incorrect index search results.  Fujii Masao

- Fix dumping of security_barrier views with circular dependencies.
  If a view has circular dependencies, pg_dump splits it into a CREATE
  TABLE and a CREATE RULE command to break the dependency loop.
  However, if the view has reloptions, those options cannot be applied
  in the CREATE TABLE command, because views and tables have different
  allowed reloptions so CREATE TABLE would reject them.  Instead apply
  the reloptions after the CREATE RULE, using ALTER VIEW SET.

- Avoid somewhat-theoretical overflow risks in RecordIsValid().  This
  improves on commit 51fed14d73ed3acd2282b531fb1396877e44e86a by
  eliminating the assumption that we can form  +
   without overflow.  The entire point of those tests is
  that we don't trust the offset value, so coding them in a way that
  could wrap around if the buffer happens to be near the top of memory
  doesn't seem sound.  Instead, track the remaining space as a size_t
  variable and compare offsets against that.  Also, improve comment
  about why we need the extra early check on xl_tot_len.

- Update 9.2 release notes to reflect commits to date.  I was unable
  to entirely resist the temptation to copy-edit related entries, but
  will save most of that for a separate pass.

- Fix erroneous documentation of synchronous_commit = remote_write.
  The docs claimed that this mode only waits for the standby to
  receive WAL data, but actually it waits for the data to be written
  out to the standby's OS; which is a pretty significant difference
  because it removes the risk of crash of the walreceiver process.

- Make an editorial pass over the 9.2 release notes.  A very large
  number of small improvements ...

- Make a cut at a major-features list for 9.2.  This is open to debate
  of course, but it's past time we had *something* here.

- Remove overly-pessimistic statement about constraint exclusion.  As
  of 9.2, constraint exclusion should work okay with prepared
  statements: the planner will try custom plans with actual values of
  the parameters, and observe that they are a lot cheaper than the
  generic plan, and thus never fall back to using the generic plan.
  Noted by Tatsuhito Kasahara.

- Fix cascading privilege revoke to notice when privileges are still
  held.  If we revoke a grant option from some role X, but X still
  holds the option via another grant, we should not recursively revoke
  the privilege from role(s) Y that X had granted it to.  This was
  supposedly fixed as one aspect of commit
  4b2dafcc0b1a579ef5daaa2728223006d1ff98e9, but I must not have tested
  it, because in fact that code never worked: it forgot to shift the
  grant-option bits back over when masking the bits being revoked.
  Per bug #6728 from Daniel German.  Back-patch to all active
  branches, since this has been wrong since 8.0.

- Fix issues with checks for unsupported transaction states in Hot
  Standby.  The GUC check hooks for transaction_read_only and
  transaction_isolation tried to check RecoveryInProgress(), so as to
  disallow setting read/write mode or serializable isolation level
  (respectively) in hot standby sessions.  However, GUC check hooks
  can be called in many situations where we're not connected to shared
  memory at all, resulting in a crash in RecoveryInProgress().  Among
  other cases, this results in EXEC_BACKEND builds crashing during
  child process start if default_transaction_isolation is
  serializable, as reported by Heikki Linnakangas.  Protect those
  calls by silently allowing any setting when not inside a
  transaction; which is okay anyway since these GUCs are always reset
  at start of transaction.  Also, add a check to
  GetSerializableTransactionSnapshot() to complain if we are in hot
  standby.  We need that check despite the one in check_XactIsoLevel()
  because default_transaction_isolation could be serializable.  We
  don't want to complain any sooner than this in such cases, since
  that would prevent running transactions at all in such a state; but
  a transaction can be run, if SET TRANSACTION ISOLATION is done
  before setting a snapshot.  Per report some months ago from Robert
  Haas.  Back-patch to 9.1, since these problems were introduced by
  the SSI patch.  Kevin Grittner and Tom Lane, with ideas from Heikki

- Fix up planner infrastructure to support LATERAL properly.  This
  patch takes care of a number of problems having to do with failure
  to choose valid join orders and incorrect handling of lateral
  references pulled up from subqueries.  Notable changes: 1.  Add a
  LateralJoinInfo data structure similar to SpecialJoinInfo, to
  represent join ordering constraints created by lateral references.
  (I first considered extending the SpecialJoinInfo structure, but the
  semantics are different enough that a separate data structure seems
  better.)  Extend join_is_legal() and related functions to prevent
  trying to form unworkable joins, and to ensure that we will consider
  joins that satisfy lateral references even if the joins would be
  clauseless.  2.  Fill in the infrastructure needed for the last few
  types of relation scan paths to support parameterization.  We'd have
  wanted this eventually anyway, but it is necessary now because a
  relation that gets pulled up out of a UNION ALL subquery may acquire
  a reltargetlist containing lateral references, meaning that its
  paths *have* to be parameterized whether or not we have any code
  that can push join quals down into the scan.  3.  Compute data about
  lateral references early in query_planner(), and save in RelOptInfo
  nodes, to avoid repetitive calculations later.  4.  Assorted
  corner-case bug fixes.  There's probably still some bugs left, but
  this is a lot closer to being real than it was before.

Robert Haas pushed:

- Tab complete "TABLE whatever DROP CONSTRAINT" with a constraint
  name.  Jeff Janes

- Improved tab completion for CLUSTER VERBOSE.  Jeff Janes

- Add a note to the MVCC chapter that some things aren't
  transactional.  Craig Ringer, slightly edited by me.

- Improve C comments in GetSnapshotData.  Move discussion of why our
  algorithm for taking snapshots in recovery to a more appropriate
  location in the function, and delete incorrect mention of taking a

Peter Eisentraut pushed:

- Remove external PID file on postmaster exit

- Teach compiler that ereport(>=ERROR) does not return.  When elevel
  >= ERROR, we add an abort() call to the ereport() macro to give the
  compiler a hint that the ereport() expansion will not return, but
  the abort() isn't actually reached because the longjmp happens in
  errfinish().  Because the effect of ereport() varies with the
  elevel, we cannot use standard compiler attributes such as noreturn
  for this.

- Mark DateTimeParseError() noreturn.  This avoids a warning from
  clang 3.2 about an uninitialized variable 'dtype' in date_in().

- Fix install-strip on Mac OS X.  There was a hack put into install-sh
  to call strip with the correct options on Mac OS X.  But that never
  worked, because configure disabled stripping on that platform
  altogether.  So remove that dead code, and while we're at it, update
  install-sh to the latest upstream source (from Automake).  Instead,
  set up the right strip options in programs.m4, so this now actually
  works the way it was originally intended.

- Add instructions for setting up documentation tool chain on Mac OS X

- pg_upgrade: Run the created scripts in the test suite.  Just to
  check that they actually work.

- libpq: Fix memory leak in URI parser.  When an invalid query
  parameter is reported, some memory leaks.  found by Coverity

- Put options on man page and in help output in slightly better order

- Normalize some British spellings

- Some spelling adjustments in release notes

- pg_basebackup: Correct error message.  It still thought that the
  --xlog-method option argument could be empty, as in a previous
  version of this feature.

Bruce Momjian pushed:

- Document that pg_reload_conf() is also an easy way to reload the
  configuration file.

- Fix typo.

- Allow text timezone designations, e.g. "America/Chicago", when using
  the ISO "T" timestamptz format.

- Document clearly that psql \! parameter interpretation limitations
  are the same as \copy.

- Use psql_error() for most psql error calls, per request from Magnus

- Clarify documentation that primary key and unique constraints are
  copied for CREATE TABLE LIKE ... INCLUDING INDEXES.  Per report from
  david  sahagian  emc  com

- Update FreeBSD kernel configuration documentation.  Brad Davis

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Pavel Stehule sent in another revision of the patch to enhance error
fields in PL/pgsql.

Alexander Korotkov sent in a patch to fix an issue in gistchoose.

Andrew Dunstan sent in two revisions of a patch implementing ALTER

Zoltan Boszormenyi sent in another revision of the patches to create a
lock timeout framework and use same to implement lock timeouts.

Qi Huang sent in a patch implementing TABLESAMPLE.

Amit Kapila sent in two more revisions of a patch intended to improve
performance by reducing WALs written during updates.

Michael Paquier sent in a patch to clean up some of the functions in
the PostgreSQL FDW.

Alvaro Herrera sent in another revision of the foreign key locks

KaiGai Kohei sent in a WIP patch to enable writes to FDWs.

Amit Kapila sent in a patch to fix an issue in pg_ctl on Windows.

Alvaro Herrera sent in two revisions of a patch to improve
pg_upgrade's exec_prog() coding.

Heikki Linnakangas sent in another revision of the patch to improve
estimates and selectivity estimates for ranges.

Tomas Vondra sent in a patch to add support for aggregation of info
written into the log.

Tomas Vondra sent in a patch to optimize dropping multiple tables in a
single transaction.

Tomas Vondra sent in two revisions of a patch to allow random sampling
of transaction written into the log.

Bruce Momjian sent in a patch to show timing overhead.

Bruce Momjian sent in a patch to detect empty lock files.

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