1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-20 00:42:27 +03:00

Update all FAQ's for 7.3.4.

This commit is contained in:
Bruce Momjian 2003-07-23 04:13:13 +00:00
parent 1ecc0fdb00
commit 79b0da6e7c
15 changed files with 738 additions and 512 deletions

View File

@ -1,5 +1,5 @@
From: Zeugswetter Andreas <ZeugswetterA@spardat.at> From: Zeugswetter Andreas <ZeugswetterA@spardat.at>
$Date: 2003/02/14 14:05:51 $ $Date: 2003/07/23 04:13:11 $
On AIX 4.3.2 PostgreSQL compiled with the native IBM compiler xlc On AIX 4.3.2 PostgreSQL compiled with the native IBM compiler xlc
(vac.C 5.0.1) passes all regression tests. Other versions of OS and (vac.C 5.0.1) passes all regression tests. Other versions of OS and

View File

@ -1,7 +1,7 @@
Developer's Frequently Asked Questions (FAQ) for PostgreSQL Developer's Frequently Asked Questions (FAQ) for PostgreSQL
Last updated: Fri Feb 14 08:59:10 EST 2003 Last updated: Mon Jun 2 00:34:39 EDT 2003
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
@ -226,21 +226,28 @@
less -x4 less -x4
emacs: emacs:
M-x set-variable tab-width M-x set-variable tab-width
or or
; Cmd to set tab stops & indenting for working with PostgreSQL code
(c-add-style "pgsql" (c-add-style "pgsql"
'("bsd" '("bsd"
(indent-tabs-mode . t) (indent-tabs-mode . t)
(c-basic-offset . 4) (c-basic-offset . 4)
(tab-width . 4) (tab-width . 4)
(c-offsets-alist . (c-offsets-alist .
((case-label . +)))) ((case-label . +)))
t) ; t = set this mode on )
nil ) ; t = set this style, nil = don't
(defun pgsql-c-mode ()
(c-mode)
(c-set-style "pgsql")
)
and add this to your autoload list (modify file path in macro): and add this to your autoload list (modify file path in macro):
(setq auto-mode-alist (setq auto-mode-alist
(cons '("\\`/usr/local/src/pgsql/.*\\.[chyl]\\'" . pgsql-c-mode) (cons '("\\`/home/andrew/pgsql/.*\\.[chyl]\\'" . pgsql-c-mode)
auto-mode-alist)) auto-mode-alist))
or or
/* /*
@ -505,7 +512,8 @@
standard must be purchased from ANSI at standard must be purchased from ANSI at
http://webstore.ansi.org/ansidocstore/default.asp. The main standards http://webstore.ansi.org/ansidocstore/default.asp. The main standards
documents are ANSI X3.135-1992 for SQL92 and ANSI/ISO/IEC 9075-2-1999 documents are ANSI X3.135-1992 for SQL92 and ANSI/ISO/IEC 9075-2-1999
for SQL99. for SQL99. The SQL 200X standards are at
ftp://sqlstandards.org/SC32/WG3/Progression_Documents/FCD
A summary of these standards is at A summary of these standards is at
http://dbs.uni-leipzig.de/en/lokal/standards.pdf and http://dbs.uni-leipzig.de/en/lokal/standards.pdf and

View File

@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL 7.3
HP-UX Specific HP-UX Specific
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
======================================================= =======================================================
last updated: $Date: 2003/02/14 14:05:51 $ last updated: $Date: 2003/07/23 04:13:11 $
current maintainer: Tom Lane (tgl@sss.pgh.pa.us) current maintainer: Tom Lane (tgl@sss.pgh.pa.us)
original author: Tom Lane (tgl@sss.pgh.pa.us) original author: Tom Lane (tgl@sss.pgh.pa.us)

View File

@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL
IRIX Specific IRIX Specific
TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ TO BE READ IN CONJUNCTION WITH THE NORMAL FAQ
======================================================= =======================================================
last updated: $Date: 2003/02/14 14:05:52 $ last updated: $Date: 2003/07/23 04:13:11 $
current maintainer: Luis Amigo (lamigo@atc.unican.es) current maintainer: Luis Amigo (lamigo@atc.unican.es)
original author: Luis Amigo (lamigo@atc.unican.es) original author: Luis Amigo (lamigo@atc.unican.es)

View File

@ -1,6 +1,6 @@
How to install PostgreSQL on Windows How to install PostgreSQL on Windows
==================================== ====================================
$Date: 2003/02/14 14:05:52 $ $Date: 2003/07/23 04:13:11 $
1. Install the latest Cygwin package, available at http://cygwin.com/. 1. Install the latest Cygwin package, available at http://cygwin.com/.
The Cygwin package provides a UNIX-like API on top of the Win32 The Cygwin package provides a UNIX-like API on top of the Win32

View File

@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL 7.3
SCO UnixWare and OpenServer specific SCO UnixWare and OpenServer specific
to be read in conjunction with the installation instructions to be read in conjunction with the installation instructions
============================================================ ============================================================
last updated: $Date: 2003/02/14 14:05:52 $ last updated: $Date: 2003/07/23 04:13:11 $
current maintainer: Billy G. Allie (Bill.Allie@mug.org) current maintainer: Billy G. Allie (Bill.Allie@mug.org)
original author: Andrew Merrill (andrew@compclass.com) original author: Andrew Merrill (andrew@compclass.com)

View File

@ -3,7 +3,7 @@ Frequently Asked Questions (FAQ) for PostgreSQL
Sun Solaris specific Sun Solaris specific
to be read in conjunction with the installation instructions to be read in conjunction with the installation instructions
============================================================ ============================================================
last updated: $Date: 2003/02/14 14:05:52 $ last updated: $Date: 2003/07/23 04:13:11 $
current maintainer: Peter Eisentraut <peter_e@gmx.net> current maintainer: Peter Eisentraut <peter_e@gmx.net>

View File

@ -5,18 +5,17 @@
Deutsche Übersetzung von Ian Barwick (barwick@gmx.net). Deutsche Übersetzung von Ian Barwick (barwick@gmx.net).
Letzte Aktualisierung der deutschen Übersetzung: So., den 15.12.2002, Letzte Aktualisierung der deutschen Übersetzung: Mo., den 02.06.2003,
18:00 CET 22:00 CET
Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL
Website: Website:
* http://www.PostgreSQL.org/docs/faq-english.html (engl.) * http://www.PostgreSQL.org/docs/faqs/FAQ.html (engl.)
* http://www.PostgreSQL.org/docs/faq-german.html (dt.) * http://www.PostgreSQL.org/docs/faqs/FAQ_german.html (dt.)
Übersetzungen dieses Dokuments in andere Sprachen sowie plattform- Übersetzungen dieses Dokuments in andere Sprachen sowie plattform-
spezifische FAQs können unter spezifische FAQs können unter
http://www.PostgreSQL.org/users-lounge/docs/faq.html eingesehen http://www.PostgreSQL.org/docs/index.html#faqs eingesehen werden.
werden.
_________________________________________________________________ _________________________________________________________________
Allgemeine Fragen Allgemeine Fragen
@ -67,11 +66,12 @@
4.1) Worin besteht der Unterschied zwischen Binary Cursors und Normal 4.1) Worin besteht der Unterschied zwischen Binary Cursors und Normal
Cursors? Cursors?
4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen in 4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen
einer Abfrage aus? bzw. eine beliebige Zeile in einer Abfrage aus?
4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die 4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die
ich in psql sehen kann? ich in psql sehen kann?
4.4) Wie entferne ich eine Spalte aus einer Tabelle? 4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich
den Datentyp einer Spalte?
4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine 4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine
Datenbank? Datenbank?
4.6) Wieviel Plattenplatz wird benötigt, um die Daten aus einer 4.6) Wieviel Plattenplatz wird benötigt, um die Daten aus einer
@ -222,10 +222,17 @@
(Unix/NT-Portierungsbibliotheken) auf Windows NT/2000 zum Laufen (Unix/NT-Portierungsbibliotheken) auf Windows NT/2000 zum Laufen
gebracht werden. Hierzu bitte lesen Sie die in der Distribution gebracht werden. Hierzu bitte lesen Sie die in der Distribution
enthaltene Datei pgsql/doc/FAQ_MSWIN oder die MS-Windows-FAQ unter enthaltene Datei pgsql/doc/FAQ_MSWIN oder die MS-Windows-FAQ unter
http://www.PostgreSQL.org/docs/faq-mswin.html. http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
Eine eigenständige Portierung auf MS Win NT/2000/XP befindet sich in Eine eigenständige Portierung auf MS Win NT/2000/XP befindet sich in
Vorbereitung. der Vorbereitung.
Weitere Informationen zum Status von PostgreSQL auf der
Microsoft-Plattform befinden sich unter
http://techdocs.postgresql.org/guides/Windows (en.).
Eine Portierung für Novell Netware 6 gibt es unter
http://forge.novell.com.
1.5) Woher bekomme ich PostgreSQL? 1.5) Woher bekomme ich PostgreSQL?
@ -264,23 +271,28 @@
subscribe subscribe
end end
Eine deutschsprachige Mailing-Liste gibt es bei Yahoo Groups:
http://de.groups.yahoo.com/group/postgres/; die Liste kann mit einer
leeren E-Mail an postgres-subscribe@yahoogroups.de abonniert werden.
Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich
auf der PostgreSQL-Homepage: auf der PostgreSQL-Homepage:
http://www.PostgreSQL.org http://www.PostgreSQL.org
Es gibt außerdem einen IRC-Channel im EFNet, Channel #PostgreSQL. Der Es gibt außerdem einen IRC-Channel bei EFNet und bei OpenProjects,
FAQ-Autor Bruce Momjian nutzt den Unix-Befehl: irc -c '#PostgreSQL' Channel #PostgreSQL. Der FAQ-Autor Bruce Momjian nutzt den
"$USER" irc.phoenix.net um daran teilzunehmen. Unix-Befehl: irc -c '#PostgreSQL' "$USER" irc.phoenix.net um daran
teilzunehmen.
Eine Liste von Unternehmen, die Support für PostgreSQL auf Eine Liste von Unternehmen, die Support für PostgreSQL auf
kommerzieller Basis leisten, kann unter kommerzieller Basis leisten, kann unter
http://www.PostgreSQL.org/users-lounge/commercial-support.html http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html
eingesehen werden. eingesehen werden.
1.7) Was ist die neueste Version von PostgreSQL? 1.7) Was ist die neueste Version von PostgreSQL?
Die neueste Version von PostgreSQL ist 7.3. Die neueste Version von PostgreSQL ist 7.3.3 .
Wir planen alle 4 Monate eine neue Version herauszugeben. Wir planen alle 4 Monate eine neue Version herauszugeben.
@ -288,16 +300,17 @@
Einige Handbücher, Man-Pages und einige kleine Testprogramme sind in Einige Handbücher, Man-Pages und einige kleine Testprogramme sind in
der Distribution enthalten. Siehe das /doc-Verzeichnis. Ausserdem sind der Distribution enthalten. Siehe das /doc-Verzeichnis. Ausserdem sind
alle Handbücher online unter alle Handbücher online unter http://www.PostgreSQL.org/docs/
http://www.PostgreSQL.org/users-lounge/docs/ verfügbar. verfügbar.
Zwei Bücher zu PostgreSQL sind online verfügbar unter Zwei Bücher zu PostgreSQL sind online verfügbar unter
http://www.PostgreSQL.org/docs/awbook.html und http://www.PostgreSQL.org/docs/awbook.html und
http://www.commandprompt.com/ppbook/ . http://www.commandprompt.com/ppbook/ .
Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter
http://www.ca.PostgreSQL.org/books/ Diverse technische Artikel http://techdocs.PostgreSQL.org/techdocs/bookreviews.php Diverse
befinden sich unter http://techdocs.PostgreSQL.org/ . technische Artikel befinden sich unter http://techdocs.PostgreSQL.org/
.
psql hat einige nützliche \d-Befehle, um Informationen über Typen, psql hat einige nützliche \d-Befehle, um Informationen über Typen,
Operatoren, Funktionen, Aggregate, usw. zu zeigen. Operatoren, Funktionen, Aggregate, usw. zu zeigen.
@ -433,6 +446,12 @@
Unterstützung des PostgreSQL-Projekts da und nicht für die Unterstützung des PostgreSQL-Projekts da und nicht für die
Finanzierung einer bestimmten Firma. Sie können auch gerne einen Finanzierung einer bestimmten Firma. Sie können auch gerne einen
finanziellen Beitrag an die Kontaktadresse verschicken. finanziellen Beitrag an die Kontaktadresse verschicken.
Eine Möglichkeit der nicht-finanziellen Untetstützung besteht übrigens
darin, für http://advocacy.postgresql.org (en.) bzw.
http://advocacy.postgresql.org/?lang=de (dt.) einen Bericht über den
erfolgreichen Einsatz von PostgreSQL in Ihrem Unternehmen oder
Organisation bereitzustellen.
_________________________________________________________________ _________________________________________________________________
Fragen zu Benutzerprogrammen Fragen zu Benutzerprogrammen
@ -518,8 +537,9 @@
voreingestellten Werten für Puffer und Prozesse benötigen Sie bei den voreingestellten Werten für Puffer und Prozesse benötigen Sie bei den
meisten Systemen ein Minimum von ca. 1 MB. Der "PostgreSQL meisten Systemen ein Minimum von ca. 1 MB. Der "PostgreSQL
Administrator's Guide" Administrator's Guide"
(http://www.PostgreSQL.org/idocs/index.php?kernel-resources.html) (http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=k
enthält weitere Informationen zu Shared Memory und Semaphores. ernel-resources.html) enthält weitere Informationen zu Shared Memory
und Semaphores.
3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich 3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich
"IpcSemaphoreCreate"-Fehlermeldungen. Warum? "IpcSemaphoreCreate"-Fehlermeldungen. Warum?
@ -664,11 +684,6 @@
wird verhindert, dass System-Ressourcen durch PostgreSQL aufgebraucht wird verhindert, dass System-Ressourcen durch PostgreSQL aufgebraucht
werden. werden.
In den PostgreSQL-Versionen vor 6.5 war die maximale Anzahl von
Backends auf 64 festgelegt und eine Änderung setzte eine erneute
Kompilierung voraus, bei der die Konstante MaxBackendId in
include/storage/sinvaladt.h entsprechend angepasst werden mußte.
3.9) Was befindet sich im Verzeichnis pgsql_tmp/? 3.9) Was befindet sich im Verzeichnis pgsql_tmp/?
Dieses Verzeichnis enthält temporäre Dateien, die durch den query Dieses Verzeichnis enthält temporäre Dateien, die durch den query
@ -710,8 +725,8 @@
Vgl. die DECLARE Man-Page für eine Beschreibung. Vgl. die DECLARE Man-Page für eine Beschreibung.
4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen in einer 4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw.
Abfrage aus? eine beliebige Zeile in einer Abfrage aus?
Vgl. die FETCH Man-Page, oder benutzen Sie SELECT ... LIMIT... . Vgl. die FETCH Man-Page, oder benutzen Sie SELECT ... LIMIT... .
@ -726,6 +741,13 @@
Bitte beachten Sie, dass mit PostgreSQL 7.3 die Syntax LIMIT n, m Bitte beachten Sie, dass mit PostgreSQL 7.3 die Syntax LIMIT n, m
durch LIMIT n OFFSET m ersetzt wurde. durch LIMIT n OFFSET m ersetzt wurde.
Um eine beliebige Zeile auszuwählen, nutzen Sie ORDER BY random():
SELECT spalte
FROM tabelle
ORDER BY random()
LIMIT 1;
4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in 4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in
psql sehen kann? psql sehen kann?
@ -735,10 +757,10 @@
Option starten. Danach gibt psql die Abfragen aus, die es bei der Option starten. Danach gibt psql die Abfragen aus, die es bei der
Ausführung der Befehle benutzt. Ausführung der Befehle benutzt.
4.4) Wie entferne ich eine Spalte aus einer Tabelle? 4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich den
Datentyp einer Spalte?
Der Syntax ALTER TABLE DROP COLUMN wird erst ab PostgreSQL 7.3 Der Syntax ALTER TABLE DROP COLUMN wird ab PostgreSQL 7.3 unterstützt.
unterstützt.
Bei früheren Versionen bietet das folgende Verfahren Ersatz: Bei früheren Versionen bietet das folgende Verfahren Ersatz:
BEGIN; BEGIN;
@ -750,11 +772,22 @@
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
COMMIT; COMMIT;
Um den Datentyp einer Spalte zu ändern, gehen Sie wie folgt vor:
BEGIN;
ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
ALTER TABLE tabelle DROP COLUMN alte_spalte;
COMMIT;
Um den Platz zu reklamieren, der von der gelöschten Spalte verwendet
wurde, führen Sie VACUUM FULL aus.
4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank? 4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?
Es bestehen folgende Obergrenzen: Es bestehen folgende Obergrenzen:
Maximale Größe eine Datenbank? unbeschränkt (es existieren Maximale Größe eine Datenbank? unbeschränkt (es existieren
Datenbanken mit >1TB) Datenbanken mit 4TB)
Maximale Größe einer Tabelle? 16 TB Maximale Größe einer Tabelle? 16 TB
Maximale Größe einer Zeile? 1,6 TB Maximale Größe einer Zeile? 1,6 TB
Maximale Größe einer Spalte? 1 GB Maximale Größe einer Spalte? 1 GB
@ -860,6 +893,10 @@
(Die Aggregatfunktionen MIN() und MAX() verwenden keine Indizes). (Die Aggregatfunktionen MIN() und MAX() verwenden keine Indizes).
Sollte es danach aussehen, also ob der Optimierer irrtümlich einen
sequentiellen Scan ausführt, führen Sie SET enable_seqscan TO 'off'
aus und prüfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können
Indizes nur unter bestimmten Umständen verwendet werden: Indizes nur unter bestimmten Umständen verwendet werden:
* Der Anfang des Suchmusters muß mit dem Anfang des Strings * Der Anfang des Suchmusters muß mit dem Anfang des Strings
@ -942,30 +979,38 @@
Typ interner Name Bemerkungen Typ interner Name Bemerkungen
------------------------------------------------- -------------------------------------------------
"char" char 1 Zeichen
CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein
Ausfüllen mit Leerzeichen Ausfüllen mit Leerzeichen
CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
TEXT text Die Länge wird nur durch die maximale Zeilenlänge TEXT text Die Länge wird nur durch die maximale Zeilenlänge
beschränkt beschränkt
BYTEA bytea Bytearray mit variabler Länge BYTEA bytea Bytearray mit variabler Länge
"char" char 1 Zeichen
Der interne Name kommt vor allem in den Systemkatalogen und in manchen Der interne Name kommt vor allem in den Systemkatalogen und in manchen
Fehlermeldungen vor. Fehlermeldungen vor.
Die letzten vier Typen sind "varlena"-Typen (d.h. die ersten vier Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
Bytes geben die Länge an, gefolgt von den Daten). Daher ist der geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich
tatsächlich belegte Platz immer etwas mehr als die deklarierte belegte Platz immer etwas mehr als die deklarierte Feldgröße.
Feldgröße. Allerdings wird unter Umständen auf diese Datentypen Allerdings wird unter Umständen auf diese Datentypen Datenkompression
Datenkompression durch das TOAST- Verfahren angewendet, womit der durch das TOAST- Verfahren angewendet, womit der tatsächlich belegte
tatsächlich belegte Platz auch geringer als erwartet ausfallen kann. Platz auch geringer als erwartet ausfallen kann.
CHAR(n) ist geeignet für die Speicherung von Zeichenketten ähnlicher Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich
Länge. VARCHAR(n) ist geeignet für Zeichenketten abweichender Längen, VARCHAR(n). Die maximale Länge eines VARCHAR(n)-Felds wird bei der
setzt jedoch eine maximale Länge. TEXT setzt keine Längengrenze, Tabellendefinition festgelegt. TEXT setzt keine Längengrenze,
allerdings gibt es eine systembedingte Obergrenze von 1 GB. BYTEA ist allerdings gibt es eine systembedingte Obergrenze von 1 GB.
für binäre Daten, besonders für Werte, die NULL-Bytes haben. Die
erwähnten Typen weisen ähnliche Performanzeigenschaften auf. CHAR(n) ist geeignet für die Speicherung von Zeichenketten, die alle
die gleiche Länge haben. Bitte beachten Sie, dass CHAR(n) automatisch
Zeichenketten bis zur definierten Feldlänge mit Leerzeichen ausfüllt,
während bei VARCHAR(n) nur die tatsächlich eingegebene Zeichenkette
gespeichert wird.
BYTEA ist für binäre Daten, besonders für Werte, die NULL-Bytes haben.
Die hier erwähnten Typen weisen ähnliche Performanzeigenschaften auf.
4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des 4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
Werts? Werts?
@ -1142,7 +1187,7 @@ BYTEA bytea Bytearray mit variabler L
Damit diese Abfrage effizient durchgeführt wird, sollte für 'spalte2' Damit diese Abfrage effizient durchgeführt wird, sollte für 'spalte2'
ein Index angelegt worden sein. Die Einschränkung von Abfragen mit IN ein Index angelegt worden sein. Die Einschränkung von Abfragen mit IN
soll in einer künftigen PotsgreSQL-Version behoben werden. wird in der nächsten PostgreSQL-Version (7.4) behoben werden.
4.23) Wie führe ich einen OUTER JOIN durch? 4.23) Wie führe ich einen OUTER JOIN durch?
@ -1185,19 +1230,23 @@ BYTEA bytea Bytearray mit variabler L
Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht
möglich. möglich.
contrib/dblink ermöglicht datenbankübergreifende Abfragen. contrib/dblink ist eine Erweiterung, die datenbankübergreifende
Abfragen ermöglicht.
Es ist natürlich möglich, dass eine Client-Anwendung gleichzeitige Es ist natürlich möglich, dass eine Client-Anwendung gleichzeitige
Verbindungen zu verschiedenen Datenbanken aufbaut und selber Verbindungen zu verschiedenen Datenbanken aufbaut und selber
Datensätze zusammenfügt. Datensätze zusammenfügt.
Ab 7.3 unterstützt PostgreSQL schemas, die die Aufteilung einer
Datenbank in mehrere logische Bereiche ermöglichen. Bei vielen
Anwendungen könnten dies einen geeigneten Ersatz für den Zugriff auf
eine andere Datenbank bieten.
4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion 4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
zurückgeben lassen? zurückgeben lassen?
"Result sets" können mittels refcursors von PL/PgSQL-Funktionen Ab 7.3 können Funktionen mehrere Zeilen und Spalten zurückgeben, vgl.:
zurückgegeben werden. Vgl.: http://techdocs.postgresql.org/guides/SetReturningFunctions.
http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html
(Abschnitt 23.7.3.3).
4.26) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht 4.26) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht
zuverlässig erstellen bzw. löschen? zuverlässig erstellen bzw. löschen?

View File

@ -1,35 +1,34 @@
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)
原文最終更新日: Sun Oct 13 23:15:09 EDT 2002 原文最終更新日: Mon May 30 22:24:56 EST 2003
現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) 現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
Maintainer of Japanese Translation: Jun Kuwamura (juk@PostgreSQL.jp) Maintainer of Japanese Translation: Jun Kuwamura (juk at PostgreSQL.jp)
この文書の最新版は http://www.PostgreSQL.org/docs/faq-english.html で見ることが この文書の最新版は http://www.PostgreSQL.org/docs/faqs/FAQ.html で見ることがで
きます。 きます。
プラットホームに特有の質問については: http://www.PostgreSQL.org/users-lounge/ プラットホームに特有の質問については: http://www.PostgreSQL.org/docs/index.html
docs/faq.html
に回答があります。 に回答があります。
(以下、訳者による注釈を [訳注: と ] とで囲んで記します。) (以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
[訳注: [訳注:
日本語版製作についてのメモは最後尾へ移動しました。 日本語版製作についてのメモは最後尾へ移動しました。
日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の 日本語版のこの文書は 本家 "Docs" の "Frequently Asked Questions" の
"Japanese" という見出しのところにあります。また、以下のサイトにも ところに "Japanese FAQ" という見出であります。また、以下のサイトにも
あります。 あります。
http://www.PostgreSQL.jp/subcommittee/jpugdoc/ http://www.PostgreSQL.jp/subcommittee/jpugdoc/
http://www.rccm.co.jp/~juk/pgsql/ http://www.rccm.co.jp/~juk/pgsql/
http://www.linux.or.jp/JF/ http://www.linux.or.jp/JF/
この和訳についてお気づきの点は(juk@PostgreSQL.jp)までメールでお寄せ下さい。 この和訳についてお気づきの点は(juk at PostgreSQL.jp)までメールでお寄せ下さい。
2002年10月16日 桑村 潤 2003年06月30日 桑村 潤
] ]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一般的な質問 一般的な質問
1.1) PostgreSQLとは何ですか何と読みますか 1.1) PostgreSQLとは何ですか何と読みますか
@ -52,8 +51,7 @@ docs/faq.html
2.1) PostgreSQL の ODBC ドライバーはありますか? 2.1) PostgreSQL の ODBC ドライバーはありますか?
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ 2.3) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか?
ェネレータや埋め込み問い合わせ言語インターフェースはありますか?
2.4) どのような言語で PostgreSQL と通信できすか? 2.4) どのような言語で PostgreSQL と通信できすか?
管理上の質問 管理上の質問
@ -77,9 +75,9 @@ docs/faq.html
操作上の質問 操作上の質問
4.1) バイナリ・カーソルと通常カーソルとの違いは何ですか? 4.1) バイナリ・カーソルと通常カーソルとの違いは何ですか?
4.2) 最初の数ロウのみを select するにはどうしますか? 4.2) 最初の数ロウのみを select するにはどうしますか?ランダムな行?
4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか?
4.4) テーブルからカラムの削除はどのよしますか? 4.4) テーブルからカラムの削除、あるいは、データ型を変更するにはどうしますか?
4.5) ロウ、テーブル、データベースの最大サイズは? 4.5) ロウ、テーブル、データベースの最大サイズは?
4.6) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 4.6) 一般的なテキストファイルからデータを保存するには、データベースのディスク容
量はどのくらい必要ですか? 量はどのくらい必要ですか?
@ -131,6 +129,7 @@ docs/faq.html
ですか? ですか?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一般的な質問 一般的な質問
1.1) PostgreSQL とは何ですか?何と読みますか? 1.1) PostgreSQL とは何ですか?何と読みますか?
@ -161,11 +160,11 @@ PostgreSQL
1.2) PostgreSQL の著作権はどうなってますか? 1.2) PostgreSQL の著作権はどうなってますか?
PostgreSQL は下記の著作権に従います。 PostgreSQL は下記の著作権に従います。
[訳注: [訳注:
正文は英語です。参考として、訳文を併記掲載します。 正文は英語です。参考として、訳文を併記掲載します。
] ]
PostgreSQL Data Base Management System PostgreSQL Data Base Management System
Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group Portions
@ -187,6 +186,7 @@ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
POSTGRESQL データベース管理システム POSTGRESQL データベース管理システム
部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム 部分的著作権 (c) 1996-2002, PostgreSQL国際開発チーム
@ -214,7 +214,6 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
参考です。 参考です。
] ]
上記はBSDライセンスで古きオープンソースのライセンスです。ソースコードがどのよう 上記はBSDライセンスで古きオープンソースのライセンスです。ソースコードがどのよう
に使われようとも制限しません。好ましいことなので、我々もそれを変えるつもりはあ に使われようとも制限しません。好ましいことなので、我々もそれを変えるつもりはあ
りません。 りません。
@ -230,7 +229,7 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
クライアント クライアント
MS Windows プラットホーム上で走せるために、libpq C ライブラリ、psql、その他のイ MS Windows プラットホーム上で走せるために、libpq C ライブラリ、psql、その他のイ
ンターフェス、および、クライアントアプリケーションをコンパイルすることは可能 ンターフェス、および、クライアントアプリケーションをコンパイルすることは可能
です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートさ です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートさ
れている Unix プラットホーム上で走るサーバと通信します。 れている Unix プラットホーム上で走るサーバと通信します。
@ -241,10 +240,13 @@ PostgreSQL
現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース
サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/ サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/
FAQ_MSWIN、あるいは、http://www.PostgreSQL.org/docs/faq-mswin.htmlにある MS FAQ_MSWIN、あるいは、 http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWINにある
Windows FAQ をご覧下さい。 MS Windows FAQ をご覧下さい。
MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。もっと詳しいWindows版
PostgreSQLの近況は、http://techdocs.postgresql.org/guides/Windowsを見てください
MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。
[訳注: [訳注:
@ -257,12 +259,14 @@ Win32
http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html http://hp.vector.co.jp/authors/VA023283/PostgreSQLe.html
] ]
1.5) PostgreSQL はどこから入手できますか? 1.5) PostgreSQL はどこから入手できますか?
PostgreSQL の大元の anonymous ftp サイトは ftp://ftp.PostgreSQL.org/pub/ です。 PostgreSQL の大元の anonymous ftp サイトは ftp://ftp.PostgreSQL.org/pub/ です。
ミラーサイトについては、我々のメイン Web ページをご覧下さい。 ミラーサイトについては、我々のメイン Web ページをご覧下さい。
[訳注: [訳注:
以下は日本のミラーサイトです: 以下は日本のミラーサイトです:
@ -285,14 +289,17 @@ PostgreSQL
主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す 主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す
ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject
行ではありません)に次の2行を書いて、 行ではありません)に次の2行を書いて、
subscribe subscribe
end end
pgsql-general-request@PostgreSQL.org へ送って下さい。 pgsql-general-request@PostgreSQL.org へ送って下さい。
ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に: ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に:
subscribe subscribe
end end
と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい
@ -304,18 +311,21 @@ pgsql-general-request@PostgreSQL.org
開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ 開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ
ールの本文に: ールの本文に:
subscribe subscribe
end end
と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。
http://www.PostgreSQL.org http://www.PostgreSQL.org
EFNet に #PostgreSQL という IRC チャンネルもあります。 UNIX コマンドでirc -c '# EFNet と OpenProjects に #PostgreSQL という IRC チャンネルもあります。 UNIX コ
PostgreSQL' "$USER" irc.phoenix.net を使います。 マンドでirc -c '#PostgreSQL' "$USER" irc.phoenix.net を使っています。
[訳注: [訳注:
1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUG
JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。 が設立されました。JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場となっています。
2003年5月17日の総会を以って、「日本PostgreSQLユーザ会」に名称を改めました。
正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。
詳しくは、JPUG のWeb サイト: 詳しくは、JPUG のWeb サイト:
http://www.PostgreSQL.jp/ http://www.PostgreSQL.jp/
@ -327,8 +337,7 @@ PostgreSQL' "$USER" irc.phoenix.net
で検索することもできます。 で検索することもできます。
] ]
商用サポート会社のリストはhttp://www.ca.PostgreSQL.org/users-lounge/
商用サポート会社のリストはhttp://www.PostgreSQL.org/users-lounge/
commercial-support.htmlにあります。 commercial-support.htmlにあります。
[訳注: [訳注:
@ -339,7 +348,7 @@ commercial-support.html
1.7) 最新版はどれですか 1.7) 最新版はどれですか
PostgreSQL の最新版はバージョン 7.2.3 です。 PostgreSQL の最新版はバージョン 7.3.2 です。
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。
@ -347,21 +356,23 @@ PostgreSQL
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)お 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)お
よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また
、マニュアルは、 http://www.PostgreSQL.org/users-lounge/docs/ でオンラインでも 、マニュアルは、http://www.ca.PostgreSQL.org/docs/でオンラインでも閲覧できます
閲覧できます。
[訳注: [訳注:
SRAと日本ポストグレスユーザー会で翻訳され、 SRAと日本PostgreSQLユーザ会で翻訳され、
「PostgreSQL オフィシャルマニュアル」 「PostgreSQL オフィシャルマニュアル」
として出版されています。 として出版されています。
] ]
オンラインで参照できる PostgreSQL の本も2冊あります。http://www.PostgreSQL.org/ オンラインで参照できる PostgreSQL の本も2冊あります。http://www.PostgreSQL.org/
docs/awbook.html docs/awbook.html
[訳注: [訳注:
日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」 日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」
にて翻訳されました。 にて翻訳されました。
] ]
および、 http://www.commandprompt.com/ppbook/ です。購入可能な書籍の目録は、 および、 http://www.commandprompt.com/ppbook/ です。購入可能な書籍の目録は、
http://www.jp.PostgreSQL.org/books/ にあります。 PostgreSQL 技術情報記事も、 http://www.jp.PostgreSQL.org/books/ にあります。 PostgreSQL 技術情報記事も、
http://techdocs.PostgreSQL.org/ にあります。 http://techdocs.PostgreSQL.org/ にあります。
@ -383,12 +394,12 @@ PostgreSQL
http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えてい http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えてい
ます。 ます。
[訳注: [訳注:
日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」 日本ポストグレスユーザー会の 「PostgreSQL Book翻訳分科会」
にて翻訳され出版されています。 にて翻訳され出版されています。
] ]
その他にも PostgreSQL本として、http://www.commandprompt.com/ppbook があります。 その他にも PostgreSQL本として、http://www.commandprompt.com/ppbook があります。
素晴らしい手引書は、http://www.intermedia.net/support/sql/sqltut.shtm, http:// 素晴らしい手引書は、http://www.intermedia.net/support/sql/sqltut.shtm, http://
ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, そして、http:// ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, そして、http://
@ -454,7 +465,6 @@ http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (
んど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから んど持っています。さらに PostgreSQLは、ユーザ定義型、継承、ルール、それから
、ロック競合を縮小するマルチバージョン同時性制御など、商用DBMSも持ち合わせ 、ロック競合を縮小するマルチバージョン同時性制御など、商用DBMSも持ち合わせ
ないような機能をいくつか持ち合わせています。 ないような機能をいくつか持ち合わせています。
性能(Performance) 性能(Performance)
PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ち PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ち
ます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなど ます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなど
@ -463,13 +473,12 @@ http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (
記のFeaturesの節に示すような機能はまったくありません。我々は、PostgreSQLに 記のFeaturesの節に示すような機能はまったくありません。我々は、PostgreSQLに
柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコ 柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコ
ードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比 ードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比
較している面白い Web ページがhttp://openacs.org/why-not-mysql.htmlにありま 較している面白い Web ページがhttp://openacs.org/philosophy/
す。 why-not-mysql.htmlにあります。
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複 PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複
数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し 数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有し
ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること ます。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせること
ができます。 ができます。
信頼性(Reliability) 信頼性(Reliability)
我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ 我々は、DBMSの信頼性が高くなくてはその価値が無いことを理解してます。十分テ
ストして、安定したコードをバグを最小にしてからリリースするように勤めてます ストして、安定したコードをバグを最小にしてからリリースするように勤めてます
@ -477,7 +486,6 @@ http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (
のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って のリリースの履歴が、製品版として安定した堅固なリリースであることを物語って
います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ います。この分野では、他のデータベースと比べても遜色がないことに自信を持っ
ています。 ています。
サポート(Support) サポート(Support)
我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし 我々のメーリングリストは、遭遇するいかなる問題についても解決への手助けをし
てくれる、開発者やユーザの大きな集まりへの接点を提供しています。我々は問題 てくれる、開発者やユーザの大きな集まりへの接点を提供しています。我々は問題
@ -486,13 +494,11 @@ http://www.PostgreSQL.org/bugs/bugs.phpPostgreSQL BugTool (
、ソースコードなどへ直接アクセスできることよって、PostgreSQLのサポートは、 、ソースコードなどへ直接アクセスできることよって、PostgreSQLのサポートは、
他のDBMSサポートよりも優れたものとなっています。御要望に答えて、事柄毎の商 他のDBMSサポートよりも優れたものとなっています。御要望に答えて、事柄毎の商
用サポートなどもありますFAQ1.6節をご覧下さい)。 用サポートなどもありますFAQ1.6節をご覧下さい)。
価格(Price) 価格(Price)
PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD PostgreSQLの利用は、商用でも非商用でも、すべて無料です。上記に示してあるBSD
スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み スタイルの使用許諾に外れない限り、PostgreSQLのコードを制限無しで商品に組み
込むことができます。 込むことができます。
1.15) PostgreSQLを資金面で援助するにはどうすればよいですか 1.15) PostgreSQLを資金面で援助するにはどうすればよいですか
PostgreSQLは、我々が始めた 1996年以来、最高クラスの情報基盤を持っています。これ PostgreSQLは、我々が始めた 1996年以来、最高クラスの情報基盤を持っています。これ
@ -511,25 +517,26 @@ PostgreSQL
イテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会 イテムは PostgreSQL プロジェクトをサポートするためだけのためで、決して特定の会
社のための資金のためではありません。もし、手形(check)の方が都合がよければ連絡先 社のための資金のためではありません。もし、手形(check)の方が都合がよければ連絡先
の住所へお送り下さい。 の住所へお送り下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
さらに、もし、PostgreSQLでの成功例をお持ちであれば、ぜひ、われわれの事例サイト
http://advocacy.postgresql.orgへお送りください。
ユーザー・クライアントの質問 ユーザー・クライアントの質問
2.1) PostgreSQL のための ODBC ドライバーはありますか? 2.1) PostgreSQL のための ODBC ドライバーはありますか?
PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。 PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。
PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は PsqlODBC は次の場所からダウンロードできます。 http://gborg.postgresql.org/
ftp://ftp.PostgreSQL.org/pub/odbc/ から取得できます。 project/psqlodbc/projdisplay.php
[訳注: [訳注:
PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました: 最新版は井上博司さんのサイトにあります。
●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
現在、最新版は井上博司さんのサイトにあります。
●http://w2422.nsk.ne.jp/~inoue/indexj.html ●http://w2422.nsk.ne.jp/~inoue/indexj.html
] ]
OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クラ OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クラ
イアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, イアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win,
Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。 Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。
@ -537,6 +544,7 @@ Mac, Unix, VMS)
たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ
ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.uk へ送って ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.uk へ送って
下さい。 下さい。
Programmer's Guide の ODBC の章もご覧ください。 Programmer's Guide の ODBC の章もご覧ください。
2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか? 2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
@ -544,28 +552,20 @@ Programmer's Guide
データベースを裏に持つ Web ページについての素晴らしい紹介が、 データベースを裏に持つ Web ページについての素晴らしい紹介が、
http://www.webreview.comにあります。 http://www.webreview.comにあります。
Web への拡張のためには、PHP が卓越したインターフェスとなっています。http:// Web への拡張のためには、PHP が卓越したインターフェスとなっています。http://
www.php.net/にあります。 www.php.net/にあります。
[訳注: [訳注:
PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
http://www.php.gr.jp/ http://www.php.gr.jp/
あるいは、廣川 類さんのサイト あるいは、廣川 類さんのサイト
http://www.geocities.jp/rui_hirokawa/php/ http://www.geocities.jp/rui_hirokawa/php/
にかなりまとめられています。 にかなりまとめられています。
前田 充宏さんにより作られたPHP/FIの日本語パッチが様々な人の手を経てPHP3.0.7に適用されました。
現在はPHPJ-DEVにて、
http://php.jpnnet.com/
佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。
塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール
ftp://night.fminn.nagano.nagano.jp/php4/
を用意して下さってます。
本家の方で国際化のMLも立ち上がっています。
PHP-4.2 からマルチバイト拡張文字列として採り入れられました。
] ]
処理が複雑な場合、多くの人は Perl インターフェイスと CGI.pm か mod_perl を使い
処理が複雑な場合、多くの人は Perl インターフェースと CGI.pm か mod_perl を使い
ます。 ます。
[訳注: [訳注:
WDB は、Web から DataBase への Perl の Interface です。 WDB は、Web から DataBase への Perl の Interface です。
wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。 wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
@ -576,50 +576,46 @@ www.php.net/
とがあります。その経緯はよくわかりません。 とがあります。その経緯はよくわかりません。
] ]
2.3) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか?
2.3) PostgreSQL にグラフィカル・ユーザインターフェースはありますか?レポートジ もちろん、PostgreSQL へのグラフィカルインターフェイスがいくつかあります。その中
ェネレータや埋め込み問い合わせ言語インターフェースはありますか? にPgAccess http://www.pgaccess.com も含まれます。 PgAdmin II (http://
www.pgadmin.org Win32-only)もあります。 RHDB Admin (http://sources.redhat.com/
rhdb/ )と Rekall ( http://www.thekompany.com/products/rekall/, proprietary)もあ
ります。 PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ) はPostgreSQLへのWeb
ベースのインターフェイスを提供します。
PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェスがあり、この
配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ペー 配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ペー
ジはhttp://www.pgaccess.org/です。 ジはhttp://www.pgaccess.org/です。
ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります より詳細なリストについては、http://techdocs.postgresql.org/guides/GUITools をご
覧ください
2.4) どのような言語で PostgreSQL と通信できすか? 2.4) どのような言語で PostgreSQL と通信できすか?
以下のものがあります: 人気のあるほとんどの言語はPostgreSQLへのインターフェイスを持っています。あなた
が使うプログラミング言語の拡張モジュールのリストを覗いてみてください。
以下のインターフェイスはPostgreSQLの配布に含まれています。
・ C (libpq, libpgeasy) ・ C (libpq, libpgeasy)
・ C++ (libpq++)
・ 埋め込みC (ecpg) ・ 埋め込みC (ecpg)
・ Java (jdbc) ・ Java (jdbc)
・ Perl (DBD::Pg and perl5)
・ ODBC (odbc)
・ Python (PyGreSQL) ・ Python (PyGreSQL)
・ TCL (libpgtcl) ・ TCL (libpgtcl)
・ C Easy API (libpgeasy)
・ PHP ('pg_' 関数群、 Pear::DB)
その他の利用可能なインターフェースは http://www.PostgreSQL.org/interfaces.html その他の利用可能なインターフェイスは http://www.PostgreSQL.org/interfaces.html
にあります。 および、 http://gborg.postgresql.org のDrivers/Interfacesのセクションにあります
[訳注: [訳注:
rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
http://www.postgresql.jp/interfaces/ruby/
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
http://www.psn.co.jp/PostgreSQL/pgbash/
Bashコマンドラインでpostgres に問い合わせできます。
Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、
いずれも Edmund Mergl 氏によるもので CPAN サイトにあります。
永安悟史さんは Palm 版の libpq を開発されました。 永安悟史さんは Palm 版の libpq を開発されました。
http://www.snaga.org/libpq/ http://www.snaga.org/libpq/
] ]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
管理上の質問 管理上の質問
3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? 3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか?
@ -641,8 +637,8 @@ ecpg
して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは
、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ 、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ
ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ
のままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's Gide に共有メ のままで、少なくとも約1MBが必要です。 PostgreSQL Administrator's Gideに共有メ
リーとセマフォについての情報の詳細があります。 リーとセマフォについての情報の詳細がありますのでご覧ください
3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜで 3.4) postmasterを走らせようとすると、IpcSemaphoreCreate エラーが出ます。なぜで
すか? すか?
@ -716,6 +712,7 @@ PostgreSQL
postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま
ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ
・ファイルに送るようにしてあることを確かめて下さい。 ・ファイルに送るようにしてあることを確かめて下さい。
cd /usr/local/pgsql cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 & ./bin/postmaster >server.log 2>&1 &
@ -772,31 +769,27 @@ config.h
ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける
ためです。 ためです。
6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更する
には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必
要でした。
3.9) pgsql_tmp ディレクトリの中には何がありますか? 3.9) pgsql_tmp ディレクトリの中には何がありますか?
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし 問い合わせ実行モジュールによって生成された一時的なファイルが、このディレクトリ
ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス に含まれます。例えば、もし ORDER BY 句を満たすためにバックエンドの -S パラメー
ペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイ タで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを
ルがいくつか生成されます。 保持するために一時的なファイルがいくつかここに生成されます。
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ
ンドがクラッシュしてしまうとそうはなりません。postmasterの停止とリスタートでこ ンドがクラッシュしてしまうとそうはなりません。postmasterの停止とリスタートでこ
れらのファイルはディレクトリから消しさられます。 れらのファイルはディレクトリから消しさられます。
[訳注: [訳注:
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
付きで走らせた後、コンパイルとインストールを行ないます。 付きで走らせた後、コンパイルとインストールを行ないます。
次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、 次に、syslog.conf に local?.* の 出力先を指定し(環境変数で変更可能)、
syslogd に HUP シグナルを送って初期化しておきます。そして、 syslogd に HUP シグナルを送って初期化しておきます。そして、
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
pg_options は PostgreSQL.conf になっています。) pg_options は PostgreSQL.conf になっています。)
] ]
3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな 3.10) PostgreSQLのメジャーリリースをアップデートするのにダンプとリストアをしな
くてはならないのはなぜですか? くてはならないのはなぜですか?
@ -813,13 +806,14 @@ PostgreSQL
ートには、pg_upgrade が利用可能なリリースかどうか記されています。 ートには、pg_upgrade が利用可能なリリースかどうか記されています。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作上の質問 操作上の質問
4.1) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか? 4.1) バイナリ・カーソルと通常カーソルとの厳密な違いは何ですか?
詳述は、オンラインマニュアルで DECLARE を見て下さい。 詳述は、オンラインマニュアルで DECLARE を見て下さい。
4.2) 最初の数ロウのみを SELECT するにはどうしますか? 4.2) 最初の数ロウのみを SELECTするにはどうしますかランダムな行?
オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ
てみて下さい。 てみて下さい。
@ -830,6 +824,13 @@ PostgreSQL
ウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成さ ウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成さ
れるまですべてのロウを評価しなければならないかもしれません。 れるまですべてのロウを評価しなければならないかもしれません。
ランダムな行をSELECTするには、次の文を使います
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか?
psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c ファイルを読むこ psqlのソースコードとして書かれた pgsql/src/bin/psql/describe.c ファイルを読むこ
@ -837,10 +838,11 @@ psql
コマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマ コマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマ
ンドを実行するための問い合わせが出力されます。 ンドを実行するための問い合わせが出力されます。
4.4) テーブルからカラムの削除はどのようにしますか? 4.4) テーブルからカラムの削除、あるいは、データ型を変更するにはどうしますか?
DROP COLUMN機能が、ALTER TABLE DROP COLUMN としてリリース7.3 に加えられました。
それまでのバージョンでは、その代わりにこうします:
この機能は、ALTER TABLE DROP COLUMN としてリリース7.3 から加えられました。それ
までのバージョンでは、その代わりにこうします:
BEGIN; BEGIN;
LOCK TABLE old_table; LOCK TABLE old_table;
SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。 SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。
@ -849,12 +851,23 @@ psql
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
COMMIT; COMMIT;
[訳注:カラムの追加は ALTER TABLE ADD COLUMN で行えます。]
カラムのデータタイプは次の文で変えられます:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
これを行なったときは、抹消された行が使っているディスク空間を回収するために
VACUUM FULL tabをしたほうが良いかもしれません。
4.5) ロウ、テーブル、データベースの最大サイズは? 4.5) ロウ、テーブル、データベースの最大サイズは?
制限は以下のとおりです。 制限は以下のとおりです。
データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します)
データベースの最大サイズ? 制限無し (4 TB のデータベースも存在します)
テーブルの最大サイズ? 16TB テーブルの最大サイズ? 16TB
ロウの最大サイズ? 1.6TB ロウの最大サイズ? 1.6TB
フィールドの最大サイズ? 1GB フィールドの最大サイズ? 1GB
@ -883,6 +896,7 @@ psql
う。テキストの文字列の平均長さを20バイトと仮定すると、フラットファイルの大きさ う。テキストの文字列の平均長さを20バイトと仮定すると、フラットファイルの大きさ
は約2.8MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の は約2.8MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の
ように約6.4MBと見積もることができます: ように約6.4MBと見積もることができます:
36 bytes: 各ロウのヘッダ(概算) 36 bytes: 各ロウのヘッダ(概算)
24 bytes: 整数(int)フィールドとテキスト(text)フィールド 24 bytes: 整数(int)フィールドとテキスト(text)フィールド
+ 4 bytes: ページ上のタップルへのポインタ + 4 bytes: ページ上のタップルへのポインタ
@ -936,23 +950,26 @@ psql
インデックスは、通常 ORDER BY や結合を行なうためには使われません。順次スキャン インデックスは、通常 ORDER BY や結合を行なうためには使われません。順次スキャン
に続く明示的ソートは、巨大なテーブルのインデックススキャンよりも普通は高速です に続く明示的ソートは、巨大なテーブルのインデックススキャンよりも普通は高速です
しかし、ORDER BYと組み合わされたLIMIT は、テーブルの小さな部分を返すためにたび しかし、ORDER BYと組み合わされたLIMIT は、テーブルの小さな部分を返すためにたび
たびインデックスを使うでしょう。実際、MAX() や MIN() がインデックスを使わないと たびインデックスを使うでしょう。実際、MAX() や MIN() がインデックスを使わないと
しても、このような値を ORDER BY と LIMIT を使ってインデックスを使って取り出すこ しても、このような値を ORDER BY と LIMIT を使ってインデックスを使って取り出すこ
とが可能です: とが可能です:
SELECT col SELECT col
FROM tab FROM tab
ORDER BY col [ DESC ] ORDER BY col [ DESC ]
LIMIT 1; LIMIT 1;
もし、オプティマイザが間違ってシーケンシャルスキャンを選択したことに疑いがなけ
れば、SET enable_seqscan TO 'off'を使ってインデクススキャンでまちがいなく速くな
っているかをテストをしてみてください。
LIKE あるいは ~ のようなワイルドカード演算子は特別な環境でしか使えません: LIKE あるいは ~ のようなワイルドカード演算子は特別な環境でしか使えません:
・ 検索文字列が文字列の最初にききます。たとえば: ・ 検索文字列が文字列の最初にききます。たとえば:
□ LIKE パターンが%で始まらない
□ LIKE パターンが%.で始まらない □ ~ (正規表現) パターンは^で始まらなければならない
□ ~ (正規表現) パターンは^.で始まらなければならない
・ 検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。 ・ 検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。
・ ILIKE や ~* のような大文字と小文字を区別しない検索は使えません。そのかわり ・ ILIKE や ~* のような大文字と小文字を区別しない検索は使えません。そのかわり
、このFAQの4.12節で説明する関数のインデックスが使えます。 、このFAQの4.12節で説明する関数のインデックスが使えます。
@ -989,7 +1006,6 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
をご覧下さい。 をご覧下さい。
] ]
組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高 組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高
い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした
作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま 作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま
@ -1001,7 +1017,6 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
をご覧ください。 をご覧ください。
] ]
4.11) 遺伝的問い合わせ最適化とは何ですか? 4.11) 遺伝的問い合わせ最適化とは何ですか?
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合 GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合
@ -1017,13 +1032,17 @@ GEQO
子を ILIKE といいます。 子を ILIKE といいます。
大文字と小文字を区別しない等値比較次のように表現できる: 大文字と小文字を区別しない等値比較次のように表現できる:
SELECT * SELECT *
FROM tab FROM tab
WHERE lower(col) = 'abc'; WHERE lower(col) = 'abc';
標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ 標準インデックスでは使われず、しかしながら、もし関数インデックスを作ったならそ
れが使われるでしょう。 れが使われるでしょう。
CREATE INDEX tabindex ON tab (lower(col)); CREATE INDEX tabindex ON tab (lower(col));
WHERE lower(textfield) LIKE lower(pattern) WHERE lower(textfield) LIKE lower(pattern)
4.13) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか 4.13) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか
@ -1035,8 +1054,8 @@ GEQO
Type Internal Name Notes Type Internal Name Notes
-------------------------------------------------- --------------------------------------------------
"char" char 1 character
CHAR(n) bpchar 指定された固定長となるように空白が詰められる CHAR(n) bpchar 指定された固定長となるように空白が詰められる
"char" char 1文字
VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し
TEXT text 長さに上限の無いテキスト TEXT text 長さに上限の無いテキスト
BYTEA bytea 可変長のバイト配列(null-byte safe) BYTEA bytea 可変長のバイト配列(null-byte safe)
@ -1044,32 +1063,43 @@ BYTEA bytea
内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを
受け取るときです。 受け取るときです。
上記の型のうちの4つの型は "varlena" 型です(すなわち、ディスクの最初の4バ 上記の型のうち最初の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バ
トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言 トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言
れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮 れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮
れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくな れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくな
ます。 ます。
CHAR(n)はいつも長さが同じ文字列を保存するのに最適です。VARCHAR(n) は可変長の文 VARCHAR(n) は可変長の文字列を保存するのに最適ですが、保存できる文字列の長さに制
字列を保存するのに最適ですが、保存できる文字列の長さに制限があります。TEXT は長 限があります。TEXT は長さに制限の無い文字列の保存ためのもので、最大で 1ギガバイ
さに制限の無い文字列の保存ためのもので、最大1ギガバイトです。 BYTEAは、部分的に トです。 CHAR(n)は、VARCHAR(n)が与えられた文字だけを保存するのに対し、ブランク
NULL のバイトを含むバイナリデータを保存するためのものです。 を詰め込んでいつも同じ長さで文字列を保存するのに最適です。BYTEAは、部分的にNULL
のバイトを含むバイナリデータを保存するためのものです。これらのタイプは同じくら
いの性能特性ををもちます。
4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? 4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか?
PostgreSQL は SERIAL データ型をサポートします。カラム上に通番とインデックスを自 PostgreSQL は SERIAL データ型をサポートします。カラム上に通番とインデックスを自
動作成します。たとえば、 動作成します。たとえば、
CREATE TABLE person ( CREATE TABLE person (
id SERIAL, id SERIAL,
name TEXT name TEXT
); );
は自動的に次のように翻訳されます: は自動的に次のように翻訳されます:
CREATE SEQUENCE person_id_seq; CREATE SEQUENCE person_id_seq;
CREATE TABLE person ( CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'), id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT name TEXT
); );
CREATE UNIQUE INDEX person_id_key ON person ( id ); CREATE UNIQUE INDEX person_id_key ON person ( id );
[訳注:
CREATE UNIQUE INDEX person_id_key ON person ( id );
は、 7.3 からは自動的には行なわれなくなりました。
]
通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧 通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧
下さい。 下さい。
@ -1084,8 +1114,10 @@ Numbering Rows
ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ ひとつの方法は、nextval() 関数を使ってその値を挿入する前(before)に SEQUENCE オ
ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。 ブジェクトから次の SERIAL 値を取り出し、それから実際に挿入をすることです。
4.15.1 のテーブルの例を使うとすると、疑似言語ではこのようになります。 4.15.1 のテーブルの例を使うとすると、疑似言語ではこのようになります。
new_id = execute("SELECT nextval('person_id_seq')"); new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル
に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた
SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち SEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち
@ -1093,8 +1125,10 @@ SEQUENCE
あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、 あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、
currval() 関数を使って取り出すこともできます。たとえば、 currval() 関数を使って取り出すこともできます。たとえば、
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')"); new_id = execute("SELECT currval('person_id_seq')");
最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、 最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、
これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の作った DBD::Pg
モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその
@ -1128,6 +1162,7 @@ PostgreSQL
は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当てられま は、全てのデータベースで使われる中央領域から、全ての新しいロウに割り当てられま
す。OID を他の何かに変えたい、あるいは元の OID もテーブルと一緒にコピーしたいの す。OID を他の何かに変えたい、あるいは元の OID もテーブルと一緒にコピーしたいの
なら、できなくはありません。 なら、できなくはありません。
CREATE TABLE new (old_oid oid, mycol int); CREATE TABLE new (old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old; SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable'; COPY new TO '/tmp/pgtable';
@ -1148,7 +1183,6 @@ TID
いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に
使われる専門用語が使われています。 使われる専門用語が使われています。
・ テーブル(table)、関係(relation)、クラス(class) ・ テーブル(table)、関係(relation)、クラス(class)
・ ロウ(row)、レコード(record)、タップル(tuple) ・ ロウ(row)、レコード(record)、タップル(tuple)
・ カラム(column)、フィールド(field)、属性(attribute) ・ カラム(column)、フィールド(field)、属性(attribute)
@ -1168,6 +1202,7 @@ software/docs/pkgs/pgsql/glossary/glossary.html
おそらく、システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、 おそらく、システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、
カーネルがあるリソースについてもつ制限値が低すぎる可能性があります。 postmaster カーネルがあるリソースについてもつ制限値が低すぎる可能性があります。 postmaster
を始動する前にこれを試してみて下さい: を始動する前にこれを試してみて下さい:
ulimit -d 262144 ulimit -d 262144
limit datasize 256m limit datasize 256m
@ -1195,12 +1230,13 @@ descriptor(
ザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエ ザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエ
ラーメッセージを出すのです。 ラーメッセージを出すのです。
もし、ODBCのようなクライアントインターフェスをお使いなら、auto-commit offを設 もし、ODBCのようなクライアントインターフェスをお使いなら、auto-commit offを設
定する必要があるかもしれません。 定する必要があるかもしれません。
4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? 4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか?
CURRENT_TIMESTAMPを使います: CURRENT_TIMESTAMPを使います:
CREATE TABLE test (x int, modtime timestamp DEFAULT >CURRENT_TIMESTAMP ); CREATE TABLE test (x int, modtime timestamp DEFAULT >CURRENT_TIMESTAMP );
4.22) なぜ、INを使う副問い合わせがとても遅いのですか 4.22) なぜ、INを使う副問い合わせがとても遅いのですか
@ -1209,25 +1245,33 @@ CURRENT_TIMESTAMP
により、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行 により、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行
しか返さず、外部問い合わせが沢山の行を返すなら、当面はINをEXISTSで置き換えるこ しか返さず、外部問い合わせが沢山の行を返すなら、当面はINをEXISTSで置き換えるこ
とです: とです:
SELECT * SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT subcol FROM subtab) WHERE col1 IN (SELECT subcol FROM subtab)
を、置き換えて: を、置き換えて:
SELECT * SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
とします。これが手っ取り早いですが、subcolは索引付きカラムであるべきです。この
制限は将来のリリースで直したいと思っています。 とします。これが手っ取り早いですが、subcolは索引付きカラムであるべきです。ここ
で示した問題は7.4で修正されます。
4.23) 外部結合(outer join)はどのように実現しますか? 4.23) 外部結合(outer join)はどのように実現しますか?
PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。こ PostgreSQL は SQL 標準構文を使う外部結合(アウタージョイン)をサポートします。こ
こに 2つの例題があります。 こに 2つの例題があります。
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
あるいは あるいは
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);
これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ
たロウ(t2 と一致しなかったロウ)も返しています。RIGHT 結合は t2 の結合されなかっ たロウ(t2 と一致しなかったロウ)も返しています。RIGHT 結合は t2 の結合されなかっ
たロウを加えるでしょう。FULL 結合は、一致したロウに t1 と t2 からは結合されなか たロウを加えるでしょう。FULL 結合は、一致したロウに t1 と t2 からは結合されなか
@ -1235,6 +1279,7 @@ PostgreSQL
などの結合を仮定されています。以前のリリースでは外部結合(outer join)をUNION と などの結合を仮定されています。以前のリリースでは外部結合(outer join)をUNION と
NOT IN を使ってシミュレートできます。たとえば、tab1 と tab2 を結合するときは、 NOT IN を使ってシミュレートできます。たとえば、tab1 と tab2 を結合するときは、
次の問い合わせで二つのテーブルを外部結合します。 次の問い合わせで二つのテーブルを外部結合します。
SELECT tab1.col1, tab2.col2 SELECT tab1.col1, tab2.col2
FROM tab1, tab2 FROM tab1, tab2
WHERE tab1.col1 = tab2.col1 WHERE tab1.col1 = tab2.col1
@ -1250,15 +1295,14 @@ NOT IN
ータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをす ータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをす
るだけにしろ、データベースを越えて問い合わせをするすべがありません。 るだけにしろ、データベースを越えて問い合わせをするすべがありません。
/contrib/dblink はデータベース間(cross-database)の問い合わせを関数呼出しにより contrib/dblink はデータベース間(cross-database)の問い合わせを関数呼出しにより
します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくては します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくては
らず、結果をクライアント側でマージしなくてはなりません。 らず、結果をクライアント側でマージしなくてはなりません。
4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? 4.25) 関数で複数のロウまたはカラムを返すにはどうしますか?
もし、PL/pgSQL 関数でrefcursorsを使うと結果の組を返すことができます。 http:// 7.3では関数から、複数行のや複数カラムを簡単に返せます。 http://
www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html の 23.7.3.3 節をご覧下 techdocs.postgresql.org/guides/SetReturningFunctions。
さい。
4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができ 4.26)なぜ、PL/PgSQL 関数の中から一時テーブルを確実に create/drop することができ
ないのでしょうか? ないのでしょうか?
@ -1278,19 +1322,15 @@ PL/PgSQL
それらを一覧にしてあります。マルチ-マスターのリプリケーションによるソリューショ それらを一覧にしてあります。マルチ-マスターのリプリケーションによるソリューショ
ンは http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php にて作業 ンは http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php にて作業
が進められています。 が進められています。
[訳注
JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相
コミットの実装を行なっています。
http://www.postgresql.jp/subcommittee/dt/index.html
http://www.snaga.org/jpug-dt/
三谷篤さんによる双方向リプリケーションPGReplicate [訳注 JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相コミット
http://www.csra.co.jp/~mitani/jpug/pgreplicate/ の実装を行なっています。 http://www.postgresql.jp/subcommittee/dt/index.html
] http://www.snaga.org/jpug-dt/ 三谷篤さんによる双方向リプリケーションPGReplicate
http://www.csra.co.jp/~mitani/jpug/pgreplicate/ ]
4.28) どのような暗号化オプションを利用できますか? 4.28) どのような暗号化オプションを利用できますか?
/contrib/pgcrypto SQL問い合わせの中で使うための沢山の暗号化を含みます。 ・ contrib/pgcrypto SQL問い合わせの中で使うための沢山の暗号化を含みます。
・ クライアントからサーバーへの転送をを暗号化する唯一の方法はpg_hba.confの中で ・ クライアントからサーバーへの転送をを暗号化する唯一の方法はpg_hba.confの中で
hostsslを使うことによります。 hostsslを使うことによります。
・ バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗 ・ バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗
@ -1299,6 +1339,7 @@ PL/PgSQL
・ サーバーは暗号化ファイルシステムを使って走ることもできます。 ・ サーバーは暗号化ファイルシステムを使って走ることもできます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PostgreSQLの拡張についての質問 PostgreSQLの拡張についての質問
5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの 5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの
@ -1316,8 +1357,9 @@ PL/PgSQL
5.3) タプルを返す C言語の関数はどのように書きますか 5.3) タプルを返す C言語の関数はどのように書きますか
原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰 バージョン7.3以降のPostgreSQLでは、テーブルを返す関数を C, PL/PgSQL、そして SQL
もやったことがありません。 にて完全にサポートします。詳しくはプログラマガイドの情報を見てください。Cで定義
された表を返す関数の例題がcontrib/tablefuncの中にあります。
5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ 5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ
ですか? ですか?
@ -1327,11 +1369,12 @@ PL/PgSQL
をお使いであれば configure の --enable-depend オプションを使って、コンパイラに をお使いであれば configure の --enable-depend オプションを使って、コンパイラに
依存関係を自動的に調べさせることもできます。 依存関係を自動的に調べさせることもできます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[訳注: [訳注:
日本語版の製作については以下の通りです。 日本語版の製作については以下の通りです。
最終更新日: 2002年10月18 最終更新日: 2003年06月30
翻訳者: 桑村 潤 (Jun Kuwamura <juk@PostgreSQL.jp>) 翻訳者: 桑村 潤 (Jun Kuwamura <juk at PostgreSQL.jp>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
@ -1348,19 +1391,18 @@ PL/PgSQL
本田 茂広(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>) 本田 茂広(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>)
せせ じゅん(Jun SESE <sesejun at linet.gr.jp>) せせ じゅん(Jun SESE <sesejun at linet.gr.jp>)
神谷 英孝(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>) 神谷 英孝(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>)
菅原 敦( 菅原 敦(Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>)
Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>) 稲葉 香理(Kaori Inaba <i-kaori at sra.co.jp>)
をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、 をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、
和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、 和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの 直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの皆さんに感謝します。
皆さんに感謝します。
日本語版のこの文書は、以下からもたどれます。 日本語版のこの文書は、以下からもたどれます。
http://www.rccm.co.jp/~juk/pgsql/(FAQ和訳 PostgreSQL についてよくある質問) http://www.rccm.co.jp/~juk/pgsql/(FAQ和訳 PostgreSQL についてよくある質問)
http://www.PostgreSQL.jp/subcommittee/jpugdoc/JPUG文書・書籍関連分科会 http://www.PostgreSQL.jp/subcommittee/jpugdoc/JPUG文書・書籍関連分科会
http://www.linux.or.jp/JF/Linux JFプロジェクト http://www.linux.or.jp/JF/Linux JFプロジェクト
http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
なお、この和訳に関するご意見は(juk@PostgreSQL.jp)までお寄せ下さい。 なお、この和訳に関するご意見は(juk at PostgreSQL.jp)までお寄せ下さい。
] ]

View File

@ -1,7 +1,7 @@
Otvety na chasto zadavaemye voprosy po PostgreSQL Otvety na chasto zadavaemye voprosy po PostgreSQL
Data poslednego obnovleniya: CHetverg 13 Fevralya 23:07:35 EDT 2002 Data poslednego obnovleniya: Pyatnica 30 Maya 22:24:56 EDT 2003
Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian) Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us) (pgman@candle.pha.pa.us)
@ -9,10 +9,10 @@
Perevel na russkij: Viktor Vislobokov (victor_v@permonline.ru) Perevel na russkij: Viktor Vislobokov (victor_v@permonline.ru)
Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
http://www.PostgreSQL.org/docs/faq-english.html. http://www.PostgreSQL.org/docs/faqs/FAQ.html.
Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
na http://www.PostgreSQL.org/users-lounge/docs/faq.html. na http://www.PostgreSQL.org/docs/index.html.
_________________________________________________________________ _________________________________________________________________
Obschie voprosy Obschie voprosy
@ -30,7 +30,7 @@
1.10) Kak nauchit'sya SQL? 1.10) Kak nauchit'sya SQL?
1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)? 1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
1.12) Kak prisoedinitsya k komande razrabotchikov? 1.12) Kak prisoedinitsya k komande razrabotchikov?
1.13) Kak otravit' soobschenie ob oshibke? 1.13) Kak otpravit' soobschenie ob oshibke?
1.14) Kak sravnivat' PostgreSQL s drugimi SUBD? 1.14) Kak sravnivat' PostgreSQL s drugimi SUBD?
1.15) Kak okazat' finansovuyu pomosch' PostgreSQL? 1.15) Kak okazat' finansovuyu pomosch' PostgreSQL?
@ -66,9 +66,9 @@
4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom? 4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek 4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
zaprosa? zaprosa? Dlya proizvol'noj stroki?
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql? 4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
4.4) Kak udalit' kolonku iz tablicy? 4.4) Kak udalit' kolonku iz tablicy ili izmenit' eio tip dannyh?
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh? 4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya 4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
sohraneniya dannyh iz obychnogo tekstovogo fajla? sohraneniya dannyh iz obychnogo tekstovogo fajla?
@ -213,12 +213,18 @@
Server Server
Server BD mozhet byt' zapuschen na Windows NT i Win2k, ispol'zuya Server BD mozhet byt' zapuschen na Windows NT i Win2k, ispol'zuya
biblioteku Cygwin, razrabotannuyu dlya perenosa programmnogo biblioteku Cygwin, razrabotannuyu kompaniej Cygnus dlya perenosa
obespecheniya Unix v NT. Smotrite pgsql/doc/FAQ_MSWIN v distributive programmnogo obespecheniya Unix v NT. Smotrite pgsql/doc/FAQ_MSWIN v
ili MS Windows FAQ na http://www.PostgreSQL.org/docs/faq-mswin.html. distributive ili MS Windows FAQ na
http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
PostgreSQL, sportirovannyj special'no dlya MS Win NT/2000/XP v PostgreSQL, sportirovannyj special'no dlya MS Win NT/2000/XP v
nastoyaschij moment nachal rabotat'. nastoyaschij moment nachal rabotat'. Podrobnosti tekuschego
sostoyaniya PostgreSQL dlya Windows smotrite na
http://techdocs.postgresql.org/guides/Windows.
Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
http://forge.novell.com.
1.5) Gde mozhno vzyat' PostgreSQL? 1.5) Gde mozhno vzyat' PostgreSQL?
@ -266,16 +272,16 @@
http://www.PostgreSQL.org http://www.PostgreSQL.org
Esche suschestvuet IRC kanal na EFNet, s nazvaniem #PostgreSQL. YA Esche suschestvuet IRC kanal na EFNet i OpenProjects, s nazvaniem
ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu Unix irc -c #PostgreSQL. YA ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu
'#PostgreSQL' "$USER" irc.phoenix.net. Unix irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
Spisok kommercheskoj podderzhki kompanij dostupen na Spisok kommercheskoj podderzhki kompanij dostupen na
http://www.PostgreSQL.org/users-lounge/commercial-support.html. http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html.
1.7) Kakaya poslednyaya versiya? 1.7) Kakaya poslednyaya versiya?
Poslednij vypusk PostgreSQL - `eto versiya 7.3.1. Poslednij vypusk PostgreSQL - `eto versiya 7.3.2.
My planiruem vypuskat' novye versii kazhdye chetyre mesyaca. My planiruem vypuskat' novye versii kazhdye chetyre mesyaca.
@ -284,7 +290,7 @@
V distributiv vklyuchayutsya razlichnye rukovodstva, stranicy V distributiv vklyuchayutsya razlichnye rukovodstva, stranicy
`elektronnogo rukovodstva man i nekotorye malen'kie testovye primery. `elektronnogo rukovodstva man i nekotorye malen'kie testovye primery.
Smotrite v katalog /doc. Vy takzhe mozhete prosmatrivat' dokumentaciyu Smotrite v katalog /doc. Vy takzhe mozhete prosmatrivat' dokumentaciyu
v Internet po adresu http://www.PostgreSQL.org/users-lounge/docs/. v Internet po adresu http://www.PostgreSQL.org/docs.
Suschestvuet dve knigi po PostgreSQL dostupnye po adresam Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
http://www.PostgreSQL.org/docs/awbook.html i http://www.PostgreSQL.org/docs/awbook.html i
@ -304,7 +310,7 @@
PostgreSQL podderzhivaet rasshirennyj podklass SQL-92. Smotrite nash PostgreSQL podderzhivaet rasshirennyj podklass SQL-92. Smotrite nash
spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih
osobennostyah i buduschih planov. vozmozhnostej i buduschih planov.
1.10) Kak mne nauchit'sya SQL? 1.10) Kak mne nauchit'sya SQL?
@ -325,7 +331,7 @@
1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)? 1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
Da, my legko manipuliruem datami posle 2000 goda i pered 2000 godom. Da, my legko rabotaem s datami posle 2000 goda i pered 2000 godom.
1.12) Kak prisoedinitsya k komande razrabotchikov? 1.12) Kak prisoedinitsya k komande razrabotchikov?
@ -342,7 +348,7 @@
previlegii vnosit' izmeneniya, i my uvereny, chto te ispravleniya, previlegii vnosit' izmeneniya, i my uvereny, chto te ispravleniya,
kotorye oni vnesut budut vysokogo kachestva. kotorye oni vnesut budut vysokogo kachestva.
1.13) Kak otravit' soobschenie ob oshibke?? 1.13) Kak otpravit' soobschenie ob oshibke??
Pozhalujsta posetite stranichku PostgreSQL BugTool na Pozhalujsta posetite stranichku PostgreSQL BugTool na
http://www.PostgreSQL.org/bugs/bugs.php, na kotoroj predostavleny http://www.PostgreSQL.org/bugs/bugs.php, na kotoroj predostavleny
@ -703,6 +709,7 @@
Smotrite opisanie na stranicah rukovodstva posvyaschennym DECLARE. Smotrite opisanie na stranicah rukovodstva posvyaschennym DECLARE.
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa? 4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
Proizvol'noj stroki?
Smotrite stanicu rukovodstva posvyaschennuyu FETCH ili ispol'zujte Smotrite stanicu rukovodstva posvyaschennuyu FETCH ili ispol'zujte
SELECT ... LIMIT.... SELECT ... LIMIT....
@ -713,6 +720,12 @@
mozhet vydat' tol'ko neskol'ko pervyh zaproshennyh zapisej ili mozhet mozhet vydat' tol'ko neskol'ko pervyh zaproshennyh zapisej ili mozhet
vypolnyat' zapros poka ne budut vydany zhelaemye zapisi. vypolnyat' zapros poka ne budut vydany zhelaemye zapisi.
To SELECT a random row, use:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql? 4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
Vy mozhete posmotret' ishodnyj kod psql v fajle Vy mozhete posmotret' ishodnyj kod psql v fajle
@ -722,10 +735,10 @@
chtoby `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya chtoby `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
vypolneniya zadannyh vami komand. vypolneniya zadannyh vami komand.
4.4) Kak udalit' kolonku iz tablicy? 4.4) Kak udalit' kolonku iz tablicy ili izmenit' ioio tip dannyh?
`Eta funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom ALTER DROP COLUMN funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom
TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak: ALTER TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak:
BEGIN; BEGIN;
LOCK TABLE old_table; LOCK TABLE old_table;
SELECT ... -- vyborka vseh kolonok za isklyucheniem toj, kotoruyu hotite u SELECT ... -- vyborka vseh kolonok za isklyucheniem toj, kotoruyu hotite u
@ -736,11 +749,18 @@ dalit'
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
COMMIT; COMMIT;
Dlya izmeneniya tipa dannyh kolonki, sdelajte tak:
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh? 4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
Suschestvuyut sleduyuschie ogranicheniya: Suschestvuyut sleduyuschie ogranicheniya:
Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na
1 TB) 4 TB)
Maksimal'nyj razmer tablicy? 16 TB Maksimal'nyj razmer tablicy? 16 TB
Maksimal'nyj razmer zapisi? 1.6 TB Maksimal'nyj razmer zapisi? 1.6 TB
Maksimal'nyj razmer polya? 1 GB Maksimal'nyj razmer polya? 1 GB
@ -931,14 +951,14 @@ iya
CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
TEXT text net zadavaemogo verhnego ogranicheniya ili dlin TEXT text net zadavaemogo verhnego ogranicheniya ili dlin
y y
"char" char odin simvol
BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova
t' null-bajt bez opaski) t' null-bajt bez opaski)
"char" char odin simvol
Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
i v nekotoryh soobscheniyah ob oshibkah. i v nekotoryh soobscheniyah ob oshibkah.
Poslednie chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye Pervye chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye
chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut
dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she, dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she,
chem oboznachennyj razmer. Odnako, `eti tipy dannyh takzhe poddayutsya chem oboznachennyj razmer. Odnako, `eti tipy dannyh takzhe poddayutsya
@ -954,8 +974,8 @@ t' null-bajt bez opaski)
imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj
dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh
sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh, sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh,
znacheniya kotoryh mogut vklyuchat' NULL bajty. `Eti tipy imeyut znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
shodnye harakteristiki proizvoditel'nosti. zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem? 4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
@ -1194,10 +1214,10 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.25) Kak mne vernut' iz funkcii neskol'ko zapisej? 4.25) Kak mne vernut' iz funkcii neskol'ko zapisej?
Vy mozhete vozvraschat' iz funkcij PL/pgSQL spiski rezul'tatov, V versii 7.3, vy mozhete legko vernut' neskol'ko zapisej ili kolonok
ispol'zuya refcursors. Smotrite iz kakoj-libo funkcii,
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html, http://techdocs.postgresql.org/guides/SetReturningFunctions
sekciyu 23.7.3.3. .
4.26) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy v 4.26) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy v
funkciyah PL/PgSQL? funkciyah PL/PgSQL?

View File

@ -10,7 +10,7 @@
alink="#0000ff"> alink="#0000ff">
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1> <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
<P>Last updated: Fri Feb 14 09:03:00 EST 2003</P> <P>Last updated: Wed Jul 23 00:11:07 EDT 2003</P>
<P>Current maintainer: Bruce Momjian (<A href= <P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -18,10 +18,10 @@
<P>The most recent version of this document can be viewed at <A <P>The most recent version of this document can be viewed at <A
href= href=
"http://www.ca.PostgreSQL.org/docs/faq-english.html">http://www.ca.PostgreSQL.org/docs/faq-english.html</A>.</P> "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
<P>Platform-specific questions are answered at <A href= <P>Platform-specific questions are answered at <A href=
"http://www.ca.PostgreSQL.org/users-lounge/docs/faq.html">http://www.ca.PostgreSQL.org/users-lounge/docs/faq.html</A>.</P> "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
<HR> <HR>
<H2 align="center">General Questions</H2> <H2 align="center">General Questions</H2>
@ -83,11 +83,11 @@
<A href="#4.1">4.1</A>) What is the difference between binary <A href="#4.1">4.1</A>) What is the difference between binary
cursors and normal cursors?<BR> cursors and normal cursors?<BR>
<A href="#4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the <A href="#4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the
first few rows of a query?<BR> first few rows of a query? A random row?<BR>
<A href="#4.3">4.3</A>) How do I get a list of tables or other <A href="#4.3">4.3</A>) How do I get a list of tables or other
things I can see in <I>psql</I>?<BR> things I can see in <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) How do you remove a column from a <A href="#4.4">4.4</A>) How do you remove a column from a
table?<BR> table, or change it's data type?<BR>
<A href="#4.5">4.5</A>) What is the maximum size for a row, a <A href="#4.5">4.5</A>) What is the maximum size for a row, a
table, and a database?<BR> table, and a database?<BR>
<A href="#4.6">4.6</A>) How much database disk space is required <A href="#4.6">4.6</A>) How much database disk space is required
@ -245,11 +245,16 @@
<P>The database server can run on Windows NT and Win2k using <P>The database server can run on Windows NT and Win2k using
Cygwin, the Cygnus Unix/NT porting library. See Cygwin, the Cygnus Unix/NT porting library. See
<I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the MS Windows FAQ <I>pgsql/doc/FAQ_MSWIN</I> in the distribution or the MS Windows FAQ
at <A href="http://www.PostgreSQL.org/docs/faq-mswin.html"> at <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">
http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P> http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
<p>A native port to MS Win NT/2000/XP is currently being worked <p>A native port to MS Win NT/2000/XP is currently being worked
on.</p> on. For more details on the current status of PostgreSQL on Windows see
<a href="http://techdocs.postgresql.org/guides/Windows">
http://techdocs.postgresql.org/guides/Windows</a>.</p>
<p>There is also a Novell Netware 6 port at
<a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
<H4><A name="1.5">1.5</A>) Where can I get PostgreSQL?</H4> <H4><A name="1.5">1.5</A>) Where can I get PostgreSQL?</H4>
@ -309,12 +314,12 @@
<A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A> <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
</BLOCKQUOTE> </BLOCKQUOTE>
<P>There is also an IRC channel on EFNet, channel <P>There is also an IRC channel on EFNet and OpenProjects,
<I>#PostgreSQL</I>. I use the Unix command <CODE>irc -c channel <I>#PostgreSQL</I>. I use the Unix command <CODE>irc -c
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P> '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
<P>A list of commercial support companies is available at <A href= <P>A list of commercial support companies is available at <A href=
"http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html">http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P> "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
<H4><A name="1.7">1.7</A>) What is the latest release?</H4> <H4><A name="1.7">1.7</A>) What is the latest release?</H4>
@ -326,8 +331,8 @@
<P>Several manuals, manual pages, and some small test examples are <P>Several manuals, manual pages, and some small test examples are
included in the distribution. See the <I>/doc</I> directory. You included in the distribution. See the <I>/doc</I> directory. You
can also browse the manual online at <A href= can also browse the manuals online at <A href=
"http://www.ca.PostgreSQL.org/users-lounge/docs/">http://www.ca.PostgreSQL.org/users-lounge/docs/</A>.</P> "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
<P>There are two PostgreSQL books available online at <A href= <P>There are two PostgreSQL books available online at <A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
@ -335,7 +340,7 @@
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>. "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
There is a list of PostgreSQL books available for purchase at <A There is a list of PostgreSQL books available for purchase at <A
href= href=
"http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</A>. "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
There is also a collection of PostgreSQL technical articles at <A There is also a collection of PostgreSQL technical articles at <A
href= href=
"http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P> "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>
@ -498,6 +503,11 @@
send a check to the contact address.</P> send a check to the contact address.</P>
<HR> <HR>
<P>Also, if you have a success story about PostgreSQL, please submit
it to our advocacy site at <a href="http://advocacy.postgresql.org">
http://advocacy.postgresql.org</a>.</P>
<H2 align="center">User Client Questions</H2> <H2 align="center">User Client Questions</H2>
<H4><A name="2.1">2.1</A>) Are there <SMALL>ODBC</SMALL> drivers <H4><A name="2.1">2.1</A>) Are there <SMALL>ODBC</SMALL> drivers
@ -535,7 +545,7 @@
<H4><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user <H4><A name="2.3">2.3</A>) Does PostgreSQL have a graphical user
interface?</H4> interface?</H4>
Yes, there are several graphical interfaces to PostgreSQL available. <P>Yes, there are several graphical interfaces to PostgreSQL available.
These include PgAccess <a href="http://www.pgaccess.org"> These include PgAccess <a href="http://www.pgaccess.org">
http://www.pgaccess.org</a>), PgAdmin II (<a http://www.pgaccess.org</a>), PgAdmin II (<a
href="http://www.pgadmin.org">http://www.pgadmin.org</a>, href="http://www.pgadmin.org">http://www.pgadmin.org</a>,
@ -545,7 +555,9 @@
http://www.thekompany.com/products/rekall/</a>, proprietary). There is http://www.thekompany.com/products/rekall/</a>, proprietary). There is
also PHPPgAdmin (<a href="http://phppgadmin.sourceforge.net/"> also PHPPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/ </a>), a web-based interface to http://phppgadmin.sourceforge.net/ </a>), a web-based interface to
PostgreSQL. PostgreSQL.</P>
<P>See <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a> for a more detailed list.</P>
<H4><A name="2.4">2.4</A>) What languages are able to communicate with <H4><A name="2.4">2.4</A>) What languages are able to communicate with
PostgreSQL?</H4> PostgreSQL?</H4>
@ -600,7 +612,7 @@
<I>postmaster</I>. For most systems, with default numbers of <I>postmaster</I>. For most systems, with default numbers of
buffers and processes, you need a minimum of ~1 MB. See the <A buffers and processes, you need a minimum of ~1 MB. See the <A
href= href=
"http://www.postgresql.org/idocs/index.php?kernel-resources.html">PostgreSQL "http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">PostgreSQL
Administrator's Guide</A> for more detailed information about Administrator's Guide</A> for more detailed information about
shared memory and semaphores.</P> shared memory and semaphores.</P>
@ -792,7 +804,7 @@
description.</P> description.</P>
<H4><A name="4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the <H4><A name="4.2">4.2</A>) How do I <SMALL>SELECT</SMALL> only the
first few rows of a query?</H4> first few rows of a query? A random row?</H4>
<P>See the <SMALL>FETCH</SMALL> manual page, or use <P>See the <SMALL>FETCH</SMALL> manual page, or use
<SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P> <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
@ -804,6 +816,14 @@
records requested, or the entire query may have to be evaluated records requested, or the entire query may have to be evaluated
until the desired rows have been generated.</P> until the desired rows have been generated.</P>
<P>To <SMALL>SELECT</SMALL> a random row, use:
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
<H4><A name="4.3">4.3</A>) How do I get a list of tables or other <H4><A name="4.3">4.3</A>) How do I get a list of tables or other
things I can see in <I>psql</I>?</H4> things I can see in <I>psql</I>?</H4>
@ -815,9 +835,9 @@
execute the commands you give.</P> execute the commands you give.</P>
<H4><A name="4.4">4.4</A>) How do you remove a column from a <H4><A name="4.4">4.4</A>) How do you remove a column from a
table?</H4> table, or change its data type?</H4>
<P>This functionality was added in release 7.3 with <P><SMALL>DROP COLUMN</SMALL> functionality was added in release 7.3 with
<SMALL>ALTER TABLE DROP COLUMN</SMALL>. In earlier versions, <SMALL>ALTER TABLE DROP COLUMN</SMALL>. In earlier versions,
you can do this:</P> you can do this:</P>
<PRE> <PRE>
@ -831,12 +851,23 @@
COMMIT; COMMIT;
</PRE> </PRE>
<P>To change the data type of a column, do this:</P>
<PRE>
BEGIN;
ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
</PRE>
<P>You might then want to do <I>VACUUM FULL tab</I> to reclaim the
disk space used by the expired rows.</P>
<H4><A name="4.5">4.5</A>) What is the maximum size for a row, a <H4><A name="4.5">4.5</A>) What is the maximum size for a row, a
table, and a database?</H4> table, and a database?</H4>
<P>These are the limits:</P> <P>These are the limits:</P>
<PRE> <PRE>
Maximum size for a database? unlimited (1 TB databases exist) Maximum size for a database? unlimited (4 TB databases exist)
Maximum size for a table? 16 TB Maximum size for a table? 16 TB
Maximum size for a row? 1.6TB Maximum size for a row? 1.6TB
Maximum size for a field? 1 GB Maximum size for a field? 1 GB
@ -1037,14 +1068,14 @@ Type Internal Name Notes
VARCHAR(n) varchar size specifies maximum length, no padding VARCHAR(n) varchar size specifies maximum length, no padding
CHAR(n) bpchar blank padded to the specified fixed length CHAR(n) bpchar blank padded to the specified fixed length
TEXT text no specific upper limit on length TEXT text no specific upper limit on length
"char" char one character
BYTEA bytea variable-length byte array (null-byte safe) BYTEA bytea variable-length byte array (null-byte safe)
"char" char one character
</PRE> </PRE>
<P>You will see the internal name when examining system catalogs <P>You will see the internal name when examining system catalogs
and in some error messages.</P> and in some error messages.</P>
<P>The last four types above are "varlena" types (i.e., the first <P>The first four types above are "varlena" types (i.e., the first
four bytes on disk are the length, followed by the data). Thus the four bytes on disk are the length, followed by the data). Thus the
actual space used is slightly greater than the declared size. actual space used is slightly greater than the declared size.
However, these data types are also subject to compression or being However, these data types are also subject to compression or being
@ -1058,8 +1089,8 @@ BYTEA bytea variable-length byte array (null-byte safe)
same length. <SMALL>CHAR(n)</SMALL> pads with blanks to the specified same length. <SMALL>CHAR(n)</SMALL> pads with blanks to the specified
length, while <SMALL>VARCHAR(n)</SMALL> only stores the characters length, while <SMALL>VARCHAR(n)</SMALL> only stores the characters
supplied. <SMALL>BYTEA</SMALL> is for storing binary data, supplied. <SMALL>BYTEA</SMALL> is for storing binary data,
particularly values that include <SMALL>NULL</SMALL> bytes. These particularly values that include <SMALL>NULL</SMALL> bytes. All the
types have similar performance characteristics.</P> types described here have similar performance characteristics.</P>
<H4><A name="4.15.1">4.15.1</A>) How do I create a <H4><A name="4.15.1">4.15.1</A>) How do I create a
serial/auto-incrementing field?</H4> serial/auto-incrementing field?</H4>
@ -1340,11 +1371,10 @@ BYTEA bytea variable-length byte array (null-byte safe)
<H4><A name="4.25">4.25</A>) How do I return multiple rows or <H4><A name="4.25">4.25</A>) How do I return multiple rows or
columns from a function?</H4> columns from a function?</H4>
<P>You can return result sets from PL/pgSQL functions using <P>In 7.3, you can easily return multiple rows or columns from a
<I>refcursors</I>. See <A href= function,
"http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html"> <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</A>, http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.
section 23.7.3.3.</P>
<H4><A name="4.26">4.26</A>) Why can't I reliably create/drop <H4><A name="4.26">4.26</A>) Why can't I reliably create/drop
temporary tables in PL/PgSQL functions?</H4> temporary tables in PL/PgSQL functions?</H4>

View File

@ -12,7 +12,7 @@
<H1>Developer's Frequently Asked Questions (FAQ) for <H1>Developer's Frequently Asked Questions (FAQ) for
PostgreSQL</H1> PostgreSQL</H1>
<P>Last updated: Fri Feb 14 08:59:10 EST 2003</P> <P>Last updated: Mon Jun 2 00:34:39 EDT 2003</P>
<P>Current maintainer: Bruce Momjian (<A href= <P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -281,21 +281,28 @@
less -x4 less -x4
emacs: emacs:
M-x set-variable tab-width M-x set-variable tab-width
or or
; Cmd to set tab stops &amp; indenting for working with PostgreSQL code
(c-add-style "pgsql" (c-add-style "pgsql"
'("bsd" '("bsd"
(indent-tabs-mode . t) (indent-tabs-mode . t)
(c-basic-offset . 4) (c-basic-offset . 4)
(tab-width . 4) (tab-width . 4)
(c-offsets-alist . (c-offsets-alist .
((case-label . +)))) ((case-label . +)))
t) ; t = set this mode on )
nil ) ; t = set this style, nil = don't
(defun pgsql-c-mode ()
(c-mode)
(c-set-style "pgsql")
)
and add this to your autoload list (modify file path in macro): and add this to your autoload list (modify file path in macro):
(setq auto-mode-alist (setq auto-mode-alist
(cons '("\\`/usr/local/src/pgsql/.*\\.[chyl]\\'" . pgsql-c-mode) (cons '("\\`/home/andrew/pgsql/.*\\.[chyl]\\'" . pgsql-c-mode)
auto-mode-alist)) auto-mode-alist))
or or
/* /*
@ -605,7 +612,9 @@
href="http://webstore.ansi.org/ansidocstore/default.asp"> href="http://webstore.ansi.org/ansidocstore/default.asp">
http://webstore.ansi.org/ansidocstore/default.asp</a>. The main http://webstore.ansi.org/ansidocstore/default.asp</a>. The main
standards documents are ANSI X3.135-1992 for SQL92 and ANSI/ISO/IEC standards documents are ANSI X3.135-1992 for SQL92 and ANSI/ISO/IEC
9075-2-1999 for SQL99.</P> 9075-2-1999 for SQL99. The SQL 200X standards are at <a href=
"ftp://sqlstandards.org/SC32/WG3/Progression_Documents/FCD">
ftp://sqlstandards.org/SC32/WG3/Progression_Documents/FCD</A></P>
<P>A summary of these standards is at <a <P>A summary of these standards is at <a
href="http://dbs.uni-leipzig.de/en/lokal/standards.pdf"> href="http://dbs.uni-leipzig.de/en/lokal/standards.pdf">

View File

@ -14,16 +14,16 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<p>Deutsche Übersetzung von Ian Barwick (<a href="mailto:barwick@gmx.net">barwick@gmx.net</a>).</p> <p>Deutsche Übersetzung von Ian Barwick (<a href="mailto:barwick@gmx.net">barwick@gmx.net</a>).</p>
<p>Letzte Aktualisierung der deutschen Übersetzung: So., den 15.12.2002, 18:00 CET</p> <p>Letzte Aktualisierung der deutschen Übersetzung: Mo., den 02.06.2003, 22:00 CET</p>
<p>Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL Website:</p> <p>Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL Website:</p>
<ul> <ul>
<li><a href="http://www.PostgreSQL.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</a> (engl.)</li> <li><a href="http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</a> (engl.)</li>
<li><a href="http://www.PostgreSQL.org/docs/faq-german.html">http://www.PostgreSQL.org/docs/faq-german.html</a> (dt.)</li> <li><a href="http://www.PostgreSQL.org/docs/faqs/FAQ_german.html">http://www.PostgreSQL.org/docs/faqs/FAQ_german.html</a> (dt.)</li>
</ul> </ul>
<p>Übersetzungen dieses Dokuments in andere Sprachen sowie plattform- <p>Übersetzungen dieses Dokuments in andere Sprachen sowie plattform-
spezifische FAQs können unter spezifische FAQs können unter
<a href="http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html</a> <a href="http://www.PostgreSQL.org/docs/index.html#faqs">http://www.PostgreSQL.org/docs/index.html#faqs</a>
eingesehen werden.</p> eingesehen werden.</p>
<hr /> <hr />
@ -72,9 +72,10 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<a href="#4.1">4.1</a>) Worin besteht der Unterschied zwischen <em>Binary Cursors</em> und <em>Normal Cursors?</em><br /> <a href="#4.1">4.1</a>) Worin besteht der Unterschied zwischen <em>Binary Cursors</em> und <em>Normal Cursors?</em><br />
<a href="#4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die <a href="#4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die
ersten paar Zeilen in einer Abfrage aus?<br /> ersten paar Zeilen bzw. eine beliebige Zeile in einer Abfrage aus?<br />
<a href="#4.3">4.3</a>) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in <em>psql</em> sehen kann?<br /> <a href="#4.3">4.3</a>) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in <em>psql</em> sehen kann?<br />
<a href="#4.4">4.4</a>) Wie entferne ich eine Spalte aus einer Tabelle?<br /> <a href="#4.4">4.4</a>) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere
ich den Datentyp einer Spalte?<br />
<a href="#4.5">4.5</a>) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?<br /> <a href="#4.5">4.5</a>) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?<br />
<a href="#4.6">4.6</a>) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen Textdatei abzuspeichern?<br /> <a href="#4.6">4.6</a>) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen Textdatei abzuspeichern?<br />
<a href="#4.7">4.7</a>) Wie finde ich heraus, welche Indizes oder Operationen in der Datenbank definiert sind?<br /> <a href="#4.7">4.7</a>) Wie finde ich heraus, welche Indizes oder Operationen in der Datenbank definiert sind?<br />
@ -213,10 +214,15 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
(Unix/NT-Portierungsbibliotheken) auf Windows NT/2000 zum Laufen (Unix/NT-Portierungsbibliotheken) auf Windows NT/2000 zum Laufen
gebracht werden. Hierzu bitte lesen Sie die in der Distribution gebracht werden. Hierzu bitte lesen Sie die in der Distribution
enthaltene Datei <em>pgsql/doc/FAQ_MSWIN</em> oder die MS-Windows-FAQ unter enthaltene Datei <em>pgsql/doc/FAQ_MSWIN</em> oder die MS-Windows-FAQ unter
<a href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</a>.</p> <a href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</a>.</p>
<p>Eine eigenständige Portierung auf MS Win NT/2000/XP befindet sich <p>Eine eigenständige Portierung auf MS Win NT/2000/XP befindet sich
in Vorbereitung.</p> in der Vorbereitung.</p>
<p>Weitere Informationen zum Status von PostgreSQL auf der Microsoft-Plattform
befinden sich unter <a href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</a> (en.).</p>
<p>Eine Portierung für Novell Netware 6 gibt es unter <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
<h4><a name="1.5">1.5</a>) Woher bekomme ich PostgreSQL?</h4> <h4><a name="1.5">1.5</a>) Woher bekomme ich PostgreSQL?</h4>
@ -238,7 +244,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
</pre> </pre>
<p>Es gibt auch eine Digest-Liste (eine Liste, die Mails zusammengefasst <p>Es gibt auch eine Digest-Liste (eine Liste, die Mails zusammengefasst
sendet). Um sich an dieser Digest-Liste anzumelden, senden Sie eine Email sendet). Um sich an dieser Digest-Liste anzumelden, senden Sie eine Email
an <a href="pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</a> mit folgendem Text:</p> an <a href="mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</a> mit folgendem Text:</p>
<pre> <pre>
subscribe subscribe
end end
@ -252,30 +258,33 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
</pre> </pre>
<p>Die Entwickler-Mailingliste kann mit einer Email an <p>Die Entwickler-Mailingliste kann mit einer Email an
<a href="mailto:">pgsql-hackers-request@PostgreSQL.org</a> abonniert werden. Die Email muß ebenfalls folgenden Text enthalten:</p> <a href="mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</a> abonniert werden. Die Email muß ebenfalls folgenden Text enthalten:</p>
<pre> <pre>
subscribe subscribe
end end
</pre> </pre>
<p>Eine deutschsprachige Mailing-Liste gibt es bei Yahoo Groups:
<a href="http://de.groups.yahoo.com/group/postgres/">http://de.groups.yahoo.com/group/postgres/</a>;
die Liste kann mit einer leeren E-Mail an <a href="mailto:postgres-subscribe@yahoogroups.de">postgres-subscribe@yahoogroups.de</a>
abonniert werden.</p>
<p>Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich auf der PostgreSQL-Homepage:</p> <p>Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich auf der PostgreSQL-Homepage:</p>
<blockquote> <blockquote>
<a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a> <a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a>
</blockquote> </blockquote>
<p>Es gibt außerdem einen IRC-Channel im EFNet, Channel <em>#PostgreSQL</em>. Der <p>Es gibt außerdem einen IRC-Channel bei EFNet und bei OpenProjects, Channel
FAQ-Autor Bruce Momjian nutzt den Unix-Befehl: <em>#PostgreSQL</em>. Der FAQ-Autor Bruce Momjian nutzt den Unix-Befehl:
<small>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</small> <small>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</small> um daran teilzunehmen.</p>
um daran teilzunehmen.</p>
<p>Eine Liste von Unternehmen, die Support für PostgreSQL auf kommerzieller <p>Eine Liste von Unternehmen, die Support für PostgreSQL auf kommerzieller
Basis leisten, kann unter Basis leisten, kann unter
<a href="http://www.PostgreSQL.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</a> <a href="http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html">http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html</a>
eingesehen werden.</p> eingesehen werden.</p>
<h4><a name="1.7">1.7</a>) Was ist die neueste Version von PostgreSQL?</h4> <h4><a name="1.7">1.7</a>) Was ist die neueste Version von PostgreSQL?</h4>
<p>Die neueste Version von PostgreSQL ist 7.3.</p> <p>Die neueste Version von PostgreSQL ist 7.3.3 .</p>
<p>Wir planen alle 4 Monate eine neue Version herauszugeben.</p> <p>Wir planen alle 4 Monate eine neue Version herauszugeben.</p>
@ -283,7 +292,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<p>Einige Handbücher, Man-Pages und einige kleine Testprogramme sind in <p>Einige Handbücher, Man-Pages und einige kleine Testprogramme sind in
der Distribution enthalten. Siehe das <em>/doc</em>-Verzeichnis. Ausserdem sind der Distribution enthalten. Siehe das <em>/doc</em>-Verzeichnis. Ausserdem sind
alle Handbücher online unter <a href="http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</a> alle Handbücher online unter <a href="http://www.PostgreSQL.org/docs/">http://www.PostgreSQL.org/docs/</a>
verfügbar.</p> verfügbar.</p>
<p>Zwei Bücher zu PostgreSQL sind online verfügbar unter <p>Zwei Bücher zu PostgreSQL sind online verfügbar unter
@ -291,7 +300,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> .</p> <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> .</p>
<p>Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter <p>Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter
<a href="http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a> <a href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>
Diverse technische Artikel befinden sich unter Diverse technische Artikel befinden sich unter
<a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a> .</p> <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a> .</p>
@ -428,6 +437,11 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
einer bestimmten Firma. Sie können auch gerne einen finanziellen Beitrag einer bestimmten Firma. Sie können auch gerne einen finanziellen Beitrag
an die Kontaktadresse verschicken.</p> an die Kontaktadresse verschicken.</p>
<p>Eine Möglichkeit der nicht-finanziellen Untetstützung besteht übrigens
darin, für <a href="http://advocacy.postgresql.org">http://advocacy.postgresql.org</a> (en.) bzw. <a href="http://advocacy.postgresql.org/?lang=de">http://advocacy.postgresql.org/?lang=de</a> (dt.)
einen Bericht über den erfolgreichen Einsatz von PostgreSQL in Ihrem
Unternehmen oder Organisation bereitzustellen.</p>
<hr /> <hr />
<h2 align="center">Fragen zu Benutzerprogrammen</h2> <h2 align="center">Fragen zu Benutzerprogrammen</h2>
@ -519,7 +533,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
ab, die Sie für <em>postmaster</em> konfiguriert haben. Bei den voreingestellten ab, die Sie für <em>postmaster</em> konfiguriert haben. Bei den voreingestellten
Werten für Puffer und Prozesse benötigen Sie bei den meisten Systemen Werten für Puffer und Prozesse benötigen Sie bei den meisten Systemen
ein Minimum von ca. 1 MB. Der "PostgreSQL Administrator's Guide" ein Minimum von ca. 1 MB. Der "PostgreSQL Administrator's Guide"
(<a href="http://www.PostgreSQL.org/idocs/index.php?kernel-resources.html">http://www.PostgreSQL.org/idocs/index.php?kernel-resources.html</a>) (<a href="http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">http://www.PostgreSQL.org/docs/view.php?version=current&amp;idoc=1&amp;file=kernel-resources.html</a>)
enthält weitere Informationen zu Shared Memory und Semaphores.</p> enthält weitere Informationen zu Shared Memory und Semaphores.</p>
@ -665,11 +679,6 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
erlaubter Backend-Prozesse wird verhindert, dass System-Ressourcen erlaubter Backend-Prozesse wird verhindert, dass System-Ressourcen
durch PostgreSQL aufgebraucht werden.</p> durch PostgreSQL aufgebraucht werden.</p>
<p>In den PostgreSQL-Versionen vor 6.5 war die maximale Anzahl von Backends
auf 64 festgelegt und eine Änderung setzte eine erneute Kompilierung
voraus, bei der die Konstante <em>MaxBackendId</em> in <em>include/storage/sinvaladt.h</em>
entsprechend angepasst werden mußte.
<h4><a name="3.9">3.9</a>) Was befindet sich im Verzeichnis <em>pgsql_tmp/</em>?</h4> <h4><a name="3.9">3.9</a>) Was befindet sich im Verzeichnis <em>pgsql_tmp/</em>?</h4>
<p>Dieses Verzeichnis enthält temporäre Dateien, die durch den <em>query executor</em> <p>Dieses Verzeichnis enthält temporäre Dateien, die durch den <em>query executor</em>
@ -712,7 +721,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<p>Vgl. die <small>DECLARE</small> Man-Page für eine Beschreibung.</p> <p>Vgl. die <small>DECLARE</small> Man-Page für eine Beschreibung.</p>
<h4><a name="4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die ersten paar <h4><a name="4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die ersten paar
Zeilen in einer Abfrage aus?</h4> Zeilen bzw. eine beliebige Zeile in einer Abfrage aus?</h4>
<p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> . <p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> .
@ -726,6 +735,13 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<p>Bitte beachten Sie, dass mit PostgreSQL 7.3 die Syntax <small>LIMIT <em>n</em>, <em>m</em></small> <p>Bitte beachten Sie, dass mit PostgreSQL 7.3 die Syntax <small>LIMIT <em>n</em>, <em>m</em></small>
durch <small>LIMIT <em>n</em> OFFSET <em>m</em></small> ersetzt wurde.</p> durch <small>LIMIT <em>n</em> OFFSET <em>m</em></small> ersetzt wurde.</p>
<p>Um eine beliebige Zeile auszuwählen, nutzen Sie <small>ORDER BY random()</small>:</p>
<pre>
SELECT spalte
FROM tabelle
ORDER BY random()
LIMIT 1;
</pre>
<h4><a name="4.3">4.3</a>) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich <h4><a name="4.3">4.3</a>) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich
in <em>psql</em> sehen kann?</h4> in <em>psql</em> sehen kann?</h4>
@ -736,9 +752,10 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
Option starten. Danach gibt <em>psql</em> die Abfragen aus, die es bei der Ausführung der Befehle Option starten. Danach gibt <em>psql</em> die Abfragen aus, die es bei der Ausführung der Befehle
benutzt.</p> benutzt.</p>
<h4><a name="4.4">4.4</a>) Wie entferne ich eine Spalte aus einer Tabelle?</h4> <h4><a name="4.4">4.4</a>) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere
ich den Datentyp einer Spalte?</h4>
<p>Der Syntax <small>ALTER TABLE DROP COLUMN</small> wird erst ab PostgreSQL 7.3 unterstützt.</p> <p>Der Syntax <small>ALTER TABLE DROP COLUMN</small> wird ab PostgreSQL 7.3 unterstützt.</p>
<p>Bei früheren Versionen bietet das folgende Verfahren Ersatz:</p> <p>Bei früheren Versionen bietet das folgende Verfahren Ersatz:</p>
<pre> <pre>
@ -751,13 +768,23 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
COMMIT; COMMIT;
</pre> </pre>
<p>Um den Datentyp einer Spalte zu ändern, gehen Sie wie folgt vor:</p>
<pre>
BEGIN;
ALTER TABLE <em>tabelle</em> ADD COLUMN <em>neue_spalte</em> <em>neuer_datentyp</em>;
UPDATE <em>tabelle</em> SET <em>neue_spalte</em> = CAST(<em>alte_spalte</em> AS <em>neuer_datentyp</em>);
ALTER TABLE <em>tabelle</em> DROP COLUMN <em>alte_spalte</em>;
COMMIT;
</pre>
<p>Um den Platz zu reklamieren, der von der gelöschten Spalte verwendet
wurde, führen Sie <small>VACUUM FULL</small> aus.</p>
<h4><a name="4.5">4.5</a>) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?</h4> <h4><a name="4.5">4.5</a>) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?</h4>
<p>Es bestehen folgende Obergrenzen:</p> <p>Es bestehen folgende Obergrenzen:</p>
<pre> <pre>
Maximale Größe eine Datenbank? unbeschränkt (es existieren Maximale Größe eine Datenbank? unbeschränkt (es existieren
Datenbanken mit >1TB) Datenbanken mit 4TB)
Maximale Größe einer Tabelle? 16 TB Maximale Größe einer Tabelle? 16 TB
Maximale Größe einer Zeile? 1,6 TB Maximale Größe einer Zeile? 1,6 TB
Maximale Größe einer Spalte? 1 GB Maximale Größe einer Spalte? 1 GB
@ -861,6 +888,10 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
</pre> </pre>
<p>(Die Aggregatfunktionen MIN() und MAX() verwenden keine Indizes). </p> <p>(Die Aggregatfunktionen MIN() und MAX() verwenden keine Indizes). </p>
<p>Sollte es danach aussehen, also ob der Optimierer irrtümlich einen sequentiellen
Scan ausführt, führen Sie <small>SET enable_seqscan TO 'off'</small> aus und prüfen
Sie, ob die Indexabfrage dadurch scheller geworden ist.</p>
<p>Bei der Nutzung von Wildcard-Operatoren wie <small>LIKE</small> oder <small>~</small>, können <p>Bei der Nutzung von Wildcard-Operatoren wie <small>LIKE</small> oder <small>~</small>, können
Indizes nur unter bestimmten Umständen verwendet werden:</p> Indizes nur unter bestimmten Umständen verwendet werden:</p>
<ul> <ul>
@ -946,30 +977,36 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<h4><a name="4.14">4.14</a>) Was ist der Unterschied zwischen den verschiedenen <small>CHAR</small>-Typen?</h4><pre> <h4><a name="4.14">4.14</a>) Was ist der Unterschied zwischen den verschiedenen <small>CHAR</small>-Typen?</h4><pre>
Typ interner Name Bemerkungen Typ interner Name Bemerkungen
------------------------------------------------- -------------------------------------------------
"char" char 1 Zeichen
CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein VARCHAR(n) varchar die Größe legt die Maximallänge fest; kein
Ausfüllen mit Leerzeichen Ausfüllen mit Leerzeichen
CHAR(n) bpchar mit Leerzeichen gefüllt bis zur angegebenen Länge
TEXT text Die Länge wird nur durch die maximale Zeilenlänge TEXT text Die Länge wird nur durch die maximale Zeilenlänge
beschränkt beschränkt
BYTEA bytea Bytearray mit variabler Länge BYTEA bytea Bytearray mit variabler Länge
"char" char 1 Zeichen
</pre> </pre>
<p>Der <em>interne Name</em> kommt vor allem in den Systemkatalogen und in manchen <p>Der <em>interne Name</em> kommt vor allem in den Systemkatalogen und in manchen
Fehlermeldungen vor.</p> Fehlermeldungen vor.</p>
<p>Die letzten vier Typen sind "<em>varlena</em>"-Typen (d.h. die ersten vier <p>Die ersten vier Typen sind "<em>varlena</em>"-Typen (d.h. die ersten vier
Bytes geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich Bytes geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich
belegte Platz immer etwas mehr als die deklarierte Feldgröße. Allerdings belegte Platz immer etwas mehr als die deklarierte Feldgröße. Allerdings
wird unter Umständen auf diese Datentypen Datenkompression durch das <small>TOAST</small>- wird unter Umständen auf diese Datentypen Datenkompression durch das <small>TOAST</small>-
Verfahren angewendet, womit der tatsächlich belegte Platz auch geringer Verfahren angewendet, womit der tatsächlich belegte Platz auch geringer
als erwartet ausfallen kann.</p> als erwartet ausfallen kann.</p>
<p><small>CHAR(n)</small> ist geeignet für die Speicherung von Zeichenketten ähnlicher Länge. <p>Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich <small>VARCHAR(n)</small>.
VARCHAR(n) ist geeignet für Zeichenketten abweichender Längen, setzt jedoch Die maximale Länge eines <small>VARCHAR(n)</small>-Felds wird bei der Tabellendefinition
eine maximale Länge. <small>TEXT</small> setzt keine Längengrenze, allerdings gibt es festgelegt. <small>TEXT</small> setzt keine Längengrenze, allerdings gibt es
eine systembedingte Obergrenze von 1 GB. <small>BYTEA</small> ist für binäre Daten, eine systembedingte Obergrenze von 1 GB. </p>
besonders für Werte, die <small>NULL</small>-Bytes haben. Die erwähnten Typen weisen
ähnliche Performanzeigenschaften auf.</p> <p><small>CHAR(n)</small> ist geeignet für die Speicherung von Zeichenketten, die alle
die gleiche Länge haben. Bitte beachten Sie, dass <small>CHAR(n)</small> automatisch Zeichenketten
bis zur definierten Feldlänge mit Leerzeichen ausfüllt, während bei <small>VARCHAR(n)</small> nur
die tatsächlich eingegebene Zeichenkette gespeichert wird.</p>
<p><small>BYTEA</small> ist für binäre Daten, besonders für Werte, die <small>NULL</small>-Bytes haben. </p>
<p>Die hier erwähnten Typen weisen ähnliche Performanzeigenschaften auf.</p>
<h4><a name="4.15.1">4.15.1</a>) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des <h4><a name="4.15.1">4.15.1</a>) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
Werts?</h4> Werts?</h4>
@ -1043,7 +1080,7 @@ BYTEA bytea Bytearray mit variabler L
Lücken in der Sequenznummerierung verursacht.</p> Lücken in der Sequenznummerierung verursacht.</p>
<h4><a name="4.17">4.16</a>) Was ist ein <small>OID</small>? Was ist ein <small>TID</small>?</h4> <h4><a name="4.16">4.16</a>) Was ist ein <small>OID</small>? Was ist ein <small>TID</small>?</h4>
<p>OIDs sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile, <p>OIDs sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile,
die in PostgreSQL erzeugt wird, bekommt eine eindeutige OID. Alle die in PostgreSQL erzeugt wird, bekommt eine eindeutige OID. Alle
@ -1156,7 +1193,7 @@ BYTEA bytea Bytearray mit variabler L
</pre> </pre>
<p> Damit diese Abfrage effizient durchgeführt wird, sollte für '<em>spalte2</em>' <p> Damit diese Abfrage effizient durchgeführt wird, sollte für '<em>spalte2</em>'
ein Index angelegt worden sein. Die Einschränkung von Abfragen mit <small>IN</small> ein Index angelegt worden sein. Die Einschränkung von Abfragen mit <small>IN</small>
soll in einer künftigen PotsgreSQL-Version behoben werden.</p> wird in der nächsten PostgreSQL-Version (7.4) behoben werden.</p>
<h4><a name="4.23">4.23</a>) Wie führe ich einen <small>OUTER JOIN</small> durch?</h4> <h4><a name="4.23">4.23</a>) Wie führe ich einen <small>OUTER JOIN</small> durch?</h4>
@ -1202,18 +1239,21 @@ BYTEA bytea Bytearray mit variabler L
zuzugreifen. Da PostgreSQL datenbank-spezifische Systemkataloge lädt, ist zuzugreifen. Da PostgreSQL datenbank-spezifische Systemkataloge lädt, ist
eine datenbankübergreifende Abfrage nicht möglich.</p> eine datenbankübergreifende Abfrage nicht möglich.</p>
<p><em>contrib/dblink</em> ermöglicht datenbankübergreifende Abfragen.</p> <p><em>contrib/dblink</em> ist eine Erweiterung, die datenbankübergreifende Abfragen
ermöglicht.</p>
<p>Es ist natürlich möglich, dass eine Client-Anwendung gleichzeitige Verbindungen <p>Es ist natürlich möglich, dass eine Client-Anwendung gleichzeitige Verbindungen
zu verschiedenen Datenbanken aufbaut und selber Datensätze zusammenfügt.</p> zu verschiedenen Datenbanken aufbaut und selber Datensätze zusammenfügt.</p>
<p>Ab 7.3 unterstützt PostgreSQL <em>schemas</em>, die die Aufteilung einer Datenbank
in mehrere logische Bereiche ermöglichen. Bei vielen Anwendungen könnten dies
einen geeigneten Ersatz für den Zugriff auf eine andere Datenbank bieten.</p>
<h4><a name="4.25">4.25</a>) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion <h4><a name="4.25">4.25</a>) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
zurückgeben lassen?</h4> zurückgeben lassen?</h4>
<p>"<em>Result sets</em>" können mittels <em>refcursors</em> von <small>PL/PgSQL</small>-Funktionen zurückgegeben <p>Ab 7.3 können Funktionen mehrere Zeilen und Spalten zurückgeben, vgl.:
werden. Vgl.: <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</p>
<a href="http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html">http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html</a>
(Abschnitt 23.7.3.3).</p>
<h4><a name="4.26">4.26</a>) Warum kann ich temporäre Tabellen in <small>PL/PgSQL</small>-Funktionen nicht <h4><a name="4.26">4.26</a>) Warum kann ich temporäre Tabellen in <small>PL/PgSQL</small>-Funktionen nicht
zuverlässig erstellen bzw. löschen?</h4> zuverlässig erstellen bzw. löschen?</h4>
@ -1291,7 +1331,7 @@ BYTEA bytea Bytearray mit variabler L
<h4>Anmerkungen des Übersetzers</h4> <h4>Anmerkungen des Übersetzers</h4>
<p>Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher liegt <p>Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher liegt
die Übersetzung nicht immer auf dem aktuellsten Stand. die Übersetzung nicht immer auf dem aktuellsten Stand.</p>
<p>Über Verbesserungshinweise und Korrekturvorschläge sowie Verständnisfragen <p>Über Verbesserungshinweise und Korrekturvorschläge sowie Verständnisfragen
zum Inhalt der FAQ freue ich mich. Ich nehme auch allgemeine Fragen zu PostgreSQL gerne zum Inhalt der FAQ freue ich mich. Ich nehme auch allgemeine Fragen zu PostgreSQL gerne

View File

@ -1,3 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>PostgreSQL FAQ in Japanese</TITLE> <TITLE>PostgreSQL FAQ in Japanese</TITLE>
@ -7,22 +8,22 @@
<H1> <H1>
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)</H1> PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ)</H1>
<P> <P>
原文最終更新日: Sun Oct 13 23:15:09 EDT 2002 原文最終更新日: Mon May 30 22:24:56 EST 2003</P>
<P> <P>
現在の維持管理者: Bruce Momjian (<A 現在の維持管理者: Bruce Momjian (<A
HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
Maintainer of Japanese Translation: Jun Kuwamura (<A Maintainer of Japanese Translation: Jun Kuwamura (<A
HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)<BR><P> HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR><P>
<P> <P>
この文書の最新版は この文書の最新版は
<A HREF="http://www.PostgreSQL.org/docs/faq-english.html"> <A HREF="http://www.PostgreSQL.org/docs/faqs/FAQ.html">
http://www.PostgreSQL.org/docs/faq-english.html</A> http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>
で見ることができます。 で見ることができます。
<P> <P>
プラットホームに特有の質問については: プラットホームに特有の質問については:
<A HREF="http://www.PostgreSQL.org/docs/"> <A HREF="http://www.PostgreSQL.org/docs/index.html">
http://www.PostgreSQL.org/users-lounge/docs/faq.html</A> http://www.PostgreSQL.org/docs/index.html</A>
<BR>に回答があります。 <BR>に回答があります。
<P> <P>
@ -32,16 +33,16 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
[訳注: [訳注:
日本語版製作についてのメモは最後尾へ移動しました。 日本語版製作についてのメモは最後尾へ移動しました。
日本語版のこの文書は 本家 "User's Lounge" の "Collection of FAQs" の 日本語版のこの文書は <a HREF="http://www.PostgreSQL.org/docs/index.html">本家 "Docs" </a> の "Frequently Asked Questions" の
"Japanese" という見出しのところにあります。また、以下のサイトにも ところに "Japanese FAQ" という見出であります。また、以下のサイトにも
あります。 あります。
<A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A> <A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A>
<A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A> <A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>
<A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A> <A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>
この和訳についてお気づきの点は(<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までメールでお寄せ下さい。 この和訳についてお気づきの点は(<A HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)までメールでお寄せ下さい。
2002年10月16日 桑村 潤 2003年06月30日 桑村 潤
] ]
</PRE></SMALL> </PRE></SMALL>
@ -72,8 +73,7 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<A HREF="#2.1">2.1</A>) PostgreSQL の <SMALL>ODBC</SMALL> ドライバーはありますか?<BR> <A HREF="#2.1">2.1</A>) PostgreSQL の <SMALL>ODBC</SMALL> ドライバーはありますか?<BR>
<A HREF="#2.2">2.2</A>) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?<BR> <A HREF="#2.2">2.2</A>) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?<BR>
<A HREF="#2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? <A HREF="#2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか?<BR>
レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?<BR>
<A HREF="#2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?<BR> <A HREF="#2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?<BR>
@ -98,9 +98,9 @@ http://www.PostgreSQL.org/docs/faq-english.html</A>
<H2 align="center">操作上の質問</H2> <H2 align="center">操作上の質問</H2>
<A HREF="#4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの違いは何ですか?<BR> <A HREF="#4.1">4.1</A>) バイナリ・カーソルと通常カーソルとの違いは何ですか?<BR>
<A HREF="#4.2">4.2</A>) 最初の数ロウのみを <SMALL>select</SMALL> するにはどうしますか?<BR> <A HREF="#4.2">4.2</A>) 最初の数ロウのみを <SMALL>select</SMALL> するにはどうしますか? ランダムな行? <BR>
<A HREF="#4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?<BR> <A HREF="#4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?<BR>
<A HREF="#4.4">4.4</A>) テーブルからカラムの削除はどのよしますか?<BR> <A HREF="#4.4">4.4</A>) テーブルからカラムの削除、あるいは、データ型を変更するにはどうしますか?<BR>
<A HREF="#4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは?<BR> <A HREF="#4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは?<BR>
<A HREF="#4.6">4.6</A>) 一般的なテキストファイルからデータを保存するには、データベースのディスク容量はどのくらい必要ですか?<BR> <A HREF="#4.6">4.6</A>) 一般的なテキストファイルからデータを保存するには、データベースのディスク容量はどのくらい必要ですか?<BR>
<A HREF="#4.7">4.7</A>) 定義されたテーブル、インデックス、データベース、および、ユーザをどのようにして見つけ出しますか?<BR> <A HREF="#4.7">4.7</A>) 定義されたテーブル、インデックス、データベース、および、ユーザをどのようにして見つけ出しますか?<BR>
@ -228,12 +228,14 @@ MODIFICATIONS.</P>
<P><STRONG>クライアント</STRONG></P> <P><STRONG>クライアント</STRONG></P>
<P> MS Windows プラットホーム上で走せるために、<I>libpq</I> C ライブラリ、psql、その他のインターフェス、および、クライアントアプリケーションをコンパイルすることは可能です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。</P> <P> MS Windows プラットホーム上で走せるために、<I>libpq</I> C ライブラリ、psql、その他のインターフェス、および、クライアントアプリケーションをコンパイルすることは可能です。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。</P>
<P> Win32 <I>libpq</I> ライブラリと psql を作るために、<I>win32.mak</I> が配布に含まれてます。PostgreSQLは <SMALL>ODBC</SMALL> クライアントとも通信できます。</P> <P> Win32 <I>libpq</I> ライブラリと psql を作るために、<I>win32.mak</I> が配布に含まれてます。PostgreSQLは <SMALL>ODBC</SMALL> クライアントとも通信できます。</P>
<P><STRONG>サーバ</STRONG></P> <P><STRONG>サーバ</STRONG></P>
<P> 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベースサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる<I>pgsql/doc/FAQ_MSWIN</I>、あるいは、<A href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</A>にある MS Windows FAQ をご覧下さい。</P> <P> 現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベースサーバは Windows NT と Win2k 上で稼働しています。配布に含まれる<I>pgsql/doc/FAQ_MSWIN</I>、あるいは、
<P>MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。</P> <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>にある MS Windows FAQ をご覧下さい。</P>
<P>MS Win NT/2000/XP ネイティブ版への移植が現在進行中です。もっと詳しいWindows版PostgreSQLの近況は、<a href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</a>を見てください。
</p>
<BR> <BR>
[訳注: [訳注:
@ -320,13 +322,14 @@ HREF="mailto:bugs-request@PostgreSQL.org">bugs-request@PostgreSQL.org</A>
<A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A> <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
</BLOCKQUOTE> </BLOCKQUOTE>
</P> </P>
<P>EFNet に <I>#PostgreSQL</I> という IRC チャンネルもあります。 <P>EFNet と OpenProjects <I>#PostgreSQL</I> という IRC チャンネルもあります。
UNIX コマンドで<tt>irc -c '#PostgreSQL' "$USER" <A HREF="http://irc.phoenix.net">irc.phoenix.net</A> を使います。</P> UNIX コマンドで<tt>irc -c '#PostgreSQL' "$USER" <A HREF="http://irc.phoenix.net">irc.phoenix.net</A> を使っています。</P>
<P> <P>
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUG
JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。 が設立されました。JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場となっています。
2003年5月17日の総会を以って、「日本PostgreSQLユーザ会」に名称を改めました。
正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。 正会員の会費は無料ですが、協賛会員の会費と会員の積極的な貢献が会の運営を助けています。
詳しくは、JPUG のWeb サイト: 詳しくは、JPUG のWeb サイト:
<A HREF="http://www.PostgreSQL.jp/">http://www.PostgreSQL.jp/</A> <A HREF="http://www.PostgreSQL.jp/">http://www.PostgreSQL.jp/</A>
@ -340,7 +343,7 @@ UNIX
</PRE></SMALL> </PRE></SMALL>
<P>商用サポート会社のリストは<a href="http://www.PostgreSQL.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</a>にあります。</P> <P>商用サポート会社のリストは<a href="http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html">http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html</a>にあります。</P>
<P> <P>
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
@ -353,21 +356,18 @@ UNIX
<H4><A NAME="1.7">1.7</A>) 最新版はどれですか</H4> <H4><A NAME="1.7">1.7</A>) 最新版はどれですか</H4>
<P> <P>
PostgreSQL の最新版はバージョン 7.2.3 です。</P> PostgreSQL の最新版はバージョン 7.3.2 です。</P>
<P> <P>
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。</P> 我々は、4カ月毎にメジャーリリースを行なうことを計画しています。</P>
<H4><A NAME="1.8">1.8</A>) どのような文書がありますか?</H4> <H4><A NAME="1.8">1.8</A>) どのような文書がありますか?</H4>
<P> 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。<I>/doc</I> ディレクトリをご覧下さい。また、マニュアルは、<A <P> 配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。<I>/doc</I> ディレクトリをご覧下さい。また、マニュアルは、<A HREF="http://www.ca.PostgreSQL.org/docs/">http://www.ca.PostgreSQL.org/docs/</A>でオンラインでも閲覧できます。</P>
HREF="http://www.PostgreSQL.org/users-lounge/docs/">
http://www.PostgreSQL.org/users-lounge/docs/</A>
でオンラインでも閲覧できます。</P>
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
SRAと日本ポストグレスユーザー会で翻訳され、 SRAと日本PostgreSQLユーザ会で翻訳され、
<A HREF="http://osb.sra.co.jp/PostgreSQL/Manual/">「PostgreSQL オフィシャルマニュアル」</A> <A HREF="http://osb.sra.co.jp/PostgreSQL/Manual/">「PostgreSQL オフィシャルマニュアル」</A>
として出版されています。 として出版されています。
] ]
@ -512,7 +512,7 @@ href="http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bu
<DT> <B>性能(Performance)</B></DT> <DT> <B>性能(Performance)</B></DT>
<DD> <DD>
PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ちます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上記の<I>Features</I>の節に示すような機能はまったくありません。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比較している面白い Web ページが<A href="http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A>にあります。 PostgreSQLは他の商用あるいはオープンソースのデータベースと互角の性能も持ちます。ある面ではより早かったり、ほかの面ではより遅かったりします。MySQLなどの特化型データベース・システムにくらべて、PostgreSQLの挿入更新が遅いのは、トランザクションによるオーバーヘッドがあるからです。もちろん、MySQLには上記の<I>Features</I>の節に示すような機能はまったくありません。我々は、PostgreSQLに柔軟性と機能性を組み込みながらも、絶えず、プロファイラーに掛けたりソースコードを解析したりして、性能の改善を続けています。PostgreSQL と MySQL とを比較している面白い Web ページが<A href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>にあります。
<BR> <BR>
PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせることができます。<BR> PostgreSQLは、Unixプロセスを起動することによりユーザー接続を操作します。複数のバックエンド・プロセスが情報をロックしながらデータ・バッファーを共有します。マルチCPUでは、簡単に複数のバックエンドをそれぞれのCPUで走らせることができます。<BR>
</DD> </DD>
@ -548,23 +548,25 @@ href="https://store.pgsql.com/shopping/">https://store.pgsql.com/shopping/</A>
<HR> <HR>
<P>さらに、もし、PostgreSQLでの成功例をお持ちであれば、ぜひ、われわれの事例サイト <a href="http://advocacy.postgresql.org">http://advocacy.postgresql.org</a>へお送りください。
<H2 align="center">ユーザー・クライアントの質問</H2> <H2 align="center">ユーザー・クライアントの質問</H2>
<P> <P>
<H4><A NAME="2.1">2.1</A>) PostgreSQL のための <SMALL>ODBC</SMALL> ドライバーはありますか? <H4><A NAME="2.1">2.1</A>) PostgreSQL のための <SMALL>ODBC</SMALL> ドライバーはありますか?
</H4> </H4>
<P> PsqlODBC と OpenLink <SMALL>ODBC</SMALL> の二つの <SMALL>ODBC</SMALL> ドライバーが利用可能です。 <P> PsqlODBC と OpenLink <SMALL>ODBC</SMALL> の二つの <SMALL>ODBC</SMALL> ドライバーが利用可能です。</P>
<P> PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は <P> PsqlODBC は次の場所からダウンロードできます。
<A HREF="ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A> <A href=
から取得できます。<P> "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>
</P>
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました: 最新版は井上博司さんのサイトにあります。
<A HREF="http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html">http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html</A>
現在、最新版は井上博司さんのサイトにあります。
<A HREF="http://w2422.nsk.ne.jp/~inoue/indexj.html">http://w2422.nsk.ne.jp/~inoue/indexj.html</A> <A HREF="http://w2422.nsk.ne.jp/~inoue/indexj.html">http://w2422.nsk.ne.jp/~inoue/indexj.html</A>
] ]
</PRE></SMALL> </PRE></SMALL>
@ -587,7 +589,7 @@ Programmer's Guide</A>
<P> データベースを裏に持つ Web ページについての素晴らしい紹介が、<BR> <P> データベースを裏に持つ Web ページについての素晴らしい紹介が、<BR>
<A href="http://www.webreview.com">http://www.webreview.com</A>にあります。</P> <A href="http://www.webreview.com">http://www.webreview.com</A>にあります。</P>
<P> Web への拡張のためには、PHP が卓越したインターフェスとなっています。<A HREF="http://www.php.net">http://www.php.net/</A>にあります。 <P> Web への拡張のためには、PHP が卓越したインターフェスとなっています。<A HREF="http://www.php.net">http://www.php.net/</A>にあります。
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
@ -596,19 +598,10 @@ Programmer's Guide</A>
あるいは、廣川 類さんのサイト あるいは、廣川 類さんのサイト
<A HREF="http://www.geocities.jp/rui_hirokawa/php/">http://www.geocities.jp/rui_hirokawa/php/</A> <A HREF="http://www.geocities.jp/rui_hirokawa/php/">http://www.geocities.jp/rui_hirokawa/php/</A>
にかなりまとめられています。 にかなりまとめられています。
前田 充宏さんにより作られた<A HREF="http://pg.cni.co.jp/">PHP/FIの日本語パッチ</A>が様々な人の手を経てPHP3.0.7に適用されました。
現在はPHPJ-DEVにて、
<A HREF="http://php.jpnnet.com/">http://php.jpnnet.com/</A>
佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。
塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール
<A HREF="ftp://night.fminn.nagano.nagano.jp/php4/">ftp://night.fminn.nagano.nagano.jp/php4/</A>
を用意して下さってます。
本家の方で国際化のMLも立ち上がっています。
PHP-4.2 からマルチバイト拡張文字列として採り入れられました。
] ]
</PRE></SMALL> </PRE></SMALL>
<P> 処理が複雑な場合、多くの人は Perl インターフェスと CGI.pm か mod_perl を使います。 <P> 処理が複雑な場合、多くの人は Perl インターフェイスと CGI.pm か mod_perl を使います。
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
@ -623,48 +616,55 @@ Programmer's Guide</A>
</PRE></SMALL> </PRE></SMALL>
<P> <P>
<H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェースはありますか? <H4><A NAME="2.3">2.3</A>) PostgreSQL にグラフィカル・ユーザインターフェイスはありますか?
レポートジェネレータや埋め込み問い合わせ言語インターフェースはありますか?
</H4> </H4>
<p>もちろん、PostgreSQL へのグラフィカルインターフェイスがいくつかあります。
その中にPgAccess <a
href="http://www.pgaccess.com">http://www.pgaccess.com</a>
も含まれます。
PgAdmin II (<a
href="http://www.pgadmin.org">http://www.pgadmin.org</a> Win32-only)もあります。
RHDB Admin (<a
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/
</a>)と Rekall (<a href="http://www.thekompany.com/products/rekall/">
http://www.thekompany.com/products/rekall/</a>, proprietary)もありま
す。
PHPPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/ </a>) はPostgreSQLへのWebベースの
インターフェイスを提供します。
<P> PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.pgaccess.org/">http://www.pgaccess.org/</A>です。 <P> PgAccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェスがあり、この配布と共に出荷されます。PgAccess にはレポート・ジェネレータもあります。Web ページは<A HREF="http://www.pgaccess.org/">http://www.pgaccess.org/</A>です。
<P> <I>ecpg</I> という C 言語のための埋め込み <SMALL>SQL</SMALL> 問い合わせ言語インターフェースもあります。 <P>より詳細なリストについては、<a
href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>
をご覧ください。</P>
<P> <P>
<H4><A NAME="2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか? <H4><A NAME="2.4">2.4</A>) どのような言語で PostgreSQL と通信できすか?
</H4> </H4>
<P>以下のものがあります: <P>人気のあるほとんどの言語はPostgreSQLへのインターフェイスを持っています。
あなたが使うプログラミング言語の拡張モジュールのリストを覗いてみてください。
</P>
<P>以下のインターフェイスはPostgreSQLの配布に含まれています。
<UL> <UL>
<LI>C (libpq, libpgeasy) <LI>C (libpq, libpgeasy)
<LI>C++ (libpq++)
<LI>埋め込みC (ecpg) <LI>埋め込みC (ecpg)
<LI>Java (jdbc) <LI>Java (jdbc)
<LI>Perl (DBD::Pg and perl5)
<LI>ODBC (odbc)
<LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>) <LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>)
<LI>TCL (libpgtcl) <LI>TCL (libpgtcl)
<LI>C Easy API (libpgeasy)
<LI>PHP ('pg_' 関数群、 Pear::DB)
</UL> </UL>
<P>その他の利用可能なインターフェースは <a <P>その他の利用可能なインターフェイスは <a
href="http://www.PostgreSQL.org/interfaces.html"> href="http://www.PostgreSQL.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html</a>
http://www.PostgreSQL.org/interfaces.html</A> および、
にあります。 <a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A>
<I>Drivers/Interfaces</I>のセクションにあります。
</P> </P>
<SMALL><PRE> <SMALL><PRE>
[訳注: [訳注:
<A HREF="http://www.ruby-lang.org/">ruby</A>の作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
<A HREF="http://www.postgresql.jp/interfaces/ruby/">http://www.postgresql.jp/interfaces/ruby/</A>
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
<A HREF="http://www.psn.co.jp/PostgreSQL/pgbash/">http://www.psn.co.jp/PostgreSQL/pgbash/</A>
Bashコマンドラインでpostgres に問い合わせできます。
Perl のモジュールは古くからある Pg と DBI ドライバの DBD::Pg とがあり、
いずれも Edmund Mergl 氏によるもので <A HREF="http://www.cpan.org/">CPAN サイト</A>にあります。
永安悟史さんは Palm 版の libpq を開発されました。 永安悟史さんは Palm 版の libpq を開発されました。
<a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a> <a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a>
] ]
@ -690,7 +690,8 @@ Programmer's Guide</A>
</H4> </H4>
<P> カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは、使っているアーキテクチャと<I>postmaster</I> を走らせるときに設定するバッファの数とバックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズのままで、少なくとも約1MBが必要です。 <P> カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは、使っているアーキテクチャと<I>postmaster</I> を走らせるときに設定するバッファの数とバックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズのままで、少なくとも約1MBが必要です。
PostgreSQL Administrator's Gide に共有メモリーとセマフォについての情報の詳細があります。</P> <A ref=http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html">PostgreSQL Administrator's Gide</a>に共有メモリーとセマフォについての情報の詳細がありますのでご覧ください。</P>
<P> <P>
<H4><A NAME="3.4">3.4</A>) <I>postmasterを</I>走らせようとすると、<I>IpcSemaphoreCreate</I> エラーが出ます。なぜですか? <H4><A NAME="3.4">3.4</A>) <I>postmasterを</I>走らせようとすると、<I>IpcSemaphoreCreate</I> エラーが出ます。なぜですか?
@ -780,13 +781,12 @@ PostgreSQL Administrator's Gide
PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、
システムのリソースを使い果してしまうことを避けるためです。 システムのリソースを使い果してしまうことを避けるためです。
<P>6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更するには、<I>include/storage/sinvaladt.h</I>の中のMaxBackendId定数を修正した後に再構築が必要でした。
<P> <P>
<H4><A NAME="3.9">3.9</A>) pgsql_tmp</I> ディレクトリの中には何がありますか? <H4><A NAME="3.9">3.9</A>) pgsql_tmp</I> ディレクトリの中には何がありますか?
</H4> </H4>
<P> 問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし <SMALL>ORDER BY</SMALL> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。 <P> 問い合わせ実行モジュールによって生成された一時的なファイルが、このディ
レクトリに含まれます。例えば、もし <SMALL>ORDER BY</SMALL> 句を満たすためにバックエンドの <I>-S</I> パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつかここに生成されます。
<P> <P>
一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドがクラッシュしてしまうとそうはなりません。<I>postmaster</I>の停止とリスタートでこれらのファイルはディレクトリから消しさられます。 一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドがクラッシュしてしまうとそうはなりません。<I>postmaster</I>の停止とリスタートでこれらのファイルはディレクトリから消しさられます。
@ -794,7 +794,7 @@ PostgreSQL
[訳注: [訳注:
SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog SYSLOGD 経由でログを出力するには、まず、configure を --enable-syslog
付きで走らせた後、コンパイルとインストールを行ないます。 付きで走らせた後、コンパイルとインストールを行ないます。
次に、syslog.conf に local0.* の 出力先を指定し(環境変数で変更可能)、 次に、syslog.conf に local?.* の 出力先を指定し(環境変数で変更可能)、
syslogd に HUP シグナルを送って初期化しておきます。そして、 syslogd に HUP シグナルを送って初期化しておきます。そして、
$PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S $PGDATA/pg_options に syslog=2 を加えて、 postmaster を -S
オプション付きにてサーバモードで起動します。(バージョン 7.1 からは オプション付きにてサーバモードで起動します。(バージョン 7.1 からは
@ -819,7 +819,7 @@ PostgreSQL
<P> 詳述は、オンラインマニュアルで <SMALL>DECLARE</SMALL> を見て下さい。 <P> 詳述は、オンラインマニュアルで <SMALL>DECLARE</SMALL> を見て下さい。
<P> <P>
<H4><A NAME="4.2">4.2</A>) 最初の数ロウのみを <SMALL>SELECT</SMALL> するにはどうしますか? <H4><A NAME="4.2">4.2</A>) 最初の数ロウのみを <SMALL>SELECT</SMALL>するにはどうしますか?ランダムな行?
</H4> </H4>
<P> オンラインマニュアルで<SMALL>FETCH</SMALL>を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。 <P> オンラインマニュアルで<SMALL>FETCH</SMALL>を見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。
@ -827,6 +827,14 @@ PostgreSQL
<P>たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはならないかもしれません。<SMALL>ORDER BY</SMALL> を持った問い合わせを使うことを考えてみて下さい。 <P>たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはならないかもしれません。<SMALL>ORDER BY</SMALL> を持った問い合わせを使うことを考えてみて下さい。
もし、<SMALL>ORDER BY</SMALL>に合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまですべてのロウを評価しなければならないかもしれません。 もし、<SMALL>ORDER BY</SMALL>に合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまですべてのロウを評価しなければならないかもしれません。
<P>ランダムな行を<SMALL>SELECT</SMALL>するには、次の文を使います:
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
<P> <P>
<H4><A NAME="4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか? <H4><A NAME="4.3">4.3</A>) テーブルやその他の情報のリストを <I>psql</I> で見るにはどうしますか?
</H4> </H4>
@ -837,11 +845,11 @@ PostgreSQL
<P> <P>
<H4><A NAME="4.4">4.4</A>) テーブルからカラムの削除はどのよしますか? <H4><A NAME="4.4">4.4</A>) テーブルからカラムの削除、あるいは、データ型を変更するにはどうしますか?
</H4> </H4>
<P> この機能は<SMALL>ALTER TABLE DROP COLUMN</SMALL> としてリリース7.3 <P> <SMALL>DROP COLUMN</SMALL>機能が<SMALL>ALTER TABLE DROP COLUMN</SMALL> としてリリース7.3
から加えられました。それまでのバージョンでは、その代わりにこうします: 加えられました。それまでのバージョンでは、その代わりにこうします:
<PRE> <PRE>
BEGIN; BEGIN;
@ -854,8 +862,17 @@ PostgreSQL
COMMIT; COMMIT;
</PRE> </PRE>
[訳注:カラムの追加は ALTER TABLE ADD COLUMN で行えます。] <P>カラムのデータタイプは次の文で変えられます:
<PRE>
BEGIN;
ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
</PRE>
<P>これを行なったときは、抹消された行が使っているディスク空間を回収するために<I>VACUUM FULL tab</I>をしたほうが良いかもしれません。
<P> <P>
<H4><A NAME="4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは? <H4><A NAME="4.5">4.5</A>) ロウ、テーブル、データベースの最大サイズは?
@ -863,7 +880,7 @@ PostgreSQL
<P> 制限は以下のとおりです。 <P> 制限は以下のとおりです。
<PRE> <PRE>
データベースの最大サイズ? 制限無し (1 TB のデータベースも存在します) データベースの最大サイズ? 制限無し (4 TB のデータベースも存在します)
テーブルの最大サイズ? 16TB テーブルの最大サイズ? 16TB
ロウの最大サイズ? 1.6TB ロウの最大サイズ? 1.6TB
フィールドの最大サイズ? 1GB フィールドの最大サイズ? 1GB
@ -955,13 +972,15 @@ ORDER BY
LIMIT 1; LIMIT 1;
</PRE> </PRE>
<P>もし、オプティマイザが間違ってシーケンシャルスキャンを選択したことに疑いがなければ、<CODE>SET enable_seqscan TO 'off'</CODE>を使ってインデクススキャンでまちがいなく速くなっているかをテストをしてみてください。</P>
<P> <SMALL>LIKE</SMALL> あるいは <I>~</I> のようなワイルドカード演算 <P> <SMALL>LIKE</SMALL> あるいは <I>~</I> のようなワイルドカード演算
子は特別な環境でしか使えません: 子は特別な環境でしか使えません:
<UL> <UL>
<LI>検索文字列が文字列の最初にききます。たとえば:</LI> <LI>検索文字列が文字列の最初にききます。たとえば:</LI>
<UL> <UL>
<LI><SMALL>LIKE</SMALL> パターンが<I>%.</I>で始まらない</LI> <LI><SMALL>LIKE</SMALL> パターンが<I>%</I>で始まらない</LI>
<LI><I>~</I> (正規表現) パターンは<I>^.</I>で始まらなければならない</LI> <LI><I>~</I> (正規表現) パターンは<I>^</I>で始まらなければならない</LI>
</UL> </UL>
<LI>検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。</LI> <LI>検索文字列を文字クラスから始めることはできません。たとえば、[a-e]。</LI>
<LI><SMALL>ILIKE</SMALL><I>~*</I> のような大文字と小文字を区別し <LI><SMALL>ILIKE</SMALL><I>~*</I> のような大文字と小文字を区別し
@ -1067,8 +1086,8 @@ Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
<PRE> <PRE>
Type Internal Name Notes Type Internal Name Notes
-------------------------------------------------- --------------------------------------------------
"char" char 1 character
CHAR(n) bpchar 指定された固定長となるように空白が詰められる CHAR(n) bpchar 指定された固定長となるように空白が詰められる
"char" char 1文字
VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し VARCHAR(n) varchar 最大長のサイズを指定する、詰め物無し
TEXT text 長さに上限の無いテキスト TEXT text 長さに上限の無いテキスト
BYTEA bytea 可変長のバイト配列(null-byte safe) BYTEA bytea 可変長のバイト配列(null-byte safe)
@ -1077,15 +1096,9 @@ BYTEA bytea
<P> 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。 <P> 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。
<P> 上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<SMALL>TOAST</SMALL>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。 <P> 上記の型のうち最初の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型は<SMALL>TOAST</SMALL>により圧縮されたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなります。
<P><SMALL>CHAR(n)</SMALL>はいつも長さが同じ文字列を保存するのに最適で
す。<SMALL>VARCHAR(n)</SMALL> は可変長の文字列を保存するのに最適ですが、
保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限
の無い文字列の保存ためのもので、最大1ギガバイトです。
<SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナ
リデータを保存するためのものです。</P>
<P><SMALL>VARCHAR(n)</SMALL> は可変長の文字列を保存するのに最適ですが、保存できる文字列の長さに制限があります。<SMALL>TEXT</SMALL> は長さに制限の無い文字列の保存ためのもので、最大で 1ギガバイトです。 <SMALL>CHAR(n)</SMALL>は、<SMALL>VARCHAR(n)</SMALL>が与えられた文字だけを保存するのに対し、ブランクを詰め込んでいつも同じ長さで文字列を保存するのに最適です。<SMALL>BYTEA</SMALL>は、部分的に<SMALL>NULL</SMALL> のバイトを含むバイナリデータを保存するためのものです。これらのタイプは同じくらいの性能特性ををもちます。</P>
<P> <P>
<H4><A NAME="4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか? <H4><A NAME="4.15.1">4.15.1</A>) 通番(serial)/自動増分フィールドはどのようにつくりますか?
@ -1107,9 +1120,15 @@ BYTEA bytea
name TEXT name TEXT
); );
CREATE UNIQUE INDEX person_id_key ON person ( id ); CREATE UNIQUE INDEX person_id_key ON person ( id );
[訳注:
CREATE UNIQUE INDEX person_id_key ON person ( id );
は、 7.3 からは自動的には行なわれなくなりました。
]
</PRE> </PRE>
通番についてのもっと詳しい情報は、オンラインマニュアルで <I>create_sequence</I> をご覧下さい。 通番についてのもっと詳しい情報は、オンラインマニュアルで <I>create_sequence</I> をご覧下さい。
<P> また、各ロウの<I>OID</I>フィールドを一意値として使うこともできます。しかしながら、もしもデータベースをダンプしてりロードする必要がある場合は、<SMALL>OID</SMALL>を温存するために<I>pg_dump</I><I>-o</I>オプションを使うか、または、<SMALL>COPY WITH OIDS</I>オプションを使う必要があります。 <P> また、各ロウの<I>OID</I>フィールドを一意値として使うこともできます。しかしながら、もしもデータベースをダンプしてりロードする必要がある場合は、<SMALL>OID</SMALL>を温存するために<I>pg_dump</I><I>-o</I>オプションを使うか、または、<SMALL>COPY WITH OIDS</small>オプションを使う必要があります。
Bruce Momjian の<A HREF="http://www.PostgreSQL.org/docs/aw_pgsql_book">(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows</A>の章にありあます。 Bruce Momjian の<A HREF="http://www.PostgreSQL.org/docs/aw_pgsql_book">(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rows</A>の章にありあます。
@ -1142,14 +1161,10 @@ BYTEA bytea
<P>それはありません。<I>currval()</I> は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現在の値を返します。 <P>それはありません。<I>currval()</I> は、すべてのユーザではありませんが、あなたのバックエンドに与えられた現在の値を返します。
<H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもうい <H4><A name="4.15.4">4.15.4</A>) トランザクションが中断したときにもういちどシーケンス番号が使われないのはなぜですかシーケンスSERIALカラムに空きがあるのはなぜですか
ちどシーケンス番号が使われないのはなぜですかシーケンスSERIALカラムに
空きがあるのはなぜですか?
</H4> </H4>
<P>同時性を改善するために、実行中のトランザクションに、必要でト <P>同時性を改善するために、実行中のトランザクションに、必要でトランザクションが終了するまでロックされないシーケンス値を与えています。このためトランザクションが中断されると番号割り当てにギャップを生じます。
ランザクションが終了するまでロックされないシーケンス値を与えています。
このためトランザクションが中断されると番号割り当てにギャップを生じます。
</P> </P>
<P> <P>
@ -1231,7 +1246,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo
<P>現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンドルを閉じることにより、<I>lo_open</I>コマンドが完了した直後に強制的にルールを実行します。このため、最初にハンドルに対して何かをしようとすると、<I>invalid large obj descriptor(ラージ・オブジェクトの記述子が不正)</I>となります。それで、もし、トランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラーメッセージを出すのです。 <P>現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンドルを閉じることにより、<I>lo_open</I>コマンドが完了した直後に強制的にルールを実行します。このため、最初にハンドルに対して何かをしようとすると、<I>invalid large obj descriptor(ラージ・オブジェクトの記述子が不正)</I>となります。それで、もし、トランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラーメッセージを出すのです。
<P>もし、<SMALL>ODBC</SMALL>のようなクライアントインターフェスをお使いなら、<tt>auto-commit off</tt>を設定する必要があるかもしれません。 <P>もし、<SMALL>ODBC</SMALL>のようなクライアントインターフェスをお使いなら、<tt>auto-commit off</tt>を設定する必要があるかもしれません。
<P> <P>
@ -1247,10 +1262,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo
<H4><A NAME="4.22">4.22</A>) なぜ、<SMALL>IN</SMALL>を使う副問い合わせがとても遅いのですか? <H4><A NAME="4.22">4.22</A>) なぜ、<SMALL>IN</SMALL>を使う副問い合わせがとても遅いのですか?
</H4> </H4>
<P> <P>
現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンす 現在、外部問い合わせの各ロウについて副問い合わせの結果を順番にスキャンすることにより、副問い合わせを外部問い合わせに結合しています。もし、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、当面は<CODE>IN</CODE><CODE>EXISTS</CODE>で置き換えることです:
ることにより、副問い合わせを外部問い合わせに結合しています。
もし、副問い合わせが数行しか返さず、外部問い合わせが沢山の行を返すなら、
当面は<CODE>IN</CODE><CODE>EXISTS</CODE>で置き換えることです:
<PRE> <PRE>
SELECT * SELECT *
FROM tab FROM tab
@ -1264,7 +1276,7 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo
</PRE> </PRE>
とします。 とします。
これが手っ取り早いですが、<CODE>subcol</CODE>は索引付きカラムであるべきです。 これが手っ取り早いですが、<CODE>subcol</CODE>は索引付きカラムであるべきです。
の制限は将来のリリースで直したいと思っています。 こで示した問題は7.4で修正されます。
<P> <P>
<H4><A NAME="4.23">4.23</A>) <i>外部</i>結合(<i>outer</i> join)はどのように実現しますか?<BR></H4> <H4><A NAME="4.23">4.23</A>) <i>外部</i>結合(<i>outer</i> join)はどのように実現しますか?<BR></H4>
@ -1303,16 +1315,14 @@ PostgreSQL
<P> <P>
現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありません。 現行のデータベース以外への問い合わせ方法はありません。というのもPostgreSQLがデータベース仕様のシステムカタログを読み込むためで、そこには、たとえそのふりをするだけにしろ、データベースを越えて問い合わせをするすべがありません。
<P> <P>
<I>/contrib/dblink</I> はデータベース間(cross-database)の問い合わせを関数呼出しにより許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくてはならず、結果をクライアント側でマージしなくてはなりません。</P> <I>contrib/dblink</I> はデータベース間(cross-database)の問い合わせを関数呼出しにより許します。もちろん、クライアントは同時に接続を別のデータベースへも張らなくてはならず、結果をクライアント側でマージしなくてはなりません。</P>
<P> <P>
<H4><A NAME="4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<BR></H4> <H4><A NAME="4.25">4.25</A>) 関数で複数のロウまたはカラムを返すにはどうしますか?<BR></H4>
<P>もし、PL/pgSQL 関数で<i>refcursors</i>を使うと結果の組を返すことができます。<A <P>7.3では関数から、複数行のや複数カラムを簡単に返せます。
href="http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html"> <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</A>
23.7.3.3 節をご覧下さい。</P>
<P> <P>
@ -1334,28 +1344,26 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>
にて作業が進められています。 にて作業が進められています。
</P> </P>
<SMALL><PRE>
[訳注 [訳注
JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相 JPUG 分散トランザクション開発分科会では、永安悟史さんを中心に2相
コミットの実装を行なっています。 コミットの実装を行なっています。
<A href="http://www.postgresql.jp/subcommittee/dt/index.html">http://www.postgresql.jp/subcommittee/dt/index.html</A> http://www.postgresql.jp/subcommittee/dt/index.html
<A href="http://www.snaga.org/jpug-dt/">http://www.snaga.org/jpug-dt/</A> http://www.snaga.org/jpug-dt/
三谷篤さんによる双方向リプリケーションPGReplicate 三谷篤さんによる双方向リプリケーションPGReplicate
<A href="http://www.csra.co.jp/~mitani/jpug/pgreplicate/">http://www.csra.co.jp/~mitani/jpug/pgreplicate/</A> http://www.csra.co.jp/~mitani/jpug/pgreplicate/
] ]
</PRE></SMALL>
<H4><A name="4.28">4.28</A>) どのような暗号化オプションを利用できますか? <H4><A name="4.28">4.28</A>) どのような暗号化オプションを利用できますか?
</H4> </H4>
<UL> <UL>
<LI><I>/contrib/pgcrypto</I> <LI><I>contrib/pgcrypto</I>
<SMALL>SQL</SMALL>問い合わせの中で使うための沢山の暗号化を含みます。 <SMALL>SQL</SMALL>問い合わせの中で使うための沢山の暗号化を含みます。
</LI> </LI>
<LI> <LI>
クライアントからサーバーへの転送をを暗号化する唯一の方法は<I>pg_hba.conf</I>の中で<I>hostssl</I>を使うことによります。 クライアントからサーバーへの転送をを暗号化する唯一の方法は<I>pg_hba.conf</I>の中で<I>hostssl</I>を使うことによります。
</LI> </LI>
<LI>バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗号化されます。 それより前のバージョンでは<i>postgresql.conf</i>中で<i>PASSWORD_ENCRYPTION</i>を有効にする必要があります。 <LI>バージョン7.3 ではデータベースユーザのパスワードは保存される時に自動的に暗号化されます。 それより前のバージョンでは<I>postgresql.conf</I>中で<I>PASSWORD_ENCRYPTION</I>を有効にする必要があります。
</LI> </LI>
<LI></LI>サーバーは暗号化ファイルシステムを使って走ることもできます。 <LI></LI>サーバーは暗号化ファイルシステムを使って走ることもできます。
</UL> </UL>
@ -1382,7 +1390,8 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>
<H4><A NAME="5.3">5.3</A>) タプルを返す C言語の関数はどのように書きますか <H4><A NAME="5.3">5.3</A>) タプルを返す C言語の関数はどのように書きますか
</H4> </H4>
<P> 原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰もやったことがありません。 <P>バージョン7.3以降のPostgreSQLでは、テーブルを返す関数を C, PL/PgSQL、そして SQL にて完全にサポートします。詳しくはプログラマガイドの情報を見てください。Cで定義された表を返す関数の例題が<I>contrib/tablefunc</I>の中にあります。
<P><H4><A NAME="5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか? <P><H4><A NAME="5.4">5.4</A>) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?
</H4> </H4>
@ -1396,8 +1405,8 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>
[訳注: [訳注:
日本語版の製作については以下の通りです。 日本語版の製作については以下の通りです。
最終更新日: 2002年10月18 最終更新日: 2003年06月30
翻訳者: 桑村 潤 (<A HREF="mailto:juk@PostgreSQL.jp">Jun Kuwamura &lt;juk@PostgreSQL.jp&gt;</A>) 翻訳者: 桑村 潤 (<A HREF="mailto:juk at PostgreSQL.jp">Jun Kuwamura &lt;juk at PostgreSQL.jp&gt;</A>)
このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます): このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
@ -1414,21 +1423,19 @@ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>
本田 茂広(<A HREF="mailto:fwif0083 at mb.infoweb.ne.jp">Shigehiro HONDA &lt;fwif0083 at mb.infoweb.ne.jp&gt;</A>) 本田 茂広(<A HREF="mailto:fwif0083 at mb.infoweb.ne.jp">Shigehiro HONDA &lt;fwif0083 at mb.infoweb.ne.jp&gt;</A>)
せせ じゅん(<A HREF="mailto:sesejun at linet.gr.jp">Jun SESE &lt;sesejun at linet.gr.jp&gt;</A>) せせ じゅん(<A HREF="mailto:sesejun at linet.gr.jp">Jun SESE &lt;sesejun at linet.gr.jp&gt;</A>)
神谷 英孝(<A HREF="mailto:hkamiya at catvmics.ne.jp">Hidetaka KAMIYA &lt;hkamiya at catvmics.ne.jp&gt;</A>) 神谷 英孝(<A HREF="mailto:hkamiya at catvmics.ne.jp">Hidetaka KAMIYA &lt;hkamiya at catvmics.ne.jp&gt;</A>)
菅原 敦(<A HREF="mailto:asugawar at f3.dion.ne.jp"> 菅原 敦(<A HREF="mailto:asugawar at f3.dion.ne.jp">Atsushi SUGAWARA &lt;asugawar at f3.dion.ne.jp&gt;</A>)
Atsushi SUGAWARA &lt;asugawar at f3.dion.ne.jp&gt;</A>) 稲葉 香理(<A HREF="mailto:i-kaori at sra.co.jp">Kaori Inaba &lt;i-kaori at sra.co.jp&gt;</A>)
をはじめ、ポストグレスに関する話題豊富な<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html">日本語ポストグレス・メーリングリスト</A> をはじめ、ポストグレスに関する話題豊富な<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html">日本語ポストグレス・メーリングリスト</A>
和訳のきっかけを作ってくれた <A HREF="http://jf.linux.or.jp/">JF(Linux Japanese FAQ Mailing List)プロジェクト</A>、その他、 和訳のきっかけを作ってくれた <A HREF="http://jf.linux.or.jp/">JF(Linux Japanese FAQ Mailing List)プロジェクト</A>、その他、
直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの 直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの皆さんに感謝します。
皆さんに感謝します。
日本語版のこの文書は、以下からもたどれます。 日本語版のこの文書は、以下からもたどれます。
<A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>(FAQ和訳 PostgreSQL についてよくある質問) <A HREF="http://www.rccm.co.jp/~juk/pgsql/">http://www.rccm.co.jp/~juk/pgsql/</A>(FAQ和訳 PostgreSQL についてよくある質問)
<A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A>JPUG文書・書籍関連分科会 <A HREF="http://www.PostgreSQL.jp/subcommittee/jpugdoc/">http://www.PostgreSQL.jp/subcommittee/jpugdoc/</A>JPUG文書・書籍関連分科会
<A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>Linux JFプロジェクト <A HREF="http://www.linux.or.jp/JF/">http://www.linux.or.jp/JF/</A>Linux JFプロジェクト
<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/">http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/</A>
なお、この和訳に関するご意見は(<A HREF="mailto:juk@PostgreSQL.jp">juk@PostgreSQL.jp</A>)までお寄せ下さい。 なお、この和訳に関するご意見は(<A HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)までお寄せ下さい。
] ]
</PRE></SMALL> </PRE></SMALL>

View File

@ -13,7 +13,7 @@
alink="#0000ff"> alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
<P>Дата последнего обновления: Четверг 13 Февраля 23:07:35 EDT 2002</P> <P>Дата последнего обновления: Пятница 30 Мая 22:24:56 EDT 2003</P>
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -22,12 +22,11 @@
"mailto:pgman@candle.pha.pa.us">victor_v@permonline.ru</A>)<BR> "mailto:pgman@candle.pha.pa.us">victor_v@permonline.ru</A>)<BR>
</P> </P>
<P>Самую свежую английскую версию документа можно найти на <A <P>Самую свежую английскую версию документа можно найти на
href= <A href="http://www.postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
"http://www.postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P>
<P>Ответы на вопросы специфичные для конкретных платформ можно найти на <A href= <P>Ответы на вопросы специфичные для конкретных платформ можно найти на
"http://www.postgresql.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html</A>.</P> <A href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
<HR> <HR>
<H2 align="center">Общие вопросы</H2> <H2 align="center">Общие вопросы</H2>
@ -44,7 +43,7 @@
<A href="#1.10">1.10</A>) Как научиться <SMALL>SQL</SMALL>?<BR> <A href="#1.10">1.10</A>) Как научиться <SMALL>SQL</SMALL>?<BR>
<A href="#1.11">1.11</A>) Решена ли в PostgreSQL проблема 2000-го года (Y2K)?<BR> <A href="#1.11">1.11</A>) Решена ли в PostgreSQL проблема 2000-го года (Y2K)?<BR>
<A href="#1.12">1.12</A>) Как присоединится к команде разработчиков?<BR> <A href="#1.12">1.12</A>) Как присоединится к команде разработчиков?<BR>
<A href="#1.13">1.13</A>) Как отравить сообщение об ошибке?<BR> <A href="#1.13">1.13</A>) Как отправить сообщение об ошибке?<BR>
<A href="#1.14">1.14</A>) Как сравнивать PostgreSQL с другими <A href="#1.14">1.14</A>) Как сравнивать PostgreSQL с другими
<SMALL>СУБД</SMALL>?<BR> <SMALL>СУБД</SMALL>?<BR>
<A href="#1.15">1.15</A>) Как оказать финансовую помощь PostgreSQL?<BR> <A href="#1.15">1.15</A>) Как оказать финансовую помощь PostgreSQL?<BR>
@ -86,10 +85,11 @@
<A href="#4.1">4.1</A>) В чем отличие между бинарным и нормальным <A href="#4.1">4.1</A>) В чем отличие между бинарным и нормальным
курсором?<BR> курсором?<BR>
<A href="#4.2">4.2</A>) Как выполнить <SMALL>SELECT</SMALL> только <A href="#4.2">4.2</A>) Как выполнить <SMALL>SELECT</SMALL> только
для нескольких первых строчек запроса?<BR> для нескольких первых строчек запроса? Для произвольной строки?<BR>
<A href="#4.3">4.3</A>) Как получить список таблиц или других <A href="#4.3">4.3</A>) Как получить список таблиц или других
компонентов в <I>psql</I>?<BR> компонентов в <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) Как удалить колонку из таблицы?<BR> <A href="#4.4">4.4</A>) Как удалить колонку из таблицы или изменить
её тип данных?<BR>
<A href="#4.5">4.5</A>) Каковы максимальные размеры для записей, <A href="#4.5">4.5</A>) Каковы максимальные размеры для записей,
таблиц и базы данных?<BR> таблиц и базы данных?<BR>
<A href="#4.6">4.6</A>) Как много дискового пространства в базе данных <A href="#4.6">4.6</A>) Как много дискового пространства в базе данных
@ -247,13 +247,18 @@
<P><STRONG>Сервер</STRONG></P> <P><STRONG>Сервер</STRONG></P>
<P>Сервер БД может быть запущен на Windows NT и Win2k, используя <P>Сервер БД может быть запущен на Windows NT и Win2k, используя
библиотеку Cygwin, разработанную для переноса программного обеспечения Unix библиотеку Cygwin, разработанную компанией Cygnus для переноса программного
в NT. Смотрите <I>pgsql/doc/FAQ_MSWIN</I> в дистрибутиве или обеспечения Unix в NT. Смотрите <I>pgsql/doc/FAQ_MSWIN</I> в дистрибутиве
MS Windows FAQ на <A href="http://www.postgresql.org/docs/faq-mswin.html"> или MS Windows FAQ на <A href="http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">
http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P> http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
<P>PostgreSQL, спортированный специально для MS Win NT/2000/XP в <P>PostgreSQL, спортированный специально для MS Win NT/2000/XP в
настоящий момент начал работать.</P> настоящий момент начал работать. Подробности текущего состояния PostgreSQL
для Windows смотрите на <a href="http://techdocs.postgresql.org/guides/Windows">
http://techdocs.postgresql.org/guides/Windows</a>.</P>
<P>Также существует версия спортированная под Novell Netware 6 на
<a href="http://forge.novell.com/">http://forge.novell.com</a>.</P>
<H4><A name="1.5">1.5</A>) Где можно взять PostgreSQL?</H4> <H4><A name="1.5">1.5</A>) Где можно взять PostgreSQL?</H4>
@ -313,17 +318,16 @@
<A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A> <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
</BLOCKQUOTE> </BLOCKQUOTE>
<P>Еще существует IRC канал на EFNet, с названием <P>Еще существует IRC канал на EFNet и OpenProjects, с названием
<I>#PostgreSQL</I>. Я использую для подключения к этому каналу команду Unix <I>#PostgreSQL</I>. Я использую для подключения к этому каналу команду Unix
<CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P> <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
<P>Список коммерческой поддержки компаний доступен на <P>Список коммерческой поддержки компаний доступен на
<A href= <A href="http://www.ca.postgresql.org/users-lounge/commercial-support.html">http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P>
"http://www.postgresql.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P>
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
<P>Последний выпуск PostgreSQL - это версия 7.3.1.</P> <P>Последний выпуск PostgreSQL - это версия 7.3.2.</P>
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P> <P>Мы планируем выпускать новые версии каждые четыре месяца.</P>
@ -332,8 +336,8 @@
<P>В дистрибутив включаются различные руководства, страницы <P>В дистрибутив включаются различные руководства, страницы
электронного руководства man и некоторые маленькие тестовые примеры. электронного руководства man и некоторые маленькие тестовые примеры.
Смотрите в каталог <I>/doc</I>. Вы также можете просматривать Смотрите в каталог <I>/doc</I>. Вы также можете просматривать
документацию в Интернет по адресу <A href= документацию в Интернет по адресу
"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</A>.</P> <A href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
<P>Существует две книги по PostgreSQL доступные по адресам <A href= <P>Существует две книги по PostgreSQL доступные по адресам <A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
@ -354,7 +358,7 @@
<P>PostgreSQL поддерживает расширенный подкласс <SMALL>SQL</SMALL>-92. <P>PostgreSQL поддерживает расширенный подкласс <SMALL>SQL</SMALL>-92.
Смотрите наш список <A href="http://developer.postgresql.org/todo.php">TODO</A> Смотрите наш список <A href="http://developer.postgresql.org/todo.php">TODO</A>
на предмет известных ошибок, отсутствующих особенностях и будущих на предмет известных ошибок, отсутствующих возможностей и будущих
планов.</P> планов.</P>
<H4><A name="1.10">1.10</A>) Как мне научиться <SMALL>SQL</SMALL>?</H4> <H4><A name="1.10">1.10</A>) Как мне научиться <SMALL>SQL</SMALL>?</H4>
@ -384,7 +388,7 @@
<H4><A name="1.11">1.11</A>) Решена ли в PostgreSQL проблема 2000-го года (Y2K)?</H4> <H4><A name="1.11">1.11</A>) Решена ли в PostgreSQL проблема 2000-го года (Y2K)?</H4>
<P>Да, мы легко манипулируем датами после 2000 года и перед 2000 годом.</P> <P>Да, мы легко работаем с датами после 2000 года и перед 2000 годом.</P>
<H4><A name="1.12">1.12</A>) Как присоединится к команде разработчиков?</H4> <H4><A name="1.12">1.12</A>) Как присоединится к команде разработчиков?</H4>
@ -401,7 +405,7 @@
превилегии вносить изменения, и мы уверены, что те исправления, которые превилегии вносить изменения, и мы уверены, что те исправления, которые
они внесут будут высокого качества.</P> они внесут будут высокого качества.</P>
<H4><A name="1.13">1.13</A>) Как отравить сообщение об ошибке??</H4> <H4><A name="1.13">1.13</A>) Как отправить сообщение об ошибке??</H4>
<P>Пожалуйста посетите страничку PostgreSQL BugTool на <A href= <P>Пожалуйста посетите страничку PostgreSQL BugTool на <A href=
"http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, "http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>,
@ -558,7 +562,7 @@
http://www.thekompany.com/products/rekall/</A>, коммерческий). Также есть http://www.thekompany.com/products/rekall/</A>, коммерческий). Также есть
PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/"> PHPPgAdmin (<A href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/</A>) - интерфейс к PostgreSQL, основанный http://phppgadmin.sourceforge.net/</A>) - интерфейс к PostgreSQL, основанный
на Web.</p> на Web.</P>
<H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с PostgreSQL?</H4> <H4><A name="2.4">2.4</A>) Какие языки могут взаимодействовать с PostgreSQL?</H4>
@ -611,7 +615,7 @@
с количеством буферов и процессов по умолчанию, необходимый минимум - с количеством буферов и процессов по умолчанию, необходимый минимум -
это около 1 мегабайта. Подробности о разделяемой памяти и семафорах это около 1 мегабайта. Подробности о разделяемой памяти и семафорах
смотрите в <A href= смотрите в <A href=
"http://www.postgresql.org/idocs/index.php?kernel-resources.html">Руководстве "http://www.postgresql.org/docs/viev.php?version=current&amp;idoc=1&amp;file=kernel-resources.html">Руководстве
администратора PostgreSQL</A>.</P> администратора PostgreSQL</A>.</P>
<H4><A name="3.4">3.4</A>) Когда я пытаюсь запустить <I>postmaster</I>, я <H4><A name="3.4">3.4</A>) Когда я пытаюсь запустить <I>postmaster</I>, я
@ -808,7 +812,7 @@
<SMALL>DECLARE</SMALL>.</P> <SMALL>DECLARE</SMALL>.</P>
<H4><A name="4.2">4.2</A>) Как выполнить <SMALL>SELECT</SMALL> только <H4><A name="4.2">4.2</A>) Как выполнить <SMALL>SELECT</SMALL> только
для нескольких первых строчек запроса?</H4> для нескольких первых строчек запроса? Произвольной строки?</H4>
<P>Смотрите станицу руководства посвященную <SMALL>FETCH</SMALL> <P>Смотрите станицу руководства посвященную <SMALL>FETCH</SMALL>
или используйте <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P> или используйте <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
@ -820,6 +824,14 @@
выдать только несколько первых запрошенных записей или может выдать только несколько первых запрошенных записей или может
выполнять запрос пока не будут выданы желаемые записи.</P> выполнять запрос пока не будут выданы желаемые записи.</P>
<p>To <small>SELECT</small> a random row, use:
</p><pre> SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</pre>
</p>
<H4><A name="4.3">4.3</A>) Как получить список таблиц или других <H4><A name="4.3">4.3</A>) Как получить список таблиц или других
компонентов в <I>psql</I>?</H4> компонентов в <I>psql</I>?</H4>
@ -831,10 +843,11 @@
запросы, которые она использует для выполнения заданных вами запросы, которые она использует для выполнения заданных вами
команд.</P> команд.</P>
<H4><A name="4.4">4.4</A>) Как удалить колонку из таблицы?</H4> <H4><A name="4.4">4.4</A>) Как удалить колонку из таблицы или
изменить ёё тип данных?</H4>
<P>Эта функциональность была добавлена в выпуск 7.3 с оператором <P><small>DROP COLUMN</small> функциональность была добавлена в выпуск
<small>ALTER TABLE DROP COLUMN</small>. В ранних версиях, 7.3 с оператором <small>ALTER TABLE DROP COLUMN</small>. В ранних версиях,
можно сделать так:</P> можно сделать так:</P>
<PRE> <PRE>
BEGIN; BEGIN;
@ -847,12 +860,21 @@
COMMIT; COMMIT;
</PRE> </PRE>
<P>Для изменения типа данных колонки, сделайте так:</P>
<PRE>
BEGIN;
ALTER TABLE tab ADD COLUMN new_col <i>new_data_type</i>;
UPDATE tab SET new_col = CAST(old_col AS <i>new_data_type</i>);
ALTER TABLE DROP COLUMN old_col;
COMMIT;
</PRE>
<H4><A name="4.5">4.5</A>) Каковы максимальные размеры для записей, <H4><A name="4.5">4.5</A>) Каковы максимальные размеры для записей,
таблиц и базы данных?</H4> таблиц и базы данных?</H4>
<P>Существуют следующие ограничения:</P> <P>Существуют следующие ограничения:</P>
<PRE> <PRE>
Максимальный размер базы? неограничен (существуют базы на 1 TB) Максимальный размер базы? неограничен (существуют базы на 4 TB)
Максимальный размер таблицы? 16 TB Максимальный размер таблицы? 16 TB
Максимальный размер записи? 1.6 TB Максимальный размер записи? 1.6 TB
Максимальный размер поля? 1 GB Максимальный размер поля? 1 GB
@ -1058,14 +1080,14 @@
VARCHAR(n) varchar размер задает максимальную длину, нет заполнения VARCHAR(n) varchar размер задает максимальную длину, нет заполнения
CHAR(n) bpchar заполняется пустотой до фиксированной длины CHAR(n) bpchar заполняется пустотой до фиксированной длины
TEXT text нет задаваемого верхнего ограничения или длины TEXT text нет задаваемого верхнего ограничения или длины
"char" char один символ
BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски) BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски)
"char" char один символ
</PRE> </PRE>
<P>Внутреннее имя вы можете увидеть, когда смотрите системные каталоги <P>Внутреннее имя вы можете увидеть, когда смотрите системные каталоги
и в некоторых сообщениях об ошибках.</P> и в некоторых сообщениях об ошибках.</P>
<P>Последние четыре типа являются "varlena" типами (т.е., первые <P>Первые четыре типа являются "varlena" типами (т.е., первые
четыре байта на диске являются длинной, за которой следуют данные). четыре байта на диске являются длинной, за которой следуют данные).
Таким образом, фактически используемое пространство больше, чем Таким образом, фактически используемое пространство больше, чем
обозначенный размер. Однако, эти типы данных также поддаются сжатию обозначенный размер. Однако, эти типы данных также поддаются сжатию
@ -1082,8 +1104,8 @@ BYTEA bytea
пустотой до заданной длины, в то время как <SMALL>VARCHAR(n)</SMALL> пустотой до заданной длины, в то время как <SMALL>VARCHAR(n)</SMALL>
хранит только символы, из которых состоит строка. хранит только символы, из которых состоит строка.
<SMALL>BYTEA</SMALL> используется для хранения бинарных данных, значения <SMALL>BYTEA</SMALL> используется для хранения бинарных данных, значения
которых могут включать <SMALL>NULL</SMALL> байты. Эти типы имеют сходные которых могут включать <SMALL>NULL</SMALL> байты. Все типы описанные
характеристики производительности.</P> здесь, имеют сходные характеристики производительности.</P>
<H4><A name="4.15.1">4.15.1</A>) Как мне создать поле <H4><A name="4.15.1">4.15.1</A>) Как мне создать поле
serial/с-авто-увеличением?</H4> serial/с-авто-увеличением?</H4>
@ -1379,11 +1401,10 @@ BYTEA bytea
<H4><A name="4.25">4.25</A>) Как мне вернуть из функции несколько записей?</H4> <H4><A name="4.25">4.25</A>) Как мне вернуть из функции несколько записей?</H4>
<P>Вы можете возвращать из функций PL/pgSQL списки результатов, используя <P>В версии 7.3, вы можете легко вернуть несколько записей или колонок из
<i>refcursors</i>. Смотрите <A какой-либо функции,
href="http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html"> <href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</a>, http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
секцию 23.7.3.3.</P>
<H4><A name="4.26">4.26</A>) Почему я не могу надежно создавать/удалять <H4><A name="4.26">4.26</A>) Почему я не могу надежно создавать/удалять
временные таблицы в функциях PL/PgSQL?</H4> временные таблицы в функциях PL/PgSQL?</H4>