Skip to content

Wöchentlicher PostgreSQL Newsletter - 10. Juni 2007

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 10. Juni 2007 ==

Michael Glaesemanns Fotos der PGCon 2007 sind jetzt unter
online. Diese Fotos sind als "pgcon" und "pgcon2007" getaggt. Wenn du
Fotos der Konferenz online gestellt hast, bitten wir dich, diese genauso zu
taggen, damit sie einfacher gefunden werden können. Wenn du Fehler
in den Tags findest, lass dies bitte Michael unter grzm [at] seespotcode [dot]
net. wissen. Viel Spass bei den Fotos.

== PostgreSQL Produkt Neuigkeiten ==

Archiveopteryx 2.0 erschienen.

PostgreSQL tablelog 0.4.4 erschienen.

== PostgreSQL Jobs im Juni ==

== PostgreSQL Lokal ==

Das nächste SFPUG Treffen ist am Dienstag, dem 12. Juni im Hi5 in
San Francisco. Details siehe unten. Registrierung für kostenloses Essen.

Registrierung für in Prato, Toskana, Italien am 6. und 7 Juli
ist offen.

Einige wichtige URLs:

PGDay Webseite:
Sponsoring Kampagne:
Wie kommt man nach Prato:
Unterkünfte in Prato: PostgreSQL
Offizielle PostgreSQL T-Shirts:
Registrierung für die Toscana Tour:

Wichtige Termine:

31. Mai: Stichtag für Call of paper.
5. Juni: Die Übereinkunft für Nachlässe in den Hotels San Marco und Art
Hotel Milano läuft aus.

== PostgreSQL in den News ==

Planet PostgreSQL:

General Bits, Archive und gelegentliche News Artikel:

Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David

Um deine Beiträge für die nächste Ausgabe zu übermitteln, sende diese
an oder in Deutsch an bis Sonntag, 15:00
Uhr Pazifischer Zeit.
== Angewandte Patches ==

Bruce Momjian committed:


- Mark TODO as DONE: "Allow sequential scans to take advantage of
other concurrent sequential scans, also called 'Synchronised

Alvaro Herrera committed:

- Disallow the cost balancing code from resulting in a zero cost
limit, which causes a division-by-zero error in the vacuum code.
This can happen when there are more workers than cost limit units.
Per report from Galy Lee.

- Avoid passing zero as a value for vacuum_cost_limit, because it's
not a valid value for the vacuum code. Instead, make zero signify
getting the value from a higher level configuration facility, just
like -1 in the original coding. We still document that -1 is the
value that disables the feature, to avoid confusing the user
unnecessarily. Reported by Galy Lee, per subsequent discussion.

- Avoid losing track of data for shared tables in pgstats. Report by
Michael Fuhr, patch from Tom Lane after a messier suggestion by me.

Magnus Hagander committed:

- ITAGAKI Takahiro's patch which changes the Japanese docs in
contrib/pgstattuple to reflect the fact that the functions bt_metap,
bt_page_stats and bt_page_items have moved from there to

Jan Wieck committed:

- The session_replication_role actually can be changed at will during
a session regardless of the existence of cached plans. The
plancache only needs to be invalidated so that rules affected by the
new setting will be reflected in the new query plans.

Teodor Sigaev committed:

- Move call of MarkBufferDirty() before XLogInsert() as required.
Many thanks to Heikki Linnakangas <> for his
sharp eyes.

- Replace ReadBuffer to ReadBufferWithStrategy in all vacuum-involved
places to implement limited-size "ring" of buffers for VACUUM for

Tom Lane committed:

- Support UPDATE/DELETE WHERE CURRENT OF cursor_name, per SQL
standard. Along the way, allow FOR UPDATE in non-WITH-HOLD cursors;
there may once have been a reason to disallow that, but it seems to
work now, and it's really rather necessary if you want to select a
row via a cursor and then update it in a concurrent-safe fashion.
Original patch by Arul Shaji, rather heavily editorialized by Tom

- Teach heapam code to know the difference between a real seqscan and
the pseudo HeapScanDesc created for a bitmap heap scan. This avoids
some useless overhead during a bitmap scan startup, in particular
invoking the syncscan code. (We might someday want to do that, but
right now it's merely useless contention for shared memory, to say
nothing of possibly pushing useful entries out of syncscan's small
LRU list.) This also allows elimination of ugly
pgstat_discount_heap_scan() kluge.

- Insert ORDER BY into a few regression test queries that now have
unstable results due to syncscan patch, when shared_buffers is small
enough. Per buildfarm reports and some local testing with
shared_buffers set to the lowest value considered by initdb.

- Allow numeric_fac() to be interrupted, since it can take quite a
while for large inputs. Also cause it to error out immediately if
the result will overflow, instead of grinding through a lot of
calculation first. Per gripe from Jim Nasby.

- Add note that LIMIT without ORDER BY can produce outright
nondeterministic results. Necessary due to introduction of syncscan

- Arrange for large sequential scans to synchronize with each other,
so that when multiple backends are scanning the same relation
concurrently, each page is (ideally) read only once. Jeff Davis,
with review by Heikki and Tom.

- Redefine IsTransactionState() to only return true for
TRANS_INPROGRESS state, which is the only state in which it's safe
to initiate database queries. It turns out that all but two of the
callers thought that's what it meant; and the other two were using
it as a proxy for "will GetTopTransactionId() return a nonzero XID"?
Since it was in fact an unreliable guide to that, make those two
just invoke GetTopTransactionId() always, then deal with a zero
result if they get one.

- Rework temp_tablespaces patch so that temp tablespaces are assigned
separately for each temp file, rather than once per sort or
hashjoin; this allows spreading the data of a large sort or join
across multiple tablespaces. (I remain dubious that this will make
any difference in practice, but certain people insisted.) Arrange
to cache the results of parsing the GUC variable instead of
recomputing from scratch on every demand, and push usage of the
cache down to the bottommost fd.c level.

- Christian Rossow's patch which fixes array_dims() example to be
consistent with the data previously shown.

- Fix up text concatenation so that it accepts all the reasonable
cases that were accepted by prior Postgres releases. This takes
care of the loose end left by the preceding patch to downgrade
implicit casts-to-text. To avoid breaking desirable behavior for
array concatenation, introduce a new polymorphic pseudo-type
"anynonarray" --- the added concatenation operators are actually
text || anynonarray and anynonarray || text.

- Minor editorialization: don't flush plan cache without need.

- Downgrade implicit casts to text to be assignment-only, except for
the ones from the other string-category types; this eliminates a lot
of surprising interpretations that the parser could formerly make
when there was no directly applicable operator. Create a general
mechanism that supports casts to and from the standard string types
(text,varchar,bpchar) for every datatype, by invoking the
datatype's I/O functions. These new casts are assignment-only in
the to-string direction, explicit-only in the other, and therefore
should create no surprising behavior. Remove a bunch of
thereby-obsoleted datatype-specific casting functions. The "general
mechanism" is a new expression node type CoerceViaIO that can
actually convert between any two datatypes if their external text
representations are compatible. This is more general than needed
for the immediate feature, but might be useful in plpgsql or other
places in future. This commit does nothing about the issue that
applying the concatenation operator || to non-text types will now
fail, often with strange error messages due to misinterpreting the
operator as array concatenation. Since it often (not always) worked
before, we should either make it succeed or at least give a more
user-friendly error; but details are still under debate. Peter
Eisentraut and Tom Lane

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Andrew Dunstan sent in a WIP patch for CSV logs.

Simon Riggs sent in a patch to fix recent PITR bug, with proposals as
discussed on -admin and -hackers. Patch implements option #3, as
proposed here:

Magnus Hagander sent in another revision of Joachim Wieland's patch
which changes some regression tests for ECPG.


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