Neuerungen in PostgreSQL 8.4

Seit der Einführung vierteljährlicher "Commit Fests" schreitet die Entwicklung von PostgreSQL zügig voran. Jetzt ist das freie Datenbanksystem ist Version 8.4 erschienen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 13 Min.
Von
  • Andreas Scherbaum
  • Alexander Neumann
Inhaltsverzeichnis

Seit der Einführung vierteljährlicher "Commit Fests" schreitet die Entwicklung von PostgreSQL zügig voran. Jetzt ist das freie Datenbanksystem ist Version 8.4 erschienen.

Im Laufe des vergangenen Jahres sind in die To-do-Liste des PostgreSQL-Entwicklerteams Hunderte von Patches eingeflossen. Sie bildet die Grundlage für den folgenden Überblick über die wichtigsten neuen Features in Version 8.4 der freien Datenbank.

Zahlreiche Verbesserungen bekam das Kommandozeilenprogramm psql spendiert. So ist die Hilfe freundlicher gestaltet, weil immer wieder Nutzer die Startmeldung schlicht ignorieren. Die überarbeitete Tabulator-Komplettierung zeigt jetzt alle Möglichkeiten an, nicht nur wie bisher eine Auswahl. Verschiedene Funktionen (zum Beispiel \d+) informieren über die Größe der Objekte in der Datenbank oder die Zugriffsrechte:

ix_84=# \dt+
Liste der Relationen
Schema | Name | Typ | Eigentümer | Größe ...
--------+-------+-------+------------+-----------...
public | daten | table | ads | 8192 bytes

ix_84=# \l+
Liste der Datenbanken
Name | Eigentümer | Kodierung | ... Access Privileges ...
-------+------------+-----------+-... ------------------------------ ...
ix_84 | ads | UTF8 | ... {=Tc/ads,ads=CTc/ads,ix=C/ads} ...

Der Befehl zum Anzeigen der Rechte (\z) umbricht die unter Umständen recht lange Liste zur besseren Lesbarkeit nun:

	      Zugriffsrechte
Schema | Name | Typ | Zugriffsrechte
--------+-------+-------+-----------------
public | daten | table | ads=arwdDxt/ads
: ix=r/ads
: u_84=r/ads

Verschiedene Schalter wie \timing lassen sich nicht mehr nur umschalten, sondern mit on oder off explizit auf den gewünschten Wert einstellen. \dT zum Anzeigen von Datentypen gibt die Werte eines ENUM an. psql beachtet die Umgebungsvariable $COLUMNS und passt die Breite der Ausgabe entsprechend an. Ein weiteres nützliches Detail: Das Programm listet bei einer Tabelle alle auf sie verweisenden Referenzen. Bisher musste man sie umständlich per Hand heraussuchen.

Der SQL-Befehl TRUNCATE zum Löschen aller Datensätze aus einer Tabelle löst alle operationsbezogenen Trigger aus (statement-based Trigger). Auf Datensätze (row-based) bezogene Trigger bleiben weiterhin unbeachtet. Sinn von TRUNCATE ist es gerade, das Auslösen der zeilenbezogenen Trigger zu umgehen.

TRUNCATE wertet die Option RESTART IDENTITY aus, indem es alle SEQUENCEs der Tabelle auf ihre Anfangswerte zurücksetzt. Anschließende INSERT-Befehle beginnen also wieder mit den ursprünglichen Werten der Sequenz. Außerdem gibt es das neue Recht truncate, das der DBA wie gehabt mit GRANT und REVOKE vergibt.

PostgreSQL kennt neben Funktionen mit OUT- und INOUT-Parametern solche, die TABLE(...) zurückliefern. Dieses Verhalten entspricht dem SQL:2003-Standard. Des Weiteren können Funktionen eine variable Anzahl von Parametern akzeptieren. Das spart umständliche Wrapper, die nur wieder "die eine" Funktion mit passenden Parametern aufrufen. Den Spaß beim Erstellen von Funktionen vervollständigen Default-Parameter, die beim Aufruf fehlende Werte ersetzen.