Skip to content

Wöchentlicher PostgreSQL Newsletter - 03. September 2007

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 03. September 2007 ==

PGDay 2007 Minikurs Videos (in italienisch) sind online.

Eine lebhafte und zivilisierte Diskussion über eine Umbenennung zu
Postgres ist auf -advocacy in Gange.

== PostgreSQL Produkt Neuigkeiten ==

Another PostgreSQL Diff Tool 1.0.0_beta25 erschienen.

PostgreSQL Data Wizard 7.8 erschienen.

DBForms v.1.0 erschienen.

Die Npgsql Lizenz ist jetzt BSD.

SE-PostgreSQL 8.2.4-1.0 erschienen.

Slony-I 1.2.11 erschienen.

== PostgreSQL Jobs im September ==

== PostgreSQL Lokal ==

Die PostgreSQL Herbst Konferenz wird am 20. Oktober 2007
in Portland sein.

== PostgreSQL in den News ==

Planet PostgreSQL:

General Bits, Archive und gelegentliche News Artikel:

Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David

Sende Neuigkeiten und Ankündigungen bis Sonntag, 15 Uhr Pazifischer
Zeit. Bitte sende englische Beiträge an, deutsche an

== Angewandte Patches ==

Tatsuo Ishii committed:

- In pgsql/doc/src/sgml/textsearch.sgml, fix broken markup.

Michael Meskes committed:

- In pgsql/src/interfaces/ecpg, fixed bug in Informix define handling.

Tom Lane committed:

- Fix MSVC build (I think) for recent pg_proc.h column addition. This
business with two independent build systems does kinda suck.

- In pgsql/src/backend/snowball, improve stylistic consistency of
descriptions of built-in objects by avoiding initcap style --- the
vast majority of the existing descriptions do not use an initial
cap. I didn't change places where the first word was all-cap.
initdb not forced because this doesn't change any regression test

- Fix breakage of GIN support for varchar[] and cidr[] that I
introduced in the operator-family rewrite. I had mistakenly
supposed that these could use the pg_amproc entries for text[] and
inet[] respectively. However, binary compatibility of the
underlying types does not make two array types binary compatible
(since they must differ in the header field that gives the element
type OID), and so the index support code doesn't consider those
entries applicable. Add back the missing pg_amproc entries, and add
an opr_sanity query to try to catch such mistakes in future. Per
report from Gregory Maxwell.

- Implement function-local GUC parameter settings, as per recent
discussion. There are still some loose ends: I didn't do anything
about the SET FROM CURRENT idea yet, and it's not real clear whether
we are happy with the interaction of SET LOCAL with function-local
settings. The documentation is a bit spartan, too.

- Since sort_bounded_heap makes state changes that should be made
regardless of the number of tuples involved, it's incorrect to skip
it when memtupcount = 1; the number of cycles saved is minuscule
anyway. An alternative solution would be to pull the state changes
out to the call site in tuplesort_performsort, but keeping them near
the corresponding changes in make_bounded_heap seems marginally
cleaner. Noticed by Greg Stark.

- Only use SGML indexterm "zone" when we want to get the entire
section. Some alignment cleanups.

- Make Gin/Gist text search tertiary index entries in the

- Apply a band-aid fix for the problem that 8.2 and up completely
misestimate the number of rows likely to be produced by a query such
What this is doing is selecting for t1 rows with no match in t2, and
thus it may produce a significant number of rows even if the t2.key
table column contains no nulls at all. 8.2 thinks the table
column's null fraction is relevant and thus may estimate no rows
out, which results in terrible plans if there are more joins above
this one. A proper fix for this will involve passing much more
information about the context of a clause to the selectivity
estimator functions than we ever have. There's no time left to
write such a patch for 8.3, and it wouldn't be back-patchable into
8.2 anyway. Instead, put in an ad-hoc test to defeat the normal
table-stats-based estimation when an IS NULL test is evaluated at an
outer join, and just use a constant estimate instead --- I went with
0.5 for lack of a better idea. This won't catch every case but it
will catch the typical ways of writing such queries, and it seems
unlikely to make things worse for other queries.

- Extend whole-row Var evaluation to cope with the case that the
sub-plan generating the tuples has resjunk output columns. This is
not possible for simple table scans but can happen when evaluating a
whole-row Var for a view. Per example from Patryk Kordylewski. The
problem exists back to 8.0 but I'm not going to risk back-patching
further than 8.2 because of the many changes in this area.

- Install check_stack_depth() protection in two recursive tsquery
processing routines. Per Heikki.

- Rewrite make_outerjoininfo's construction of min_lefthand and
min_righthand sets for outer joins, in the light of bug #3588 and
additional thought and experimentation. The original methodology
was fatally flawed for nests of more than two outer joins: it got
the relationships between adjacent joins right, but didn't always
come to the right conclusions about whether a join could be
interchanged with one two or more levels below it. This was largely
caused by a mistaken idea that we should use the min_lefthand +
min_righthand sets of a sub-join as the minimum left or right input
set of an upper join when we conclude that the sub-join can't
commute with the upper one. If there's a still-lower join that the
sub-join can commute with, this method led us to think that that
one could commute with the topmost join; which it can't. Another
problem (not directly connected to bug #3588) was that
make_outerjoininfo's processing-order-dependent method for enforcing
outer join identity #3 didn't work right: if we decided that join A
could safely commute with lower join B, we dropped all information
about sub-joins under B that join A could perhaps not safely commute
with, because we removed B's entire min_righthand from A's. To fix,
make an explicit computation of all inner join combinations that
occur below an outer join, and add to that the full syntactic
relsets of any lower outer joins that we determine it can't commute
with. This method gives much more direct enforcement of the outer
join rearrangement identities, and it turns out not to cost a lot of
additional bookkeeping. Thanks to Richard Harris for the bug report
and test case.

- Fix int8mul so that overflow check is applied correctly for
INT64_IS_BUSTED case, per Florian Pflug. Not back-patched since
it's unclear that anyone but me still cares ...

- Relax permissions checks on dbsize functions, per discussion.
Revert out all checks for individual-table-size functions, since
anyone in the database could get approximate values from
pg_class.relpages anyway. Allow database-size to users with CONNECT
privilege for the target database (note that this is granted by
default). Allow tablespace-size if the user has CREATE privilege on
the tablespace (which is not granted by default), or if the
tablespace is the default tablespace for the current database (since
we treat that as implicitly allowing use of the tablespace).

- Fix aboriginal bug in _tarAddFile(): when complaining that the
amount of data read from the temp file didn't match the file length
reported by ftello(), the wrong variable's value was printed, and so
the message made no sense. Clean up a couple other coding
infelicities while at it.

- Add a debug logging message when a resource manager rejects an
attempted restart point. Per suggestion from Simon Riggs.

- Restrict pgstattuple functions to superusers. While the only one
that's really a glaring security hole is bt_page_items, there's not
a very good use-case for letting ordinary users use 'em, either.

- In pgsql/contrib/pgrowlocks/pgrowlocks.c, reduce the permissions
check needed to use pgrowlocks() to having SELECT on the target
table. Per discussion.

- Improve behavior of log_lock_waits patch. Ensure that something
gets logged even if the "deadlock detected" ERROR message is
suppressed by an exception catcher. Be clearer about the event
sequence when a soft deadlock is fixed: the fixing process might or
might not still have to wait, so log that separately. Fix race
condition when someone releases us from the lock partway through
printing all this junk --- we'd not get confused about our state,
but the log message sequence could have been misleading, ie, a
"still waiting" message with no subsequent "acquired" message. Greg
Stark and Tom Lane.

Bruce Momjian committed:

- In pgsql/doc/src/sgml/libpq.sgml, clean up whitespace.

- In pgsql/doc/src/sgml/libpq.sgml, properly indent SGML source of

- Only use SGML indexterm "zone" when we want to get the entire
section. Some alignment cleanups.

- Make Gin/Gist text search tertiary index entries in the

- In pgsql/doc/src/sgml/Makefile, add comment on why SGML
-wfully-tagged flag is needed (for older SGML tool chains).

- In text search docs, properly use indexterm _zone_ only when we want
an entire section, per Peter.

- In pgsql/doc/src/sgml/textsearch.sgml, fix docs so indexes can be
built by commenting out GiST/GIN index entries in textsearch.sgml.

- In pgsql/doc/src/sgml/Makefile, add openjade warning -wfully-tagged
to warn about missing close tags on older SGML toolchains.

- Make more logical index sections for text search.

- Update tsearch documentation wording.

- Text search documentation word improvements; move configuration
section to be more logical.

- Move full text search operators, functions, and data type sections
into the main documentation, out of its own text search chapter.

- Properly indent SGML in textsearch.sgml.

- Mention configurations early in text search documentation to
table/index section makes a little more sense.

- Small commit test for TODO.

- Update TODO.html.

- Update TODO with lost change, mostly completed items and whitespace
corrections. Not sure why these were not in CVS. Researching.

- Batch of TODO updates, mostly completed item marking and whitespace

Magnus Hagander committed:

- In pgsql/src/tools/msvc/vcregress.bat, exclude tsearch2 contrib
tests in regression tests, pending decision on exactly what will
happen with contrib/tsearch2 now that it's in core.

- In pgsql/src/tools/msvc/, install stopword files.

- Fix generation of snowball_create.sql on msvc builds.

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

ITAGAKI Takahiro sent in a patch which removes the unused
XLogCtlData.XLogCacheByte from src/backend/access/transam/xlog.c

Laurenz Albe sent in a patch which documents LDAP service lookup.

Andrew Dunstan sent in a patch which allows enums to be used in binary

Brendan Jurd sent in a patch which adds links for escaping strings to
appropriate parts of the documentation.

Gregory Stark sent in two revisions of a patch which fixes a bug in
the "Sort Method" code of EXPLAIN ANALYZE.


No Trackbacks


Display comments as Linear | Threaded

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Form options