[DPWN] Wöchentlicher PostgreSQL Newsletter - 7. Januar 2007

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

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

Die Planungsgruppe für PGCon 2007 wurde angekündigt.
http://archives.postgresql.org/pgsql-advocacy/2007-01/msg00014.php

== PostgreSQL Produkt Neuigkeiten ==

Sicherheitsupdates für 8.2.1, 8.1.6, 8.0.10, 7.4.15 und 7.3.17 werden bald herausgegeben, ebenfalls Packete für Red Hat, Fedora, Debian und Ubuntu. Fertigmachen zum schnellstmöglichen Updaten.

== PostgreSQL Lokal ==

Meredith Patterson präsentiert: Verhindern von SQL Injection mit Libdejector
am Dienstag, den 9. Januar 2007 um 19:30 in San Mateo, Kalifornien. RSVP unter folgender URL.
http://postgresql.meetup.com/1/calendar/5324165/

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

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:

  • Rücke Kommentare in Makefiles ein so das sie nicht in der Ausgabe erscheinen.

  • erlaube XML Deklarationen in XML Fragmenten. Wir brauchen dafür einen kleinen handgeschriebenen Parser für die XML Deklarationen, denn libxml scheint dies nicht zu erlauben.

  • Ersetze xmlroot mit einer richtig funktionierenden Version die die Werte parst, Begriffe setzt und Werte zurück serialisiert (anstatt eine willkürliche Nummer hinzuzufügen wie zuvor). Das libxml Speichermanagement über palloc musste deaktiviert werden, da es crashte wenn libxml versucht hat, auch Speicher zuzugreifen, den PostgreSQL zuvor bereits freigegegen hat. Dies benötigt weiteres Nachdenken.

Andrew Dunstan checkte ein:

  • Rufe setrlimit wenn möglich in pg_regress auf um das Erstellen von Corefiles zu ermöglichen und stelle einen Schalter für das gleiche Verhalten in pg_ctl bereit.

Tom Lane checkte ein:

  • Repariere einen übersehenen Fehler in der Handhabung von Row-vergleichenden Index Schlüsseln: wenn die Zeile nicht genau dem Index entspricht, müssen wir unsere anfänglich gewählte Positionierungsstrategie ändern. Als Beispiel: gegeben sei ein Index auf (f1,f2,f3) und eine WHERE Bedingung "ROW(2,3) > ROW(2,3), der Code extrahiert die anfängliche Positionsbedingung “f1 > 2”, was falsch ist … es muss “f1 >= 2” sein, andernfalls werden einige Zeilen, die der WHERE Bedingung entsprechen, nicht zurückgeliefert. Patch wird nur auf 8.2 angewandt, ich werde es in HEAD später korrigieren als Teil der geplanten Index Verbesserungen (umgekehrtes Sortieren und NULL FIRST/LAST).

  • Repariere filtered_base_yylex() um base_yylval und base_yylloc bei einem Lookahead zu speichern und zu restaurieren. Dieser Mangel war Ursache für verschiedene kuriose Fehlverhalten wenn jemand versucht hat, “with” als einen normalen Bezeichner zu verwenden.

  • Verweise auf GUC Variablen aus der HISTORY haben in vergangenen Branches nicht funktioniert.

  • Füge ERANGE Tests in dpow() wieder ein. Es gibt Plattformen, die das benötigen, wie mein HPPA …

  • Greg Sabino Mullane’s Patch um fehlende Referenzen zu pg_shdescription zu addieren.

  • Magnus Hagander’s Patch welcher AddDefine korrigiert um Quotes sauber zu handhaben.

  • Zwicke pg_dumpall um GRANT CONNECT ON DATABASE … TO PUBLIC zu addieren, wenn Datenbank Privilegien von einem Pre-8.2 Server gedumpt werden. Dies stellt sicher, das die neu geladene Datenbank das selbe Verhalten sicherstellt wie in der vorherigen Installation, z.B. jeder hat Connect Rechte. Nach einem Hinweis von L Bayuk.

  • Greg Stark’s Patch welcher einige kleine Fehler in Kommentaren beseitigt.

  • Repariere fehlerhafte Implementierung von -s in postmaster.c (der Schalter nimmt keine Argumente an). Addiere einige Kommentare das Code an drei verschiedenen Stellen aktuell gehalten werden muss. Repariere fehlerhafte Beschreibung des -S Schalters (er setzt work_mem nicht silent_mode), und erledige einige kleinere Änderungen in postgres-ref.

  • Repariere regex_fixed_prefix() um vernünftig mit Regexp Pattern der Form ‘^(foo)$’ umzugehen. Vorher konnten diese niemals in Indexscans umgewandelt werden. Die letzten Änderungen an psql und pg_dump generieren solche Pattern (beziehungsweise für \d Kommandos und -t und relevante Schalter) deshalb repräsentierten sie einen großen Performance Hit für Leute mit einem großen pg_class Kalatog, wie gesehen in einer Nachricht von Erik Jones. Wenn wir schon dabei sind, sei mehr paranoid über case-sensitive Vergleiche in Multibyte Encodings und repariere einige andere Ecken in denen ein Regexp zu liberal interpretiert werden könnte.

  • Repariere fehlerhafte Tests in pow/exp.

  • Repariere btree_gist für neue größere Money Typen.

  • Räume smgr.c/md.c APIs aufgrund einer Diskussion mehrere Monate zuvor auf. Anstatt das md.c ein success/failure Flag an smgr.c zurückliefert, welches bloss geloggt wird, lasse md.c die Tatsache selber loggen. Dies erlaubt bessere Fehlermessages, besonders in Situationen mit “short read” oder “short write” über die sich Peter beschwert hat. Entferne ebenfalls den Hack um mdread() zu erlauben, Null zurückzuliefern wenn über das Fileende hinaus gelesen wurde: dies ist nun eine Fehlerbedingung ausser in InRecovery oder wenn damages_pages = true gesetzt ist. (Hash Indexe haben dies Verhalten verlangt, aber jetzt nicht mehr.) Stelle auch sicher, das mdwrite() genutzt wird um existierende Blöcke neu zu schreiben während mdextend() genutzt wird um die Relation zu erweitern. Diese Einschränkung befreit uns von dem alten Ad-Hoc Schutz gegen das Erstellen großer Dateien bei einer zufälligen Referenz auf eine falsche Blocknummer: wir erstellen neue Segmente nur in mdextend() nicht in mdwrite() oder mdread(). (Ebenfalls, in InRecovery erlauben wir es dennoch, denn wir müssen das Updaten von Blocks erlauben die später gekürzt werden.) Räume ebenfalls den originalen makeshift Patch für Bug #2737 auf: verschiebe die Zuständigkeit für das Auffüllen von Relation Segmenten auf eine volle Länge in md.c.

  • Addiere einen Regression Test für ALTER SET TABLESPACE; dies ist ein komplett separater Codepfad in tablecmds.c der früher nicht überprüft wurde.

Bruce Momjian checkte ein:

  • Entferne von TODO: “Erlaube die Bezeichnerlänge über eine Configure Option zu vergrößern”

  • TODO Updates für den MONEY Datentyp.

  • In TODO, markiere als erledigt: “Erlaube es userdefinierten Typen ‘typmod’ Parameter zu akzeptieren”

  • Addiere zum TODO: “Nutze konsistente long/short Kommandozeilen Optionen — pg_ctl braucht lange, pg_config hat keine kurzen, postgres hat nicht genügend lange, und so weiter.”

  • Addiere zu TODO: “Ziehe in Betracht, den -C String in einzelne Queries zu parsen und jeden in seiner eigenen Transaktion auszuführen” und “Ziehe in Betracht, keine mehrfachen Queries in PQexec() zu erlauben um eine zusätzliche Barriere für SQL Injection Attacken zu schaffen”

  • Wende Fix für pow() und exp() an so das diese ERANGE nutzen wenn das Ergebnis nicht 0 ist.

  • Verschiebe INDEX Vererbung in eine separate TODO Listen Sektion.

  • Euler Taveira de Oliveira’s Patch welcher initdb erlaubt, das pg_xlog Verzeichnis anzugeben. TODO als erledigt markiert

  • Dokumentiere Probleme mit Release Links in frühen Branches.

  • Prüfe auf ERANGE ebenfalls in exp(). Verbessere Dokumentation für ecpg Regression Tests.

  • Verbessere dpow() Prüfung auf ERANGE Überlauf bei HPPA.

  • Entferne zusätzliches Zeichen welches bei “top” addiert war.

  • Repariere Markup denn lc_numeric hat kein SGML Tag in diesem Release.

  • Repariere markup denn ältere Versionen konnten die Referenz Sektion nicht verlinken.

  • Dokumentiere das wir die ecpg Regression Dateien aktualisieren müssen wenn wir die Library Versionsnummer aktualisieren.

  • Aktualisiere ecpg Regression Ausgabe für neue Library Versionsnummer.

  • Stefan Kaltenbrunner’s Patch zur Aktualisierung des float dpow() Kommentars welche Plattformen ein Problem mit Nan haben.

  • Ändere Tab zu Leerzeichen Erwähnung in FAQ_DEV.

  • Einfache Zuweisung von Inf zu pow Nan (keine Beachtung des Vorzeichens).

  • Aktualisiere pow() Tests um zu prüfen das errno==EDOM _und result==Nan, und dokumentiere warum dies passieren kann. Entferne exp() errno Prüfung da unnötig.

  • Versuche richtige Überlauf/Unterlauf Nachrichten zurückzuliefern für Plattformen die nur Nan zurückliefern und errno setzen für pow/exp Überlauf/Unterlauf.

  • Für float4/8, entferne errno Prüfungen für pow() und exp() denn nur einige Plattformen setzen errno und wir haben bereits ein Prüfmakro das Überläufe/Unterläufe entdeckt, so das keine Notwendigkeit für plattformspezifischen Code mehr besteht.

  • In pgsql/src/test/regress/expected/inet.out, aktualisiere Ergebnis für neuen Inet Fehlermessage Wortlaut.

  • Adjustiere Netzwerk errmsg(“Ergebnis ist ausserhalb des Bereiches”) Meldung um konsistent mit anderen Bereichen zu sein.

  • Einige Plattformen setzen errno bei pow(), exp() Überlauf, einige tun dies nicht, so wenn isinf(), falle zurück auf unsere eigenen Infinity Prüfungen.

  • finite() wird nicht länger genutzt, entferne Plattform spezifische Infrastruktur.

  • Glen Parker’s Patch welcher n_live_tuples und n_dead_tuples zu pg_stat_all_tables addiert. Der Grund ist um autovacuum-esq bedingte Vacuum und Clustering Operationen zu erlauben und dies durch SQL herauszufinden. Catalog Version aktualisiert.

  • Addiere #include für Plattformen die dies immer noch benötigen.

  • Repariere float4/8 um infinity und Nan gleich zu behandeln, z.B. Infinity ist ein gültiges Ergebnis einer Berechnung wenn eine der Eingaben Infinity war. Der vorherige Code nahm an, dass das zurückgelieferte Infinity ein Überlauf war. Handhabe Überlauf/Unterlauf gleich, und addiere Prüfungen für Aggregat Überläufe. Konsequenterweise beuge vor so das Inf/Nan nicht in Integer Datentypen gecastet werden können. Repariere INT_MIN % -1 um einen Überlauf zu verhindern. Aktualisiere Regression Ergebnisse für den neuen Fehlertext. Laut einem Report von Roman Kononov.

== Abgelehnte Patches (bis jetzt) ==

Niemand wurde diese Woche enttäuscht

== Eingesandte Patches ==

Simon Riggs sandte eine Version ein, dann eine korrigierte Version eines Patches die eine GUC Variable wall_checksum addiert, aufgrund einer Diskussion.
http://archives.postgresql.org/pgsql-hackers/2006-10/msg01299.php

Bill Moran sandte zwei Revisionen seines Patches ein um die Nutzung von temporären Dateien zu loggen.

Gurjeet Singh sandte eine andere Revision seines “Index Advisor” Patches ein, diesmal mit einigen Bugfixes und einer Verbesserung der Größen Bewertungs Funktion. Er enthält auch einen Workaround um ein früheres Problem in xact.c zu umgehen; er gibt nun vor, ein PL/xxx Modul zu sein durch umgeben von BIST()/RARCST() Aufrufe in einem SPI_connect()/SPI_finish() Block.

Heikki Linnakangas sandte einen Patch ein der das t_natts Feld umbenennt zu t_infomask2, mit 11 Bits reserviert für die Anzahl Attribute und die anderen 5 Bits verfügbar für zukünftige Erweiterungen. Dies ist beabsichtigt um den Fakt zu addressieren, das der Tuple Header voll wird, darum können im Gegenzug der Phantom Command IDs Patch und der HOT Patch nicht parallel existieren.


Zum Artikel im Blog…

Datum: Tue, 09 Jan 2007 02:55:58 +0100