Skip to content

Wöchentlicher PostgreSQL Newsletter - 28. Januar 2007


Der Originalartikel befindet sich unter:
http://people.planetpostgresql.org/dfetter/

== 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@postgresql.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@fetter.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.

Remove quotes from variable text

Just got the problem that a variable, i want to substitute in a makefile, has quotes around the actual content. Thats bad, since this will break my script. So i need to remove the quotes right before substituting the text:


sed -i -e 's/STRING_TO_REPLACE/$(subst ",,$(CFLAGS))/g' FILE_TO_USE

Mehrwertsteuererhöhung? Nicht bei Kraftstoffen.

Also, auch wenn diverse große Tageszeitungen das immer noch Mehrwertsteuer nennen, bis auf den Staat hat von der Steuer niemand einen Mehrwert. Nennen wir das dann doch einfach Umsatzsteuer ;-)


Aber zum eigentlichen Grund dieses Postings: gestern abend noch tanken gewesen, da sich die Tanknadel der linken Seite näherte. Der Dieselpreis lag bei unter einem Euro, das gab es selbst im alten Jahr 2006 schon lange Zeit nicht mehr zu sehen. Ich meine, nicht das ich mich beschwere, aber wo sind die Versprechungen der Mineralölkonzerne und die Prognosen diverser Besserwisser hin, die massive Preisanstiege vorausgesagt haben?

Winter

Wieso fängt der Winter eigentlich erst im Frühjahr an?


Und vor allem: wo bleibt der Schnee? Von -6° C habe ich nichts, das Auge möchte schliesslich auch etwas davon haben.

S-Bahn nach überall

Heute morgen überraschte mich auf dem Bahnhof von Schönebeck/Elbe folgende Anzeigetafel:

 

Eine S-Bahn nach Cottbus. Von Schönebeck/Elbe. Geschätzte Fahrzeit laut bahn.de: 4 Stunden. 250 Kilometer auf der Straße. Nun ja, nichts ist unmöglich.

Auf der anderen Anzeigetafel überraschte mich folgendes Bild:

 

Letztendlich war es weder eine S-Bahn noch ein Zug nach Cottbus, sondern der Regionalexpress aus Erfurt nach Magdeburg. Wenigstens die Uhrzeit war richtig und der RE war auch nur zwei Minuten zu spät, also eigentlich gar nicht erwähnenswert, oder?

Wöchentlicher PostgreSQL Newsletter - 21. Januar 2007


Der Originalartikel befindet sich unter:
http://people.planetpostgresql.org/dfetter/

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

Nach einem Mißverständnis über ihre Praxis des Sammelns von Emailadressen aus den PostgreSQL Mailinglisten und dem Versenden von Werbeemails war EnterpriseDB freundlich genug und hat seine Politik geändert.

== PostgreSQL Produkt Neuigkeiten ==

Apgdiff 1.0.0beta15 erschienen.
http://pgfoundry.org/projects/apgdiff/

Pgtclng 1.6.0 erschienen.
http://pgfoundry.org/projects/pgtclng/

postgresql-dbi-link 2.0beta1 ist jetzt in Fedora Core Extras 7, wird bald in Fedora Core Extras 6 erscheinen.
http://people.planetpostgresql.org/devrim/index.php?/archives/78-Pushed-dbi-link-into-Fedora-Extras.html

PostGIS ist jetzt in Fedora Core Extras.
http://people.planetpostgresql.org/devrim/index.php?/archives/79-PostGIS-is-in-Fedora-Core-Extras.html

phpPgAdmin 4.1 erschienen. RPMs für Fedora Core 5, 6 und 7 sind verfügbar.
http://phppgadmin.sourceforge.net/?page=download

EnterpriseDB bietet jetzt Support Packages für die Main Branches von PostgreSQL an.
http://www.enterprisedb.com/products/postgre_pricing.do

pgAdmin3 1.6.2 erschienen.
http://www.pgadmin.org/download/

== PostgreSQL Jobs im Januar ==

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

== PostgreSQL Lokal ==

Danke schön an Gavin Sherry für das veranstalten der PostgreSQL Miniconf in Linuxconf.au.
http://www.gavinsherry.org/blog/index.php?/archives/1-PostgreSQL-miniconf-success.html

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

Österreich hat eine neue PostgreSQL Community Webseite.
http://community.postgresql.at/

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@postgresql.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
Devrim GUNDUZ

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

== Angewandte Patches ==

Peter Eisentraut checkte ein:

- Entferne einige ungenutzte Variablen von den ecpg Regression Tests.

- In pgsql/src/interfaces/ecpg/test/Makefile.regress, füge libpg Link wieder ein, aber stelle sicher, dass das libpg In-Tree Verzeichnis vor den Systemverzeichnissen erwähnt wird.

- Aktualisiere erwartete Build Zeit.

- Entferne Vorkommen eines alten Depend Targets.

- Das libpg Library Verzeichnis war hier am falschen Platz erwähnt, was dazu führen konnte, dass die vorher installierte libpg genutzt wurde. Wir müssen hier aber libpg gar nicht linken, so entferne dies.

- Baue nur ecpg Testcode, wenn der Test ausgeführt werden soll, innerhalb weiteren Testcodes.

- Repariere xmlconcat Regression Tests.

- Repariere xmlconcat, indem die XML Deklarationen richtig zusammengefügt werden. Addiere Aggregatfunktion xmlagg.

- Addiere Unterstützung für das Umwandeln von binären Werten (bytea) in XML Werte, mit dem neuen GUC Parameter "xmlbinary" wird das Ausgabe Encoding kontrolliert, wie im SQL/XML Standard vorgesehen.

- Nutze optional xml2-config um den Installationspfad für libxml zu finden.

- Räume Encoding in den XML Typen auf: Im Text Modus werden Deklarationen ignoriert und entfernt, im Binary Modus werden sie, wie im XML Standard spezifiert, behandelt.

Bruce Momjian checkte ein:

- Aktualisiere Dokumentation, wie template1 gelöscht werden kann.

- Addiere URL für bitmap Index zu TODO.

- Addiere URL für "dead space map" zu TODO.

- Addiere Dokumentation über Memory und Zeiteinheiten zu postgresql.conf. Backpatch für 8.2 für neue initdbs.

- Aktualisiere Dokumentation über postgresqlconf um die Default Einheiten, die zur postgresql.conf Datei passen, zu erwähnen. Addiere auch Einheiten zu Beschreibungen, bei denen diese fehlt. Wortverbesserungen. Erwähne pg_settings.unit als Weg, wie Standardeinstellungen gefunden werden können. Backpatch für 8.2.x.

- Verändere max_fsm_pages in postgresql.conf.sample um ein typisches Beispiel zu zeigen, anstatt den Wert zu hoch anzusetzen.

- Dokumentiere, das zum Entfernen von template1 datistemplate auf 'false' gesetzt sein muss. Backpatch für 8.2.

- Verschiebe Code, der LOG Fehlerlevel zwischen ERROR und PANIC setzt, in die neue Funktion is_log_level_output(), für aufgeräumten Code.

- Addiere Entwicklerwiki URL zu TODO.

- Zu TODO addiert: "Erlaube mehrfache Vacuum so das große Tabellen nicht kleine Tabellen ausbremsen" und "Verbessere Kontrolle von Auto-Vacvuum".

- Addiere zu TOTO die URL für GUIDs/UUIDs (Globally/Universally Unique Identifiers)

- Markiere TODO Eintrag "Autovacuum standardmäßig aktiviert" als erledigt.

Tom Lane checkte ein:

- Passe pgbench an, so das es nicht über Nicht-Select-Queries spuckt, die Tuples zurückliefern, was grundsätzlich mit eigenen Scripts möglich ist (RETURNING, EXPLAIN, ect.).

- Addiere COST und ROWS Optionen zu CREATE/ALTER FUNCTION, plus zugrundeliegende pg_proc Columns procost und prorows, um einfache Useranpassungen der erwarteten Kosten eines Funktionsaufrufes zu erlauben und zusätzlich die Kontrolle über die erwartete Anzahl Zeilen einer Set-Returning Funktion. Wir werden dies ev. erweitern, um Funktions-spezifische Bewertungsroutinen zu erlauben, aber der Konsens sieht so aus, das wir erst einmal einfache Konstantenbewertung versuchen. Im Detail liefert dies einen relativ einfachen Weg um die Anordnung von verschiedenen WHERE Klauseln, die zu einer Plan Node hinzugefügt werden, zu kontrollieren, was eine gute Sache ist im Hinblick auf die Tatsache, das die letzten EquivalenceClass Planer Änderungen dies nicht so einfach vorhersagen lassen wie vorher.

- Schreibe einige lsyscache Routinen um, um doppelten Code zu entfernen und einige syscache Aufrufe in make_pathkey_from_sortinfo() einzusparen.

- Vereinfache pg_am representation von ordering-capable Zugriffsmethoden: liefere nur einen Boolean 'amcanorder', anstatt Felder die die Strategienummern des Sortoperators spezifizieren. Wir haben entschieden, ordering-capable AMs zu verlangen, um btree-kompatible Strategienummern zu nutzen, also waren die alten Felder Overkill (und irreführend über das, was erlaubt war).

- In pgsql/src/backend/utils/error/elog.c, nutze nicht 'int' wenn 'bool' gemeint ist.

- Repariere kaputtes Markup in pgsql/doc/src/sgml/installation.sgml.

- Schreibe die Planer pathkey Datenstruktur um, um eine separate, explizite Darstellung von equivalenten Klassen von Variablen zu erstellen.

- Addiere einen Hinweis, dass is_pseudo_constant_clause() nicht auf Constraints prüft. Das ist für derzeitige Anwendung OK aber könnte eines Tages Probleme verursachen.

- Erweitere den gestrigen Patch so das der bgwriter auch darüber informiert wird, wartende fsyncs während eines DROP DATABASE zu vergessen. Offensichtlich notwendig im Nachhinein :-(

- Überprüfe bgwriters fsync-Anfragen Mechanismus um die Robustheit zu verbessern, wenn eine Tabelle gelöscht wird. Ein Backend, das eine Datei löschen möchte, schickt nun eine "entferne fsync" Anfrage an den bgwriter um anhängende Requests zu entfernen. Es gibt immer noch eine Race Condition, wenn der bgwriter einen fsync versucht, wenn der unlink stattgefunden hat, aber wir können dies lösen, indem wir die Request Queue erneut überprüfen, um zu sehen, ob ein Revoke Request eingetroffen ist. Dies beseitigt die vorherige Problemlösung mit der Annahme, dass ein ENOENT Fehler okay ist und lässt uns die Tatsache handhaben, dass es unter Windows auch EACCES ohne fragwürdige Annahmen sein könnte. Nach einer Idee von mir mit Verbesserungen von Magnus. Der HEAD Patch ist nicht sauber für 8.2 anwendbar, aber ich schaue später nach einem Backport. In der Zwischenzeit kann dies mit etwas Testing unter Windows laufen; ich war in der Lage, es durch den Code Pfad mit ENOENT zu schicken, aber dies beweist nicht, das dies auch das Windows Problem beseitigt.

- Repariere fehlerhaften Zugriffscheck im information_schema.key_column_usage View: hat einen pg_constraint OID überprüft statt einen pg_class OID, was zu einem "relation with OID nnnnn does not exist" Fehler für jeden, der nicht Eigentümer der Tabelle war, führte. Laut Bug #2848 von Laurence Rowe. Hinweis: für existierende 8.2 Installtionen beseitigt ein simpler Versionsupdate nicht das Problem, der einfachste Fix ist, den View mit der korrekten Definition mit CREATE OR REPLACE zu ändern.

Alvaro Herrera checkte ein:

- Repariere pg_regress Bruchstelle für PL und contrib Tests, indem nicht verlangt wird, das "input" und "output" Verzeichnisse vorhanden sind.

- Magnus Haganders's Patch, mit einigen Änderungen, welcher die sed Rules in den Regression Tests für pg_regress ändert, um die generierten Dateien zu erstellen und es ermöglicht, diese Tests in Visual C++ laufen zu lassen. Die Tests funktionieren weiterhin in VPATH und normalen Builds.

- Schalte Autovacuum in der Standardkonfiguration ein, siehe Diskussion.

- Arrangiere, das Autovacuum gekillt wird, wenn ein anderer Prozess alleine Zugriff benötigt, wie DROP DATABASE. Dies erlaubt, dass die Regression Tests mit eingeschaltetem Autovacuum durchlaufen, was letztendlich ermöglicht, das wir Autovacuum per Default aktivieren können.

Neil Conway checkte ein:

- Aktualisere Doks für die letzte Änderung beim setseed() Rückgabewert.

- Lasse setseed() void zurückliefern, statt int4 ohne weitere Nutzung. Laut pgsql-patches Diskussion vom 20. September 2006. Erhöhe die catversion.

- Liste deaktivierte Trigger separat in psql's "\d <Tabelle>" Ausgabe. Vorher wurden deaktivierte Trigger nicht anders dargestellt als aktivierte, was irreführend war. Patch von Brendan Jurd.

- Schreibe die Index AM API leicht um: verschiebe currentItemData und currentMarkData von IndexScanDesc in die opaque Strukturen für die AMs, die diese Informationen benötigen (derzeit gist und hash). Patch von Heikki Linnakangas, Änderungen von Neil Conway.

- Regression Tests für large Objects. Patch von Jeremy Drake.

- Bringe psql's \lo Slash Befehle bei, den Quiet Mode zu respektieren und die Ausgabe in HTML im HTML Mode zu liefern. Patch von Jeremy Drake.

- Addiere fehlendes Copyright Material, lasse ruleutils.c das Standardlayout für Header Kommentare nutzen.

- Erweitere den width_bucket() Regression Test, um unnötige Abhängigkeiten von der Plattform Floating Point Implementation zu vermeiden. Nach einem Report von Stefan Kaltenbrunner.

- vcbuild Aktualisierungen von Magnus Hagander: nach Markos Patch wird jetzt pgcrypto wieder ohne zlib gebaut, aktualisiere README mit xml Info, prüft xml Abhängigkeiten auf xslt und iconv, deaktiviert eine unnötige Warnung über __cdelc() und addiert buildenv.bat Aufrufe von allen anderen bat Dateien, um Dinge wie Pfade für flex/bison zu setzen. (Kann dies nicht vor dem Aufruf setzen, das funktioniert nicht immer, wenn vom GUI aus gebaut wird)

- Implementiere width_bucket für den float8 Datentyp.

- Kleinere Verbesserungen für die TODO Liste. Addiere einige URLs für einige existierende TODO Einträge, und trage wieder einen Punkt für "erwartete Anzahl" Fähigkeiten ein.

- Korrigiere eine kleine Inkorrektheit in der pg_dumpall Referenzseite: -g dumped Rollen und Tablespaces, nicht länger User und Gruppen. Von Dave Page. Backport zu 8.2 und 8.1.

Teodor Sigaev checkte ein:

- Repariere Lokalisierungssupport für Multibyte Encoding und C Lokale. Leicht modifizierter Patch von Tatsuo Ishii.

== Abgelehnte Patches (bis jetzt) ==

Niemand wurde diese Woche enttäuscht :-)

== Eingesandte Patches ==

Greg Sabino Mullane sandte einen Patch, welcher es pg_dump erlaubt, DDL Systemobjekte sauber formatiert auszugeben.

Gurjeet Singh sandte neue Versionen seines pg_post_planner_plugin, um DDL für Systemobjekte sauber formatiert auszugeben.

Magnus Hagander sandte einen Patch für das vcbuiild Script, welches pgcrypto wieder ohne zlib baut, aktualisiert README mit xml Info, prüft xml Abhängigkeiten auf xslt und iconv, deaktiviert eine unnötige Warnung über __cdelc() und addiert buildenv.bat Aufrufe von allen anderen bat Dateien, um Dinge wie Pfade für flex/bison zu setzen. (Kann dies nicht vor dem Aufruf setzen, das funktioniert nicht immer, wenn vom GUI aus gebaut wird)

Dave Page sandte einen Patch, welcher -f (--file=FILENAME) und -l (--default-database=) zu pg_dumpall addiert.

ITAGAKI Takahiro sandte einen Patch, welcher O_DIRECT Unterstützung für Windows addiert.

Arul Shaji sandte einen Patch, welcher pg_get_domaindef(oid) implementiert.

Gevik Babakhani sandte seinen Patch für die Implementierung des UUID Datentypes erneut ein.

Neues Zuhause für unsere Schildkröten

Endlich komme ich zu diesem Blogeintrag, die Fotos sind schon eine Weile auf dem Rechner, aber ich hatte nie Zeit, die Umbauarbeiten an unserem Aquarium//Terrarium zu dokumentieren.

Wir haben neben einigen Fischen zwei Wasserschildkröten, die in einem Becken in unserem Arbeitszimmer leben. Da die beiden Schildkröten Winterschlaf halten, hatten wir beschlossen, die Zeit für einen Umbau zu nutzen. Der Landteil sollte höher gesetzt werden, das Becken generell gereinigt werden, etwas mehr Deko und für die bisher frei hängende Höhensonne sollte auch eine vernünftige Lösung her.

Als erstes wurden alle alten Einbauten entfernt, ein flaches Messer zum Einspannen von Rasierklingen leistet sehr gute Dienste, wenn es darum geht, Silikonreste rückstandslos von der Glasscheibe zu entfernen. Vor den Umbauten sah das ganze folgendermassen aus:

Ach ja, besagtes Messer:

Jetzt galt es, den neuen Landteil einzukleben, eine Sammlung Lexika leistet hier wertvolle Dienste:

Die Klebebahnen sehen definitiv besser aus als in der vorherigen Version, das mag aber auch daran liegen, das wir letztes Jahr eine Kartusche Aquariumsilikon benutzt haben, dieses Mal auf eine Tube ausgewichen sind, die eine wesentlich dünnere Spitze zum Auftragen bietet.

Die Umbauarbeiten waren soweit abgeschlossen, nun darf nach angemessener Trockenzeit für das Silikon Wasser eingefüllt werden:

Dabei passierte dann unter anderem dieses kleine Malheur.

All den widrigen Umständen zum Trotz nahm das Becken wieder einen bewohnlichen Zustand an:

Der erste Bewohner ist ebenfalls wieder eingezogen und scheint sich wohl zu fühlen:

Der zweite Bewohner wird dann in den nächsten Tagen auch aufgeweckt.

Kerzenschein

Gestern war ja eine etwas stürmische Nacht, gegen 18:15 Uhr fiel auch bei uns der Strom aus und war, so meinte meine Freundin jedenfalls, gegen 23:45 Uhr wieder vorhanden. Bevor wir alles vom Netz getrennt hatten, muss es wohl unseren DSL Router erwischt haben, jedenfalls war dessen Netzteil heute morgen der Meinung, keine Spannung mehr abgeben zu müssen. Nun gut, der war schon etwas älter, also haben wir kurzerhand einen neuen geholt. Endlich wieder Internet ;-)

So ein Abend bei Kerzenschein ist auch gemütlich, endlich konnte ich das Buch weiterlesen, das schon eine Weile auf dem Nachtschrank lag. Ausserdem bin ich so früh wie schon lange nicht mehr ins Bett gekommen *g*

Alles neu macht der äh Januar

In einem Gespräch mit meiner Mam am letzten Wochenende haben wir verschiedene Möglichkeiten durchdacht, wie wir den Ablauf unserer Hochzeit an veränderte Gegebenheiten anpassen könnten. Letztendlich kam die Idee auf, die kirchliche Trauung von Magdeburg nach Gommern zu verlegen, da alles andere sowieso in Gommern stattfindet.


Damit haben wir heute ein Gespräch mit dem zuständigen Pfarrer für die Gemeinde gehabt, der Termin ist eingetragen. Standesamt ist auch von Freitag auf Samstag umgelegt. Und nach einer wilden Suche in Terminkalendern auf beiden Seiten haben wir auch einen Termin für ein Traugespräch bei dem Pfarrer, der uns vorraussichtlich trauen wird.


Die Tatsache, das nun alle Feierlichkeiten in einem Ort stattfinden, eröffnet natürlich ganz neue Möglichkeiten für die Planung *g*

Wöchentlicher PostgreSQL Newsletter - 14. Januar 2007


Der Originalartikel befindet sich unter:
http://people.planetpostgresql.org/dfetter/

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

Sicherheitsupdates für 8.2.1, 8.1.6, 8.0.10, 7.4.15 und 7.3.17 sind draussen, ebenfalls Packages für Debian, Fedora, Fink, FreeBSD Red Hat und Ubunto. Schnell upgraden.

== PostgreSQL Produkt Neuigkeiten ==

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

pfm 1.4.3 erschienen.
http://pgfoundry.org/projects/pfm/

mysql2pgsql-1.0.2 erschienen.
http://gborg.postgresql.org/project/mysql2psql/projdisplay.php

PostgreSQL SDBC Driver 0.7.3 ist erschienen:
http://dba.openoffice.org/drivers/postgresql/

Navicat PostgreSQL 7.2.10 für Windows erschienen.
http://pgsql.navicat.com/

Slony-I 1.2.6 ist draussen.
http://slony.info/

audittrail2-beta1 erschienen.
http://pgfoundry.org/projects/audittrail2/

PGCluster 1.5.0rc13 and 1.7.0rc2 erschienen.
http://pgfoundry.org/projects/pgcluster/

== PostgreSQL Lokal ==

Die Deutsche PostgreSQL Usergruppe ( http://www.pgug.de ) erstellt drei neue Flyer in Englisch und Deutsch. Die Themen werden sein: 1) PostgreSQL allgemein, 2) PG und Replikation, 3) PG im Vergleich zu anderen. Wenn du Material hinzufügen oder dich beteiligen möchtest, wende dich an info at pgug dot de.

Bitte übermittle deine Vorschläge für die PGCon 2007. PGCon wird in Ottawa, Ontaria in Kanada sein. Einsendeschluss für Einreichungen ist der 19. Januar.
http://www.pgcon.org/2007/submissions.php

Es wird ein 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@postgresql.org um teilzunehmen.
http://www.fosdem.org/2007/

Pavel Stehule wird einen Kurs über Stored Procedures in PostgreSQL halten. Termin ist der 11. Januar 2007 in Prag, Sprache ist Tschechisch.
http://www.root.cz/zpravicky/skoleni-o-ulozenych-procedurach-v-postgresql/

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

Gavin Sherry veranstaltet eine PostgreSQL Minikonferenz in Sydney am
Dienstag dem 16. Januar 2007.
http://lca2007.linux.org.au/Miniconfs/PostgreSQL Wenn du teilnehmen
möchtest, maile gavin AT alcove . com . au

== 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,
Devrim GUNDUZ und Robert Treat

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

== Angewandte Patches ==

Alvaro Herrera checkte ein:

- Marko Kreen's Patch um unnötige DISABLE_ZLIB defines in pgcrypto mit HAVE_ZLIB aus dem Core zu ersetzen.

- Repariere autovacuum um zu vermeiden, das nicht-permanente Xids in nicht konnektierbaren Datenbanken verbleiben. Patch nur für die 8.1 Branch, da der neue 8.2 (und HEAD) Code dieses Problem nicht hat.


Michael Meskes checkte ein:

- Passe MinGW erwartete Datei an neues Setup an, erstelle erwartete Datei mit richtiger Portnummer.

- Vereinfache ecpg Regression Handling, addiere Patch von Joachim Wieland mit einem Workaround für einen Fehler in der OpenBSD Test Suite.

- In ecpg, wende Joachim's Patch für eine --regression Option an. Sorge dafür, das diese Option die .c Dateien markiert, so das keine Umgebungsvariable mehr notwendig ist. Habe eine spezielle MinGW Datei mit dieser speziellen Fehlermeldung erstellt. Schreibe den Port nicht in das Logfile wenn Regression Tests laufen.

Neil Conway checkte ein:

- Füge eine Notiz zur Dokumentation hinzu die NANs Gleichheit und Sortierverhalten beschreibt. Laut einer kürzlichen -hackers Diskussion, dies ist erwähnenswert, da das Postgres Verhalten von den meisten NaN Implementierungen abweicht, IEEE754 eingeschlossen.

- Ein Patch von Magnus Hagander und Joachim Wieland für pgsql/src/tools/msvc/gendef.pl welcher zwei Probleme beseitigt: gendef funktioniert von Visual Studio aus - nutze eine temporäre Datei statt einer Umleitung, denn aus einigen Gründen kann man Umleitungen nicht von innerhalb nutzen und gendef muss nur *.obj Dateien bearbeiten, oder du bekommst komische Fehlermeldungen in einigen Build Szenarien wenn es versucht, ein Logfile abzuarbeiten.

- Dieser Patch für pgsql/src/tools/msvc/build.bat schaltet umfangreiche Ausgaben beim Bauen aller Projekte an. Dies ist der selbe Ausgabelevel wie vorher beim Bauen eines einzelnen Projektes genutzt wurde, und es ist wirklich notwendig, vernünftige Informationen über das, was passiert, zu erhalten (andernfalls erscheinen bloss "starte Build von foo" und "fertig mit foo", mehr oder weniger).

ISHII Tatsuo checkte ein:

- Backporte Patch für Versionen 8.0, 7.4 und 7.3. Dieser Patch ruft srandom() statt srand() auf. pgbench ruft random() später auf, so es sollte srandom() aufgerufen haben. Auf den meisten Plattformen mit Ausnahme von Windows ist srandom() identisch zu srand(), so das der Fehler nur Windows user betrifft. Nach einem Bugreport von Akio Ishida.

- In contrib/pgbench, backporte Patch. Rufe srandom() statt srand() auf. pgbench ruft random() später auf, daher sollte es srandom() aufgerufen haben. Auf den meisten Plattformen mit Ausnahme von Windows ist srandom() identisch zu srand(), so das der Fehler nur Windows user betrifft. Nach einem Bugreport von Akio Ishida.

- In contrib/pgbench, ändere Copyright Jahr.

Bruce Momjian checkte ein:

- Entferne komplette und nicht länger benötigte Einträge von der TODO Liste, inklusive "Repariere Speicherleck bei Exceptions" (erledigt), "erlaube constraint_exclusion für UNIONs wie für Vererbung , erlaube es für UPDATE und DELETE Statements und erlaube die Nutzung für alle Statements mit einem kleinen Performance Nachteil" (erledigt), "Addiere estimated_count(*) um den erwarteten Wert von COUNT(*) zurückzugeben" (nicht länger gewünscht).

- Update to_char("CC") Beschreibung.

- Update Fehlertext Wortlaute in pgsql/src/backend/parser/analyze.c.

- Update ORDER BY UNION Funktion/Ausdrücke Wortlaute (wieder).

- Update UNION/INTERSECT/EXCEPT ORDER BY Fehler Wortlaute für Ausdrücke/Funktionen.

- verbessere Fehler Wortlaute von ORDER BY in UNION welches neue Ausdrücke in ORDER BY erzeugt.

- Zu TODO: "Addiere URL Eintrag für psql -c Änderungen"
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00291.php

- Zu TODO: "Repariere Begrenzungen für Transaktionen für CREATE DATABASE und andere Befehle"
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00133.php

- Zu TODO: "Addiere URL für PQexec() um mehrfache Queries zu verbieten"
http://archives.postgresql.org/pgsql-hackers/2007-01/msg00184.php

- Zu TODO: "Erweitere Zeitzonen Code um 64-Bit Werte zu erlauben so das wir Jahre über 2038 hinaus darstellen können."
http://archives.postgresql.org/pgsql-hackers/2006-09/msg01363.php

- Zu TODO: "Verschiebe NAMEDATALEN von postgres_ext.h nach pg_config_manual.h und ziehe in Betracht, es in zukünftigen Versionen mehr konfigurierbar zu gestalten."

- L Bayuk's Patch welches es BCC erlaubt libpq und psql zu compilieren.

- Für pg_ctl -w, addiere Referenz zu zusätzlichen Umgebungsvariablen und pgpass.

- Entferne SGML makefile.SECONDARY Tag so das die HTML Regeln vernünftig arbeiten können, Dokumentation/Kommentar Verbesserungen.

- Verbessere SGML Build Regeln für Nicht-HTML Ausgaben, von Peter Eisentraut.

- Update Copyright Script um Leerzeichen um Gedankenstriche zu erlauben.

- In SGML Makefile, setze richtige Targets für rekursive Aufrufe.

- Addiere "Verbessere Merge Join Performance durch Erlauben von Setzen/Wiederherstellen von Tuple Sources" zur TODO Liste.

- Michael Fuhr's Patch um die UTF-8 RFC Referenz zu updaten. RFC 2044 war obsolet bei RFC 2279, welcher wiederum obsolet bei RFC 3629 war.

- Baue SGML Dokumentation mehrmals wenn notwendig, um richtige Indicies zu haben; Addiere 'draft' Option, um dies abzuschalten.

- Habe log_temp_files be in Kilobytes, entferne Trace Aufruf.

- Entferne trace Makro vom neuen log_temp_files, bis es besser erforscht wurde.

- Heikki Linnakangas's Patch welcher fünf andere Tuple Stats anschaltet durch Nutzung der High Bits des nattr Feldes, und benenne das Feld um.

- Im TODO, markiere als erledigt: "Addiere Möglichkeit um die Nutzung von temporären Sort Dateien zu überwachen"

- Bruce Moran's Patch welcher eine GUC Variable log_temp_files für das Logging von temporären Dateien addiert.

- In TODO, markiere als erledigt: "Erlaube das Erstellen von Indicies mit gemischtem ascending/descending." Tom Lane's ORDER BY ... NULL FIRST/LAST Patch implementiert dies.


Tom Lane checkte ein:

- Repariere Handling des CC (Century) Formats in to_date/to_char. Entsprechend der Standard Konvention ist das 21. Jahrhundert von 2001-2100, nicht von 2000-2099. Siehe Bug #2885 von Akio Iwaasa. Patch für 8.2, aber nicht weiter, da dies eine größere Änderung ist; Benutzer der älteren Versionen sind möglicherweise mehr an Stabilität interessiert.

- Füge einige Notizen zu pgsql/src/backend/access/nbtree/README hinzu über die grundlegenden mathematischen Gesetze welche das System für wahr hält in der btree Operator Familie. Dies ist hauptsächlich um mein eigenes Denken über das, was der Planer für Optimierungen annehmen darf, klarzustellen. (Staub von einem alten Abstact-Algebra Buch blasend...)

- Repariere ein Performance Problem in Datenbanken mit einer großen Anzahl von Tabellen (oder anderen Typen von pg_class Einträgen): die Funktion pgstat_vacuum_tabstat, von VACUUM beim Start aufgerufen, hatte Laufzeitabhängigkeiten über die Einträge in der stats Tabelle und der Anzahl pg_class Zeilen; in anderen Worten O(N^2) wenn die Stats Kollektor Informationen einigermassen komplett waren. Ersetze Listensuche mit einer Hashtabelle und stelle O(N) Verhalten wieder her. Nach einem bericht von kim at myemma.com. Patch für 8.1; 8.0 und vorherige Versionen nutzen hier einen anderen Code.

- Bringe nodeMergejoin bei, wie DESC und/oder NULLS FIRST Sortierungen zu handhaben sind. Soweit nur durch Hacks im Planer getestet.

- Stelle sicher, das BYTE_ORDER in 64-Bit Builds unter Solaris definiert ist, von Stefan Kaltenbrunner.

- Ändere die planner-to-executor API so das der Planer dem Executor die Vergleichsoperatoren mitteilt, die für einen Plan für Tuple Vergleiche genutzt werden (Agg, Group, Unique, SetOp). Vormals hat der Executer die Default Vergleichsoperatoren nachgeschaut, aber das war schlecht, da es möglich ist, dass die Daten, die in eine Node eingebracht werden, nach einer Nicht-Standard Operatorclass sortiert wird und diese Klasse eine inkompatible Meinung für Vergleichen hat. Der Planer kennt die Sortierreihenfolge und kann demzufolge die richtigen Vergleichsoperatoren liefern. Ebenso verschiebt diese Änderung mehrere Katalogsuchen from Executor in den Planer, was die Startzeit von prepared Queries ein bischen verbessern sollte. Ändere den Planer und entferne einige hochmütige Annahmen darüber, das wir immer in der Lage sind, die Default Operatoren zu nutzen. Addiere ebenfalls "nulls first/last" Informationen zur Plan Node für einen Merge Join -- weder der Executor noch der Planer können dies bis jetzt nutzen, aber wenigstens ist die API schon bereit.

- Kleinere Änderungen in der Dokumentation für ORDER BY; im Detail zeige den geläufigen Fehler auf, das ORDER BY x, y DESC nicht das gleiche ist wie ORDER BY x DESC, y DESC.

- In pgsql/src/backend/access/hash/README, addiere ein Zitat über Seltzer und Yigit's Usenix '91 Papier über Hash Table Management. Dieses Papier beschreibt deutlich viele der Ideen, die in unserem derzeitigen Hashing Code genutzt werden, but soweit ich herausfinden konnte, ist keine direkte Code Abhängigkeit gegeben. (Mike Olsen erinnert sich an Diskussionen über dieses Papier auf Postgres Treffen aber denkt, das (dieses Papier) "die Postgres Implementierung nur im Design informierte".) Ehre wem Ehre gebührt, auch wenn dies fünfzehn Jahre später geschieht.

- Magnus Hagander's Patch für pgsql/src/tools/msvc welcher vcbuild repariert und das Bauen ohne OpenSSL und/oder zlib erlaubt.

- In pgsql/src/tools/msvc, addiere README mit vcbuild Dokumentation von Magnus Hagander und Dave Page.

- pltcl Regression Tests muss eine opclass erstellen, nicht nur einen Operator.

- Unterstütze ORDER BY ... NULLS FIRST/LAST, und addiere ASC/DESC/NULLS FIRST/NULLS LAST per-Spalte Optionen für btree-Indicies. Der Planer unterstützt das bisher nur sehr rudimentär, er weiss bisher nicht, wie er Merge Joins mit nicht-Standard Sortieroptionen planen soll. die Dokumentation ist ebenfalls sehr rudimentär. Ich verbessere dieses Zeug später. Merke inkompatible Änderung im Verhalten an: ORDER BY ... USING wird jetzt abgelehnt, wenn der Operator nicht Mitglied einer kleiner-gleich oder größer-gleich Gruppe eines btree Operators ist. Dies verhindert ungesundes Verhalten, wenn ein Operator, der kein ordentliches Sortverhalten unterstützt, ausgewählt wird.

- Bearbeite Joinlist erstellung um keine unnützen Ein-Element Subqueries zu erstellen, wenn ein JOIN Tree durch join_collapse_limit zusammenbricht. Als Beispiel eine Liste mit 11 LEFT JOINs mit limit 8 produziert jetzt etwas wie ((1 2 3 4 5 6 7 8) 9 10 11 12) statt (((1 2 3 4 5 6 7 8) (9)) 10 11 12). Die letztere Struktur ist nur für einen FULL JOIN notwendig. Bemerkt bei dem Studium eines Beispiels von Shane Ambler.

- Entferne sehr alten cost_hashjoin Hack um Hash Joins mit erwarteter größerer Innen Relation zu entmutigen (war mal verboten). Es gibt mehrere Fälle, in denen dies Sinn macht, und in anderen Fällen sollte die Kostenvorhersage dies handhaben können. Mache einige kleinere Änderungen in der Vorhersage um diese ein Stück realer zu bekommen. Nach einem Beispiel von Shane Ambler. Berichtige ebenfalls einen übersehenen Fehler im originalen Patch um seq_page_cost zu addieren: die Kosten, um einen Hash Join auf der Platte zu verteilen sollten von seq_page_cost eingeteilt werden.

D'Arcy Cain checkte ein:

- erweitere den Money Typ auf 64 Bits.

Peter Eisentraut checkte ein:

- Berichtige Reverse Compilation von IS DOCUMENT Ausdrücken.

- Addiere Unterstützung für xmlval IS DOCUMENT Ausdrücken.

- In pgsql/src/backend/parser/parse_expr.c, Beseitige Compiler Warnung.

- Benutze XML Ausgabe Escaping ebenfalls in XMLFOREST.

- Erlaube willkürliche Datentypen als Inhalt von XMLELEMENT. Der originale Zwang zum Typ xml war ein Fehler. Escape Werte so das sie zulässige XML Character Daten darstellen.

- Benutze libxml's xmlwriter API um XML Elemente zu erzeugen, statt unseren eigenen Tanz aufzuführen. Dies erledigt einen besseren Job beim Quoten und Escapen von Werten.

- Verhindere doppelte Attributnamen in XMLELEMENT.

- Etwas Feintuning in xmlpi Ecken: korrigiere Fehlercodes, erledige Syntax Checks in der richtigen Reihenfolge und entferne führende Leerzeichen von Argumenten.

- Prüfe und dokumentiere minimal benötigte Version von libxml.

== Abgelehnte Patches (bis jetzt) ==

Niemand wurde diese Woche enttäuscht :-)

== Eingesandte Patches ==

Magnus Hagander sandte einen Patch ein, der Builds mit vcbuild repariert und so Builds ohne OpenSSL erlaubt und libz sollte tun, was verlangt wird. Das deaktiviert die sslinfo und pgcrypto Module, denn diese benötigen die Bibliothek, um überhaupt zu bauen.

Michael Fuhr sandte einen Patch ein, um die UTF-8 RFC Referenz zu updaten. RFC 2044 war obsolet bei RFC 2279, welcher wiederum obsolet bei RFC 3629 war.

Simon Riggs sandte zwei versionen seines Patches, die es erlauben, WAL Files in COPY Transaktionen überhaupt nicht zu schreiben.

Gurjeet Singh sandte eine andere Revision seines "Index Advisor" Patches ein.

Magnus Hagander sandte einen Patch, welcher gendef in Visual Studio korrigiert.

Magnus Hagander sandte einen Patch ein, der umfangreiche Ausgaben beim Bauen aller Projekte anschaltet. Dies ist der selbe Ausgabelevel wie vorher beim Bauen eines einzelnen Projektes genutzt wurde, und es ist wirklich notwendig, vernünftige Informationen über das, was passiert, zu erhalten (andernfalls erscheinen bloss "starte Build von foo" und "fertig mit foo", mehr oder weniger).

Neil Conway sandte einen Dokumentation Patch ein, der PostgreSQLs Handling von NaN Werten erläutert.

Dave Page sandte einen Patch ein, der pg_dumpall Role und Tablespaces dumpen lässt.

Pavel Stehule sandte einen Patch ein der Unterstützung für scrollbare Cursor für SPI addiert.

lebendiger Wasserschlauch

Man sollte beim Befüllen des Aquariums den Wasserschlauch im Auge behalten. Denn macht sich dieser selbstständig, ist eine Rundumreinigung des Arbeitszimmers fällig.

Das Display, auf dem ich das hier schreibe, hat noch einige Wasserspritzer. Mal ein zweites Handtuch holen und die Reste beseitigen ...


Krankenhäuser haben Zeit

Meine Freundin kam heute ins Krankenhaus, zuerst wurde sie von einem KH im Ort zum anderen geschickt mit der Begründung, für den vermuteten Fall wäre das andere KH zuständig. Ohne Untersuchung wohlgemerkt, nur nach Einschätzung der Notaufnahme. Im zweiten KH wurde sie dann untersucht, dann aber doch zurück zum ersten geschickt. Dort folgten weitere Untersuchungen und letztendlich eine Aufnahme zur Beobachtung.


Dauer der gesamten Aktion: fast 5 Stunden.