== PostgreSQL Weekly News - January 01 2007 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - January 01 2007 ==
Date: 2007-01-02 04:21:09
Message-ID: 20070102042109.GB1996@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-announce

== PostgreSQL Weekly News - January 01 2007 ==

Happy New Year from the PostgreSQL Weekly News!

Chad Wagner has put together some forums to discuss PostgreSQL
http://www.postgresqlforums.com/forums/

Here are some instructions on setting up a Sun cluster with PostgreSQL.
http://docs.sun.com/app/docs/doc/819-5578?q=+postgresql

== PostgreSQL Product News ==

phpPgAdmin 4.1-Beta-1 released.
http://phppgadmin.sourceforge.net

pgadmin3 1.6.1 RPMs for Fedora Core 6 and 7 are built. They are on
main PostgreSQL FTP site.

postgis 1.2.0 is now in Fedora Core Extras 6.

== PostgreSQL Local ==

The Italian PostgreSQL community will be holding a PostgreSQL day this
summer. Bookmark the link below to participate.
http://www.pgday.it

PostgreSQL Weekly News extends a warm welcome to PostreSQL's
Indonesian community.
http://tech.groups.yahoo.com/group/postgresql_indo/

Gavin Sherry is running a PostgreSQL miniconf at Linux.Conf.Au in
Sydney on Tuesday the 16th of January 2007.
http://lca2007.linux.org.au/Miniconfs/PostgreSQL If you would like to
attending, email gavin AT alcove . com . au

== PostgreSQL in the News ==

Planet PostgreSQL: http://www.planetpostgresql.org/

General Bits, Archives and occasional new articles:
http://www.varlena.com/GeneralBits/

PostgreSQL Weekly News is brought to you this week by David Fetter
Devrim GUNDUZ and Robert Treat

== Applied Patches ==

ISHII Tatsuo committed:

- In pgsql/contrib/pgbench/pgbench.c, Call srandom() instead of
srand(). pgbench calls random() later, so it should have called
srandom(). On most platforms except Windows srandom() is actually
identical to srand(), so the bug only bites Windows users. Per bug
report from Akio Ishida.

Teodor Sigaev committed:

- In pgsql/contrib/tsearch2/dict_thesaurus.c, fix memory reallocation
condition.

Tom Lane committed:

- Found the problem with my operator-family changes: by fetching from
pg_opclass during LookupOpclassInfo(), I'd turned
pg_opclass_oid_index into a critical system index. However the
problem could only manifest during a backend's first attempt to load
opclass data, and then only if it had successfully loaded
pg_internal.init and subsequently received a relcache flush; which
made it impossible to reproduce in sequential tests and darn hard
even in parallel tests. Memo to self: when exercising cache flush
scenarios, must disable LookupOpclassInfo's internal cache too.

- Support type modifiers for user-defined types, and pull most
knowledge about typmod representation for standard types out into
type-specific typmod I/O functions. Teodor Sigaev, with some
editorialization by Tom Lane.

- Magnus Hagander'sent patch that adds support for the recent
XML-in-backend stuff to the MSVC build. Most config stuff was
already present for contrib/xml2, but needed to add the includes and
defines to the backend build as well.

- Magnus Hagander's patch to add support for XML build option to MSVC
build scripts.

- Fix multiple breakages in last XML patch.

- Fix up btree's initial scankey processing to be able to detect
redundant or contradictory keys even in cross-data-type scenarios.
This is another benefit of the opfamily rewrite: we can find the
needed comparison operators now.

- Remove caveat about avoiding cross-type operators in constraints
intended for use with constraint exclusion. We can prove those
cases now...

- Enable btree_predicate_proof() to make proofs involving
cross-data-type predicate operators. The hard stuff turns out to be
already done in the previous commit, we need merely open the
floodgates...

- In tsearch2, add a defense to prevent core dumps if 8.2 version of
rank_cd() is used with the 8.1 SQL function definition for it. Per
report from Rajesh Kumar Mallah, such a DBA error doesn't seem at
all improbable, and the cost of checking for it is not very high
compared to the cost of running this function. (It would have been
better to change the C name of the function so it wouldn't be called
by the old SQL definition, but it's too late for that now in the 8.2
branch.)

- In psql, fflush the \o file, if any, after each backslash command.
We already do this for ordinary SQL commands, so it seems consistent
to do it for backslash commands too. Per gripe from Rajesh Kumar
Mallah.

- Revert exports.list change pending closer study.

- Use a more backward-compatible syntax for exports.list on Linux.
Per Thorkil Olesen.

- Improve memory management code to avoid inefficient behavior when a
context has a small maxBlockSize: the maximum request size that we
will treat as a "chunk" needs to be limited to fit in maxBlockSize.
Otherwise we will round up the request size to the next power of 2,
wasting space, which is a bit pointless if we aren't going to make
the blocks big enough to fit additional stuff in them. The example
motivating this is local buffer management, which makes repeated
allocations of 8K (one BLCKSZ buffer) in TopMemoryContext, which has
maxBlockSize = 8K because for the most part allocations there are
small. This leads to each local buffer actually eating 16K of
space, which adds up when there are thousands of them. I intend to
change localbuf.c to aggregate its requests, which will prevent this
particular misbehavior, but it seems likely that similar scenarios
could arise elsewhere, so fixing the core problem seems wise as
well.

- In psql, print combining characters (those reported as having zero
width by PQdsplen()) normally, instead of replacing them by \uXXXX
sequences. Assume that they in fact occupy zero screen space for
formatting purposes. Per gripe from Michael Fuhr and ensuing
discussion.

- In the documentation for rules, use a FROM clause in example UPDATE
commands where appropriate. Also remove long-obsolete statement
that there isn't a check for infinite recursion in view rules.

- Fix broken markup in the monitoring documentation.

- Fix failure due to accessing an already-freed tuple descriptor in a
plan involving HashAggregate over SubqueryScan (this is the known
case, there may well be more). The bug is only latent in releases
before 8.2 since they didn't try to access tupletable slots'
descriptors during ExecDropTupleTable. The least bogus fix seems to
be to make subqueries share the parent query's memory context, so
that tupdescs they create will have the same lifespan as those of
the parent query. There are comments in the code envisioning going
even further by not having a separate child EState at all, but that
will require rethinking executor access to range tables, which I
don't want to tackle right now. Per bug report from Jean-Pierre
Pelletier.

- Repair bug #2839: the various ExecReScan functions need to reset
ps_TupFromTlist in plan nodes that make use of it. This was being
done correctly in join nodes and Result nodes but not in any
relation-scan nodes. Bug would lead to bogus results if a
set-returning function appeared in the targetlist of a subquery that
could be rescanned after partial execution, for example a subquery
within EXISTS(). Bug has been around forever :-( ... surprising it
wasn't reported before.

- Repair bug #2836: SPI_execute_plan returned zero if none of the
querytrees were marked canSetTag. While it's certainly correct to
return the result of the last one that is marked canSetTag, it's
less clear what to do when none of them are. Since plpgsql will
complain if zero is returned, the 8.2.0 behavior isn't good. I've
fixed it to restore the prior behavior of returning the physically
last query's result code when there are no canSetTag queries.

- Remove incorrect semicolon in PL/PgSQL example, per Joachim Wieland.

Bruce Momjian committed:

- Clarify wording on when ctid is modified by VACUUM FULL.

- Add TLS thread URL to TODO:
http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.php

- Removed misconceived TODO: "Add a GUC to control whether BEGIN
inside a transaction should abort the transaction."

- Remove from TODO, "move GPL-licensed /contrib/userlock and
/contrib/dbmirror/clean_pending.pl" as this is complete.

- Clean up pgindent handling of comments after 'else' by only moving
multi-line comments to the next line.

- In the docs, use "dead" rather than "expired" for vacuumable rows.

Peter Eisentraut committed:

- De-escape XML names when reverse-compiling XML expressions.

- Add send and recv functions for xml type.

- Handle content and document options in xmlparse() correctly.

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Euler Taveira de Oliveira sent in a patch which lets you specify the
xlog directory at initdb time. It uses symlinks to do it, and creates
and/or sets permissions on the directory as appropriate.

Dhanaraj M sent in a patch which allows the identifier length to be
increased via a configure option.

ITAGAKI Takahiro sent in a patch for the TODO item, "Create a bitmap
of pages that need vacuuming" a.k.a. Dead Space Map.

Albert Cervera Areny sent in a new version of his patch which enables
tablespaces for temporary objects and sort files.

Simon Riggs sent in two more revisions of his pg_standby patch.

Andrew Dunstan sent in a patch to pg_ctl which lets it dump core.

Magnus Hagander sent in a work-in-progress patch to make pg_regress
run entirely outside of msys on win32.

Magnus Hagander sent in a one-line patch to src/tools/msvc/Project.pm
that adds the capability to deal with defines that set string values -
" needs to be quoted in XML.

Browse pgsql-announce by date

  From Date Subject
Next Message Dan Langille 2007-01-06 13:34:28 PGCon 2007 Program Committee
Previous Message Robert Treat 2006-12-31 15:13:08 phppgadmin-4.1-Beta-1 released