== PostgreSQL Weekly News - January 04 2009 ==
Happy New Year from the PostgreSQL Weekly News :)
== PostgreSQL Product News ==
PyGreSQL 4.0 released.
Devrim GUNDUZ has released another set of snapshot RPMs. Go forth and
== PostgreSQL Local ==
SYDPUG will be meeting February 3, 2009 at 6:30pm. Watch this space
Andreas 'ads' Scherbaum will be presenting a talk at Perl Workshop
2009 on February 25 in Frankfurt am Main, Germany.
PGCon 2009 will be held 21-22 May 2009, in Ottawa at the University of
Ottawa. It will be preceded by two days of tutorials on 19-20 May
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 [email protected], German language
to [email protected], Italian language to [email protected].
== Applied Patches ==
Michael Meskes committed:
- First round of whitespace changes to ecpg. Everything but
connect-test1 should be fine.
- In pgsql/src/interfaces/ecpg/test/expected/connect-test1.c, finally
the last test.
Tom Lane committed:
- In pgsql/doc/src/sgml/ref/select.sgml, fix thinko in documentation
of default window frame behavior, per Hitoshi Harada.
- In pgsql/src/backend/utils/cache/relcache.c, fix oversight in ALTER
TABLE ENABLE/DISABLE RULE patch: the new enabled field needs to be
included in equalRuleLocks() comparisons, else updates will fail to
propagate into relcache entries when they have positive reference
count (ie someone is using the relcache entry). Per report from
- Reduce the last group of parallel regression tests to 19 tests, per
failure on buildfarm member bear. Sync the test order in
serial_schedule with that in parallel_schedule.
- Add some basic support for window frame clauses to the
window-functions patch. This includes the ability to force the
frame to cover the whole partition, and the ability to make the
frame end exactly on the current row rather than its last ORDER BY
peer. Supporting any more of the full SQL frame-clause syntax will
require nontrivial hacking on the window aggregate code, so it'll
have to wait for 8.5 or beyond.
- Add a WINDOW attribute to CREATE FUNCTION, and teach pg_dump about
it, so that user-defined window functions are possible. For the
moment you'll have to write them in C, for lack of any interface to
the WindowObject API in the available PLs, but it's better than no
support at all. There was some debate about the best syntax for
this. I ended up choosing the "it's an attribute" position --- the
other approach will inevitably be more work, and the likely market
for user-defined window functions is probably too small to justify
- Consistently use multi-line formatting for all ACL columns printed
by psql's various display commands, not only for \z. In passing,
fix some infelicities in the newly added \d commands for SQL-MED
catalogs. Andreas Scherbaum and Tom Lane
- In pgsql/src/bin/psql/describe.c, fix another problem in SQL-MED \d
displays: should have a clean failure report if the command is
attempted against an old server.
- Throw error if a <window definition> references a window that
already has a frame clause, as appears to be required by the fine
print in the SQL spec. Per discussion with Pavel, not doing so
risks user confusion.
- In pgsql/src/backend/tcop/postgres.c, fix an oversight in my patch
of a couple weeks ago that ensured a snapshot is available during
datatype input in Bind message processing. I put the
PopActiveSnapshot() or equivalent just before PortalDefineQuery,
which is an unsafe spot for it (in 8.3 and later) because we are
carrying a plancache refcount that hasn't yet been assigned to the
portal. Any error thrown there would result in leaking the
refcount. It's not exactly likely that PopActiveSnapshot would
throw an elog, perhaps, but it could happen. Reorder the code and
add another comment warning not to do that.
- Fix a couple of missed copyright dates.
- Tweak guc.c to allow underscores in the names of custom variable
classes, and change auto_explain's custom GUC variables to be named
auto_explain.xxx not just explain.xxx. Per discussion in connection
with the pg_stat_statements patch, it seems like a good idea to have
the convention that custom variable classes are named the same as
their defining module. Committing separately since this should
happen regardless of what happens with pg_stat_statements itself.
- In pgsql/src/backend/utils/misc/guc.c, write_nondefault_variables
must take care to write custom_variable_classes first; otherwise
backends reading the file might reject values of custom variables.
Per experimentation with auto_explain.
- Create a "shmem_startup_hook" to be called at the end of shared
memory initialization, to give loadable modules a reasonable place
to perform creation of any shared memory areas they need. This is
the logical conclusion of our previous creation of
RequestAddinShmemSpace() and RequestAddinLWLocks(). We don't need
an explicit shmem_shutdown_hook, because the existing on_shmem_exit
and on_proc_exit mechanisms serve that need. Also, adjust
SubPostmasterMain so that libraries that got loaded into the
postmaster will be loaded into all child processes, not only regular
backends. This improves consistency with the non-EXEC_BACKEND
behavior, and might be necessary for functionality for some types of
- Allow loadable modules to create PGC_POSTMASTER GUC variables, but
only when loaded via shared_preload_libraries. Needed for support
of pg_stat_statements, or pretty much anything else that wants a GUC
to control size of a shared memory allocation.
- Add a pg_encoding_mbcliplen() function that is just like
pg_mbcliplen() except the caller can specify the encoding to work
in; this will be needed for pg_stat_statements. In passing, do some
marginal efficiency hacking and clean up some comments. Also,
prevent the single-byte-encoding code path from fetching one byte
past the stated length of the string (this last is a bug that might
need to be back-patched at some point).
- Add contrib/pg_stat_statements for server-wide tracking of statement
execution statistics. Takahiro Itagaki.
Heikki Linnakangas committed:
- In pgsql/src/include/access/nbtree.h, the flag to mark dead tuples
is nowadays called LP_DEAD, not LP_DELETE. Simon Riggs.
- In pgsql/src/backend/catalog/storage.c, fix embarrassing bug in
recent smgr refactoring patch: WAL records should be written for
*non*-temp tables only. Report and test case by Mark Kirkwood and
Bruce Momjian committed:
- In pgsql/contrib/uuid-ossp/uuid-ossp.c, add comma so this copyright
notice is picked up in 2010.
- In pgsql/src/tools/copyright, make comma optional for copyright text
- In pgsql/src/tools/copyright, mention src/interfaces/libpq/libpq.rc.in
needs to be updated for copyright too.
- In pgsql/src/tools/copyright, be smarter --- accept missing comma,
and force comma if missing.
Joe Conway committed:
- In pgsql/contrib/dblink/dblink.c, fix bug per Oleksiy Shchukin - 2nd
argument for dblink_get_result(text,bool) is PG_GETARG_BOOL(2),
should be PG_GETARG_BOOL(1). Apply simple fix to back branches
only. More extensive change to be applied to head per Tom's
Alvaro Herrera committed:
- In pgsql/src/include/miscadmin.h, export IsUnderPostmaster on win32.
== Rejected Patches (for now) ==
No one was disappointed this week :-)
== Pending Patches ==
Jeff Davis sent in an updated of the patch which does B-Tree emulation
Nikhil Sontakke sent in two revisions of a patch which fixes a casting
bug in PL/PgSQL.
KaiGai Kohei sent in two more revisions of his SE-PostgreSQL patches.
Andrew Dunstan sent in another revision of his parallel restore patch.
Alvaro Herrera sent in two more revisions of his reloptions
Bryce Cutt sent in another revision of the performance improvement for
multi-batch hash joins on skewed data sets.
Kevin Grittner sent in a patch explicating the SERIALIZABLE isolation
Stephen Frost sent in two more revisions of his patch to allow
Magnus Hagander sent in a patch to add a parameter called
include_realm to pg_hba.conf for Kerberos.
Simon Riggs sent in a patch to fix lazy_truncate_heap.
Joe Conway sent in two revisions of a patch to integrate SQL/MED
connections with dblink.
Alvaro Herrera sent in two more revisions of his generic reloptions
Robert Haas sent in another revision of the posix_fadvise patch.
Magnus Hagander sent in another revision of his libpq SSL patch.
Alex Hunsaker sent in a patch based on the reloptions patch to control
three knobs on lz_compression on a per-table basis.