== PostgreSQL Weekly News – October 07 2012 ==

== 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 <AT> 2ndquadrant <DOT> 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 david@fetter.org, German language
to pwn@pgug.de, Italian language to pwn@itpug.org. Spanish language
to pwn@arpug.com.ar.

== 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 tushar.qa@gmail.com.

– 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
http://git.postgresql.org/pg/commitdiff/7e2f8ed2b0dcff052b8f06069e2d69f02b774f04== 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.

Comments are closed.