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

The 6th annual Highload++ conference will be on October 22-23, 2012 in
Moscow, Russia.

== PostgreSQL Product News ==

The PGXN Client version 1.2 has been released.

Benetl 4.1, a free ETL tool for postgreSQL, released.

== PostgreSQL Jobs for October ==


== PostgreSQL Local ==

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

There will be a PGDay November 9, 2012 at USP, São Paulo

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

This year Ecuador's PGDay will be held at Quito city on November 17th,
2012.  The Call for Papers is open until October 10.  Send proposals
to Jaime Casanova jaime  2ndquadrant  com.

The sixth edition of the Italian PostgreSQL Day (PGDay.IT 2012) will
be held on November 23, 2012 in Prato, Tuscany.  The International
Call for Papers is now open. Talks and presentations in English are
accepted.  Information in English for papers submission is available

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

- The max shared_buffers value that initdb will choose was raised,
  update docs.  Jeff Janes

- Fix access past end of string in date parsing.  This affects
  date_in(), and a couple of other funcions that use DecodeDate().
  Hitoshi Harada

- Add #includes needed on some platforms in the new files.  Hopefully
  this makes the *BSD buildfarm animals happy.

- Fix typo in previous warning-silencing patch.  Fujii Masao

- Silence compiler warning about pointer type mismatch on some
  platforms.  timeval.t_sec is of type time_t, which is not always
  compatible with long.  I'm not sure if this was just harmless
  warning or a real bug, but this fixes it, anyway.

- Fix two bugs introduced in the xlog.c split.  The comment explaining
  the naming of timeline history files was wrong, and the history file
  was not being arhived.  Pointed out by Fujii Masao.

- Split off functions related to timeline history files and XLOG
  archiving.  This is just refactoring, to make the functions
  accessible outside xlog.c.  A followup patch will make use of that,
  to allow fetching timeline history files over streaming replication.

- Return the number of rows processed when COPY is executed through
  SPI.  You can now get the number of rows processed by a COPY
  statement in a PL/pgSQL function with "GET DIAGNOSTICS x =
  ROW_COUNT".  Pavel Stehule, reviewed by Amit Kapila, with some
  editing by me.

- Add --sampling-rate option to pgbench.  This allows logging only
  some fraction of transactions, greatly reducing the amount of log
  generated.  Tomas Vondra, reviewed by Robert Haas and Jeff Janes.

- Fix typo in comment, and reword it slightly while we're at it.

- Use the regular main processing loop also in walsenders.  The
  regular backend's main loop handles signal handling and error
  recovery better than the current WAL sender command loop does. For
  example, if the client hangs and a SIGTERM is received before
  starting streaming, the walsender will now terminate immediately,
  rather than hang until the connection times out.

Alvaro Herrera pushed:

- Remove collations from generic ALTER test.  The error messages they
  generate are not portable enough.  Also, since the only point of the
  alter_generic_1 expected file was to cover platforms with no
  collation support, it's now useless, so remove it.

- Refactor "ALTER some-obj SET SCHEMA" implementation.  Instead of
  having each object type implement the catalog munging independently,
  centralize knowledge about how to do it and expand the existing
  table in objectaddress.c with enough data about each object type to
  support this operation.  Author: KaiGai Kohei Tweaks by me Reviewed
  by Robert Haas

- REASSIGN OWNED: consider grants on tablespaces, too.  Apparently
  this was considered in the original code (see commit cec3b0a9) but I
  failed to notice that such entries would always be skipped by the
  database check at the start of the loop.  Per bugs #7578 by Nikolay,
  #6116 by [email protected]

- refactor ALTER some-obj SET OWNER implementation.  Remove duplicate
  implementation of catalog munging and miscellaneous privilege and
  consistency checks.  Instead rely on already existing data in
  objectaddress.c to do the work.  Author: KaiGai Kohei Tweaked by me
  Reviewed by Robert Haas

Bruce Momjian pushed:

- Add C comment that IsBackendPid() is called by external modules, so
  we don't accidentally remove it.

- In pg_upgrade, try to convert the locale names to canonical form
  before comparison;  also report the old/new values if they don't
  match.  Backpatch to 9.2.

- Adjust pg_upgrade query so toast tables related to system catalog
  schema entries are not dumped.   This fixes an error caused by
  droping/recreating the information_schema, but other failures were
  also possible.  Backpatch to 9.2.

- In pg_upgrade, improve error reporting when the number of relation
  objects does not match between the old and new clusters.  Backpatch
  to 9.2.

- In pg_upgrade, use full path name for analyze_new_cluster.sh script.
  Backpatch to 9.2.

Andrew Dunstan pushed:

- Allow a few seconds for Windows to catch up with a directory rename
  when checking pg_upgrade.

- Quiet a few MSC compiler warnings.

- Fix typo in previous MSC commit.

Tom Lane pushed:

- Standardize naming of malloc/realloc/strdup wrapper functions.  We
  had a number of variants on the theme of "malloc or die", with the
  majority named like "pg_malloc", but by no means all.  Standardize
  on the names pg_malloc, pg_malloc0, pg_realloc, pg_strdup.  Get rid
  of pg_calloc entirely in favor of using pg_malloc0.  This is an
  essentially cosmetic change, so no back-patch.  (I did find a couple
  of places where psql and pg_dump were using plain malloc or strdup
  instead of the pg_ versions, but they don't look significant enough
  to bother back-patching.)

- Work around unportable behavior of malloc(0) and realloc(NULL, 0).
  On some platforms these functions return NULL, rather than the more
  common practice of returning a pointer to a zero-sized block of
  memory.  Hack our various wrapper functions to hide the difference
  by substituting a size request of 1.  This is probably not so
  important for the callers, who should never touch the block anyway
  if they asked for size 0 --- but it's important for the wrapper
  functions themselves, which mistakenly treated the NULL result as an
  out-of-memory failure.  This broke at least pg_dump for the case of
  no user-defined aggregates, as per report from Matthew Carrington.
  Back-patch to 9.2 to fix the pg_dump issue.  Given the lack of
  previous complaints, it seems likely that there is no live bug in
  previous releases, even though some of these functions were in place
  before that.

- Avoid planner crash/Assert failure with joins to unflattened
  subqueries.  examine_simple_variable supposed that any RTE_SUBQUERY
  rel it gets pointed at must have been planned already.  However,
  this isn't a safe assumption because we must do selectivity
  estimation while generating indexscan paths, and that code might
  look at join clauses involving a rel that the loop in
  set_base_rel_sizes() hasn't reached yet.  The simplest fix is to
  play dumb in such a situation, that is give up trying to extract any
  stats for the Var.  This could possibly be improved by making a
  separate pass over the RTE list to plan each unflattened subquery
  before we start the main planning work --- but that would be pretty
  invasive and it doesn't seem worth it, for now at least.  (We
  couldn't just break set_base_rel_sizes() into two loops: the prescan
  would need to handle all subquery rels in the query, not only those
  in the current join subproblem.) This bug was introduced in commit
  1cb108efb0e60d87e4adec38e7636b6e8efbeb57, although I think that
  subsequent changes may have exposed it more than it was originally.
  Per bug #7580 from Maxim Boguk.

- Support CREATE SCHEMA IF NOT EXISTS.  Per discussion, schema-element
  subcommands are not allowed together with this option, since it's
  not very obvious what should happen to the element objects.
  Fabrízio de Royes Mello

- Fix permissions explanations in CREATE DATABASE and CREATE SCHEMA
  docs.  These reference pages still claimed that you have to be
  superuser to create a database or schema owned by a different role.
  That was true before 8.1, but it was changed in commits
  aa1110624c08298393dfce996f7b21809d98d3fd and
  f91370cd2faf1fd35a1ac74d84652a85ed841919 to allow assignment of
  ownership to any role you are a member of.  However, at the time we
  were thinking of that primarily as a change to the ALTER OWNER
  rules, so the need to touch these two CREATE ref pages got missed.

- Fix parse location tracking for lists that can be empty.  The
  previous coding of the YYLLOC_DEFAULT macro behaved strangely for
  empty productions, assigning the previous nonterminal's location as
  the parse location of the result.  The usefulness of that was (at
  best) debatable already, but the real problem is that in
  list-generating nonterminals like OptFooList: /* EMPTY */ { ... } |
  OptFooList Foo { ... } ; the initially-identified location would get
  copied up, so that even a nonempty list would be given a bogus parse
  location.  Document how to work around that, and do so for
  OptSchemaEltList, so that the error condition just added for CREATE
  SCHEMA IF NOT EXISTS produces a sane error cursor.  So far as I can
  tell, there are currently no other cases where the situation arises,
  so we don't need other instances of this coding yet.

- Make CREATE AGGREGATE complain if the initcond is invalid for the
  datatype.  The initial transition value is stored as a text string
  and not fed to the transition type's input function until runtime
  (so that values such as "now" don't get frozen at creation time).
  Previously, CREATE AGGREGATE didn't do anything with it but that,
  which meant that even erroneous values would be accepted and not
  complained of until the aggregate is used.  This seems unhelpful,
  and it's confused at least one user, as in Rhys Stewart's recent
  report.  It seems worth taking a few more cycles to invoke the input
  function and verify that the value is acceptable.  We can't do this
  if the transition type is polymorphic, but in normal aggregates we
  know the actual transition type so we can call the right input

- getnameinfo_unix has to be taught not to insist on NI_NUMERIC flags,
  too.  Per testing of previous patch.

- Improve documentation about large-object functions.  Copy-editing
  for previous patch, plus fixing some longstanding markup issues and
  oversights (like not mentioning that failures will set the
  PQerrorMessage string).

- Autoconfiscate selection of 64-bit int type for 64-bit large object
  API.  Get rid of the fundamentally indefensible assumption that
  "long long int" exists and is exactly 64 bits wide on every platform
  Postgres runs on.  Instead let the configure script select the type
  to use for "pg_int64".  This is a bit of a pain in the rear since we
  do not want to pollute client namespace with all the random symbols
  that pg_config.h defines; instead we have to create a separate
  generated header file, "pg_config_ext.h".  But now that the
  infrastructure is there, we might have the ability to add some other
  stuff that's long been wanting in this area.

Peter Eisentraut pushed:

- Improve some LDAP authentication error messages

- Remove redundant code for getnameinfo() replacement Our
  getnameinfo() replacement implementation in getaddrinfo.c failed
  unless NI_NUMERICHOST and NI_NUMERICSERV were given as flags,
  because it doesn't resolve host names, only numeric IPs.  But per
  standard, when those flags are not given, an implementation can
  still degrade to not returning host names, so this restriction is
  unnecessary.  When we remove it, we can eliminate some code in
  postmaster.c that apparently tried to work around that.

- PL/pgSQL: rename gram.y to pl_gram.y.  This makes the naming inside
  plpgsql consistent and distinguishes the file from the backend's
  gram.y file.  It will also allow easier refactoring of the bison
  make rules later on.

- Improve LDAP authentication documentation.  Use the terms "simple
  bind" and "search+bind" consistently do distinguish the two modes
  (better than first mode and second mode in any case).  They were
  already used in some places, now it's just more prominent.  Split up
  the list of options into one for common options and one for each
  mode, for clarity.  Add configuration examples for either mode.

Michael Meskes pushed:

- In ECPG, fixed test for array boundary.  Instead of continuing if
  the next character is not an array boundary get_data() used to
  continue only on finding a boundary so it was not able to read any
  element after the first.

- In the ECPG documents, removed sentence about not being able to
  retrieve more than one row at a time, because it is not correct.

Tatsuo Ishii pushed:

- Add API for 64-bit large object access.  Now users can access up to
  4TB large objects (standard 8KB BLCKSZ case).  For this purpose new
  libpq API lo_lseek64, lo_tell64 and lo_truncate64 are added.  Also
  corresponding new backend functions lo_lseek64, lo_tell64 and
  lo_truncate64 are added. inv_api.c is changed to handle 64-bit
  offsets.  Patch contributed by Nozomi Anzai (backend side) and Yugo
  Nagata (frontend side, docs, regression tests and example program).
  Reviewed by Kohei Kaigai. Committed by Tatsuo Ishii with minor

- Bump up catalog vesion due to 64-bit large object API functions

- Fix compiling errors on Windows platform. Fix wrong usage of
  INT64CONST macro. Fix lo_hton64 and lo_ntoh64 not to use int32_t and

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Karl O. Pinc sent in another revision of the patch to describe the
AND-mask nature of the permission system.

Peter Eisentraut sent in a patch to fix host name lookups in hba.

Dimitri Fontaine sent in a patch to fix a bug with EXTENSIONs.

Alexander Korotkov sent in a patch to remove unused targets which are
used only for order by when data already comes in right order.

Karl O. Pinc sent in another revision of the patch to differentiate
which catalogs use only OIDs to ensure uniqueness from those which use
other groups of columns for this purpose.

Phil Sorber sent in a patch to add a #define for the OID of UUID,
having lost an argument to Thom Brown.

Heikki Linnakangas sent in another revision of the patch to allow
switching timelines over streaming replication.

Michael Paquier sent in a patch to implement REINDEX CONCURRENTLY.

Zoltan Boszormenyi sent in another patch for the lock timeout/common
SIGALARM framework.

Alexander Korotkov sent in another revision of the patch to remove
bloat from gistchoose.

Zoltan Boszormenyi sent in four more pairs of patches, one to refactor
PQConnInfo, the other to enable pg_basebackup to configure and start a

Amit Kapila sent in two more revisions of a patch to improve update
performance by reducing the WAL volume.

Amit Kapila sent in another revision of the patch to help walreceiver
detect network partition faster.

Marc Balmer sent in two revisions of a patch to add FET (Belarus) to
the default time zone abbreviations.

Selena Deckelmann sent in another revision of the patch to fix some
infelicities in the contexts where per-database and per-role
parameters are checked.

Selena Deckelmann sent in another revision of the patch to add

Tomonari Katsumata sent in a patch to fix an error message when
ANALYZE is run on a hot standby.

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