== PostgreSQL Weekly News – March 18 2012 ==
== PostgreSQL Weekly News – March 18 2012 ==
Initial meeting of Arizona PostgreSQL Users Group at 5:00 PM on
Thursday, March 29, 2012. Included will be a presentation by Ken
Rosensteel that is an update of his 2011 PGEast presentation on Bull’s
experiences with Large Customer Usage of PostgreSQL. You can join the
mailing list, see the agenda, and RSVP at:
London PostgreSQL Evening Meetup, 17 April 2012
== PostgreSQL Product News ==
DBD::Pg 2.19.1, the Perl interface to PostgreSQL, released.
Lock Tuple extension released:
PGXN Client 1.0.2 released.
PostgreDAC 2.8.0, a Delphi/C++ builder for PostgreSQL, released.
Skytools 2.1.13, a package of tools developed by Skype for replication
and failover including PgQ, a generic queuing framework and Londiste,
a row-based master-slave replication replication system, released:
Skytools 3.0, including cascaded queuing, parallel copy,
multi-database ticker, and new Londiste handler modules for custom
== PostgreSQL Jobs for March ==
== PostgreSQL Local ==
PGDay Austin 2012 will be held March 28.
PGDay DC 2012 will be held on March 30.
PGDay NYC will be held April 2, 2012 at Lighthouse International in
New York City.
PGCon 2012 will be held 17-18 May 2012, in Ottawa at the University of
Ottawa. It will be preceded by two days of tutorials on 15-16 May 2012.
PGDay France will be in Lyon on June 7, 2012.
== 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@example.com, German language
to firstname.lastname@example.org, Italian language to email@example.com. Spanish language
== Reviews ==
== Applied Patches ==
Bruce Momjian pushed:
- Remove tabs in SGML files
- In pg_upgrade, add various logging improvements: add ability to
control permissions of created files, have psql echo its queries for
easier debugging, output four separate log files, and delete them on
success, add -r/–retain option to keep log files after success,
make logs file append-only, remove -g/-G/-l logging options, suggest
tailing appropriate log file on failure, enhance -v/–verbose
- Uppercase pg_upgrade status output title.
- In pg_upgrade, create a script to incrementally generate more
accurate optimizer statistics so the cluster can be made available
- In pg_upgrade, move new echo quote define into include file.
Peter Eisentraut pushed:
- Use correct sizeof operand in qsort call. Probably no practical
impact, since all pointers ought to have the same size, but it was
wrong nonetheless. Found by Coverity.
- Add comment for missing break in switch. For clarity, following
other sites, and to silence Coverity.
- Add additional safety check against invalid backup label file. It
was already checking for invalid data after “BACKUP FROM”, but would
possibly crash if “BACKUP FROM” was missing altogether. Found by
- COPY: Add an assertion. This is for tools such as Coverity that
don’t know that the grammar enforces that the case of not having a
relation (but instead a query) cannot happen in the FROM case.
- Add missing va_end() calls. Found by Coverity
- pg_dump: Fix some minor memory leaks. Although we often don’t care
about freeing all memory in pg_dump, these functions already freed
the same memory in other code paths, so we might as well do it
consistently. Found by Coverity
- Improve EncodeDateTime and EncodeTimeOnly APIs. Use an explicit
argument to tell whether to include the time zone in the output,
rather than using some undocumented pointer magic.
- Remove unused tzn arguments for timestamp2tm()
- Add const qualifier to tzn returned by timestamp2tm(). The tzn
value might come from tm->tm_zone, which libc declares as const, so
it’s prudent that the upper layers know about this as well.
- pg_restore: Fix memory and file descriptor leak with directory
format. Found by Coverity
- backend: Fix minor memory leak in configuration file processing.
Just for consistency with the other code paths. Found by Coverity
- psql: Remove inappropriate const qualifiers Since mbvalidate() can
alter the string it validates, having the callers claim that the
strings they accept are const is inappropriate.
- libpq: Fix minor memory leaks. When using connection info arrays
with a conninfo string in the dbname slot, some memory would be
leaked if an error occurred while processing the following array
slots. found by Coverity
- pg_dump: Fix crash with invalid pg_cast row. An invalid combination
of pg_cast.castfunc and pg_cast.castmethod would result in a
segmentation fault. Now it prints a warning. Found by Coverity
- Add note about column privilege behavior to REVOKE reference page.
suggested by Josh Berkus
Tom Lane pushed:
- Fix SPGiST vacuum algorithm to handle concurrent tuple motion
properly. A leaf tuple that we need to delete could get moved as a
consequence of an insertion happening concurrently with the VACUUM
scan. If it moves from a page past the current scan point to a page
before, we’ll miss it, which is not acceptable. Hence, when we see
a leaf-page REDIRECT that could have been made since our scan
started, chase down the redirection pointer much as if we were doing
a normal index search, and be sure to vacuum every page it leads to.
This fixes the issue because, if the tuple was on page N at the
instant we start our scan, we will surely find it as a consequence
of chasing the redirect from page N, no matter how much it moves
around in between. Problem noted by Takashi Yamamoto.
- Create a stack of pl/python “execution contexts”. This replaces the
former global variable PLy_curr_procedure, and provides a place to
stash per-call-level information. In particular we create a
per-call-level scratch memory context. For the moment, the scratch
context is just used to avoid leaking memory from datatype output
function calls in PLyDict_FromTuple. There probably will be more
use-cases in future. Although this is a fix for a pre-existing
memory leakage bug, it seems sufficiently invasive to not want to
back-patch; it feels better as part of the major rearrangement of
plpython code that we’ve already done as part of 9.2. Jan Urbański
- Fix minor memory leak in PLy_typeinfo_dealloc(). We forgot to free
the per-attribute array element descriptors. Jan Urbański
- Patch some corner-case bugs in pl/python. Dave Malcolm of Red Hat
is working on a static code analysis tool for Python-related C code.
It reported a number of problems in plpython, most of which were
failures to check for NULL results from object-creation functions,
so would only be an issue in very-low-memory situations. Patch in
HEAD and 9.1. We could go further back but it’s not clear that
these issues are important enough to justify the work. Jan Urbański
- Revisit handling of UNION ALL subqueries with non-Var output
columns. In commit 57664ed25e5dea117158a2e663c29e60b3546e1c I tried
to fix a bug reported by Teodor Sigaev by making non-simple-Var
output columns distinct (by wrapping their expressions with dummy
PlaceHolderVar nodes). This did not work too well. Commit
b28ffd0fcc583c1811e5295279e7d4366c3cae6c fixed some ensuing problems
with matching to child indexes, but per a recent report from Claus
Stadler, constraint exclusion of UNION ALL subqueries was still
broken, because constant-simplification didn’t handle the injected
PlaceHolderVars well either. On reflection, the original patch was
quite misguided: there is no reason to expect that EquivalenceClass
child members will be distinct. So instead of trying to make them
so, we should ensure that we can cope with the situation when
they’re not. Accordingly, this patch reverts the code changes in
the above-mentioned commits (though the regression test cases they
added stay). Instead, I’ve added assorted defenses to make sure
that duplicate Emmanuel Cecchet child members don’t cause any
problems. Teodor’s original problem (“MergeAppend child’s
targetlist doesn’t match MergeAppend”) is addressed more directly by
revising prepare_sort_from_pathkeys to let the parent MergeAppend’s
sort list guide creation of each child’s sort list. In passing, get
rid of add_sort_column; as far as I can tell, testing for duplicate
sort keys at this stage is dead code. Certainly it doesn’t trigger
often enough to be worth expending cycles on in ordinary queries.
And keeping the test would’ve greatly complicated the new logic in
prepare_sort_from_pathkeys, because comparing pathkey list entries
against a previous output array requires that we not skip any
entries in the list. Back-patch to 9.1, like the previous patches.
The only known issue in this area that wasn’t caused by the
ill-advised previous patches was the MergeAppend planning failure,
which of course is not relevant before 9.1. It’s possible that we
need some of the new defenses against duplicate child Emmanuel
Cecchet entries in older branches, but until there’s some clear
evidence of that I’m going to refrain from back-patching further.
- Improve commentary in match_pathkeys_to_index(). For a little while
there I thought match_pathkeys_to_index() was broken because it
wasn’t trying to match index columns to pathkeys in order. Actually
that’s correct, because GiST can support ordering operators on any
random collection of index columns, but it sure needs a comment.
Robert Haas pushed:
- pgstattuple: Add new error case for spgist indexes. Extracted from
a larger patch by Jaime Casanova, reviewed by Noah Misch. I think
this error message could use some more extensive revision, but this
at least makes the handling of spgist consistent with what we do for
other types of indexes that this code doesn’t know how to handle.
- pgstattuple: Use a BufferAccessStrategy object to avoid
cache-trashing. Jaime Casanova, reviewed by Noah Misch, slightly
modified by me.
- sepgsql_setcon(). This is intended as infrastructure to allow
sepgsql to cooperate with connection pooling software, by allowing
the effective security label to be set for each new connection.
KaiGai Kohei, reviewed by Yeb Havinga.
- Copy editing of sepgsql documentation.
- A couple more fixes for the sepgsql documentation.
Heikki Linnakangas pushed:
- Add comments explaining why our Itanium spinlock implementation is safe.
Andrew Dunstan pushed:
- Honor inputdir and outputdir when converting regression files. When
converting source files, pg_regress’ inputdir and outputdir options
were ignored when computing the locations of the destination files.
In consequence, these options were effectively unusable when the
regression inputs need to be adjusted by pg_regress. This patch
makes pg_regress put the converted files in the same place that
these options specify non-converted input or results files are to be
found. Backpatched to all live branches.
== Rejected Patches (for now) ==
No one was disappointed this week
== Pending Patches ==
Joachim Wieland sent in two more revisions of the patch to implement
Jeff Davis sent in three revisions of a patch to add an initdb option
to refrain from doing an fsync.
Fujii Masao sent in another revision of the patch add xlog location to
Alexander Korotkov sent in a patch to fix an infelicity in GiST
indexing on points.
Pavel Stehule sent in another revision of the PL/pgsql CHECK FUNCTION
Fujii Masao sent in a patch to fix a condition which could cause
walsender to spin the CPU too much.
Etsuro Fujita sent in a patch to support error handling in file_fdw.
Hans-Juergen Schoenig sent in another WIP patch to track cross-column
Heikki Linnakangas sent in another revision of the patch to scale xlog
Marco Nenciarini and Gabriele Bartolini traded patches to support
arrays each element of which is a foreign key.
David Fetter sent in two revisions of a patch to make CREATE FOREIGN
TABLE (… LIKE … ) work.
Fabrízio de Royes Mello sent in two revisions of a patch to include
VALID UNTIL date in d for roles (users and groups).
Shigeru HANADA sent in another revision of the patch to create a
Alexander Shulgin sent in another revision of the patch to add a URI
format to libpq.
Dimitri Fontaine sent in two more revisions of a patch to add command
Daniel Farina sent in three revisions of a patch to make it possible
to initiate back-end termination from SQL, race-free.
Peter Eisentraut sent in a patch to enable renaming domain
Alvaro Herrera sent in another revision of the patch to implement
foreign key locks.
Peter Eisentraut sent in a patch to fix incompatible pointer types
when pg_dump uses the current (i.e. new) zlib.
Joachim Wieland sent in a patch to fix a double free in pg_dump.
Comments are closed.