== Wöchentlicher PostgreSQL Newsletter - 28. Januar 2007 ==

From: Andreas 'ads' Scherbaum <adsmail(at)wars-nicht(dot)de>
To: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Cc: "pgusers(at)postgres(dot)de" <pgusers(at)postgres(dot)de>
Subject: == Wöchentlicher PostgreSQL Newsletter - 28. Januar 2007 ==
Date: 2007-01-29 11:45:29
Message-ID: 20070129124529.e733cd20.adsmail@wars-nicht.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein


Der Originalartikel befindet sich unter:
http://people.planetpostgresql.org/dfetter/index.php?/archives/102-PostgreSQL-Weekly-News-January-28-2007.html

== Wöchentlicher PostgreSQL Newsletter - 28. Januar 2007 ==

Eine andere lebhafte Diskussion geht auf -hackers vor sich über
Verbesserungen bei autovacuum.

Andy Astor, CEO von EnterpriseDB hat lautstark abgelehnt, dass es eine
Richtlinie für das Sammeln von Emailadressen von PostgreSQL Listen und
zum Versenden von Werbematerial gab.

== PostgreSQL Produkt Neuigkeiten ==

Libpqxx 2.6.9 pre-release ist draussen.
http://thaiopensource.org/~jtv/tmp/pqxx/

SQL/PSM 0.1 erschienen.
http://postgresql.interweb.cz/index.php/SQL/PSM

DBI-Link 2.0.0 erschienen.
http://pgfoundry.org/projects/dbi-link/

Another PostgreSQL Diff Tool 1.0.0_beta16 erschienen.
http://pgfoundry.org/projects/apgdiff/

PostgresDAC 2.3.7 erschienen.
http://microolap.com/products/connectivity/postgresdac/download/

Mammoth Replicator 8.0.10-1.7 erschienen.
https://www.commandprompt.com/products/mammothreplicator/

== PostgreSQL Jobs im Januar ==

http://archives.postgresql.org/pgsql-jobs/2007-01/threads.php

== PostgreSQL Lokal ==

Hauptbeitragender Gavin Sherry und Postgres-R Leiter Markus werden auf
dem SFPUG Meeting in San Francisco im Hyperic LCCs sprechen.
http://postgresql.meetup.com/1/calendar/5380885/

PostgreSQLFr wird einen Stand auf der SolutionsLinux 2007 in Paris
(Frankreich) vom 30. Januar zum 1. Februar haben. Jean-Paul Argudo,
Schatzmeister der PostgreSQLFr Non-Profit Vereinigung, wird eine
Session über FLOSS Datenbanken halten. Weitere Informationen auf
Französisch hier:
http://www.solutionslinux.fr/index.php

Es wird einen PostgreSQL Stand auf der FOSDEM am 24. und 25. Februar in
Brüssel, Belgien sein. Viele der üblichen Verdächtigen von den EU
PostgreSQL Communities werden dort sein. Kontaktiere de(at)postgresql(dot)org
um teilzunehmen.
http://www.fosdem.org/2007/

Die Italienische PostgreSQL Community wird einen PostgreSQL Tag im
Sommer abhalten. Bookmarke den folgenden Link, um teilzunehmen.
http://www.pgday.it

== PostgreSQL in den News ==

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

General Bits, Archive und gelegentliche News Artikel:
http://www.varlena.com/GeneralBits/

Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David
Fetter und Devrim GUNDUZ.

Um deine Beiträge für die nächste Ausgabe zu übermitteln, sende diese
an david(at)fetter(dot)org bis Sonntag, 15:00 Uhr Pazifischer Zeit.

== Angewandte Patches ==

Andrew Dunstan checkte ein:

- Fix plpython MSVC Build im Non-Debug Modus.

- Repariere Path Probleme im MSVC bison Wrapper. Laut Joachim Wieland.

- In PL/Perl, entferne unnötige und jetzt inakkurate Casts, welche
schon mit älterem Code entfernt werden sollten.

- In PL/Perl, erlaube, das Argumente für spi_prepare sowohl
Standardtypen wie auch Typen, die in pg_type bekannt sind, sein dürfen.
Beseitigt Bug #2917. Addiere einige Regression Tests für diesen Fall.

Michael Meskes checkte ein:

- In ecpg, repariere erwartete Dateien, so das diese wieder im Einklang
mit den Tests sind.

- In ecpg, entferne Compiler Warnung aufgrund unnötiger unsigned
Deklaration and entferne einen Regression Test, welcher diesen libc
Präzision Bug auf einigen Plattformen auslöst.

Neil Conway checkte ein:

- Benenne den uuid_t Typ nach pg_uuid_t um, um Konflikte mit jedwegen
Definitionen on uuid_t zu vermeiden, die von Systemheadern
bereitgestellt werden könnten. Dies sollte hoffentlich die Win32
Buildprobleme beseitigen, die Magnus berichtet hat.

- Gevik Babakhani's Patch, der einen neuen Builtin Typ "uuid" addiert.
Dies implementiert den UUID Typ, similar zu dem, welcher in RFC 4122
definiert ist. Dieser Patch beinhaltet die Basisimplementierung und
Regression Tests. Dokumentation und vielleicht etwas mehr
Funktionalität wird später kommen. Catversion erhöht. Review von Peter
Eisentraut, Tom Lane und Neil Conway.

- Magnus Haganders Patch, der einige VC++ Compiler Warnungen zermahlt.
Markiere float Literale mit dem "f" Suffix, um sie von Doubles zu
unterscheiden. Sorge dafür, das einige Funktionsdeklarationen und
Definitionen den "const" Qualifier mehr konsistent nutzen. Ignoriere
Warnung 4102 ("Unreferenziertes Label"), denn diese Warnungen werden
immer von bison-generiertem Code ausgegeben.

- Magnus Haganders Patch, der einen setlocal Befehl an den Anfang von
build.bat setzt. Dies ist notwendig, um mit buildenv.bat sauber umgehen
zu können, so das PATH (als Beispiel) nicht unendlich expandiert. Laut
einem Report von Joachim Wieland.

Peter Eisentraut checkte ein:

- In pgsql/src/backend/utils/adt/xml.c, reaktiviere libxml
Speichermanagement via palloc, jetzt da ich denke, das ich die
Bedingungen, unter denen dies sicher ist, klassifiziert habe (Siehe
Source Code Kommentare).

- In pgsql/src/backend/utils/adt/xml.c, addiere angehängtes Nullbyte in
Unicode codepoint Umwandlung.

- Verschiedene Reparaturen in der Logik der XML Funktionen: Addiere
neuen SQL Befehl SET XML OPTION (auch über die reguläre GUC
erreichbar), um die DOKUMENT vs. CONTENT Option bei impliziten Parse-
und Serialisieroperationen zu kontrollieren. Subtile Korrekturen beim
Handhaben von selbstständigen Properties in xmlroot(). Erlaube xmlroot
() in Inhaltsfragmenten zu arbeiten. Subtile Korrekturen beim Handhaben
der Versions Properties in xmlconcat(). Code Refaktoring zum
Produzieren von XML Deklarationen.

- Vereinfache die Handhabung von XML Fehlermeldungen: nutze einfach den
String, den libxml liefert, als detaillierte Nachricht. Laut
<http://archives.postgresql.org/pgsql-hackers/2006-12/msg01087.php>.
Zum Umwandeln von Fehlercodes in Nachrichten müssen wir jetzt nur noch
die Codes bearbeiten, die wir selbst setzen.

Alvaro Herrera checkte ein:

- Magnus Haganders Patch welcher für vcbuild nach den Änderungen an
pg_proc.h notwendig ist (sind die gleichen Änderungen wie für
gen_fmgrtab.sh im Unix Build).

Tom Lane checkte ein:

- Verbessere Hash Joins um Input Tuples unmittelbar zu streichen, wenn
sie nicht matchen können, weil sie einen Null Join Key enthalten (und
der Join Operator ist als strict bekannt). Verbessert die Performance
signifikant, wenn der innere Join jede Menge Nulls enthält, laut Bug
#2930.

- Entferne unnötigen Checkpoint von PL Regression Tests. Dies war
einstmals praktisch um zu verhindern, dass Core Dumps verschwinden,
aber ist jetzt unnötig denn (a) wir entfernen cores in individuellen DB
Unterverzeichnissen nicht mehr und (b) CREATE DATABASE forciert sowieso
einen internen Checkpoint.

- Entferne einige unnötige Konversationen in build_regtype_array().

- Repariere Versehen beim Erstellen von "append relations". Wir sollten
rel->tuples aufsetzen, sowieso rel->rows, denn einige
Erwartungsfunktionen erwarten beide gesetzt um valid in jeder baserel
zu sein. Nach einem Bericht von Dave Dutcher.

- Einige kleine Verbesserungen in der Genauigkeit von plpgsql
Fehlerstellen Berichte; inspiriert von den irreführenden CONTEXT Zeilen
im kürzlichen Bugreport von Stefan Kaltenbrunner. Erlaube ebenfalls
Übersetzungen von Statement-Type Namen in diesen Nachrichten.

- Repariere plpgsql's "simple expression" Auswertungsmechanismus so
dass er sicher agiert, wenn Subtraktionen vorhanden sind. Um
sicherzustellen, dass alle ExprContext Shutdown Callbacks zur richtigen
Zeit aufgerufen werden, brauchen wir einen extra EState für jeden
Transaktionslevel. Nach dem "TupleDesc reference leak" Fehlerbericht
von Stefan Kaltenbrunner. Obgleich ich überzeugt bin, dass der Code bis
zurück zu 8.0 falsch ist, sieht es nicht so aus, dass es einen Weg
gibt, das Problem vor 8.2 zu manifestieren, 8.0 und 8.1 nutzen den
ExprContextCallback Mechanismus nur zum Abarbeiten von Set-returning
Funktionen, was nicht irgendwie brauchbar in einer "simple expression"
ausgeführt werden kann. So kein Backpatch für bevor 8.2 --- das Risiko
unvorhersehbarer Bruchstellen gegenüber den Chancen, etwas zu
reparieren, überwiegt.

- Deat, kann kein zusätzliches Argument in log_error einfügen. Ist ein
zusätzlicher sprintf Pushup es wert, sicherzustellen, das wir etwas
sinnvolles für Out-of-Range Existatus reporten können?

- Räume mit kaputter Nutzung von HAVE_DECL_SYS_SIGLIST und
inkonsistent/schlecht formatierten Fehlermeldungen auf.

- Addiere eine Verzögerung beim Start des stats Tests, so dass jedwege
vorherige stats Aktivität stillgelegt ist. Möglicherweise wird dies den
großen Anstieg nicht reproduzierbarer stats Test Fehler korrigieren,
welche wir seit dem defaultmässigen Anschalten von stats_row_level
bemerkt haben.

- Abteilung des zweiten Gedankens: der IQ von estimate_array_length()
muss aktuell mit dem von scalararraysel() gehalten werden, andernfalls
zählen Erwartungen, die zählen sollten, ev. nicht. Infolgedessen bringe
der Funktion Binär-kompatible Fälle bei.

- Repariere scalararraysel() um mit Binär-kompatiblen Fällen umzugehen,
z.B. text[] versus varchar[]. Dieses Übersehen erklärt womöglich Ryan
Holmes kürzliche Beschwerde --- er bekam eine generische
Selektivitätserwartung anstatt irgendetwas intelligentem.

- Korrigiere einen alten Logikfehler im Btree Page Splitting: wenn ein
Split an exakt der Stelle erachtet wird an der ein neues Item eingefügt
werden soll, nutzte die Kalkulation eine falsche Größe für den "high
key" der neuen Page. Dies konnte zu einem unbrauchbaren Split führen,
resultierend in einem "Panic: kann keinen Eintrag zum linken
Geschwisterteil addieren" (oder "rechtes Geschwisterteil") Fehler.
Obwohl dieser Fehler schon eine sehr lange Zeit dort ist, ist es sehr
schwer, einen Fehler vor 8.2 zu erzeugen, da dort generell sehr viel
freier Platz auf beiden Seiten des gewählten Splits war. In 8.2, wo der
vom User festgelegte Füllfaktor bestimmt, wieviel Platz der Code
versucht freizulassen, ist ein unbrauchbarer Split sehr viel eher
möglich. Bericht von Joe Conway, Diagnose und Fix von Heikki
Linnakangas.

- Backporte Änderungen vom 16. und 17. Januar um wartende fsync
Anforderungen während DROp TABLE und DROP DATABASE zu "entfernen".
Sollte unerwartete "Zugriff verweigert" Fehler unter Windows verhindern
und ist ebenfalls sauberer auf anderen Plattformen, da wir nicht länger
darauf vertrauen müssen, dass ENOENT während eines fsync Versuches in
Ordnung ist. Patches bis zurück für 8.1; laut kürzlicher Diskussion
denke ich wir machen uns keine Sorgen mehr über Windows-spezifische
Fragen mit 8.0.

- Unter Windows, nutze pgwin32_waitforsinglesocket() statt select() um
auf Input beim Stats Collector zu warten. Unsere select() Emulation ist
offensichtlich fehlerhaft für UDP Sockets :-(. Dies sollte Probleme mit
Stats Collection lösen (und infolgedessen autovacuum) die unter mehr
als minimalem Load versagen.

- Bekomme pg_utf_mblen(), pg_utf2wchar_with_len(), und utf2ucs() alle
auf die gleiche Seite über die maximale UTF8 Sequenzlänge die wir
unterstützen (4 Bytes seit 8.1.3, 3 vorher). pg_utf2wchar_with_len
wurde niemals für 4-Byte Unterstützung aktualisiert und hatte auf jeden
Fall ein Risiko für einen Buffer-Overrun denn es konnte mehrere
pg_wchars produzieren von dem, was mblen für ein UTF8 Zeichen hält. Der
einzige Grund, warum wie kein großes Sicherheitsloch haben ist, dass
die meisten Aufrufer einen Worst-Case Ausgabebuffer reservieren; die
einzige Ausnahme in erschienenen Versionen sieht wie pre-8.2 iwchareq()
(m.a.W. LIKE) aus, welches gecrasht werden kann durch Ausnullen der
Returnadresse --- but AFAIC kann dies nicht weiter ausgenutzt werden
als für einen Crash, durch die Unfähigkeit, kontrollieren zu können,
was hier geschrieben wird. Nach einem Bericht von James Russel und
Michael Fuhr. Pre-8.1 Risiko ist viel geringer, aber ich denke, das
Verhalten von pg_utf2wchar_with_len mit einem nicht kompletten letzten
Zeichen riskiert einen Buffer Overrun, also gibt es ebenfalls einen
Backpatch dieser Logik. Dieser Patch stellt auch sicher, das UTF8
Sequenzen, die die unterstützte Länger überschreiten (welche auch immer
das ist) immer als Fehlerfall betrachtet werden, anstatt sie als
gültige kürzere Sequenz an einigen Plätzen zu behandeln.

- Entspanne ein Assert(), dass als zu strikt empfunden wurde in einigen
Situationen, wenn unions mit Typen, die typmods enthalten, beteiligt
waren. Varianten dieses Fehlverhaltens waren in 8.1 und später bekannt;
bin nicht sicher, ob sie in 8.0 und 7.4 möglich sind, aber da der Code
soweit zurück existiert, patche ich einfach alle. Nach einem Bericht
von Brian Hurt.

- Aktualisiere xindex.sgml um Operator Familien zu diskutieren.

- Aktualisiere pg_dump um Unterstützung für das Dumpen von Operator
Familien.

- Addiere CREATE/ALTER/DROP OPERATOR FAMILY Befehle, auch COMMENT ON
OPERATOR FAMILY; und addiere FAMILY Option zu CREATE OPERATOR CLASS um
das Addieren einer Klasse zu einer bereits existierenden Klasse zu
erlauben. Laut vorangegangener Diskussion. Mann, was für ein ermüdendes
Copy&Paste.

- Füge die Planer Möglichkeit, die Ergebnisse von mergejoinscansel() zu
cachen, wieder ein, welche ich beim ersten Umschreiben von
EquivalenceClass entfernt hatte um den Patch etwas zu vereinfachen.
Aber es ist weiterhin wichtig --- in einem 4-Wege Joinproblem hat
mergejoinscansel() 40% der Planerzeit gebraucht laut gprof. Verbessere
ebenfalls den EquivalenceClass Code um Join RestrictInfos wieder zu
benutzen statt für jeden in Betracht gezogenen Join neue zu erzeugen.
Dies sichert etwas Speicher aber viel wichtiger verbessert die
Effektivität für Caching Planer Infos in Restrictinfos.

Bruce Momjian checkte ein:

- Nutze autoconfs Built-in sys_siglist Makro AC_DECL_SYS_SIGLIST statt
unser eigenes zu erzeugen.

- Addiere signal.h für sys_siglist Referenz.

- Nutze sys_siglist[] um die Signalnamen für Signal Exits auszugeben,
statt nur die Nummern.

- Modifiziere SGML makefile um 'gmake draft' zu erlauben, ein Draft
HTML zu bauen, so das 'draft' jetzt ein Target ist und nicht länger ein
Modifier.

- Addiere zu TODO: "Erzwinge typmod für Funktionseingaben,
Funktionsergebnisse und Parameter für spi_prepare'd Statements, die von
PLs aufgerufen werden."

- Addiere zu TODO: "Ziehe in Erwägung, dass der Backgrund Writer die
Transaktionsstatusbits updated, bevor die Pages geschrieben werden."

- Addiere zu TODO: "Ziehe in Erwägung, NUM_CLOG_BUFFERS zu vergrößern."

- Aktualisiere Installationsbeschreibung für ein Update um darzulegen,
dass dump/restore nicht benötigt wird. Von Peter.

- Kontrolliere openjade Draft-Modus durch die Variable DRAFT, statt
dass das Version Tag 'devel' ist.

- Aktualisiere Wortlaut für die Installation, wenn geupgraded wird, um
zwischen Major Release Upgrades und Minor Updates zu unterscheiden.

- Modifiziere Draft SGML Instruktionen um DRAFT=Y zu nutzen, denn
Rekursion hat verursacht, das HTML doppelt aufgerufen wurde --- kein
Weg, das Makefile zu verlassen, wenn die Rekursion zurückkehrt.

- Aktualisiere BSD/OS Plattform für 8.2.

- In TODO, addiere URL um Tuples bis auf den Header zu schrumpfen.

- Aktualisiere Win32 Exception Kommentar.

- Aktualisiere pg_dumpall -f Optionsbeschreibung.

- In TODO, markiere als erledigt: "Addiere eine GUC Variable um den
Tablespace für temporäre Objekte pg_dumpall zu kontrollieren", nach
Albert Cervera Arenys Patch.

- Albert Cervera Arenys Patch mit Dokumentation von Jaime Casanova um
GUC temp_tablespace zu addieren um eine Default Location für temporäre
Opjekte bereitzustellen.

- Geigneter detoast Zugriff auf Bytea Feld pg_trigger.tgargs. Der alte
Code könnte einen Servercrash verursachen. Backpatch für 8.2.X.

- Dave Pages Patch, der eine "Ausgabedatei" Option für pg_dumpall
addiert, speziell nützlich für Win32, wo die Ausgabeumleitung für
Childprozesse (pg_dump) nicht funktioniert.

- Entferne Entwicklerliste von TODO, jetzt, da wir URLs haben um auf
Diskussionen zu referenzieren.

- In TODO, markiere als erledigt, "Addiere -f zu pg_dumpall" per Patch
von Dave Page.

- Dave Pages Patch welcher es pg_dumpall erlaubt einen Datenbanknamen
anzugeben statt dem Default 'template1'.

- Dave Pages Patch welcher --tablespaces-only und --roles-only Optionen
zu pg_dumpall addiert.

- Simon Riggs Patch um WAL Logging zu verhindern, wenn COPY in der
gleichen Transaktion fertig ist, die es erzeugt hat.

- Magnus Haganders Patch der das Bauen von ecpg abschaltet, wenn MSVC
genutzt wird und pthreads nicht spezifiziert sind.

- In pgsql/src/include/port/win32.h, addiere Kommentar über die
Exception Liste in beiden winnt.h und ntstatus.h.

- Entferne Newline von Fehlermeldung denn URL ist weg.

- Ziehe die Nutzung von FormatMessage() zurück, das tut Fehlerwerte,
keine Exception Werte. Zeige auf /include/ntstatus.h für eine Exception
Liste, statt auf eine URL.

- Gib sinnvolle Fehlertexte für abnormale Prozessexits unter Win32
statt Hexcodes aus, nutze FormatMessage().

- In FAQ, aktualisiere Bruce Momjians Email Adresse.

- Nutze errhint() für WIN32 SIGTERM Messages, wenn möglich.

- In pgsql/src/include/port/win32.h, Setze Hexvalues in Großschreibung.

- Wenn system() unter Win32 versagt, berichte dies als eine Exception,
schreibe den Exception Wert in Hex und gib eine URL aus, wo der Wert
nachgeschaut werden kann.

== Abgelehnte Patches (bis jetzt) ==

Guido Goldsteins Patch um PL/PythonU Funktionen zu korrigieren; liefert
true/false für Booleans zurück statt 1/0. Dies hilft, wenn Trigger
Funktionen erstellt werden, die SQL ausgeben. Dies brach auch die
meisten Maschinen auf der Buildfarm, da es nur mit Python 2.3 oder
höher funktioniert.

Magnus haganders erste Version seines Patches um Warnungen, generiert
von VC++ aufzuräumen. Er war zu groß und invasiv und hatte einige
Fehler. Er arbeitet an der nächsten Version.

== Eingesandte Patches ==

Arul Shaji sandte eine andere Version seiner Implementation von
pg_get_domaindef ein.

Gevik Babakhani sandte eine andere Version seines uuid Patches ein.
Peter Eisentraut gab Feedback. Gevik sandte eine andere Version
aufgrund der Kommentare ein und addierte Tests.

Jeremy Drake sandte ein paar Versionen seines Patches welches
unprivilegierten Usern CREATE LANGUAGE für trustes Languages erlaubt
die schon in pg_pltemplate vorhanden sind.

Teodor Sigaev sandte einen Dokumentation Patch ein der das docbook mit
Instruktionen für FreeBSD aktualisiert, und einen weiteren, der eine
Tabelle mit paarweisen Kompatibilitäten zwischen den verschiedenen
Lockmides addiert.

Andrew Dunstan sandte einen Patch ein, der es Leuten erlaubt, die
Aliase in pg_type für Parameter in PL/Tcl und PL/PythonU zu nutzen,
z.B. integer statt int4.

Pavan Deolasee sandte einen Patch ein welcher den Code zum Verfolgen
der ctid Kettenpfade etwas verbessert, wenn dieser und der nächste
Tuple im Pfad im gleichen Block sind.

Alvaro Herrera sandte einen Patch ein, der autovacuum in zwei
Prozessfamilien separiert, einer ist der "Launcher", zuständig für
Statistikauswertungen und Entscheidungen, wann der Worker gestartet
werden soll. Der andere ist der Worker, welcher vom Postmaster unter
dem Kommando des Launchers gestartet wird, und ausführt, was der
Launcher ihm sagt (durch Setzen von Informationen im Shared Memory).

Pavel Stehule sandte einen Patch ein um Support für ANSI SQL scrollbare
Cursor in SPI und PL/PgSQL zu addieren.

Jeremy Drake sandte eine andere Version seines Patches welcher es
erlaubt PLs zu installieren ohne Superuser zu sein.

--
Andreas 'ads' Scherbaum

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Andreas 'ads' Scherbaum 2007-01-30 20:54:25 Wöchentlicher PostgreSQL Newsletter - Umfrage
Previous Message Ralf Lehmeier 2007-01-25 10:45:40 Re: Probleme beim installieren der 8.2