Features Download
From: David Fetter <david <at> fetter.org>
Subject: == PostgreSQL Weekly News - November 10 2013 ==
Newsgroups: gmane.comp.db.postgresql.announce
Date: Monday 11th November 2013 05:58:19 UTC (over 2 years ago)
== PostgreSQL Weekly News - November 10 2013 ==

The next Commitfest starts November 15, 2013.  Get ready to review

== PostgreSQL Product News ==

pgBadger 4.1, a parallel PostgreSQL log analyzer written in Perl,

pg_repack 1.2.0-beta1, a utility for removing bloat and restoring the
physical ordering of clustered indexes on line, released.

PostgreSQL SIDU 5.1, a GUI front-end tool, released.

== PostgreSQL Jobs for November ==


== PostgreSQL Local ==

The fourth edition of the Argentinian PostgreSQL Day will be held on
November 14 2013 in Buenos Aires, Argentina.

The next meeting of the Indian PostgreSQL User Group will be in Pune
on November 16, 2013.  Info and RSVP:

PGDay Cuba will be November 28-29, 2013.

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

- Fix parsing of xlog file name in pg_receivexlog.  The parsing of WAL
  filenames of segments larger than > 255 was broken, making
  pg_receivexlog unable to restart streaming after stopping it.  The
  bug was introduced by the changes in 9.3 to represent WAL segment
  number as a 64-bit integer instead of two ints, log and seg. To fix,
  replace the plain sscanf call with XLogFromFileName macro, which
  does the conversion from log+seg to a 64-bit integer correcly.
  Reported by Mika Eloranta.

- Misc GIN refactoring.  Merge the isEnoughSpace and placeToPage
  functions in the b-tree interface into one function that tries to
  put a tuple on page, and returns false if it doesn't fit.  Move
  createPostingTree function to gindatapage.c, and change its contract
  so that it can be passed more items than fit on the root page. It's
  in a better position than the callers to know how many items fit.
  Move ginMergeItemPointers out of gindatapage.c, into a separate
  file.  These changes make no difference now, but reduce the
  footprint of Alexander Korotkov's upcoming patch to pack item
  pointers more tightly.

- Fix missing argument and function prototypes.  Not sure how I missed
  these in previous commit.

- Fix setting of right bound at GIN page split.  Broken by my

- Fix race condition in GIN posting tree page deletion.  If a page is
  deleted, and reused for something else, just as a search is
  following a rightlink to it from its left sibling, the search would
  continue scanning whatever the new contents of the page are. That
  could lead to incorrect query results, or even something more
  curious if the page is reused for a different kind of a page.  To
  fix, modify the search algorithm to lock the next page before
  releasing the previous one, and refrain from deleting pages from the
  leftmost branch of the tree.  Add a new Concurrency section to the
  README, explaining why this works.  There is a lot more one could
  say about concurrency in GIN, but that's for another patch.
  Backpatch to all supported versions.

Robert Haas pushed:

- Fix format code used to print dsm request sizes.  Per report from
  Peter Eisentraut.

- Add the notion of REPLICA IDENTITY for a table.  Pending patches for
  logical replication will use this to determine which columns of a
  tuple ought to be considered as its candidate key.  Andres Freund,
  with minor, mostly cosmetic adjustments by me

- doc: Clarify under what circumstances pg_dump needs superuser
  access.  Inspired by, but different from, a patch from Ivan Lezhnjov

- Fix pg_isolation_regress to work outside its build directory.  This
  makes it possible to, for example, use the isolation tester to test
  a contrib module.  Andres Freund

- Fix ECPG compiler warning.  Commit
  9b4d52f2095be96ca238ce41f6963ec56376491f failed to notice that
  pg_regress_ecpg needed updating.  This patch was independently
  submitted by both David Rowley and Andres Freund.

Kevin Grittner pushed:

- Fix breakage of MV column name list usage.  Per bug report from
  Tomonari Katsumata.  Back-patch to 9.3.

- Lock relation used to generate fresh data for RMV.  The relation
  should not be accessible to any other process, but it should be
  locked for consistency.  Since this is not known to cause any bug,
  it will not be back-patch, at least for now.  Per report from Andres

- Keep heap open until new heap generated in RMV.  Early close became
  apparent when invalidation messages were processed in a new location
  under CLOBBER_CACHE_ALWAYS builds, due to additional locking.
  Back-patch to 9.3

- Silence benign warnings from clang version 3.0-6ubuntu3.

Tom Lane pushed:

- Fix some obsolete information in src/backend/optimizer/README.
  Constant quals aren't handled the same way they used to be.  Also,
  add mention of a couple more major steps in grouping_planner.  Per
  complaint a couple months back from Etsuro Fujita.

- Revert commit 0725065b37b8b0e9074a624a8d3e3ac1844fc820.  The
  previous commit was intended to make psql show the full path name
  when doing a \s (history save), but it was very badly implemented
  and would show confusing if not outright wrong information in many
  situations; for instance if the path name given to \s is absolute,
  or if \cd commands involving relative paths have been issued.
  Consensus seems to be that we don't especially need this
  functionality in \s, and certainly not in \s alone.  So revert
  rather than trying to fix it up.  Per gripe from Ian Barwick.
  Although the bogus behavior exists in all supported versions, I'm
  not back-patching, because the work created for translators (by
  change of a translatable message) would probably outweigh the value
  of what is after all a mostly-cosmetic change.

- Improve the error message given for modifying a window with frame
  clause.  For rather inscrutable reasons, SQL:2008 disallows
  copying-and-modifying a window definition that has any explicit
  framing clause.  The error message we gave for this only made sense
  if the referencing window definition itself contains an explicit
  framing clause, which it might well not.  Moreover, in the context
  of an OVER clause it's not exactly obvious that "OVER (windowname)"
  implies copy-and-modify while "OVER windowname" does not.  This has
  led to multiple complaints, eg bug #5199 from Iliya Krapchatov.
  Change to a hopefully more intelligible error message, and in the
  case where we have just "OVER (windowname)", add a HINT suggesting
  that omitting the parentheses will fix it.  Also improve the related
  documentation.  Back-patch to all supported branches.

- Support default arguments and named-argument notation for window
  functions.  These things didn't work because the planner omitted to
  do the necessary preprocessing of a WindowFunc's argument list.  Add
  the few dozen lines of code needed to handle that.  Although this
  sounds like a feature addition, it's really a bug fix because the
  default-argument case was likely to crash previously, due to lack of
  checking of the number of supplied arguments in the built-in window
  functions.  It's not a security issue because there's no way for a
  non-superuser to create a window function definition with defaults
  that refers to a built-in C function, but nonetheless people might
  be annoyed that it crashes rather than producing a useful error
  message.  So back-patch as far as the patch applies easily, which
  turns out to be 9.2.  I'll put a band-aid in earlier versions as a
  separate patch.  (Note that these features still don't work for
  aggregates, and fixing that case will be harder since we represent
  aggregate arg lists as target lists not bare expression lists.
  There's no crash risk though because CREATE AGGREGATE doesn't accept
  defaults, and we reject named-argument notation when parsing an
  aggregate call.)

- Be more robust when strerror() doesn't give a useful result.  glibc,
  at least, is capable of returning "???" instead of anything useful
  if it doesn't like the setting of LC_CTYPE.  If this happens, or in
  the previously-known case of strerror() returning an empty string,
  try to print the C macro name for the error code ("EACCES" etc).
  Only if we don't have the error code in our compiled-in list of
  popular error codes (which covers most though not quite all of
  what's called out in the POSIX spec) will we fall back to printing a
  numeric error code.  This should simplify debugging.  Note that this
  functionality is currently only provided for %m in backend
  ereport/elog messages.  That may be sufficient, since we don't fool
  with the locale environment in frontend clients, but it's
  foreseeable that we might want similar code in libpq for instance.
  There was some talk of back-patching this, but let's see how the
  buildfarm likes it first.  It seems likely that at least some of the
  POSIX-defined error code symbols don't exist on all platforms.  I
  don't want to clutter the entire list with #ifdefs, but we may need
  more than are here now.  MauMau, edited by me

- Add #ifdef guards for some POSIX error symbols that Windows doesn't
  like.  Per buildfarm results.  It looks like the older the Windows
  version, the more errno codes it hasn't got ...

- Fix generation of MergeAppend plans for optimized min/max on
  expressions.  Before jamming a desired targetlist into a plan node,
  one really ought to make sure the plan node can handle projections,
  and insert a buffering Result plan node if not.  planagg.c forgot to
  do this, which is a hangover from the days when it only dealt with
  IndexScan plan types.  MergeAppend doesn't project though, not to
  mention that it gets unhappy if you remove its possibly-resjunk sort
  columns.  The code accidentally failed to fail for cases in which
  the min/max argument was a simple Var, because the new targetlist
  would be equivalent to the original "flat" tlist anyway.  For any
  more complex case, it's been broken since 9.1 where we introduced
  the ability to optimize min/max using MergeAppend, as reported by
  Raphael Bauduin.  Fix by duplicating the logic from grouping_planner
  that decides whether we need a Result node.  In 9.2 and 9.1, this
  requires back-porting the tlist_same_exprs() function introduced in
  commit 4387cf956b9eb13aad569634e0c4df081d76e2e3, else we'd uselessly
  add a Result node in cases that worked before.  It's rather tempting
  to back-patch that whole commit so that we can avoid extra Result
  nodes in mainline cases too; but I'll refrain, since that code
  hasn't really seen all that much field testing yet.

- Prevent display of dropped columns in row constraint violation
  messages.  ExecBuildSlotValueDescription() printed "null" for each
  dropped column in a row being complained of by ExecConstraints().
  This has some sanity in terms of the underlying implementation, but
  is of course pretty surprising to users.  To fix, we must pass the
  target relation's descriptor to ExecBuildSlotValueDescription(),
  because the slot descriptor it had been using doesn't get labeled
  with attisdropped markers.  Per bug #8408 from Maxim Boguk.
  Back-patch to 9.2 where the feature of printing row values in NOT
  NULL and CHECK constraint violation messages was introduced.
  Michael Paquier and Tom Lane

- Make LOCK_PRINT & PROCLOCK_PRINT expand to ((void) 0) when not in
  use.  This avoids warnings from more-anal-than-average compilers,
  and might prevent hidden syntax problems in the future.  Andres

- Fix subtly-wrong volatility checking in BeginCopyFrom().
  contain_volatile_functions() is best applied to the output of
  expression_planner(), not its input, so that insertion of function
  default arguments and constant-folding have been done.  (See
  comments at CheckMutability, for instance.)  It's perhaps unlikely
  that anyone will notice a difference in practice, but still we
  should do it properly.  In passing, change variable type from Node*
  to Expr* to reduce the net number of casts needed.  Noted while
  perusing uses of contain_volatile_functions().

- Make contain_volatile_functions/contain_mutable_functions look into
  SubLinks.  This change prevents us from doing inappropriate subquery
  flattening in cases such as dangerous functions hidden inside a
  sub-SELECT in the targetlist of another sub-SELECT.  That could
  result in unexpected behavior due to multiple evaluations of a
  volatile function, as in a recent complaint from Etienne Dube.  It's
  been questionable from the very beginning whether these functions
  should look into subqueries (as noted in their comments), and this
  case seems to provide proof that they should.  Because the new code
  only descends into SubLinks, not SubPlans or InitPlans, the change
  only affects the planner's behavior during prepjointree processing
  and not later on --- for example, you can still get it to use a
  volatile function in an indexqual if you wrap the function in
  (SELECT ...).  That's a historical behavior, for sure, but it's
  reasonable given that the executor's evaluation rules for subplans
  don't depend on whether there are volatile functions inside them.
  In any case, we need to constrain the behavioral change as narrowly
  as we can to make this reasonable to back-patch.

Peter Eisentraut pushed:

- Fix whitespace issues found by git diff --check, add gitattributes.
  Set per file type attributes in .gitattributes to fine-tune
  whitespace checks.  With the associated cleanups, the tree is now
  clean for git

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

David Rowley sent in a patch to change some uses of appendPQExpBuffer
to appendPQExpBufferStr.

Michael Paquier sent in two revisions of a patch to remove the
'archive' wal_level.

Atri Sharma sent in another revision of a patch to implement WITHIN

Heikki Linnakangas and Andres Freund trade patches to fix an issue
where there was a missing RelationCloseSmgr in FreeFakeRelcacheEntry.

Alexander Korotkov and Heikki Linnakangas traded patches to improve
GIN indexes by adding information to them.

Arul Shaji Arulappan sent in a patch to add NCHAR and NVARCHAR types.

Heikki Linnakangas sent in a patch to fix an issue where certain types
of failures on insertion into a b-tree can cause havoc.

Sameer Thakur sent in another revision of a patch to prevent
underestimates from propagating in pg_stat_statements.

Andres Freund sent in a patch to add cassert-only checks against
unlocked use of relations.

Oskari Saarenmaa sent in two more revisions of a patch to identify
whether a PostgreSQL build is from a standard released version.

Rajeev Rastogi sent in a patch to split the pg_resetxlog output into
pre- and post-sections, per TODO.

Andres Freund sent in another revision of a patch to implement some
infrastructure for logical changesets.

KaiGai Kohei sent in a pair of patches which add a custom scan node
and use same to allow pushing down JOINs to a remote data store, in
this case via the PostgreSQL FDW.

Marko Kreen sent in a pair of patches to the SSL implementation, one
which adds a GUC option to prefer server cipher order, the other which
supports ECDH key excange.

Andres Freund sent in two patches to make better atomics, taking the
capabilities of common CPUs into account.

Dean Rasheed sent in a WIP patch to make security barrier views

David Rowley sent in a patch to fix an unused variable warning on
Windows build.

Andres Freund sent in two more revisions of a patch to fix an ALTER
TABLE regression test issue.

Tom Lane sent in a patch to check volatility within sublinks and
disallow pullup of a subquery when it's found.

Dilip Kumar sent in two revisions of a patch to allow vacuumdb to use
more than one core.

Etsuro Fujita sent in a patch to improve the code in tidbitmap.c and
make it more efficient in the process.

Robert Haas sent in another revision of a patch to allow on-detach
callbacks for shared memory segments.

Alvaro Herrera sent a WIP patch for CREATE EVENT TRIGGER.

Nigel Heron sent in another revision of a patch to collect and report
on statistics for network traffic.

Alvaro Herrera sent in another revision of a patch to implement
min-max indexes.

Peter Eisentraut sent in a patch to implement parameter_default in the
information schema.

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