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*