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.
- Andreas Scherbaum
- Alexander Neumann
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
Mehr Bedienkomfort in psql
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 SEQUENCE
s 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.