== PostgreSQL Weekly News - November 30 2008 ==
JPUG's Let's PostgreSQL site is now open.
http://lets.postgresql.jp/
Drafts of a Russian translation of the Introduction and Tutorial
sections of the PostgreSQL manual are at:
http://postgresql.ru.net/manual/index.html
== PostgreSQL Product News ==
Archiveopteryx 2.13 and 3.0.4 released.
http://www.archiveopteryx.org/2.13
http://www.archiveopteryx.org/3.0.4
PostgreSQL has new JDBC drivers.
http://jdbc.postgresql.org/changes.html
Slony 2.0.0 released.
http://slony.info/
== PostgreSQL Jobs for November ==
http://archives.postgresql.org/pgsql-jobs/2008-11/threads.php
== PostgreSQL Local ==
David Fetter will be speaking at OSDC Sydney December 3-5.
http://www.osdc.com.au/2008/index.html
FOSDEM 2009 will take place February 7-8 2009 in Brussels, Belgium.
PostgreSQL will share a booth with the BSD groups and have a developer
room. Submit your 20-minute, 45 minute or lightning talks to
fosdem (at) postgresql (dot) eu.
PGCon Brazil will be take place October 23-24 2009 at Unicamp in
Campinas, Sao Paulo state.
== PostgreSQL in the News ==
Planet PostgreSQL: http://planet.postgresql.org/
PostgreSQL Weekly News is brought to you this week by David Fetter and
Devrim GUNDUZ.
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.
== Applied Patches ==
Magnus Hagander committed:
- Add support for matching wildcard server certificates to the new SSL
code. This uses the function fnmatch() which is not available on
all platforms (notably Windows), so import the implementation from
NetBSD into src/port.
- In pgsql/src/interfaces/libpq/fe-secure.c, disable FNM_CASEFOLD.
Need a proper solution later, but just comment it out for now so the
buildfarm recovers.
- Support regular expressions in pg_ident.conf.
Peter Eisentraut committed:
- CLUSTER VERBOSE and corresponding clusterdb --verbose option. Jim
Cox and Peter Eisentraut
- Move FAQ_AIX information to installation instructions. The
information on why the shared libraries are built the way they are
was not relevant to end users and has been made a mailing list
archive link in Makefile.shlib.
- In pgsql/src/test/regress/pg_regress.c, if pg_ctl stop fails, print
an error message and exit (instead of going out of our way to ignore
the exit status). If this ever really happens, worst case you will
not see the "score" at the bottom of the test run.
- Add %expect 0 to all parser input files to prevent conflicts
slipping by.
- In pgsql/src/backend/catalog/sql_features.txt, feature F442 "Mixed
column references in set functions" is supported.
- configure check for docbook2man program, used in the new XML-based
man page build target. This covers from-source, Debian, and Fedora
installation variants.
- In pgsql/src/backend/catalog/sql_features.txt, mark features related
to WITH/SELECT as supported.
- In pgsql/src/backend/catalog/sql_features.txt, drop CLI related
features from the list, since we don't track the ODBC business in
core.
- In pgsql/src/backend/catalog/sql_features.txt, add that PL/Java is
an implementation of SQL/JRT, and drop claim that PL/pgSQL has much
to do with SQL/PSM.
- Reduce risk of accidentally running temp-install regression tests
against a mismatching installation. Pick a default port number
calculated from the version number, and try a few times with other
numbers if that one doesn't work. Check if we can connect to the
port before starting our own postmaster, to detect some other server
already running there. To simplify the code, drop --temp-port
option and use --port for both temp-install and pre-installed case.
Tom Lane committed:
- In pgsql/src/port/Makefile, omit src/port/pipe.c on non-Windows
platforms. It's useless and draws complaints about empty object
files on some platforms, eg Darwin.
- Remove PGINTERVALSTYLE from the set of special environment variables
for libpq. As noted by Peter, adding this variable created a risk
of unexpected connection failures when talking to older server
versions, and since it doesn't do anything you can't do with
PGOPTIONS, it doesn't seem really necessary. Removing it does
occasion a few extra lines in pg_regress.c, but saving a getenv()
call per libpq connection attempt is perhaps worth that anyway.
- In pgsql/doc/src/sgml/information_schema.sgml,
information_schema.key_column_usage.position_in_unique_constraint
was misdocumented as not being implemented. In reality it has
worked since the release of 8.2.
- In psql, adjust the behavior of the PQExpBuffer code to make it have
well-defined results (ie, an empty "broken" buffer) if memory
overrun occurs anywhere along the way to filling the buffer. The
previous coding would just silently discard portions of the intended
buffer contents, as exhibited in trouble report from Sam Mason.
Also, tweak psql's main loop to correctly detect and report such
overruns. There's probably much more that should be done in this
line, but this is a start.
- Make DISCARD ALL discard advisory locks, too. Marko Kreen
- In pgsql/src/test/regress/pg_regress.c, let's see if using -c
instead of -- style fixes the PGOPTIONS issue.
- In pgsql/src/interfaces/libpq/pqexpbuffer.h, tweak new
PQExpBufferBroken macro to suppress warnings from pickier versions
of gcc.
- In pgsql/src/backend/executor/functions.c, fix minor memory leak
introduced in recent SQL-functions hacking: the DestReceiver created
during postquel_start needs to be destroyed during postquel_end. In
a moment of brain fade I had assumed this would be taken care of by
FreeQueryDesc, but it's not (and shouldn't be).
- In pgsql/doc/src/sgml/ref/discard.sgml, tweak wording of DISCARD ALL
description to avoid giving the impression that the presented list
of equivalent operations is meant to be the primary definition of
what it does. Per comment from Guillaume Smet.
- Back-patch change to make DISCARD ALL release advisory locks. Per
discussion.
- Cosmetic cleanups in contrib/isn (doesn't fix the passbyval problem)
- In pgsql/src/backend/optimizer/path/joinrels.c, my recent fix for
semijoin planning didn't actually work for a semijoin with a RHS
that can't be unique-ified --- join_is_legal has to check that
before deciding to build a join, else we'll have an unimplementable
joinrel. Per report from Greg Stark.
- Fix an oversight in uninstall_isn.sql: must drop operator families
explicitly.
- Partial fix for fallout from temp-port changes. ecpg still needs
more work, but I think this is enough to turn the buildfarm green
again.
- Make sure we give an appropriate user-facing error when attempting
to drop a table that is referenced by an open cursor. Fix unstable
ecpg regression test result that was produced by this oversight.
- Fix recently-added array_agg tests to ensure they produce stable
results regardless of plan changes. Per intermittent buildfarm
failures on "pigeon" and others.
- In pgsql/src/backend/utils/fmgr/funcapi.c, remove inappropriate
memory context switch in shutdown_MultiFuncCall(). This was a
thinko introduced in a patch from last February; it results in
memory leakage if an SRF is shut down before the actual end of
query, because subsequent code will be running in a longer-lived
context than it's expecting to be.
- Add a "LIKE = typename" clause to CREATE TYPE for base types. This
allows the basic representational details (typlen, typalign,
typbyval, typstorage) to be copied from an existing type rather than
listed explicitly in the CREATE TYPE command. The immediate reason
for this is to provide a simple solution for add-on modules that
want to define types represented as int8, float4, or float8: as of
8.4 the appropriate PASSEDBYVALUE setting is platform-specific and
so it's hard for a SQL script to know what to do. This patch fixes
the contrib/isn breakage reported by Rushabh Lathia.
- Clean up the API for DestReceiver objects by eliminating the
assumption that a Portal is a useful and sufficient additional
argument for CreateDestReceiver --- it just isn't, in most cases.
Instead formalize the approach of passing any needed parameters to
the receiver separately. One unexpected benefit of this change is
that we can declare typedef Portal in a less surprising location.
This patch is just code rearrangement and doesn't change any
functionality. I'll tackle the HOLD-cursor-vs-toast problem in a
follow-on patch.
- Fix dblink and tablefunc to not return with the wrong
CurrentMemoryContext. Per buildfarm results.
- In pgsql/contrib/tablefunc/tablefunc.c, refactor crosstab() to build
and return a tuplestore instead of using value-per-call mode. This
should be more efficient in normal usage, but the real problem with
the prior coding was that it returned with a SPI call still active.
That could cause problems if execution was interleaved with anything
else that might use SPI.
Alvaro Herrera committed:
- Use ResourceOwners in the snapshot manager, instead of attempting to
track them by hand. As an added bonus, the new code is smaller and
more understandable, and the ugly loops are gone. This had been
discussed all along but never implemented. It became clear that it
really needed to be fixed after a bug report by Pavan Deolasee.
Michael Meskes committed:
- In ecpg, when creating a varchar struct name, braces must be
discarded.
- In pgsql/src/interfaces/ecpg/preproc/type.c, removed strchrnul.
- In pgsql/src/interfaces/ecpg/preproc/type.c, replaced strchrnul by
strchr.
- Applied patch by Ron Mayer to merge the new interval style into
ecpg.
- In pgsql/src/interfaces/ecpg/pgtypeslib/interval.c, interval.c needs
limits.h.
Heikki Linnakangas committed:
- Rely on relcache invalidation to update the cached size of the FSM.
- In pgsql/src/backend/storage/buffer/localbuf.c, fix #ifdeffed
debugging code to work with relation forks.
- In pgsql/src/backend/storage/freespace/freespace.c, don't force
creation of the FSM on searches. It will still be created as soon
as the first page fills up, and is marked as (almost) full, though.
- In pgsql/src/backend/catalog/heap.c, fix obsolete comment regarding
FSM truncation.
- In pgsql/src/backend/tsearch/ts_typanalyze.c, fix bug in the
tsvector stats collection function, which caused a crash if the
sample contains just a one tsvector, containing only one lexeme.
== Rejected Patches (for now) ==
No one was disappointed this week :-)
== Pending Patches ==
Hitoshi Harada and Heikki Linnakangas sent in a flock of patches for
windowing functions.
Ramon Lawrence sent in another revision of his patch to improve the
performance of multi-batch hash joins for skewed data sets.
KaiGai Kohei sent in another revision of his SE-PostgreSQL patches.
Peter Eisentraut sent in three revisions of a patch to make the
regression test setup less brittle.
Magnus Hagander sent in another patch to fix LC_TIME on Windows.
Peter Eisentraut sent in and withdrew another revision of the distinct
types patch including work from Jeff Davis.
Alvaro Herrera sent in a patch to silence a snapshot warning.
Pavel Stehule sent in another revision of his patch to implement
default function parameters.
Koichi Suzuki sent in another revision of his pg_readahead patch.
Heikki Linnakangas sent in another revision of his visibility map
patch.
Fujii Masao sent in another revision of his synchronous replication
patch.
Magnus Hagander sent in another revision of his SSL wildcard-matching
patch.