Der Originalartikel befindet sich unter:
== Wöchentlicher PostgreSQL Newsletter - 07. Dezember 2008 ==
Lorenzo Alberton hat einen Artikel über die Groß- und Kleinschreibung
für Bezeichner in verschiedenen Datenbanksystemen geschrieben.
Fedora 10 hat jetzt sein eigenes pgsqlrpms Reposirory.
== PostgreSQL Produkt Neuigkeiten ==
perl-DBD-PG 2.11.6 erschienen.
check_postgres 2.5.0 erschienen.
Hubert (depesz) Lubaczewski hat ein explain analyze Werkzeug
== PostgreSQL Jobs im Dezember ==
== PostgreSQL Lokal ==
Der Call for Papers für FOSDEM 2009 hat begonnen. PostgreSQL hat einen
eigenen Stand und zusammen mit den BSD Gruppen einen Developer Room.
Reich deine Vorträge bis zum 02.01.2009 ein unter
"fosdem (at) postgresql (dot) eu"
PGCon Brasilien wird am 23.-24. Oktober 2009 auf dem Unicamp in
Campinas, Sao Paulo, stattfinden.
== PostgreSQL in den News ==
Planet PostgreSQL: http://planet.postgresql.org/
Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David
Fetter und Devrim GUNDUZ.
Sende Neuigkeiten und Ankündigungen bis Sonntag, 15 Uhr Pazifischer
Zeit. Bitte sende englische Beiträge an email@example.com, deutsche an
firstname.lastname@example.org, italienische an email@example.com.
== Angewandte Patches ==
Peter Eisentraut committed:
- Fixed typo in pgsql/doc/src/sgml/installation.sgml.
- In pgsql/doc/src/sgml/ref/psql-ref.sgml, small correction.
- In pgsql/doc/src/sgml/ref/select.sgml, add braces to clarify syntax
- In pgsql/doc/src/sgml/keywords.sgml, update key words table to 8.4
- In pgsql/GNUmakefile.in, call genhtml with --prefix option so local
build paths don't appear in the coverage output.
- Default values for function arguments. Pavel Stehule, with some
tweaks by Peter Eisentraut
- In pgsql/src/backend/utils/adt/misc.c, better descriptions in
pg_get_keywords(), consistent with the documentation appendix on key
words. catdesc was originally intended as computer-readable, but
since we ended up adding catcode, we can have more elaborate
- Set up ar, dlltool, dllwrap, and windres for cross-compiling if
necessary. Plus some makefile cleanup. Part of a patch from
Michael Meskes committed:
- Removed port testing from ecpg.
Tom Lane committed:
- In pgsql/src/tools/msvc/vcregress.pl, remove the last traces of
- Ensure that the contents of a holdable cursor don't depend on
out-of-line toasted values, since those could get dropped once the
cursor's transaction is over. Per bug #4553 from Andrew Gierth.
Back-patch as far as 8.1. The bug actually exists back to 7.4 when
holdable cursors were introduced, but this patch won't work before
8.1 without significant adjustments. Given the lack of field
complaints, it doesn't seem worth the work (and risk of introducing
new bugs) to try to make a patch for the older branches.
- Fix an oversight in the code that makes transitive-equality
deductions from outer join clauses. Given, say, ... FROM a LEFT
JOIN b ON a.a1 = b.b1 WHERE a.a1 = 42; we'll deduce a clause b.b1 =
42 and then mark the original join clause redundant (we can't remove
it completely for reasons I don't feel like squeezing into this log
entry). However the original implementation of that wasn't
bulletproof, because clause_selectivity() wouldn't honor this_selec
if given nonzero varRelid --- which in practice meant that it worked
as desired except when considering index scan quals. Which
resulted in bogus underestimation of the size of the indexscan
result for an inner indexscan in an outer join, and consequently a
possibly bad choice of indexscan vs. bitmap scan. Fix by
introducing an explicit test into clause_selectivity(). Also, to
make sure we don't trigger that test in corner cases, change the
convention to be that this_selec > 1, not this_selec = 1, means it's
been marked redundant. Per trouble report from Scara Maccai.
Back-patch to 8.2, where the problem was introduced.
- In pgsql/src/backend/optimizer/plan/subselect.c, don't try to
optimize EXISTS subqueries with empty FROM-lists: we need to form a
join and that case doesn't have anything to join to. (We could
probably make it work if we didn't pull up the subquery, but it
seems to me that the case isn't worth extra code.) Per report from
Heikki Linnakangas committed:
- In pgsql/src/backend/utils/adt/formatting.c, modify the new
to_timestamp implementation so that end-of-format-string is treated
like a non-digit separator. This fixes the inconsistency in examples
like: to_timestamp('2008-01-2', 'YYYY-Michael Meskes-DD') didn't
work, while to_timestamp('2008-1-02', 'YYYY-Michael Meskes-DD') did.
- In pgsql/src/backend/utils/adt/tsginidx.c, use PG_GETARG_TEXT_PP
instead of PG_GETARG_TEXT_P in the new gin_cmp_tslexeme and
gin_cmp_prefix functions. Should shave off a few cycles from GIN
- In pgsql/src/backend/access/transam/xlog.c, if pg_stop_backup() is
called just after switching to a new xlog file, wait for the
previous instead of the new file to be archived. Based on patch by
- Small comment fixes in
- Introduce visibility map. The visibility map is a bitmap with one
bit per heap page, where a set bit indicates that all tuples on the
page are visible to all transactions, and the page therefore doesn't
need vacuuming. It is stored in a new relation fork. Lazy vacuum
uses the visibility map to skip pages that don't need vacuuming.
Vacuum is also responsible for setting the bits in the map. In the
future, this can hopefully be used to implement index-only-scans,
but we can't currently guarantee that the visibility map is always
100% up-to-date. In addition to the visibility map, there's a new
PD_ALL_VISIBLE flag on each heap page, also indicating that all
tuples on the page are visible to all transactions. It's important
that this flag is kept up-to-date. It is also used to skip
visibility tests in sequential scans, which gives a small
performance gain on seqscans.
- In pgsql/src/include/catalog/catversion.h, forgot to bump catalog
version in the visibility map patch.
- Utilize the visibility map in autovacuum, too. There was an
oversight in the visibility map patch that because autovacuum always
sets VacuumStmt->freeze_min_age, visibility map was never used for
autovacuum, only for manually launched vacuums. This patch
introduces a new scan_all field to VacuumStmt, indicating explicitly
whether the visibility map should be used, or the whole relation
should be scanned, to advance relfrozenxid. Anti-wraparound vacuums
still need to scan all pages.
- In pgsql/src/backend/access/heap/visibilitymap.c, MAPSIZE macro
needs to use MAXALIGN(SizeOfPageHeaderData) instead of
SizeOfPageHeaderData, like PageGetContents does. Per report by Pavan
Alvaro Herrera committed:
- In pgsql/src/backend/utils/misc/guc.c, minor code embellishments.
- Fix a couple of snapshot management bugs in the new ResourceOwner
world: non-writable large objects need to have their snapshots
registered on the transaction resowner, not the current portal's,
because it must persist until the large object is closed (which the
portal does not). Also, ensure that the serializable snapshot is
recorded by the transaction resource owner too, even when a
subtransaction has changed the current resource owner before
serializable is taken. Per bug reports from Pavan Deolasee.
- Desultorily enclose programlisting tags in CDATA, to get rid of some
Magnus Hagander committed:
- Change wildcard cerfificate mapping to be much smaller - we now only
match the * character at the beginning of a pattern, and it does not
match subdomains. Since this means we no longer need fnmatch,
remove the imported implementation from port, along with the
autoconf check for it.
- In pgsql/doc/src/sgml/libpq.sgml, documentation for wildcard
- Properly unregister OpenSSL callbacks when libpq is done with it's
connection. This is required for applications that unload the libpq
library (such as PHP) in which case we'd otherwise have pointers to
these functions when they no longer exist. This needs a bit more
testing before we can consider a backpatch, so not doing that yet.
In passing, remove unused functions in backend/libpq. Bruce Momjian
and Magnus Hagander, per report and analysis by Russell Smith.
- In pgsql/src/interfaces/libpq/fe-secure.c, comment said we don't
free the lockarray, and why. The proper fix is to make the code do
what the comment says...
Bruce Momjian committed:
- In pgsql/src/interfaces/libpq/fe-secure.c, fix typo in recent SSL
unload patch. Kris Jurka
- In pgsql/doc/src/sgml/wal.sgml, document that non-data journaling is
a recommended mount option.
- Allow CREATE OR REPLACE VIEW to add columns to the end of the
view. Robert Haas.
Teodor Sigaev committed:
- In pgsql/src/backend/access/gist/gistscan.c, initialize
GISTScanOpaque->qual_ok even if there is no conditions.
== Abgelehnte Patches (bis jetzt) ==
No one was disappointed this week :-)
== Eingesandte Patches ==
Hitoshi Harada sent in four more revisions of his windowing functions
Pavel Stehule sent in another revision of his default values for
function parameters patch.
Zdenek Kotala sent in a patch updating the pg_upgrade script.
Magnus Hagander sent a patch to update the docs for work_mem so it
points to autovacuum_max_workers.
Hannes Eder sent in a patch to add a skyline operator.
Heikki Linnakangas sent in a patch to speed up GIN index builds.
ITAGAKI Takahiro sent in another patch implementing
Alvaro Herrera sent in two revisions of a patch to fix an assert bug
Euler Taveira da Oliviera sent in a patch which enhances portability
of "designated initializers."
KaiGai Kohei sent in two more sets of SE-PostgreSQL patches.
David Rowley sent in some doc massaging for Hitoshi Harada's windowing
Martin Pihlak sent in another revision of his SQL/MED connection
Heikki Linnakangas sent in another patch for the visibility map.
Heikki Linnakangas sent in a patch to fix pg_stop_backup.
Emmanuel Cecchet sent in another patch to fix temp table behavior in
Josh Williams sent in a patch to make \d display a sequence's owner in
Kurt Harriman sent in a flock of patches to allow people to use C++ in
SPI code, etc. Discussion is ongoing.