1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-09 18:21:05 +03:00

Brand 7.4.2. Release notes still need work.

This commit is contained in:
Bruce Momjian 2004-03-05 19:57:22 +00:00
parent aeda110cb9
commit 49bc9c45c9
16 changed files with 714 additions and 477 deletions

@ -180,7 +180,7 @@ Substitute your paths appropriately.
need to do this. need to do this.
To make the backup, you can use the "pg_dumpall" command from the version To make the backup, you can use the "pg_dumpall" command from the version
you are currently running. For best results, however, try to use the you are currently running. For best results, however, try to use the
"pg_dumpall" command from PostgreSQL 7.4.1, since this version contains "pg_dumpall" command from PostgreSQL 7.4.2, since this version contains
bug fixes and improvements over older versions. While this advice might bug fixes and improvements over older versions. While this advice might
seem idiosyncratic since you haven't installed the new version yet, it is seem idiosyncratic since you haven't installed the new version yet, it is
advisable to follow it if you plan to install the new version in parallel advisable to follow it if you plan to install the new version in parallel
@ -212,7 +212,7 @@ Substitute your paths appropriately.
mv /usr/local/pgsql /usr/local/pgsql.old mv /usr/local/pgsql /usr/local/pgsql.old
After you have installed PostgreSQL 7.4.1, create a new database directory and After you have installed PostgreSQL 7.4.2, create a new database directory and
start the new server. Remember that you must execute these commands while start the new server. Remember that you must execute these commands while
logged in to the special database user account (which you already have if you logged in to the special database user account (which you already have if you
are upgrading). are upgrading).

18
configure vendored

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.53 for PostgreSQL 7.4.1. # Generated by GNU Autoconf 2.53 for PostgreSQL 7.4.2.
# #
# Report bugs to <pgsql-bugs@postgresql.org>. # Report bugs to <pgsql-bugs@postgresql.org>.
# #
@ -258,8 +258,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='PostgreSQL' PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql' PACKAGE_TARNAME='postgresql'
PACKAGE_VERSION='7.4.1' PACKAGE_VERSION='7.4.2'
PACKAGE_STRING='PostgreSQL 7.4.1' PACKAGE_STRING='PostgreSQL 7.4.2'
PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org' PACKAGE_BUGREPORT='pgsql-bugs@postgresql.org'
ac_unique_file="src/backend/access/common/heaptuple.c" ac_unique_file="src/backend/access/common/heaptuple.c"
@ -769,7 +769,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures PostgreSQL 7.4.1 to adapt to many kinds of systems. \`configure' configures PostgreSQL 7.4.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -830,7 +830,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of PostgreSQL 7.4.1:";; short | recursive ) echo "Configuration of PostgreSQL 7.4.2:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -950,7 +950,7 @@ fi
test -n "$ac_init_help" && exit 0 test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
PostgreSQL configure 7.4.1 PostgreSQL configure 7.4.2
generated by GNU Autoconf 2.53 generated by GNU Autoconf 2.53
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
@ -967,7 +967,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by PostgreSQL $as_me 7.4.1, which was It was created by PostgreSQL $as_me 7.4.2, which was
generated by GNU Autoconf 2.53. Invocation command line was generated by GNU Autoconf 2.53. Invocation command line was
$ $0 $@ $ $0 $@
@ -17990,7 +17990,7 @@ _ASBOX
} >&5 } >&5
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by PostgreSQL $as_me 7.4.1, which was This file was extended by PostgreSQL $as_me 7.4.2, which was
generated by GNU Autoconf 2.53. Invocation command line was generated by GNU Autoconf 2.53. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -18052,7 +18052,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
PostgreSQL config.status 7.4.1 PostgreSQL config.status 7.4.2
configured by $0, generated by GNU Autoconf 2.53, configured by $0, generated by GNU Autoconf 2.53,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"

@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl $Header: /cvsroot/pgsql/configure.in,v 1.301.2.5 2004/02/11 17:32:09 momjian Exp $ dnl $Header: /cvsroot/pgsql/configure.in,v 1.301.2.6 2004/03/05 19:57:20 momjian Exp $
dnl dnl
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
@ -21,7 +21,7 @@ dnl The GNU folks apparently haven't heard that some people don't use
dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir". dnl Texinfo. Use this sorcery to use "docdir" instead of "infodir".
m4_define([info], [doc]) m4_define([info], [doc])
m4_define([infodir], [docdir]) m4_define([infodir], [docdir])
AC_INIT([PostgreSQL], [7.4.1], [pgsql-bugs@postgresql.org]) AC_INIT([PostgreSQL], [7.4.2], [pgsql-bugs@postgresql.org])
m4_undefine([infodir]) m4_undefine([infodir])
m4_undefine([info]) m4_undefine([info])
AC_SUBST(docdir) AC_SUBST(docdir)

@ -1,12 +1,12 @@
Developer's Frequently Asked Questions (FAQ) for PostgreSQL Developer's Frequently Asked Questions (FAQ) for PostgreSQL
Last updated: Sat Nov 29 23:56:43 EST 2003 Last updated: Tue Feb 10 10:16:31 EST 2004
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
The most recent version of this document can be viewed at the The most recent version of this document can be viewed at
postgreSQL Web site, http://www.PostgreSQL.org. http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html.
_________________________________________________________________ _________________________________________________________________
General Questions General Questions

@ -1,7 +1,7 @@
How to install PostgreSQL on Windows How to install PostgreSQL on Windows
==================================== ====================================
$Date: 2003/12/13 16:57:36 $ $Date: 2004/03/05 19:57:20 $
PostgreSQL requires the appropriate subset of Cygwin DLLs to be PostgreSQL requires the appropriate subset of Cygwin DLLs to be
installed in order that it functions under Windows. installed in order that it functions under Windows.

@ -5,8 +5,8 @@
Deutsche Übersetzung von Ian Barwick (barwick@gmx.net). Deutsche Übersetzung von Ian Barwick (barwick@gmx.net).
Letzte Aktualisierung der deutschen Übersetzung: Di., den 02.09.2003, Letzte Aktualisierung der deutschen Übersetzung: Fr., den 02.01.2004,
10:00 CET 07:30 CET
Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL
Website: Website:
@ -229,7 +229,8 @@
Weitere Informationen zum Status von PostgreSQL auf der Weitere Informationen zum Status von PostgreSQL auf der
Microsoft-Plattform befinden sich unter Microsoft-Plattform befinden sich unter
http://techdocs.postgresql.org/guides/Windows (en.). http://techdocs.postgresql.org/guides/Windows (en.) sowie
http://momjian.postgresql.org/main/writings/pgsql/win32.html (en.).
Eine Portierung für Novell Netware 6 gibt es unter Eine Portierung für Novell Netware 6 gibt es unter
http://forge.novell.com. http://forge.novell.com.
@ -280,10 +281,10 @@
http://www.PostgreSQL.org http://www.PostgreSQL.org
Es gibt außerdem einen IRC-Channel bei EFNet und bei OpenProjects, Es gibt außerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
Channel #PostgreSQL. Der FAQ-Autor Bruce Momjian nutzt den #PostgreSQL. Unter UNIX/Linux können Sie mit z.B. irc -c '#PostgreSQL'
Unix-Befehl: irc -c '#PostgreSQL' "$USER" irc.phoenix.net um daran "$USER" irc.phoenix.net bzw. irc -c '#PostgreSQL' "$USER"
teilzunehmen. irc.freenode.net. daran teilnehmen.
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
@ -291,7 +292,7 @@
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.4 . Die neueste Version von PostgreSQL ist 7.4.1 .
Die Freigabe einer neuen Version erfolgt im Schnitt ca. dreimal pro Die Freigabe einer neuen Version erfolgt im Schnitt ca. dreimal pro
Jahr. Jahr.
@ -386,14 +387,18 @@
PostgreSQL weist eine Performanz auf, die mit der von PostgreSQL weist eine Performanz auf, die mit der von
kommerziellen und anderen Open-Source-Datenbanken vergleichbar kommerziellen und anderen Open-Source-Datenbanken vergleichbar
ist. In manchen Bereichen ist es schneller, in anderen ist. In manchen Bereichen ist es schneller, in anderen
langsamen. Im Vergleich zu MySQL oder abgespeckten langsamer.
Datenbank-Systemen sind INSERT- und UPDATE-Anweisungen aufgrund
des Transaktionsaufwands langsamer. MySQL hat allerdings keine Im Vergleich zu MySQL oder abgespeckten Datenbank-Systemen ist
der oben erwähnten Eigenschaften. PostgreSQL setzt auf PostgreSQL in Lastsituationen - z.B. bei zeitgleichen Zugriffen
Zuverlässigkeit und Funktionsumfang, obwohl selbstredend durch mehrere Nutzer, komplexen Abfragen oder gleichzeitigen
ständig an Performanz- Verbesserungen gearbeitet wird. Ein Lese- und Schreibzugriffen schneller. MySQL ist nur bei
interessanter Vergleich zwischen PostgreSQL und MySQL befindet einfacheren SELECT-Abfragen mit wenigen Nutzern schneller.
sich unter dieser URL: MySQL hat allerdings wenige der oben erwähnten Eigenschaften.
PostgreSQL setzt auf Zuverlässigkeit und Funktionsumfang, dabei
wird selbstredend ständig an Performanz-Verbesserungen
gearbeitet. Ein interessanter Vergleich zwischen PostgreSQL und
MySQL befindet sich unter dieser URL:
http://openacs.org/philosophy/why-not-mysql.html http://openacs.org/philosophy/why-not-mysql.html
Zuverlässigkeit Zuverlässigkeit
@ -488,12 +493,11 @@
2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle? 2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
Es gibt mehrere grafische Schnittstellen für PostgreSQL, darunter Es gibt mehrere grafische Schnittstellen für PostgreSQL, darunter
PgAccess ( http://www.pgaccess.org), PgAdmin II PgAccess ( http://www.pgaccess.org), PgAdmin III
(http://www.pgadmin.org, nur für Win32), RHDB Admin (http://www.pgadmin.org, RHDB Admin (http://sources.redhat.com/rhdb/ )
(http://sources.redhat.com/rhdb/ ) und Rekall ( und Rekall ( http://www.thekompany.com/products/rekall/, proprietär).
http://www.thekompany.com/products/rekall/, proprietär). Es gibt Es gibt außerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ),
außerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), eine eine web-basierte Schnittstelle.
web-basierte Schnittstelle.
2.4) Welche Programmiersprachen und Schnittstellen gibt es? 2.4) Welche Programmiersprachen und Schnittstellen gibt es?
@ -788,7 +792,7 @@
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 4TB) Datenbanken mit 4TB)
Maximale Größe einer Tabelle? 16 TB Maximale Größe einer Tabelle? 32 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
Maximale Anzahl von Zeilen in einer Tabelle? Maximale Anzahl von Zeilen in einer Tabelle?
@ -802,7 +806,7 @@
verfügbaren Platten- und Speicherressourcen eingeschränkt sind. verfügbaren Platten- und Speicherressourcen eingeschränkt sind.
Extreme Größen können zu Leistungseinbußen führen. Extreme Größen können zu Leistungseinbußen führen.
Die maximale Tabellengröße von 16 TB benötigt keine Die maximale Tabellengröße von 32 TB benötigt keine
Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in
Dateien mit einer Größe von 1 GB aufgeteilt, wodurch etwaige Dateien mit einer Größe von 1 GB aufgeteilt, wodurch etwaige
dateisystem-bedingte Beschränkungen nicht relevant sind. dateisystem-bedingte Beschränkungen nicht relevant sind.
@ -1016,7 +1020,7 @@ BYTEA bytea Bytearray mit variabler L
Werts? Werts?
PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
eine Sequenz und einen Index auf die angegebene Spalte. Zum Beispiel: eine Sequenz auf die angegebene Spalte. Zum Beispiel:
CREATE TABLE person ( CREATE TABLE person (
id SERIAL, id SERIAL,
name TEXT name TEXT
@ -1028,7 +1032,6 @@ BYTEA bytea Bytearray mit variabler L
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 );
umgewandelt. umgewandelt.
@ -1175,10 +1178,10 @@ BYTEA bytea Bytearray mit variabler L
4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so 4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so
langsam? langsam?
Derzeit werden Unterabfragen mit der äusseren Abfrage verbunden, indem In Versionen vor 7.4 werden Unterabfragen mit der äusseren Abfrage
für jede Reihe der äusseren Query die Ergebnisse der Unterabfrage verbunden, in dem für jede Reihe der äusseren Query die Ergebnisse der
sequentiell geprüft werden. Um dies zu vermeiden, kann man IN durch Unterabfrage sequentiell geprüft werden. Um dies zu vermeiden, kann
EXISTS ersetzen, z.B.: man IN durch EXISTS ersetzen, z.B.:
SELECT * SELECT *
FROM tabelle_1 FROM tabelle_1
WHERE spalte1 IN (SELECT spalte2 FROM tabelle_2) WHERE spalte1 IN (SELECT spalte2 FROM tabelle_2)
@ -1189,8 +1192,9 @@ BYTEA bytea Bytearray mit variabler L
WHERE EXISTS (SELECT spalte2 FROM tabelle_2 WHERE spalte1 = spalte2) WHERE EXISTS (SELECT spalte2 FROM tabelle_2 WHERE spalte1 = spalte2)
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. Ab PostgreSQL 7.4 IN verwendet die
wird in der nächsten PostgreSQL-Version (7.4) behoben werden. gleichen Methoden wie die normale Tabellenverknüpfung und ist daher
soger EXISTS vorzuziehen.
4.23) Wie führe ich einen OUTER JOIN durch? 4.23) Wie führe ich einen OUTER JOIN durch?
@ -1344,6 +1348,3 @@ BYTEA bytea Bytearray mit variabler L
Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch
allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
die Mailing-Listen als schnelle und zuverlässige Anlaufstellen. die Mailing-Listen als schnelle und zuverlässige Anlaufstellen.
Diese Übersetzung basiert teilweise auf einer früheren Übersetzung von
Karsten Schulz (schulz@linux-systemhaus.de).

@ -1,18 +1,19 @@
Frequently Asked Questions (FAQ) o PostgreSQL Frequently Asked Questions (FAQ) o PostgreSQL
Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002 Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
Ostatnia aktualizacja tl/umaczenia: Piatek Marzec 5 19:31:12 EST 2004
Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl) Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl)
Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem: Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem:
http://www.PostgreSQL.org/docs/faq-english.html. http://www.PostgreSQL.org/docs/faqs/FAQ.html.
Odpowiedzi na pytania dotyczace konkretnych systemów operacyjnych Odpowiedzi na pytania dotyczace konkretnych systemów operacyjnych
mozna znalezc pod adresem: mozna znalezc pod adresem: http://www.PostgreSQL.org/docs/index.html.
http://www.PostgreSQL.org/users-lounge/docs/faq.html.
_________________________________________________________________ _________________________________________________________________
Pytania ogólne Pytania ogólne
@ -40,18 +41,17 @@
2.1) Czy sa jakies driwery ODBC dla PostgreSQL? 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL
przez www? przez www?
2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do 2.3) Czy istnieje jakies GUI dla PostgreSQL?
raportowania? Interfejs dla "embedded query language"?
2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z 2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
PostgreSQL? PostgreSQL?
Pytania administratora Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql? /usr/local/pgsql?
3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call 3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call
lub "core dumped". Dlaczego? lub "core dumped". Dlaczego?
3.3) Podczas startu postmaster'a, otrzymuje komunikato bl/edzie: 3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcMemoryCreate. Dlaczego? IpcMemoryCreate. Dlaczego?
3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie: 3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcSemaphoreCreate. Dlaczego? IpcSemaphoreCreate. Dlaczego?
@ -61,8 +61,9 @@
3.7) Jakie sa mozliwosci wyszukiwania bl/edów? 3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas 3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas
próby pol/aczenia sie z baza danych? próby pol/aczenia sie z baza danych?
3.9) Co to za pliki typu pg_sorttempNNN.NN , które znajduja sie w 3.9) Jakie pliki znajduja sie w pg_temp?
katalogu z plikami bazy danych? 3.10) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
skryptów dump i restore?
Pytania dotyczace uzytkowania Pytania dotyczace uzytkowania
@ -72,7 +73,7 @@
zapytania? zapytania?
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod
psql? psql?
4.4) Jak usunac kolumne z tabeli? 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych? 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac 4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac
dane ze zwyczajnego pliku tekstowego? dane ze zwyczajnego pliku tekstowego?
@ -110,6 +111,10 @@
4.23) Jak wykonac "outer join"? 4.23) Jak wykonac "outer join"?
4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie? 4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn? 4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel
tymczasowych w funkcjach PL/PgSQL?
4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
Rozwijanie PostgreSQL Rozwijanie PostgreSQL
@ -125,7 +130,8 @@
1.1) Co to jest PostgreSQL? Jak to wymawiac? 1.1) Co to jest PostgreSQL? Jak to wymawiac?
PostgreSQL wymawia sie Post-Gres-kju-el. PostgreSQL wymawia sie Post-Gres-kju-el. Czesto podczas rozmów uzywany
jest termin "Postgres"
PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych - PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych -
POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze
@ -137,11 +143,13 @@
Rozwój PostgreSQL jest prowadzony przez grupe ludzi z Internetu, Rozwój PostgreSQL jest prowadzony przez grupe ludzi z Internetu,
komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL. komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org). Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org).
(Zobacz ponizej jak sie przyl/aczyc). Ta grupa ludzi jest (Zobacz pytanie 1.6 jak sie przyl/aczyc). Ta grupa ludzi jest
odpowiedzialna za cal/y rozwój PostgreSQL. odpowiedzialna za cal/y rozwój PostgreSQL. PostgreSQL jest projektem
nie kontrolowanym przez zadna firme, aby wziac udzial/ w jego rozwoju
sprawdz, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych
osób pomogl/o przy portowaniu, testowaniu, debugowaniu, i rozwijaniu osób pomogl/o przy portowaniu, testowaniu, debugowaniu i rozwijaniu
kodu. Oryginalny kod Postgresa, na którym zostal/ oparty PostgreSQL, kodu. Oryginalny kod Postgresa, na którym zostal/ oparty PostgreSQL,
byl/ wysil/kiem studentów oraz pracowników pracujacych pod byl/ wysil/kiem studentów oraz pracowników pracujacych pod
kierownictwem profesora Michael'a Stonebraker'a z University of kierownictwem profesora Michael'a Stonebraker'a z University of
@ -194,11 +202,11 @@
Klient Klient
Mozliwa jest kompilacja bibliteki C libpq C, psql oraz innych Mozliwa jest kompilacja bibliteki C libpq, psql oraz innych
interfejsów i uruchamianie ich na platformie MS Windows. W tym wypadku interfejsów i uruchamianie ich na platformie MS Windows. W tym wypadku
klient jest uruchamiany na MS Windows a z serwerem komunikuje sie klient jest uruchamiany na MS Windows a z serwerem komunikuje sie
poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie
Unixowej. Plik win31.mak jest dol/aczony do zródel/, aby mozna byl/o Unixowej. Plik win32.mak jest dol/aczony do zródel/, aby mozna byl/o
stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku
Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC. Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC.
@ -206,9 +214,17 @@
Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek
Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w
zródl/ach lub pod adresem: MS Windows FAQ na naszych stronach. Nie zródl/ach lub pod adresem:
planujemy tworzyc portu przeznaczonego docelowo dla platformy http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych
Microsoft. stronach.
Obecnie prowadzone sa prace nad stworzeniem wersji dla MS Win
NT/200/XP. Jesli chcesz sie dowiedziec o obecnym statusie tych prac
zobacz http://techdocs.postgresql.org/guides/Windows and
http://momjian.postgresql.org/main/writings/pgsql/win32.html.
Istnieje takze port pod Novell Netware 6 dostepny pod adresem
http://forge.novell.com.
1.5) Skad mozna sciagnac PostgreSQL? 1.5) Skad mozna sciagnac PostgreSQL?
@ -258,31 +274,31 @@
irc.phoenix.net. irc.phoenix.net.
Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie
pod adresem: pod adresem: http://techdocs.postgresql.org/companies.php.
http://www.postgresql.org/users-lounge/commercial-support.html.
1.7) Jaka jest ostatnia dostepna wersja? 1.7) Jaka jest ostatnia dostepna wersja?
Ostatnia dostepna wersja PostgreSQL to 7.2.1. Ostatnia dostepna wersja PostgreSQL to 7.4.1.
Planujemy publikowanie kolejnych wersji co cztery miesiace. Planujemy publikowanie kolejnych wersji co szesc do osmiu miesiecy.
1.8) Jaka dokumentacja jest dostepna? 1.8) Jaka dokumentacja jest dostepna?
Kilka manuali, stron podecznika man, oraz kilka przykl/adów do Kilka manuali, stron podecznika man, oraz kilka przykl/adów do
testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w
katalogu /doc. Manual moze byc takze przegladany poprzez strony www katalogu /doc. Manual moze byc takze przegladany poprzez strony www
pod adresem http://www.PostgreSQL.org/users-lounge/docs/. pod adresem http://www.PostgreSQL.org/docs.
Istnieja takze dwie ksiazki dostepne online pod adresami Istnieja takze dwie ksiazki dostepne online pod adresami
http://www.PostgreSQL.org/docs/awbook.html i http://www.PostgreSQL.org/docs/awbook.html i
http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL, http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL,
które mozna kupic znajduje sie pod adresem które mozna kupic znajduje sie pod adresem
http://www.postgresql.org/books/. Zbiór technicznych artykul/ów o http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Zbiór
PostgreSQL znajduje sie pod adresem http://techdocs.postgresql.org/. technicznych artykul/ów o PostgreSQL znajduje sie pod adresem
http://techdocs.postgresql.org/.
psql posiada kilka wbudowanych polecen \d, za pomoca których mozna psql posiada kilka wbudowanych polecen \d, za pomoca których mozna
sprawdzic informacje dotyczace typów, operatorów, funkcji, aggregatów sprawdzic informacje dotyczace typów, operatorów, funkcji, agregatów
itd. itd.
Na naszej stronie mozna znalezc duzo wiecej dokumentacji. Na naszej stronie mozna znalezc duzo wiecej dokumentacji.
@ -327,7 +343,8 @@
Jest okol/o 12 osób, które maja uprawnienia do commit'owania w CVS Jest okol/o 12 osób, które maja uprawnienia do commit'owania w CVS
PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci
patchy, ze stal/o sie niemozliwe dla obecnych commiterów byc z nimi na patchy, ze stal/o sie niemozliwe dla obecnych commiterów byc z nimi na
biezaco, majac pewnosc ze sa to poprawki wysokiej jakosci. biezaco, wiec musielismy im ufac i miec pewnosc, ze ich poprawki sa
wysokiej jakosci.
1.13) Jak moge zgl/aszac bl/edy? 1.13) Jak moge zgl/aszac bl/edy?
@ -349,44 +366,33 @@
integrity, oraz wyrafinowany system blokowania. Mamy takze integrity, oraz wyrafinowany system blokowania. Mamy takze
wl/asciowsci których inni nie posiadaja, jak typy definiowane wl/asciowsci których inni nie posiadaja, jak typy definiowane
przez uzytkownika, dziedziczenie, rules, multi-version przez uzytkownika, dziedziczenie, rules, multi-version
concurrency control, która redukuje problemy z blokowaiem (lock concurrency control, która redukuje problemy z blokowaniem
contention). (lock contention).
Wydajnosc Wydajnosc
PostgreSQL dzial/a w dwóch trybach. Standardowy tryb fsync Wydajnosc PostgreSQL jest podobna do innych komercyjnych i open
zrzuca kazda zakonczona transakcje na dysk, gwarantujac w ten source baz danych. W niektórych sytuacjach jest szybszy w
sposób to, ze jesli system operacyjny sie zawiesi lub straci niektórych wolniejszy. W porównianiu do MySQL lub mniejszych
zasilanie wciagu kilku nastepnych sekund, wszystkie Twoje dane baz danych jestesmy szybsi przy wielu uzytkownikach,
zostana bezpiecznie zapisane na dysku. W tym trybie, jestesmy skomplikowaych zapytaniach i duzym obciazeniu podczas. MySQL
wolniejsi niz wiekszosc komercyjnych baz danych, czesciowo jest szybszy dla prostych SELECTów wykonywanych przez niewielu
dlatego ze niewiele z nich wykonuje taki sposób zapisywania uzytkowników. Spowodowane jest to narzutem, który sie pojawia
danych jako domyslne ustawienie. W trybie no-fsync z regul/y przy transakcjach. Oczywiscie MySQL nie ma wiekszosci z
jestesmy szybsi niz komercyjne bazy danych, chociaz w tym rozwiazan opisanych powyzej w sekcji Mozliwosci . PostgreSQL
wypadku zawieszenie sie systemu moze spowodowac uszkodzenie zostal/ stworzony z mysla o stabilnosci, oraz szerokiej gamie
danych. Pracujemy nad tym, aby stworzyc posredni tryb, który mozliwosci, ale mimo to staramy sie w kazdej wersji poprawiac
powoduje mniejsza redukcje wydajnosci niz tryb fsync i pozwoli jego wydajnosc. Ciekawe porównanie PostgreSQL i MySQL mozna
na integralnosc danych w przeciagu 30 sekund do zal/amania sie znalezc pod adresem
systemu operacyjnego. http://openacs.org/philosophy/why-not-mysql.html Dodatkowo,
Porównujac do MySQL czy innych prostych baz danych, jestesmy MySQL jest firma, która dystrybuuje jej produkty poprzez zasade
wolniejsi przy wykonywaniu insertów/updatów przez narzut Open Source i wymaga wykupienia licencji w przypadku tworzenia
spowodowany przez transakcje. Oczywiscie MySQL nie posiada close-source software, co ie ma miejsca w przypadku PostgreSQL.
zadnej z wymienionych wyzej mozliwosci. PostgreSQL zostal/
zbudowany aby byc DBMS elastycznym i bogatym z róznorakie
mozliwosci, aczkolwiek dbamy, aby poprawiac jego wydajnosc
poprzez analize kodu zródl/owego i profilowanie. Ciekawe
porównanie PostgreSQL i MySQL mozna znalezc pod adresem
http://openacs.org/why-not-mysql.html
Kazde pol/aczenie klienta jest obsl/ugiwane przez nas poprzez
stworzenie nowego procesu Unixowego. Procesy backendu dziela
bufory danych oraz informacje o blokadach. Uzywajac wielu
procesorów, rózne backendy moga bez problemu dzial/ac na
róznych procesorach.
Stabilnosc Stabilnosc
Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym
wypadku jest bez wartosci. Staramy sie publikowac kod stabilny, wypadku jest bez wartosci. Staramy sie publikowac kod stabilny,
dobrze przetestowany, z minimum mozliwych bl/edów. Kazde dobrze przetestowany, z minimum mozliwych bl/edów. Kazde
wydanie poprzedza conajmniej miesiac testów wersji beta. wydanie poprzedza co najmniej miesiac testów wersji beta.
Patrzac na historie wydan PostgreSQL widac, ze dostarczamy Patrzac na historie wydan PostgreSQL widac, ze dostarczamy
stabilne, dobrze sprawdzone wersje, które sa gotowe do uzycia w stabilne, dobrze sprawdzone wersje, które sa gotowe do uzycia w
srodowisku produkcyjnym. Myslimy, ze proces publikowania srodowisku produkcyjnym. Myslimy, ze proces publikowania
@ -415,9 +421,9 @@
1.15) W jaki sposób moge wesprzec finansowo PostgreSQL? 1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku
istnienia projektu, tzn. szesciu lat. Wszystko to zawdzieczamy istnienia projektu, czyli roku 1996 kiedy rozpoczelismy prace.
Marc'owi Fournier'owi, który stworzyl/ ta infrastrukture i zarzadza Wszystko to zawdzieczamy Marc'owi Fournier'owi, który stworzyl/ ta
nia od lat. infrastrukture i zarzadza nia od lat.
Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu
open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek
@ -427,7 +433,7 @@
tanie. Istnieje wiele róznych miesiecznych, czy jednorazowych tanie. Istnieje wiele róznych miesiecznych, czy jednorazowych
wydatków, które trzeba ponosic aby wszystko dzial/al/o jak nalezy. wydatków, które trzeba ponosic aby wszystko dzial/al/o jak nalezy.
Jesli Ty, badz Twoja firma moze wspomóc finansowo rozwój PostgreSQL Jesli Ty, badz Twoja firma moze wspomóc finansowo rozwój PostgreSQL
odwiedz adres: http://www.pgsql.com/pg_goodies gdzie opisane jest jak odwiedz adres: http://store.pgsql.com/shopping/ gdzie opisane jest jak
to zrobic. to zrobic.
Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa
@ -436,69 +442,72 @@
wysl/ac czek na adres kontaktowy. wysl/ac czek na adres kontaktowy.
_________________________________________________________________ _________________________________________________________________
Jesli mozesz sie pochwalic udanymi wdrozeniami PostgreSQL, prosimy
abys zgl/osil/ nam to na stronie: http://advocacy.postgresql.org.
User Client Questions User Client Questions
2.1) Czy sa jakies driwery ODBC dla PostgreSQL? 2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC. Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
PsqlODBC jest dol/aczony do zródel/. Wiecej informacji na jego temat Mozesz pobrac PsqlODBC z adresu
mozesz znalezc pod adresem: ftp://ftp.PostgreSQL.org/pub/odbc/. http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com. OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com.
Wspól/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w Wspól/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w
ten sposób mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej ten sposób mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej
plaformie która wspiera (Win, Mac, Unix, VMS). pltaformie która wspiera (Win, Mac, Unix, VMS).
Autorzy beda prawdopodobnie sprzedawac ten produkt osobom które Autorzy beda prawdopodobnie sprzedawac ten produkt osobom które
wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze
dostepna. Wszystkie pytania mozesz wysyl/ac na adres: dostepna. Wszystkie pytania mozesz wysyl/ac na adres:
postgres95@openlink.co.uk. postgres95@openlink.co.uk.
Sprawdz takze rozdzial/ o ODBC w "Programmer's Guide".
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez 2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez
www? www?
Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez
www mozesz znalezc pod adresem: http://www.webreview.com www mozesz znalezc pod adresem: http://www.webreview.com
Inny znajduje sie pod adresem: http://www.phone.net/home/mwm/hotlist/.
Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc
wiecej informacji na ten temat pod adresem http://www.php.net. wiecej informacji na ten temat pod adresem http://www.php.net.
Wiele osób w przypadku skomplikowanych rozwiazan uzywa Perl'a i Wiele osób w przypadku skomplikowanych rozwiazan uzywa Perl'a i
modul/u CGI.pl. modul/u CGI.pl lub mod_perl.
2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do raportowania? 2.3) Czy istnieje jakies GUI dla PostgreSQL?
Interfejs dla "embedded query language"?
Mamy cal/kiem mil/y interfejs graficzny, który zostal/ nazwany Tak, istnieje kilka interfejsów graficznych dla PostgreSQL. Wsród nich
pgaccess i jest on dostarczany jako czesc zródel/. pgaccess posiada PgAccess ( http://www.pgaccess.org), PgAdmin III
takze generator raportów. Mozna go znalezc pod adresem (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
http://www.flex.ro/pgaccess ) oraz Rekall ( http://www.thekompany.com/products/rekall/,
komercyjny). Istnieje takze PHPPgAdmin (
http://phppgadmin.sourceforge.net/ ), webowy interfejs dla PostgreSQL.
Udostepnilismy takze ecpg, który jest "embedded SQL query language Wiecej informacji na ten temat znajduje sie pod adresem See
interface" dla jezyka C. http://techdocs.postgresql.org/guides/GUITools.
2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z 2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
PostgreSQL? PostgreSQL?
Mamy wsparcie dla: Najbardziej popularne jezyki posiiadaja wl/asny interfejs dla
PostgreSQL. Sprawdz liste rozszerzen dla intersujacego Ciebie jezyka
programowania.
Ze zródl/ami PostreSQL dystrubuowane sa interfejsy dla nastepujacych
jezyków programowania:
* C (libpq) * C (libpq)
* C++ (libpq++)
* Embedded C (ecpg) * Embedded C (ecpg)
* Java (jdbc) * Java (jdbc)
* Perl (perl5)
* ODBC (odbc)
* Python (PyGreSQL) * Python (PyGreSQL)
* TCL (libpgtcl) * TCL (libpgtcl)
* C Easy API (libpgeasy)
* Embedded HTML (PHP z http://www.php.net) Inne interfejsy sa dostepne pod adresem: http://gborg.postgresql.org w
sekcji Drivers/Interfaces.
_________________________________________________________________ _________________________________________________________________
Pytania administratora Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz 3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql? /usr/local/pgsql?
@ -566,7 +575,7 @@
pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku
okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako
pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w
jednym bloku transakcji. To redukuje narzut powodowany przez jednym bloku transakcji. To redukuje narzut nakl/adany przez
transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na
nowo indeksy. nowo indeksy.
@ -665,25 +674,36 @@
limit na maksymalna liczbe procesów backendu to obawa o wyczerpanie limit na maksymalna liczbe procesów backendu to obawa o wyczerpanie
zasobów systemu. zasobów systemu.
W wersjach PostgreSQL wczesniejszych niz 6.5, maksymalna liczba 3.9) Jakie pliki znajduja sie w pg_temp?
backendów byl/a ustawiona na 64, a zmiana tej wartosci wymaga
rekompliacji po zmianie stal/ej MaxBackendId w pliku
include/storage/sinvaladt.h.
3.9) Co to sa za pliki typu: pg_sorttempNNN.NN, które znajduja sie w
katalogu z plikami bazy danych?
Sa to tymczasowe pliki utworzone przez executor. Dla przykl/adu, jesli Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
jakas operacja sortowania jest wymagana do wykonania ORDER BY, a samo przykl/adu, jesli jakas operacja sortowania jest wymagana do wykonania
sortowanie wymaga wiecej miejsca niz paratmetr backendu -S ustawil/ do ORDER BY, a samo sortowanie wymaga wiecej miejsca niz parametr
wykorzystania, wtedy tymczasowe pliki sa uzywane do przechowywania backendu -S ustawil/ do wykorzystania, wtedy tymczasowe pliki sa
tych danych. uzywane do przechowywania tych danych.
Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to
nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie
poprawnie podczas operacji sortowania. Jesli w danym momencie nie poprawnie podczas operacji sortowania. Jesli w danym momencie nie
dzial/aja zadne procesy backendów mozesz spokojnie usunac pliki dzial/aja zadne procesy backendów mozesz spokojnie usunac pliki
pg_tempNNN.NN. pg_tempNNN.NN.
3.9) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
skryptów dump i restore?
Twórcy PostgreSQL dokonuja jedynie mal/ych zmian pomiedzy mal/ymi
upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
korzystania z dump i restore. Przy wiekszych zmianach, np. z wersji
7.2 do 7.3, czesto zmianymaja wpl/yw na format przechowywanych danych.
Zmiany te sa na tyle skomplikowane, ze nie utrzymujemy zgodosci z
poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
takiej postaci, w której l/atwe jest ich zaimportowanie do nowszych
wersji bez kl/opotu.
W wydaniach gdzie zmiany nie dotycza formatu danych na dysku, mozna
wykorzystac skryptu pg_upgrade, do upgradu bez uzycia dump/restore.
Dokumentacja do danego wydania zawiera informacje czy mozliwe jest
uzycie pg_upgrade.
_________________________________________________________________ _________________________________________________________________
Pytania dotyczace uzywania Pytania dotyczace uzywania
@ -706,6 +726,13 @@
pierwszych rzedów, byc moze bedzie koniecznosc wykonania zapytania do pierwszych rzedów, byc moze bedzie koniecznosc wykonania zapytania do
momentu az zostana znalezione pozadane wyniki. momentu az zostana znalezione pozadane wyniki.
Aby otrzymac losowy rzad, uzyj:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql? 4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql?
Mozesz sprawdzic zawartosc zródel/ psql, a konkretnie plik Mozesz sprawdzic zawartosc zródel/ psql, a konkretnie plik
@ -714,36 +741,44 @@
wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie
zapytanie, które w rzeczywistosci jest wykonywane. zapytanie, które w rzeczywistosci jest wykonywane.
4.4) Jak usunac kolumne z tabeli? 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
Nie mamy zaimplementowanego ALTER TABLE DROP COLUMN, ale mozesz zrobic DROP COLUMNT zostal/o dodane w wersji 7.3 przy poleceniu ALTER TABLE
tak: DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
SELECT ... -- wybierz zawartosc wszystkich kolumn poza ta jedna której chc BEGIN;
esz sie pozbyc LOCAL TABLE old_table;
SELECT ... -- wybierz wszystkie kolumny poza ta jedna której chcesz sie po
zbyc
INTO TABLE new_table INTO TABLE new_table
FROM old_table; FROM old_table;
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
Aby zmienic typ danych kolumny mozesz zrobic 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 tab DROP COLUMN old_col;
COMMIT;
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych? 4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
Oto wszystkie ograniczenia: Oto wszystkie ograniczenia:
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja bazy dan Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja
ych o wielkosci 500 GB databases ) bazy danych o wielkosci 32 TB databases )
Maksymalny rozmiar dla tabeli? 16 TB Maksymalny rozmiar dla tabeli? 32 TB
Maksymalny rozmiar dla rzedu? nieograniczony w 7.1 i pózniejszyc Maksymalny rozmiar dla rzedu? 1.6 TB
h Maksymalny rozmiar pola? 1 GB
Maksymalny rozmiar pola? 1 GB w 7.1 and later
Maksymalna liczba rzedów w tabeli? nieograniczona Maksymalna liczba rzedów w tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów kolum Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów ko
n lumn
Makasymalna liczba indeksów na tabeli? nieograniczona Makasymalna liczba indeksów na tabeli? nieograniczona
Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa. ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa.
Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci. Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci.
Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla duzych plików. Duze tabele sa przechowywane operacyjnego wsparcia dla duzych plików. Duze tabele sa przechowywane
jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plików jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plików
narzucone przez system plików nie sa istotne. narzucone przez system plików nie sa istotne.
@ -786,6 +821,9 @@ n
zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem
duze. duze.
NULLe sa przechowywane jako mapy bitowe, wiec uzywaja bardzo mal/o
miejsca.
4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa 4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa
utworzeni? utworzeni?
@ -821,14 +859,32 @@ n
sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
na duzej tabeli. na duzej tabeli.
Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/ Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
indeksów poniewaz jedynie mal/a czesc z tabeli jest zwracana. indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksów, mozliwe
jest aby zwrócic te wartosci uzywajac indeksów poprzez uzycie ORDER BY
i LIMIT.
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
Jesli uwazasz, ze optimizer myli sie wybierajac sequential scan, uzyj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdzic czy wtym
wypadku zapytanie bedzie szybciej wykonywane.
Kiedy uzywa sie operatorów dopasujacych takich jak LIKE lub ~, indeksy Kiedy uzywa sie operatorów dopasujacych takich jak LIKE lub ~, indeksy
beda uzywane jedynie jesli poczatek wyszukiwania jest oparty na beda uzywane jedynie w pewnych wypadkach:
poczatku l/ancucha tekstu. Dlatego, aby uzywac indeksów, dopasowania * Poczatek wyszukiwania jest oparty na poczatku l/ancucha tekstu.
operatorem LIKE nie moga sie zaczynac %, a dopasowania operatorem ~ + wzorce LIKE nie moga sie zaczynac %
(dopasowania regularne) musza sie zaczynac znakiem specjalnym ^. + dopasowania operatorem ~ (dopasowania regularne) musza sie
zaczynac znakiem specjalnym ^.
* Poczatek wyszukiwania nie moze sie zaczynac od klas znaków, np.
[a-e].
* Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
section 4.12.
* Standardowe locale C musi byc uzyte przy wykonywaniu initdb
4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje 4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
zapytanie? zapytanie?
@ -869,13 +925,12 @@ n
queries) bez wykorzystywania zasobozernego wyszukiwania. queries) bez wykorzystywania zasobozernego wyszukiwania.
4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan 4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
case-insensitive w wyrazeniach regularnych? jak korzystac z indeksów dla case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów dla
zapytan case-insensitive? zapytan case-insensitive?
Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen
regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami
regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE i regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE.
jest dostepny w PostgreSQL 7.1 i pózniejszych wersjach.
Porównania case-insensitive sa zazwyczaj wykonywane w nastepujacy Porównania case-insensitive sa zazwyczaj wykonywane w nastepujacy
sposób: sposób:
@ -897,31 +952,35 @@ n
Type Nazwa wewnetrzna Uwagi Type Nazwa wewnetrzna Uwagi
-------------------------------------------------- --------------------------------------------------
"char" char 1 znak VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
CHAR(#) bpchar wypel/niane pustymi znakami do podanej dl/ug
osci
VARCHAR(#) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
tutaj wypel/niania tutaj wypel/niania
CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ug
osci
TEXT text bez limitu na dl/ugosc l/ancucha TEXT text bez limitu na dl/ugosc l/ancucha
BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte
safe) safe)
"char" char 1 znak
Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi. czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi.
Ostatnie cztery typy powyzej to tzw typy "varlena" (np. pierwsze Pierwsze cztery typy powyzej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to dl/ugosc, po których jest data). Dlatego cztery bajty na dysku to dl/ugosc, po których jest data). Dlatego
faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz
zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
na dysku moze byc mniejsze niz oczekiwane. na dysku moze byc mniejsze niz oczekiwane.
VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchów o
róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przekraczajacej
1GB.
CHAR() jast najlepszym typem do przechowywania l/ancuchów o tej samej CHAR(n) jast najlepszym typem do przechowywania l/ancuchów o tej samej
dl/ugosci. VARCHAR() jest najodpowiedniejszy do przechowywania dl/ugosci. CHAR(n) wypel/nia dane do zadanej dl/ugosci, podczas gdy
l/ancuchów o róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. VARCHAR(n) przechowuje jedynie dane dostarczone. BYTEA sl/uzy do
TEXT jest najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przechowywania danych binarnych, w szczególnosci dla danych
przekraczajacej 1GB. BYTEA sl/uzy do przechowywania danych binarnych, zawierajacych NULL bajty. Wszystkie typy opisane tutaj maja podobne
w szczególnosci dla danych zawierajacych NULL bajty. charakterystyki jesli chodzi o wydajnosc.
4.15.1) Jak moge utworzyc pole które samo zwieksza swoja wartosc? 4.15.1) Jak moge utworzyc pole które samo zwieksza swoja wartosc?
@ -1039,16 +1098,16 @@ BYTEA bytea zmiennej dl/ugosci tablica bajt
* range variable, table name, table alias * range variable, table name, table alias
Liste terminów zwiazanych z bazami danych mozesz znalezc pod tym Liste terminów zwiazanych z bazami danych mozesz znalezc pod tym
adresem:http://www.comptechnews.com/~reaster/dbdesign.html adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/
glossary/glossary.html.
4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in 4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
Jesli uzywasz wersji starszej niz 7.1, upgrade moze rozwiazac ten Prawdopodobnie wyczerpal/a Ci sie pamiec wirtualna (virtual memory) w
problem. Jest takze mozliwe, ze po prostu wyczerpal/a Ci sie pamiec systemie lub Twój kernel ma zbyt nisko ustawione limity dla pewnych
wirtualna (virtual memory) w systemie lub Twój kernel ma zbyt nisko zasobów. Spróbuj wykonac nastepujace polecenia zanim uruchomisz
ustawione limity dla pewnych zasobów. Spróbuj wykonac nastepujace postmaster'a:
polecenia zanim uruchomisz postmaster'a:
ulimit -d 262144 ulimit -d 262144
limit datasize 256m limit datasize 256m
@ -1087,24 +1146,31 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Dlaczego zapytania uzywajace IN sa takie wolne? 4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
Obecnie l/aczymy podzapytania w outer queries poprzez sekwencyjne W wersjach wczesniejszych niz 7.4 l/aczymy podzapytania w outer
przeszukiwanie wyników podzapytania dla kazdego rzedu z outer query. queries poprzez sekwencyjne przeszukiwanie wyników podzapytania dla
Mozna to ominac zastepujac IN przez EXISTS: kazdego rzedu z outer query. Jesli podzapytanie zwraca jedynie kilka
rzedów a zewnetrzne zapytanie zwraca ich wiele, IN jest najszybsze.
Aby przyspieszyc inne zapytania mozna zastapic IN przez EXISTS:
SELECT * SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col IN (SELECT subcol FROM subtab)
na: na:
SELECT * SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
Mamy zamiar poprawic to ograniczenie w przyszl/ych wydaniach. Aby to rozwiazanie byl/o szybkie, subcol powinna byc kolumna
indeksowana.
W wersji 7.4 i pózniejszych, IN w rzeczywistosci uzywa tej samej
wyrafinowanej techniki l/aczenia jak normalne zapytania i jest
preferowane nad uzywaniem EXISTS.
4.23) Jak wykonac "outer join"? 4.23) Jak wykonac "outer join"?
PostgreSQL 7.1 i pózniejsze wersje maja zaimplementowane outer join PostgreSQL ma zaimplementowane outer join wykorzystujac standardowa
wykorzystujac standardowa skl/adnie SQL. Ponizej dwa przykl/ady: skl/adnie SQL. Ponizej dwa przykl/ady:
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
@ -1113,7 +1179,7 @@ SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);
Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col, Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col,
ale takze zwróca niepol/aczone rzedy w t1 (te które nie pasuja w t2). ale takze zwróca niepol/aczone rzedy w t1 (te, które nie pasuja w t2).
RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join
zwrócil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2. zwrócil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2.
Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT, Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT,
@ -1138,37 +1204,75 @@ SELECT *
katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy
róznymi bazami danych powinno sie zachowywac. róznymi bazami danych powinno sie zachowywac.
Oczywiscie klient moze l/aczyc sie z róznymi bazami danych i l/aczyc contrib/dblink pozwala na wykonywanie zapytan poprzez rózne bazy
informacje w ten sposób uzyskana. danych wywol/ujac odpowiednie funkcje. Oczywiscie klient moze l/aczyc
sie z róznymi bazami danych i l/aczyc informacje w ten sposób uzyskana
po stronie klienta.
4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn? 4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
Mozesz zwracac zbiory z funkcji PL/pgSQL uzywajac refcursors. Zobacz Mozesz w l/atwy sposób zwracac wiele rzedów lub kolumn uzywajac
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html, funkcji z:
sekcje 23.7.3.3. http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel tymczasowych w
funkcjach PL/PgSQL?
PL/PgSQL przechowuje w cache zawartosc funkcji, niepozadanym efektem
tego jest to, ze gdy taka funkcja korzysta z tabel tymczasowych, które
sa pózniej kasowane i odtwarzane, a funkcja wywol/ywana jest
ponownie,jej wywol/anie nie powiedzie sie poniewaz cachowana funkcja
wciaz bedzie wskazywac na stara tablice tymczasowa. Rozwiazaniem tego
problemu jest uzywanie EXECUTE aby korzystac z tabel tymczasowych w
PL/PgSQL. To spowoduje, ze zapytanie bedzie parsowane przy kazdym
wywol/aniu funkcji.
4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ pozwala
jedynie masterowi na dokonywanie zmian w bazie danych, a slave moze jedynie
te zmiany odczytywac. Na stronie
http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie ich
lista. Replikacja typu multi-master jest w trakcie prac, opis projektu
znajduje sie pod adresem:
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
* contrib/pgcrypto zawiera wiele funkcji za pomoca, których mozemy
uzywac kryptografii w zapytaniach SQL.
* Aby szyfrowac transmisje od klienta do serwera, ten musi miec
ustawiona opcje ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi wystepowac w pliku pg_hba.conf, oraz
sslmode nie moze byc wyl/aczone w kliencie. (Warto zwrócic uwage,
ze mozliwe jest takze uzywanie transportów szyfrujaców przez
strony trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem
dla SSL przez PostgreSQL).
* Hasl/a uzytkowników bazy danych sa automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, nalezy ta funkcjonalnosc
poprzez wl/aczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
* Serwer moze dzial/ac uzywajac szyfrowanego systemu plików.
Rozwijanie PostgreSQL Rozwijanie PostgreSQL
5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca 5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
pamiec (dump core)? pamiec (dump core)?
Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj najpierw
najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym przetestowac Twoja funkcje w samodzielnie dzial/ajacym programie.
programie.
5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL? 5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
prawdopodobnie Twój kod znajdzie sie w katalogu contrib/. prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
5.3) Jak napisac funkcje C zwracajaca krotke (tuple)? 5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
To wymaga wysil/ku tak olbrzymiego, ze nawet autorzy nigdy tego nie W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w pelni
prubowali, chociaz z zalozen wynika, ze jest to mozliwe. wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby uzyskac
wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej tabele
zostal/ umieszczony w contrib/tablefunc.
5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany? 5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany?
Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla plików
plików nagl/ówkowych (include files). Wykonaj najpierw make clean, a nagl/ówkowych (include files). Wykonaj najpierw make clean, a nastepnie
nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji ponownie make. Jesli uzywasz GCC mozesz uzyc opcji --enable-depend przy
--enable-depend przy wykonywaniu configure aby wykonywaniu configure aby kompilator mógl/ okreslic zaleznosci
samodzielnie.

@ -1,7 +1,7 @@
Otvety na chasto zadavaemye voprosy po PostgreSQL Otvety na chasto zadavaemye voprosy po PostgreSQL
Data poslednego obnovleniya: Sreda 19 noyabrya 11:50:04 EDT 2003 Data poslednego obnovleniya: Vtornik 6 yanvarya 16:42:01 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)
@ -23,7 +23,7 @@
1.4) Suschestvuyut li versii portirovannye ne na Unix sistemy? 1.4) Suschestvuyut li versii portirovannye ne na Unix sistemy?
1.5) Gde mozhno vzyat' PostgreSQL? 1.5) Gde mozhno vzyat' PostgreSQL?
1.6) Gde poluchit' podderzhku? 1.6) Gde poluchit' podderzhku?
1.7) Kakaya poslednyaya versiya? 1.7) Kakaya versiya poslednyaya?
1.8) Kakaya dokumentaciya imeetsya v nalichii? 1.8) Kakaya dokumentaciya imeetsya v nalichii?
1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih 1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
vozmozhnostyah? vozmozhnostyah?
@ -273,7 +273,7 @@
http://www.PostgreSQL.org http://www.PostgreSQL.org
Esche suschestvuet IRC kanal na EFNet i Freenode, s nazvaniem Esche suschestvuet IRC kanal na Freenode i EFNet, s nazvaniem
#PostgreSQL. YA ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu #PostgreSQL. YA ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu
Unix irc -c '#PostgreSQL' "$USER" irc.phoenix.net. ili irc -c Unix irc -c '#PostgreSQL' "$USER" irc.phoenix.net. ili irc -c
'#PostgreSQL' "$USER" irc.freenode.net. '#PostgreSQL' "$USER" irc.freenode.net.
@ -283,7 +283,7 @@
1.7) Kakaya poslednyaya versiya? 1.7) Kakaya poslednyaya versiya?
Poslednij vypusk PostgreSQL - `eto versiya 7.4. Poslednij vypusk PostgreSQL - `eto versiya 7.4.1
My planiruem vypuskat' novye versii kazhdye 6-8 mesyacev. My planiruem vypuskat' novye versii kazhdye 6-8 mesyacev.
@ -486,12 +486,11 @@
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya? 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL. Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL.
`Eto PgAccess (http://www.pgaccess.org, PgAdmin III `Eto PgAccess (http://www.pgaccess.org), PgAdmin III
(http://www.pgadmin.org, Win32-only), RHDB Admin ( (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/)
http://sources.redhat.com/rhdb/) i Rekall ( i Rekall ( http://www.thekompany.com/products/rekall/, kommercheskij).
http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe Takzhe est' PHPPgAdmin ( http://phppgadmin.sourceforge.net/) -
est' PHPPgAdmin ( http://phppgadmin.sourceforge.net/) - interfejs k interfejs k PostgreSQL, osnovannyj na Web.
PostgreSQL, osnovannyj na Web.
2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL? 2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?

@ -27,7 +27,7 @@ System Configuration
Operating System (example: Linux 2.4.18) : Operating System (example: Linux 2.4.18) :
PostgreSQL version (example: PostgreSQL-7.4.1): PostgreSQL-7.4.1 PostgreSQL version (example: PostgreSQL-7.4.2): PostgreSQL-7.4.2
Compiler used (example: gcc 2.95.2) : Compiler used (example: gcc 2.95.2) :

@ -10,14 +10,13 @@
alink="#0000ff"> alink="#0000ff">
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1> <H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
<P>Last updated: Sat Nov 29 23:54:03 EST 2003</P> <P>Last updated: Sat Feb 7 22:16:21 EST 2004</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>
</P> </P>
<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.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.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=
@ -157,7 +156,8 @@
<H4><A name="1.1">1.1</A>) What is PostgreSQL? How is it pronounced?</H4> <H4><A name="1.1">1.1</A>) What is PostgreSQL? How is it pronounced?</H4>
<P>PostgreSQL is pronounced <I>Post-Gres-Q-L</I>.</P> <P>PostgreSQL is pronounced <I>Post-Gres-Q-L</I>. The name "Postgres" is
also used in conversation.</P>
<P>PostgreSQL is an enhancement of the POSTGRES database management <P>PostgreSQL is an enhancement of the POSTGRES database management
system, a next-generation <SMALL>DBMS</SMALL> research prototype. system, a next-generation <SMALL>DBMS</SMALL> research prototype.
@ -170,8 +170,12 @@
developers who all subscribe to the PostgreSQL development mailing developers who all subscribe to the PostgreSQL development mailing
list. The current coordinator is Marc G. Fournier (<A href= list. The current coordinator is Marc G. Fournier (<A href=
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (See "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (See
section <a href="#1.6">1.6</a> on how to join). This team is now section <a href="#1.6">1.6</a> on how to join). This team is now
responsible for all development of PostgreSQL.</P> responsible for all development of PostgreSQL. It is a community
project and is not controlled by any company. To get involved, see
the developer's FAQ,<A href=
"http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A>
</P>
<P>The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. <P>The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen.
Many others have contributed to the porting, testing, debugging, Many others have contributed to the porting, testing, debugging,
@ -316,7 +320,7 @@
<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 and Freenode, <P>There is also an IRC channel on Freenode and EFNet,
channel <I>#PostgreSQL</I>. You can use the Unix command <CODE>irc -c channel <I>#PostgreSQL</I>. You can use the Unix command <CODE>irc -c
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE> or <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE> or <CODE>irc -c
'#PostgreSQL' "$USER" irc.freenode.net.</CODE></P> '#PostgreSQL' "$USER" irc.freenode.net.</CODE></P>
@ -326,7 +330,7 @@
<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>
<P>The latest release of PostgreSQL is version 7.4.</P> <P>The latest release of PostgreSQL is version 7.4.1.</P>
<P>We plan to have major releases every six to eight months.</P> <P>We plan to have major releases every six to eight months.</P>
@ -446,7 +450,8 @@
release. There is an interesting Web page comparing PostgreSQL to release. There is an interesting Web page comparing PostgreSQL to
MySQL at <A href="http://openacs.org/philosophy/why-not-mysql.html"> MySQL at <A href="http://openacs.org/philosophy/why-not-mysql.html">
http://openacs.org/philosophy/why-not-mysql.html</A> Also, MySQL is http://openacs.org/philosophy/why-not-mysql.html</A> Also, MySQL is
is a company that distributes its products via open source, not an is a company that distributes its products via open source, and requires
a commercial license for close-source software, not an
open source development community like PostgreSQL.<BR> open source development community like PostgreSQL.<BR>
<BR> <BR>
@ -927,7 +932,7 @@
<P>Indexes do not require as much overhead, but do contain the data <P>Indexes do not require as much overhead, but do contain the data
that is being indexed, so they can be large also.</P> that is being indexed, so they can be large also.</P>
<P><SMALL>NULL</SMALL>s are stored in bitmaps, so they <P><SMALL>NULL</SMALL>s are stored as bitmaps, so they
use very little space.</P> use very little space.</P>
<H4><A name="4.7">4.7</A>) How do I find out what tables, indexes, <H4><A name="4.7">4.7</A>) How do I find out what tables, indexes,

@ -12,16 +12,15 @@
<H1>Developer's Frequently Asked Questions (FAQ) for <H1>Developer's Frequently Asked Questions (FAQ) for
PostgreSQL</H1> PostgreSQL</H1>
<P>Last updated: Sat Nov 29 23:56:43 EST 2003</P> <P>Last updated: Tue Feb 10 10:16:31 EST 2004</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>
</P> </P>
<P>The most recent version of this document can be viewed at the <P>The most recent version of this document can be viewed at <A href=
postgreSQL Web site, <A href= "http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A>.</P>
"http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>.<BR>
</P>
<HR> <HR>
<BR> <BR>

@ -14,7 +14,7 @@ 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: Di., den 02.09.2003, 10:00 CET</p> <p>Letzte Aktualisierung der deutschen Übersetzung: Fr., den 02.01.2004, 07:30 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>
@ -220,7 +220,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
in der Vorbereitung.</p> in der Vorbereitung.</p>
<p>Weitere Informationen zum Status von PostgreSQL auf der Microsoft-Plattform <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> befinden sich unter <a href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</a> (en.) sowie <a href="http://momjian.postgresql.org/main/writings/pgsql/win32.html"> http://momjian.postgresql.org/main/writings/pgsql/win32.html</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> <p>Eine Portierung für Novell Netware 6 gibt es unter <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
@ -273,9 +273,10 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</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 bei EFNet und bei OpenProjects, Channel <p>Es gibt außerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
<em>#PostgreSQL</em>. Der FAQ-Autor Bruce Momjian nutzt den Unix-Befehl: <em>#PostgreSQL</em>. Unter UNIX/Linux können Sie mit z.B.
<small>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</small> um daran teilzunehmen.</p> <small>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</small> bzw. <small>irc -c
'#PostgreSQL' "$USER" irc.freenode.net.</small> daran teilnehmen.</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
@ -284,7 +285,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</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.4 .</p> <p>Die neueste Version von PostgreSQL ist 7.4.1 .</p>
<p>Die Freigabe einer neuen Version erfolgt im Schnitt ca. dreimal pro Jahr.</p> <p>Die Freigabe einer neuen Version erfolgt im Schnitt ca. dreimal pro Jahr.</p>
@ -374,13 +375,15 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<dt><b>Performanz</b></dt> <dt><b>Performanz</b></dt>
<dd><p>PostgreSQL weist eine Performanz auf, die mit der von kommerziellen <dd><p>PostgreSQL weist eine Performanz auf, die mit der von kommerziellen
und anderen Open-Source-Datenbanken vergleichbar ist. In und anderen Open-Source-Datenbanken vergleichbar ist. In
manchen Bereichen ist es schneller, in anderen langsamen. Im manchen Bereichen ist es schneller, in anderen langsamer.</p>
Vergleich zu MySQL oder abgespeckten Datenbank-Systemen sind <p>Im Vergleich zu MySQL oder abgespeckten Datenbank-Systemen
INSERT- und UPDATE-Anweisungen aufgrund des Transaktionsaufwands ist PostgreSQL in Lastsituationen - z.B. bei zeitgleichen
langsamer. MySQL hat allerdings keine der oben erwähnten Zugriffen durch mehrere Nutzer, komplexen Abfragen oder gleichzeitigen
Eigenschaften. PostgreSQL setzt auf Zuverlässigkeit und Lese- und Schreibzugriffen schneller. MySQL ist nur bei einfacheren
Funktionsumfang, obwohl selbstredend ständig an Performanz- SELECT-Abfragen mit wenigen Nutzern schneller. MySQL hat allerdings
Verbesserungen gearbeitet wird. Ein interessanter Vergleich wenige der oben erwähnten Eigenschaften. PostgreSQL setzt auf
Zuverlässigkeit und Funktionsumfang, dabei wird selbstredend ständig
an Performanz-Verbesserungen gearbeitet. Ein interessanter Vergleich
zwischen PostgreSQL und MySQL befindet sich unter dieser URL: zwischen PostgreSQL und MySQL befindet sich unter dieser URL:
<a href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</a></p> <a href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</a></p>
</dd> </dd>
@ -479,9 +482,8 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<p>Es gibt mehrere grafische Schnittstellen für PostgreSQL, darunter <p>Es gibt mehrere grafische Schnittstellen für PostgreSQL, darunter
PgAccess ( <a href="http://www.pgaccess.org">http://www.pgaccess.org</a>), PgAccess ( <a href="http://www.pgaccess.org">http://www.pgaccess.org</a>),
PgAdmin II (<a PgAdmin III (<a
href="http://www.pgadmin.org">http://www.pgadmin.org</a>, href="http://www.pgadmin.org">http://www.pgadmin.org</a>, RHDB Admin (<a
nur für Win32), RHDB Admin (<a
href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/ href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/
</a>) und Rekall (<a href="http://www.thekompany.com/products/rekall/"> </a>) und Rekall (<a href="http://www.thekompany.com/products/rekall/">
http://www.thekompany.com/products/rekall/</a>, proprietär). Es gibt http://www.thekompany.com/products/rekall/</a>, proprietär). Es gibt
@ -785,7 +787,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
<pre> <pre>
Maximale Größe eine Datenbank? unbeschränkt (es existieren Maximale Größe eine Datenbank? unbeschränkt (es existieren
Datenbanken mit 4TB) Datenbanken mit 4TB)
Maximale Größe einer Tabelle? 16 TB Maximale Größe einer Tabelle? 32 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
Maximale Anzahl von Zeilen in einer Tabelle? Maximale Anzahl von Zeilen in einer Tabelle?
@ -799,7 +801,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p>
verfügbaren Platten- und Speicherressourcen eingeschränkt sind. verfügbaren Platten- und Speicherressourcen eingeschränkt sind.
Extreme Größen können zu Leistungseinbußen führen.</p> Extreme Größen können zu Leistungseinbußen führen.</p>
<p>Die maximale Tabellengröße von 16 TB benötigt keine Large-File-Unterstützung <p>Die maximale Tabellengröße von 32 TB benötigt keine Large-File-Unterstützung
im Betriebssystem. Große Tabellen werden in Dateien mit einer Größe von im Betriebssystem. Große Tabellen werden in Dateien mit einer Größe von
1 GB aufgeteilt, wodurch etwaige dateisystem-bedingte Beschränkungen nicht 1 GB aufgeteilt, wodurch etwaige dateisystem-bedingte Beschränkungen nicht
relevant sind.</p> relevant sind.</p>
@ -1012,7 +1014,7 @@ BYTEA bytea Bytearray mit variabler L
Werts?</h4> Werts?</h4>
<p>PostgreSQL bietet einen <small>SERIAL</small>-Datentyp. Dieser erzeugt automatisch <p>PostgreSQL bietet einen <small>SERIAL</small>-Datentyp. Dieser erzeugt automatisch
eine Sequenz und einen Index auf die angegebene Spalte. Zum Beispiel:</p> eine Sequenz auf die angegebene Spalte. Zum Beispiel:</p>
<pre> <pre>
CREATE TABLE person ( CREATE TABLE person (
id SERIAL, id SERIAL,
@ -1025,7 +1027,6 @@ BYTEA bytea Bytearray mit variabler L
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 );
</pre><p> umgewandelt.</p> </pre><p> umgewandelt.</p>
<p>Die <em>create_sequence</em> Man-Page liefert weitere Informationen über Sequenzen. <p>Die <em>create_sequence</em> Man-Page liefert weitere Informationen über Sequenzen.
@ -1180,8 +1181,8 @@ BYTEA bytea Bytearray mit variabler L
<h4><a name="4.22">4.22</a>) Warum sind meine Unterabfragen (subqueries), die IN verwenden, <h4><a name="4.22">4.22</a>) Warum sind meine Unterabfragen (subqueries), die IN verwenden,
so langsam?</h4> so langsam?</h4>
<p>Derzeit werden Unterabfragen mit der äusseren Abfrage verbunden, indem <p>In Versionen vor 7.4 werden Unterabfragen mit der äusseren Abfrage verbunden,
für jede Reihe der äusseren Query die Ergebnisse der Unterabfrage in dem für jede Reihe der äusseren Query die Ergebnisse der Unterabfrage
sequentiell geprüft werden. Um dies zu vermeiden, kann man <small>IN</small> durch sequentiell geprüft werden. Um dies zu vermeiden, kann man <small>IN</small> durch
<small>EXISTS</small> ersetzen, z.B.:</p> <small>EXISTS</small> ersetzen, z.B.:</p>
<pre> <pre>
@ -1196,8 +1197,10 @@ BYTEA bytea Bytearray mit variabler L
WHERE EXISTS (SELECT spalte2 FROM tabelle_2 WHERE spalte1 = spalte2) WHERE EXISTS (SELECT spalte2 FROM tabelle_2 WHERE spalte1 = spalte2)
</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. Ab PostgreSQL 7.4 <small>IN</small> verwendet
wird in der nächsten PostgreSQL-Version (7.4) behoben werden.</p> die gleichen Methoden wie die normale Tabellenverknüpfung und ist daher soger
<small>EXISTS</small> vorzuziehen.
</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>
@ -1355,8 +1358,6 @@ BYTEA bytea Bytearray mit variabler L
entgegen, verweise jedoch auf die Mailing-Listen als schnelle und zuverlässige entgegen, verweise jedoch auf die Mailing-Listen als schnelle und zuverlässige
Anlaufstellen.</p> Anlaufstellen.</p>
<p>Diese Übersetzung basiert teilweise auf einer früheren Übersetzung von Karsten
Schulz (<a href="mailto:schulz@linux-systemhaus.de">schulz@linux-systemhaus.de</a>).</p>
</body> </body>
</html> </html>

@ -15,7 +15,9 @@
<H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1> <H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1>
<P>Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002</P> <P>Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004</P>
<P>Ostatnia aktualizacja tłumaczenia: Piątek Marzec 5 19:31:12 EST 2004</P>
<P>Obecny maintainer: Bruce Momjian (<A href= <P>Obecny 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>
@ -24,16 +26,15 @@
"mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR> "mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR>
</P> </P>
<P>Najbardziej aktualną wersję tego dokumentu można znaleźć pod <P>Najbardziej aktualną wersję tego dokumentu można znaleźć pod
adresem: adresem:
<A href= <A href=
"http://www.Postgresql.org/docs/faq-english.html">http://www.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>Odpowiedzi na pytania dotyczące konkretnych systemów operacyjnych <P>Odpowiedzi na pytania dotyczące konkretnych systemów operacyjnych
można znaleźć pod adresem: można znaleźć pod adresem:
<A href= <A href=
"http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.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">Pytania ogólne</H2> <H2 align="center">Pytania ogólne</H2>
@ -64,20 +65,19 @@
PostgreSQL?<BR> PostgreSQL?<BR>
<A href="#2.2">2.2</A>) Jakie istnieją narzędzia pozwalające na dostęp do <A href="#2.2">2.2</A>) Jakie istnieją narzędzia pozwalające na dostęp do
PostgreSQL przez www?<BR> PostgreSQL przez www?<BR>
<A href="#2.3">2.3</A>) Czy istnieje jakieś GUI dla PostgreSQL? <A href="#2.3">2.3</A>) Czy istnieje jakieś GUI dla PostgreSQL?<BR>
Narzędzie do raportowania? Interfejs dla "embedded query language"?<BR>
<A href="#2.4">2.4</A>) Za pomocą jakich języków programowania można <A href="#2.4">2.4</A>) Za pomocą jakich języków programowania można
się komunikować z PostgreSQL?<BR> się komunikować z PostgreSQL?<BR>
<H2 align="center">Pytania administratora</H2> <H2 align="center">Pytania dotyczące administracji</H2>
<A href="#3.1">3.1</A>) Jak mogę zainstalować PostgreSQL w innej <A href="#3.1">3.1</A>) Jak mogę zainstalować PostgreSQL w innej
lokalizacji niż <I>/usr/local/pgsql</I>?<BR> lokalizacji niż <I>/usr/local/pgsql</I>?<BR>
<A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
otrzymuję komunikat: otrzymuję komunikat:
<I>Bad System Call</I> lub "core dumped". Dlaczego?<BR> <I>Bad System Call</I> lub "core dumped". Dlaczego?<BR>
<A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>,
otrzymuję komunikato błędzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR> otrzymuję komunikat o błędzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
<A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>, <A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
otrzymuję komunikat o błędzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR> otrzymuję komunikat o błędzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR>
<A href="#3.5">3.5</A>) W jaki sposób mogę kontrolować połączenia z <A href="#3.5">3.5</A>) W jaki sposób mogę kontrolować połączenia z
@ -87,9 +87,9 @@
<A href="#3.7">3.7</A>) Jakie są możliwości wyszukiwania błędów?<BR> <A href="#3.7">3.7</A>) Jakie są możliwości wyszukiwania błędów?<BR>
<A href="#3.8">3.8</A>) Skąd się bierze komunikat: <I>"Sorry, too many <A href="#3.8">3.8</A>) Skąd się bierze komunikat: <I>"Sorry, too many
clients"</I> podczas próby połączenia się z bazą danych?<BR> clients"</I> podczas próby połączenia się z bazą danych?<BR>
<A href="#3.9">3.9</A>) Co to za pliki typu <I>pg_sorttempNNN.NN</I> <A href="#3.9">3.9</A>) Jakie pliki znajdują się w <I>pg_temp</I>?<BR>
, które znajdują się w katalogu z plikami bazy danych?<BR> <A href="#3.10">3.10</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skryptów dump i restore?<BR>
<H2 align="center">Pytania dotyczące użytkowania</H2> <H2 align="center">Pytania dotyczące użytkowania</H2>
<A href="#4.1">4.1</A>) Jaka jest różnica pomiędzy kursorami <A href="#4.1">4.1</A>) Jaka jest różnica pomiędzy kursorami
@ -98,7 +98,8 @@
jedynie kilka pierwszych wyników zapytania?<BR> jedynie kilka pierwszych wyników zapytania?<BR>
<A href="#4.3">4.3</A>) Jak mogę uzyskać listę wszystkich tabel czy <A href="#4.3">4.3</A>) Jak mogę uzyskać listę wszystkich tabel czy
innych rzeczy pod <I>psql</I>?<BR> innych rzeczy pod <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) Jak usunąć kolumnę z tabeli?<BR> <A href="#4.4">4.4</A>) Jak usunąć kolumnę z tabeli lub zmienić jej
typ?<BR>
<A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzędu, <A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzędu,
tabeli i bazy danych?<BR> tabeli i bazy danych?<BR>
<A href="#4.6">4.6</A>) Jak dużo miejsca w bazie danych jest <A href="#4.6">4.6</A>) Jak dużo miejsca w bazie danych jest
@ -148,8 +149,13 @@
baz danych jednocześnie?<BR> baz danych jednocześnie?<BR>
<A href="#4.25">4.25</A>) Jak zwrócić w funkcji wiele rzędów lub <A href="#4.25">4.25</A>) Jak zwrócić w funkcji wiele rzędów lub
kolumn?<BR> kolumn?<BR>
<A href="#4.26">4.26</A>) Dlaczego nie mogę w sposób pewny
tworzyć/usuwać tabel tymczasowych w funkcjach PL/PgSQL?<BR>
<A href="#4.27">4.27</A>) Jakie są możliwości replikacji w
PostgreSQL?<BR>
<A href="#4.28">4.28</A>) Jakie możliwości szyfrowania oferuje
PostgreSQL?<BR>
<H2 align="center">Rozwijanie PostgreSQL</H2> <H2 align="center">Rozwijanie PostgreSQL</H2>
<A href="#5.1">5.1</A>) Napisałem własną funkcję. Kiedy użyję jej w <A href="#5.1">5.1</A>) Napisałem własną funkcję. Kiedy użyję jej w
<I>psql</I>, program zrzuca pamięć (dump core)?<BR> <I>psql</I>, program zrzuca pamięć (dump core)?<BR>
@ -166,7 +172,8 @@
<H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawiać?</H4> <H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawiać?</H4>
<P>PostgreSQL wymawia się <I>Post-Gres-kju-el</I>.</P> <P>PostgreSQL wymawia się <I>Post-Gres-kju-el</I>. Często podczas
rozmów używany jest termin "Postgres"</P>
<P>PostgreSQL jest rozszerzeniem systemu zarządzania bazami danych - <P>PostgreSQL jest rozszerzeniem systemu zarządzania bazami danych -
POSTGRES, kolejną generacją rozwojowego prototypu <SMALL>DBMS</SMALL>. POSTGRES, kolejną generacją rozwojowego prototypu <SMALL>DBMS</SMALL>.
@ -181,11 +188,14 @@
komunikujących się poprzez mailowe listy dyskusyjne PostgreSQL. komunikujących się poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (<A href= Obecnym koordynatorem jest Marc G. Fournier (<A href=
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz
poniżej jak się przyłączyć). Ta grupa ludzi jest odpowiedzialna za pytanie <A href="#1.6">1.6</A> jak się przyłączyć). Ta grupa ludzi jest
cały rozwój PostgreSQL.</P> odpowiedzialna za cały rozwój PostgreSQL. PostgreSQL jest projektem
nie kontrolowanym przez żadną firmę, aby wziąć udział w jego rozwoju
sprawdź, <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</a></P>
<P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. <P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
Wiele innych osób pomogło przy portowaniu, testowaniu, debugowaniu, i Wiele innych osób pomogło przy portowaniu, testowaniu, debugowaniu i
rozwijaniu kodu. Oryginalny kod Postgresa, na którym został oparty rozwijaniu kodu. Oryginalny kod Postgresa, na którym został oparty
PostgreSQL, był wysiłkiem studentów oraz pracowników pracujących pod PostgreSQL, był wysiłkiem studentów oraz pracowników pracujących pod
kierownictwem profesora Michael'a Stonebraker'a z University of kierownictwem profesora Michael'a Stonebraker'a z University of
@ -243,11 +253,11 @@
<P><STRONG>Klient</STRONG></P> <P><STRONG>Klient</STRONG></P>
<P>Możliwa jest kompilacja bibliteki C <I>libpq</I> C, psql oraz <P>Możliwa jest kompilacja bibliteki C <I>libpq</I>, psql oraz
innych interfejsów i uruchamianie ich na platformie MS Windows. W tym innych interfejsów i uruchamianie ich na platformie MS Windows. W tym
wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje się wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje się
poprzez TCP/IP. Serwer może działać na dowolnej wspieranej platformie poprzez TCP/IP. Serwer może działać na dowolnej wspieranej platformie
Unixowej. Plik <I>win31.mak</I> jest dołączony Unixowej. Plik <I>win32.mak</I> jest dołączony
do źródeł, aby można było stworzyć bibliotekę <I>libpq</I> oraz do źródeł, aby można było stworzyć bibliotekę <I>libpq</I> oraz
program <I>psql</I> działające w środowisku Win32. PostgreSQL może się program <I>psql</I> działające w środowisku Win32. PostgreSQL może się
także komunikować z klientami <SMALL>ODBC</SMALL>.</P> także komunikować z klientami <SMALL>ODBC</SMALL>.</P>
@ -257,9 +267,18 @@
<P>Serwer może być uruchamiany na Windows NT i Win2k używając <P>Serwer może być uruchamiany na Windows NT i Win2k używając
bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I> bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
znajdującym się w źródłach lub pod adresem: <A href= znajdującym się w źródłach lub pod adresem: <A href=
"http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A> "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.<P>
na naszych stronach. Nie planujemy tworzyć portu przeznaczonego Obecnie prowadzone są prace nad stworzeniem wersji dla MS Win
docelowo dla platformy Microsoft.</P> NT/200/XP. Jeśli chcesz się dowiedzieć o obecnym statusie tych prac
zobacz <A
href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> and
<A
href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.
</P>
<P>
Istnieje także port pod Novell Netware 6 dostępny pod adresem <A
href="http://forge.novell.com">http://forge.novell.com</A>.
</P>
<H4><A name="1.5">1.5</A>) Skąd można ściągnąć PostgreSQL?</H4> <H4><A name="1.5">1.5</A>) Skąd można ściągnąć PostgreSQL?</H4>
@ -324,14 +343,13 @@
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P> '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
<P>Lista firm oferujących wsparcie na zasadach komercyjnych znajduje <P>Lista firm oferujących wsparcie na zasadach komercyjnych znajduje
się pod adresem: <A href= się pod adresem: <A href= "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</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>) Jaka jest ostatnia dostępna wersja?</H4> <H4><A name="1.7">1.7</A>) Jaka jest ostatnia dostępna wersja?</H4>
<P>Ostatnia dostępna wersja PostgreSQL to 7.2.1.</P> <P>Ostatnia dostępna wersja PostgreSQL to 7.4.1.</P>
<P>Planujemy publikowanie kolejnych wersji co cztery miesiące.</P> <P>Planujemy publikowanie kolejnych wersji co sześć do ośmiu miesięcy.</P>
<H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dostępna?</H4> <H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dostępna?</H4>
@ -339,8 +357,8 @@
testowania są załączone w samej dystrybucji. Znajdują się one w testowania są załączone w samej dystrybucji. Znajdują się one w
katalogu <I>/doc</I>. Manual może być także przeglądany poprzez katalogu <I>/doc</I>. Manual może być także przeglądany poprzez
strony www pod adresem <A href= strony www pod adresem <A href=
"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</A>.</P> "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
<P>Istnieją także dwie książki dostępne online pod adresami <P>Istnieją także dwie książki dostępne online pod adresami
<A href= <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>
@ -348,14 +366,15 @@
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>. "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
Lista książek o PostgreSQL, które można kupić znajduje się pod adresem Lista książek o PostgreSQL, które można kupić znajduje się pod adresem
<A href= <A href=
"http://www.postgresql.org/books/">http://www.postgresql.org/books/</A>. "http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
Zbiór technicznych artykułów o PostgreSQL znajduje się pod adresem <A Zbiór technicznych artykułów o PostgreSQL znajduje się pod adresem <A
href= href=
"http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P> "http://techdocs.PostgreSQL.org">http://techdocs.postgresql.org/</A>.</P>
<P><I>psql</I> posiada kilka wbudowanych poleceń \d, za pomoca których <P><I>psql</I> posiada kilka wbudowanych poleceń \d, za pomoca których
można sprawdzić informacje dotyczące typów, operatorów, funkcji, można sprawdzić informacje dotyczące typów, operatorów, funkcji,
aggregatów itd.</P> agregatów itd.</P>
<P>Na naszej stronie można znaleźć dużo więcej dokumentacji.</P> <P>Na naszej stronie można znaleźć dużo więcej dokumentacji.</P>
@ -409,8 +428,8 @@
<P>Jest około 12 osób, które mają uprawnienia do commit'owania w <P>Jest około 12 osób, które mają uprawnienia do commit'owania w
<SMALL>CVS</SMALL> PostgreSQL'a. Każdy z nich submitował tak wiele <SMALL>CVS</SMALL> PostgreSQL'a. Każdy z nich submitował tak wiele
wysokiej jakości patchy, że stało się niemożliwe dla obecnych wysokiej jakości patchy, że stało się niemożliwe dla obecnych
commiterów być z nimi na bieżąco, mając pewność że są to poprawki commiterów być z nimi na bieżąco, więc musieliśmy im ufać i mieć
wysokiej jakości.</P> pewność, że ich poprawki są wysokiej jakości.</P>
<H4><A name="1.13">1.13</A>) Jak mogę zgłaszać błędy?</H4> <H4><A name="1.13">1.13</A>) Jak mogę zgłaszać błędy?</H4>
@ -437,52 +456,37 @@
oraz wyrafinowany system blokowania. Mamy także właściowści których oraz wyrafinowany system blokowania. Mamy także właściowści których
inni nie posiadają, jak typy definiowane przez użytkownika, inni nie posiadają, jak typy definiowane przez użytkownika,
dziedziczenie, rules, multi-version concurrency control, która dziedziczenie, rules, multi-version concurrency control, która
redukuje problemy z blokowaiem (lock contention).<BR> redukuje problemy z blokowaniem (lock contention).<BR>
<BR> <BR>
</DD> </DD>
<DT><B>Wydajność</B></DT> <DT><B>Wydajność</B></DT>
<DD>PostgreSQL działa w dwóch trybach. Standardowy tryb <I>fsync</I> <DD>Wydajność PostgreSQL jest podobna do innych komercyjnych i open
zrzuca każdą zakończoną transakcję na dysk, gwarantując w ten source baz danych. W niektórych sytuacjach jest szybszy w
sposób to, że jeśli system operacyjny się zawiesi lub straci niektórych wolniejszy. W porównianiu do MySQL lub mniejszych baz
zasilanie wciągu kilku nastepnych sekund, wszystkie Twoje dane danych jesteśmy szybsi przy wielu użytkownikach, skomplikowaych
zostaną bezpiecznie zapisane na dysku. W tym trybie, jesteśmy zapytaniach i dużym obciążeniu podczas. MySQL jest szybszy dla
wolniejsi niż większość komercyjnych baz danych, częściowo dlatego prostych SELECTów wykonywanych przez niewielu użytkowników.
że niewiele z nich wykonuje taki sposób zapisywania danych jako Spowodowane jest to narzutem, który się pojawia przy transakcjach.
domyślne ustawienie. Oczywiście MySQL nie ma większości z rozwiązań opisanych powyżej
W trybie <I>no-fsync</I> z reguły jesteśmy szybsi niż komercyjne w sekcji <I> Możliwości </I>. PostgreSQL został stworzony z myślą o
bazy danych, chociaż w tym wypadku zawieszenie się systemu może stabilności, oraz szerokiej gamie możliwości, ale mimo to staramy
spowodować uszkodzenie danych. Pracujemy nad tym, aby stworzyć się w każdej wersji poprawiać jego wydajność.
pośredni tryb, który powoduje mniejszą redukcję wydajności niż tryb Ciekawe porównanie PostgreSQL i MySQL można znaleźć pod adresem <A href=
fsync i pozwoli na integralność danych w przeciągu 30 sekund do "http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>
załamania się systemu operacyjnego.<BR> Dodatkowo, MySQL jest firmą, która dystrybuuje jej produkty poprzez
<BR> zasadę Open Source i wymaga wykupienia licencji w przypadku
Porównując do MySQL czy innych prostych baz danych, jesteśmy tworzenia close-source software, co ie ma miejsca w przypadku
wolniejsi przy wykonywaniu insertów/updatów przez narzut PostgreSQL.<BR>
spowodowany przez transakcje. Oczywiście MySQL nie posiada żadnej z
wymienionych wyżej <I>możliwości</I>. PostgreSQL został zbudowany
aby być DBMS elastycznym i bogatym z różnorakie możliwości,
aczkolwiek dbamy, aby poprawiać jego wydajność poprzez analizę
kodu źródłowego i profilowanie. Ciekawe porównanie PostgreSQL i MySQL
można znaleźć pod adresem <A href=
"http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A><BR>
<BR>
Każde połączenie klienta jest obsługiwane przez nas poprzez
stworzenie nowego procesu Unixowego. Procesy backendu dzielą
bufory danych oraz informację o blokadach. Używając wielu
procesorów, różne backendy mogą bez problemu działać na różnych
procesorach.<BR>
<BR> <BR>
</DD> </DD>
<DT><B>Stabilność</B></DT> <DT><B>Stabilność</B></DT>
<DD>Zdajemy sobie sprawę, że <SMALL>DBMS</SMALL> musi być stabilny, <DD>Zdajemy sobie sprawę, że <SMALL>DBMS</SMALL> musi być stabilny,
w przeciwnym wypadku jest bez wartości. Staramy się publikować kod w przeciwnym wypadku jest bez wartości. Staramy się publikować kod
stabilny, dobrze przetestowany, z minimum możliwych błędów. Każde stabilny, dobrze przetestowany, z minimum możliwych błędów. Każde
wydanie poprzedza conajmniej miesiąc testów wersji beta. Patrząc na wydanie poprzedza co najmniej miesiąc testów wersji beta. Patrząc na
historię wydań PostgreSQL widać, że dostarczamy stabilne, dobrze historię wydań PostgreSQL widać, że dostarczamy stabilne, dobrze
sprawdzone wersje, które są gotowe do użycia w środowisku sprawdzone wersje, które są gotowe do użycia w środowisku
produkcyjnym. Myślimy, że proces publikowania kolejnych wersji produkcyjnym. Myślimy, że proces publikowania kolejnych wersji
@ -521,20 +525,20 @@
PostgreSQL?</H4> PostgreSQL?</H4>
<P>PostgreSQL korzysta z najlepszej infrastruktury od samego początku <P>PostgreSQL korzysta z najlepszej infrastruktury od samego początku
istnienia projektu, tzn. sześciu lat. Wszystko to zawdzięczamy Marc'owi istnienia projektu, czyli roku 1996 kiedy rozpoczeliśmy pracę. Wszystko
Fournier'owi, który stworzył tą infrastrukturę i zarządza nią od to zawdzięczamy Marc'owi Fournier'owi, który stworzył tą infrastrukturę
lat.</P> i zarządza nią od lat.</P>
<P>Wysokiej jakości infrastruktura jest bardzo ważna dla każdego <P>Wysokiej jakości infrastruktura jest bardzo ważna dla każdego
projektu open-source. Zapobiega przerwom w rozwoju projektu i projektu open-source. Zapobiega przerwom w rozwoju projektu i
jakimkolwiek przestojom.</P> jakimkolwiek przestojom.</P>
<P>Oczywiście korzystanie z wysokiej jakości infrastruktury nie jest <P>Oczywiście korzystanie z wysokiej jakości infrastruktury nie jest
tanie. Istnieje wiele róznych miesięcznych, czy jednorazowych tanie. Istnieje wiele różnych miesięcznych, czy jednorazowych
wydatków, które trzeba ponosić aby wszystko działało jak należy. wydatków, które trzeba ponosić aby wszystko działało jak należy.
Jeśli Ty, bądź Twoja firma może wspomóc finansowo rozwój PostgreSQL Jeśli Ty, bądź Twoja firma może wspomóc finansowo rozwój PostgreSQL
odwiedź adres: <A href= odwiedź adres: <A href=
"http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A> "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
gdzie opisane jest jak to zrobić.</P> gdzie opisane jest jak to zrobić.</P>
<P>Chociaż na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" <P>Chociaż na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
@ -542,6 +546,9 @@
przeznaczane na finansowanie jakiejkolwiek firmy. Jeśli wolisz, przeznaczane na finansowanie jakiejkolwiek firmy. Jeśli wolisz,
możesz wysłać czek na adres kontaktowy.</P> możesz wysłać czek na adres kontaktowy.</P>
<HR> <HR>
Jeśli możesz się pochwalić udanymi wdrożeniami PostgreSQL, prosimy
abyś zgłosił nam to na stronie: <A
href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</a>.
<H2 align="center">User Client Questions</H2> <H2 align="center">User Client Questions</H2>
@ -551,25 +558,21 @@
<P>Dostępne są dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC <P>Dostępne są dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC
i OpenLink <SMALL>ODBC</SMALL>.</P> i OpenLink <SMALL>ODBC</SMALL>.</P>
<P>PsqlODBC jest dołączony do źródeł. Więcej informacji na jego temat <P>Możesz pobrać PsqlODBC z adresu <A
możesz znaleźć pod adresem: <A href= href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>
"ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A>.</P> </P>
<P>OpenLink <SMALL>ODBC</SMALL> może być pobrany z adresu: <A href= <P>OpenLink <SMALL>ODBC</SMALL> może być pobrany z adresu: <A href=
"http://www.openlinksw.com/">http://www.openlinksw.com</A>. "http://www.openlinksw.com/">http://www.openlinksw.com</A>.
Współpracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL> Współpracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL>
więc w ten sposób możesz korzystać z PostgreSQL <SMALL>ODBC</SMALL> więc w ten sposób możesz korzystać z PostgreSQL <SMALL>ODBC</SMALL>
dostępnego na każdej plaformie którą wspiera (Win, Mac, Unix, VMS).</P> dostępnego na każdej pltaformie którą wspiera (Win, Mac, Unix, VMS).</P>
<P>Autorzy będą prawdopodobnie sprzedawać ten produkt osobom które <P>Autorzy będą prawdopodobnie sprzedawać ten produkt osobom które
wymagają komercyjnego wsparcia, ale wersja darmowa będzie zawsze wymagają komercyjnego wsparcia, ale wersja darmowa będzie zawsze
dostępna. Wszystkie pytania możesz wysyłać na adres: <A href= dostępna. Wszystkie pytania możesz wysyłać na adres: <A href=
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P> "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
<P>Sprawdź także rozdział o <A href=
"http://www.postgresql.org/devel-corner/docs/programmer/odbc.html">ODBC
w "Programmer's Guide"</A>.</P>
<H4><A name="2.2">2.2</A>) Jakie istnieją narzędzia pozwalające na dostęp do <H4><A name="2.2">2.2</A>) Jakie istnieją narzędzia pozwalające na dostęp do
PostgreSQL przez www?</H4> PostgreSQL przez www?</H4>
@ -577,59 +580,56 @@
przez www możesz znaleźć pod adresem: przez www możesz znaleźć pod adresem:
<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>Inny znajduje się pod adresem: <A href=
"http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
<P>Do integracji z www, świetnym rozwiązaniem jest PHP. Możesz <P>Do integracji z www, świetnym rozwiązaniem jest PHP. Możesz
znaleźć więcej informacji na ten temat pod adresem znaleźć więcej informacji na ten temat pod adresem
<A href="http://www.php.net">http://www.php.net</A>.</P> <A href="http://www.php.net">http://www.php.net</A>.</P>
<P>Wiele osób w przypadku skomplikowanych rozwiązań uzywa Perl'a i <P>Wiele osób w przypadku skomplikowanych rozwiązań uzywa Perl'a i
modułu CGI.pl.</P> modułu CGI.pl lub mod_perl.</P>
<H4><A name="2.3">2.3</A>) Czy istnieje jakieś GUI dla PostgreSQL? <H4><A name="2.3">2.3</A>) Czy istnieje jakieś GUI dla PostgreSQL?</H4>
Narzędzie do raportowania? Interfejs dla "embedded query
language"?</H4>
<P>Mamy całkiem miły interfejs graficzny, który został nazwany <P>Tak, istnieje kilka interfejsów graficznych dla PostgreSQL.
<I>pgaccess</I> i jest on dostarczany jako część źródeł. Wśród nich PgAccess (<A href="http://www.pgaccess.org">
<I>pgaccess</I> posiada także generator raportów. Można go znaleźć http://www.pgaccess.org</A>), PgAdmin III (<A
pod adresem <A href= href="http://www.pgadmin.org">http://www.pgadmin.org</A>),
"http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P> RHDB Admin (http://sources.redhat.com/rhdb/ ) oraz Rekall (
http://www.thekompany.com/products/rekall/, komercyjny). Istnieje
<P>Udostępniliśmy także <I>ecpg</I>, który jest "embedded SQL query także PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
language interface" dla języka C.</P> interfejs dla PostgreSQL.
</P>
<H4><A name="2.4">2.4</A>) Za pomocą jakich języków programowania <P>
Więcej informacji na ten temat znajduje się pod adresem See
<A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.
<H4><A name="2.4">2.4</A>) Za pomocą jakich języków programowania
można się komunikować z PostgreSQL?</H4> można się komunikować z PostgreSQL?</H4>
<P>Mamy wsparcie dla:</P> <P>Najbardziej popularne języki posiiadają własny interfejs dla
PostgreSQL. Sprawdź listę rozszerzeń dla intersującego Ciebie języka
programowania.</P>
<P>Ze źródłami PostreSQL dystrubuowane są interfejsy dla
następujących języków programowania:</P>
<UL> <UL>
<LI>C (libpq)</LI> <LI>C (libpq)</LI>
<LI>C++ (libpq++)</LI>
<LI>Embedded C (ecpg)</LI> <LI>Embedded C (ecpg)</LI>
<LI>Java (jdbc)</LI> <LI>Java (jdbc)</LI>
<LI>Perl (perl5)</LI>
<LI>ODBC (odbc)</LI>
<LI>Python (PyGreSQL)</LI> <LI>Python (PyGreSQL)</LI>
<LI>TCL (libpgtcl)</LI> <LI>TCL (libpgtcl)</LI>
<LI>C Easy API (libpgeasy)</LI>
<LI>Embedded <SMALL>HTML</SMALL> (<A href=
"http://www.php.net">PHP z http://www.php.net</A>)</LI>
</UL> </UL>
Inne interfejsy są dostępne pod adresem:
<A href="http://gborg.postgresql.org"> http://gborg.postgresql.org</A> w
sekcji Drivers/Interfaces.
<HR> <HR>
<H2 align="center">Pytania administratora</H2> <H2 align="center">Pytania dotyczące administracji</H2>
<H4><A name="3.1">3.1</A>) Jak mogę zainstalować PostgreSQL w innej <H4><A name="3.1">3.1</A>) Jak mogę zainstalować PostgreSQL w innej
lokalizacji niż <I>/usr/local/pgsql</I>?</H4> lokalizacji niż <I>/usr/local/pgsql</I>?</H4>
@ -677,7 +677,8 @@
<SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> jądra twojego systemu.</P> <SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> jądra twojego systemu.</P>
<P>Niedziałające semafory mogą spowodować niepoprawne zamknięcie <P>Niedziałające semafory mogą spowodować niepoprawne zamknięcie
systemu w czasie intensywnego korzystania z bazy.</P> systemu w czasie intensywnego korzystania z bazy.</P>
<P>Jeśli treść błędu jest inna, może to oznaczać, że obsługa semaforów <P>Jeśli treść błędu jest inna, może to oznaczać, że obsługa semaforów
nie została włączona do jądra wcale. Zobacz PostgreSQL nie została włączona do jądra wcale. Zobacz PostgreSQL
Administrator's Guide po bardziej szczegółowe informacje o pamięci Administrator's Guide po bardziej szczegółowe informacje o pamięci
@ -692,8 +693,7 @@
<I>postmaster'a</I>, <I>postmaster'a</I>,
<B>oraz</B> nie umożliwi się autoryzacji na podstawie adresu hostów <B>oraz</B> nie umożliwi się autoryzacji na podstawie adresu hostów
modyfikując odpowiednio plik modyfikując odpowiednio plik
<I>$PGDATA/pg_hba.conf</I>. To zmiany pozwolą na <I>$PGDATA/pg_hba.conf</I>. To zmiany pozwolą na połączenia TCP/IP.</P>
połączenia TCP/IP.</P>
<H4><A name="3.6">3.6</A>) Jak powinienem skonfigurować system baz <H4><A name="3.6">3.6</A>) Jak powinienem skonfigurować system baz
danych aby uzyskać lepszą wydajność?</H4> danych aby uzyskać lepszą wydajność?</H4>
@ -709,7 +709,7 @@
określającym transakcję - <SMALL>BEGIN WORK/COMMIT</SMALL>, są określającym transakcję - <SMALL>BEGIN WORK/COMMIT</SMALL>, są
traktowane jako pojedyncza transakcja. Rozważ wykonanie kilku traktowane jako pojedyncza transakcja. Rozważ wykonanie kilku
poleceń/zdań SQL w jednym bloku transakcji. To redukuje narzut poleceń/zdań SQL w jednym bloku transakcji. To redukuje narzut
powodowany przez transakcję. Przy dużych zmianach w danych, warto nakładany przez transakcję. Przy dużych zmianach w danych, warto
usunąć i stworzyć na nowo indeksy.</P> usunąć i stworzyć na nowo indeksy.</P>
<P>Jest kilka opcji pozwalających na poprawienie wydajności. <P>Jest kilka opcji pozwalających na poprawienie wydajności.
@ -825,19 +825,12 @@
maksymalną liczbę procesów backendu to obawa o wyczerpanie zasobów maksymalną liczbę procesów backendu to obawa o wyczerpanie zasobów
systemu.</P> systemu.</P>
<P>W wersjach PostgreSQL wcześniejszych niż 6.5, maksymalna liczba <H4><A name="3.9">3.9</A>) Jakie pliki znajdują się w <I>pg_temp</I>?</H4>
backendów była ustawiona na 64, a zmiana tej wartości wymaga
rekompliacji po zmianie stałej MaxBackendId w pliku
<I>include/storage/sinvaladt.h</I>.</P>
<H4><A name="3.9">3.9</A>) Co to są za pliki typu: <P>Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
<I>pg_sorttempNNN.NN</I>, przykładu, jeśli jakaś operacja sortowania jest wymagana do wykonania
które znajdują się w katalogu z plikami bazy danych?</H4>
<P>Są to tymczasowe pliki utworzone przez executor. Dla przykładu,
jeśli jakaś operacja sortowania jest wymagana do wykonania
<SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga więcej miejsca niż <SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga więcej miejsca niż
paratmetr backendu parametr backendu
<I>-S</I> ustawił do wykorzystania, wtedy tymczasowe pliki są używane <I>-S</I> ustawił do wykorzystania, wtedy tymczasowe pliki są używane
do przechowywania tych danych.</P> do przechowywania tych danych.</P>
@ -846,6 +839,25 @@
poprawnie podczas operacji sortowania. Jeśli w danym momencie nie poprawnie podczas operacji sortowania. Jeśli w danym momencie nie
działają żadne procesy backendów mozesz spokojnie usunąć pliki działają żadne procesy backendów mozesz spokojnie usunąć pliki
pg_tempNNN.NN.</P> pg_tempNNN.NN.</P>
<H4><A name="3.9">3.9</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skryptów dump i restore?</H4>
<P>
Twórcy PostgreSQL dokonują jedynie małych zmian pomiędzy małymi
upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
korzystania z dump i restore. Przy większych zmianach, np. z wersji
7.2 do 7.3, często zmianymają wpływ na format przechowywanych danych.
Zmiany te są na tyle skomplikowane, że nie utrzymujemy zgodości z
poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
takiej postaci, w której łatwe jest ich zaimportowanie do nowszych
wersji bez kłopotu.
</P>
<P>
W wydaniach gdzie zmiany nie dotyczą formatu danych na dysku, można
wykorzystać skryptu pg_upgrade, do upgradu bez użycia dump/restore.
Dokumentacja do danego wydania zawiera informację czy możliwe jest
użycie pg_upgrade.
</P>
<HR> <HR>
<H2 align="center">Pytania dotyczące używania</H2> <H2 align="center">Pytania dotyczące używania</H2>
@ -870,6 +882,15 @@
<SMALL>ORDER BY</SMALL>, PostgreSQL może wykorzystać jedynie kilka <SMALL>ORDER BY</SMALL>, PostgreSQL może wykorzystać jedynie kilka
pierwszych rzędów, być może będzie konieczność wykonania zapytania do pierwszych rzędów, być może będzie konieczność wykonania zapytania do
momentu aż zostaną znalezione pożądane wyniki.</P> momentu aż zostaną znalezione pożądane wyniki.</P>
<P>
Aby otrzymać losowy rząd, użyj:
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
</P>
<H4><A name="4.3">4.3</A>) Jak mogę uzyskać listę wszystkich tabel <H4><A name="4.3">4.3</A>) Jak mogę uzyskać listę wszystkich tabel
czy innych rzeczy pod <I>psql</I>?</H4> czy innych rzeczy pod <I>psql</I>?</H4>
@ -881,37 +902,53 @@
<I>-E</I> wtedy po wykonaniu polecenia z backslashem wyświetlane <I>-E</I> wtedy po wykonaniu polecenia z backslashem wyświetlane
będzie zapytanie, które w rzeczywistości jest wykonywane.</P> będzie zapytanie, które w rzeczywistości jest wykonywane.</P>
<H4><A name="4.4">4.4</A>) Jak usunąć kolumnę z tabeli?</H4> <H4><A name="4.4">4.4</A>) Jak usunąć kolumnę z tabeli lub zmienić
jej typ?</H4>
<P>Nie mamy zaimplementowanego <SMALL>ALTER TABLE DROP
COLUMN,</SMALL> ale możesz zrobić tak:</P> <P>DROP COLUMNT zostało dodane w wersji 7.3 przy poleceniu ALTER
TABLE DROP COLUMN. We wcześńiejszych wersjach możesz zrobić tak:
</P>
<PRE> <PRE>
SELECT ... -- wybierz zawartość wszystkich kolumn poza tą jedną której chcesz się pozbyć BEGIN;
LOCAL TABLE old_table;
SELECT ... -- wybierz wszystkie kolumny poza tą jedną której chcesz się pozbyć
INTO TABLE new_table INTO TABLE new_table
FROM old_table; FROM old_table;
DROP TABLE old_table; DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table; ALTER TABLE new_table RENAME TO old_table;
</PRE> </PRE>
<P>
Aby zmienić typ danych kolumny możesz zrobić tak:
</P>
<PRE>
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 tab DROP COLUMN old_col;
COMMIT;
</PRE>
</P>
<H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzędu, <H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzędu,
tabeli i bazy danych?</H4> tabeli i bazy danych?</H4>
<P>Oto wszystkie ograniczenia:</P> <P>Oto wszystkie ograniczenia:</P>
<PRE> <PRE>
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieją bazy danych o wielkości 500 GB databases ) Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieją
Maksymalny rozmiar dla tabeli? 16 TB bazy danych o wielkości 32 TB databases )
Maksymalny rozmiar dla rzędu? nieograniczony w 7.1 i późniejszych Maksymalny rozmiar dla tabeli? 32 TB
Maksymalny rozmiar pola? 1 GB w 7.1 and later Maksymalny rozmiar dla rzędu? 1.6 TB
Maksymalny rozmiar pola? 1 GB
Maksymalna liczba rzędów w tabeli? nieograniczona Maksymalna liczba rzędów w tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zależoności od typów kolumn Maksymalna liczba kolumn w tabeli? 250-1600 w zależoności od typów kolumn
Makasymalna liczba indeksów na tabeli? nieograniczona Makasymalna liczba indeksów na tabeli? nieograniczona
</PRE> </PRE>
Oczywiście "nieograniczony" nie jest prawdą tak do końca, istnieją Oczywiście "nieograniczony" nie jest prawdą tak do końca, istnieją
ograniczenia wynikające z dostępnego miejsca na dysku, pamięci/swapa. ograniczenia wynikające z dostępnego miejsca na dysku, pamięci/swapa.
Kiedy wielkości te będą bardzo duże może odbić się to na wydajności. Kiedy wielkości te będą bardzo duże może odbić się to na wydajności.
<P>Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu <P>Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla dużych plików. Duże tabele są przechowywane operacyjnego wsparcia dla dużych plików. Duże tabele są przechowywane
jako pliki o rozmiarze 1 GB, więc ograniczenia co do wielkości plików jako pliki o rozmiarze 1 GB, więc ograniczenia co do wielkości plików
narzucone przez system plików nie są istotne.</P> narzucone przez system plików nie są istotne.</P>
@ -957,6 +994,9 @@
<P>Indeksy nie powodują dużego narzutu na zajmowane miejsce, <P>Indeksy nie powodują dużego narzutu na zajmowane miejsce,
ale zawierają pewne dane, ale zawierają pewne dane,
więc w pewnych przypadkach moga być całkiem duże.</P> więc w pewnych przypadkach moga być całkiem duże.</P>
<P> NULLe są przechowywane jako mapy bitowe, więc używają bardzo mało
miejsca.
</P>
<H4><A name="4.7">4.7</A>) Jak mogę sprawdzić jakie tabele, klucze, <H4><A name="4.7">4.7</A>) Jak mogę sprawdzić jakie tabele, klucze,
bazy danych i użytkownicy są utworzeni?</H4> bazy danych i użytkownicy są utworzeni?</H4>
@ -996,17 +1036,39 @@
następuje sortowanie jest zazwyczaj szybsze nię wyszukiwanie za następuje sortowanie jest zazwyczaj szybsze nię wyszukiwanie za
pomocą indeksu na dużej tabeli.</P> pomocą indeksu na dużej tabeli.</P>
Jakkolwiek <SMALL>LIMIT</SMALL> w połączeniu z <SMALL>ORDER BY</SMALL> Jakkolwiek <SMALL>LIMIT</SMALL> w połączeniu z <SMALL>ORDER BY</SMALL>
często będzie wykorzystywał indeksów poniewąz jedynie mała częśc z często będzie wykorzystywał indeksy ponieważ jedynie mała część z
tabeli jest zwracana. tabeli jest zwracana. W rzeczywistości, chociaż MAX() i MIN() nie
używają indeksów, możliwe jest aby zwrócić te wartości używając
indeksów poprzez użycie ORDER BY i LIMIT.
</P>
<PRE>
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
</PRE>
<P>
Jeśli uważasz, że optimizer myli się wybierając sequential scan, użyj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdzić czy wtym
wypadku zapytanie będzie szybciej wykonywane.
<P>Kiedy używa się operatorów dopasujących takich jak <P>Kiedy używa się operatorów dopasujących takich jak
<SMALL>LIKE</SMALL> lub <I>~</I>, indeksy będą używane jedynie jeśli <SMALL>LIKE</SMALL> lub <I>~</I>, indeksy będą używane jedynie w
początek wyszukiwania jest oparty na początku łańcucha tekstu. pewnych wypadkach:</P>
Dlatego, aby używac indeksów, <UL>
dopasowania operatorem <SMALL>LIKE</SMALL> nie mogą się zaczynać <LI>Początek wyszukiwania jest oparty na początku łańcucha tekstu.
<I>%</I>, a dopasowania operatorem <I>~</I> (dopasowania regularne) <UL>
muszą się zaczynać znakiem specjalnym <I>^</I>.</P> <LI>wzorce <SMALL>LIKE</SMALL> nie mogą się zaczynać <I>%</I>
<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
muszą się zaczynać znakiem specjalnym <I>^</I>.</P>
</UL>
<LI>Początek wyszukiwania nie może się zaczynać od klas znaków, np.
[a-e].
<LI>Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
section 4.12.
<LI>Standardowe locale C musi być uzyte przy wykonywaniu initdb
</UL>
<H4><A name="4.9">4.9</A>) Jak mogę sprawdzić w jakis sposób "query <H4><A name="4.9">4.9</A>) Jak mogę sprawdzić w jakis sposób "query
optimizer" wykonuje moje zapytanie?</H4> optimizer" wykonuje moje zapytanie?</H4>
@ -1051,15 +1113,14 @@
<H4><A name="4.12">4.12</A>) Jak mogę używać wyrażeń regularnych w <H4><A name="4.12">4.12</A>) Jak mogę używać wyrażeń regularnych w
zapytaniach i zapytań case-insensitive w wyrażeniach zapytaniach i zapytań case-insensitive w wyrażeniach
regularnych? regularnych?
jak korzystać z indeksów dla zapytań case-insensitive?</H4> Jak korzystać z indeksów dla zapytań case-insensitive?</H4>
<P>Operator <I>~</I> moze być wykorzystywany do wyszukiwania za <P>Operator <I>~</I> moze być wykorzystywany do wyszukiwania za
pomocą wyrażeń regularnych, a pomocą wyrażeń regularnych, a
<I>~*</I> do wyszukiwania case-insensitive z wyrażeniami <I>~*</I> do wyszukiwania case-insensitive z wyrażeniami
regularnymi. regularnymi.
Wariant case-insensitive dla <SMALL>LIKE</SMALL> został nazwany Wariant case-insensitive dla <SMALL>LIKE</SMALL> został nazwany
<SMALL>ILIKE</SMALL> i jest dostępny w PostgreSQL 7.1 i późniejszych <SMALL>ILIKE</SMALL>.</P>
wersjach.</P>
<P>Porównania case-insensitive są zazwyczaj wykonywane w następujący <P>Porównania case-insensitive są zazwyczaj wykonywane w następujący
sposób:</P> sposób:</P>
@ -1087,31 +1148,41 @@
<PRE> <PRE>
Type Nazwa wewnętrzna Uwagi Type Nazwa wewnętrzna Uwagi
-------------------------------------------------- --------------------------------------------------
"char" char 1 znak VARCHAR(n) varchar rozmiar określa maksymalną długość, nie ma tutaj wypełniania
CHAR(#) bpchar wypełniane pustymi znakami do podanej długości CHAR(n) bpchar wypełniane pustymi znakami do podanej długości
VARCHAR(#) varchar rozmiar określa maksymalną długość, nie ma tutaj wypełniania
TEXT text bez limitu na długość łańcucha TEXT text bez limitu na długość łańcucha
BYTEA bytea zmiennej długości tablica bajtów (null-byte safe) BYTEA bytea zmiennej długości tablica bajtów (null-byte safe)
"char" char 1 znak
</PRE> </PRE>
<P>Jeśli będziesz przeglądać katalogi systemowe lub komunikaty o <P>Jeśli będziesz przeglądać katalogi systemowe lub komunikaty o
błędach często spotkasz się z podanymi powyżej nazwami błędach często spotkasz się z podanymi powyżej nazwami
wewnętrznymi.</P> wewnętrznymi.</P>
<P>Ostatnie cztery typy powyżej to tzw typy "varlena" (np. pierwsze <P>Pierwsze cztery typy powyżej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to długość, po których jest data). Dlatego cztery bajty na dysku to długość, po których jest data). Dlatego
faktyczna długośc takiego łańcucha jest trochę większa niż faktyczna długośc takiego łańcucha jest trochę większa niż
zadeklarowany rozmiar. Te typy także podlegają kompresji lub mogą być zadeklarowany rozmiar. Te typy także podlegają kompresji lub mogą być
przechowywane out-of-line jako <SMALL>TOAST</SMALL>, więc faktyczne przechowywane out-of-line jako <SMALL>TOAST</SMALL>, więc faktyczne
zużycie miejsca na dysku może być mniejsze niż oczekiwane.</P> zużycie miejsca na dysku może być mniejsze niż oczekiwane.</P>
<P><SMALL>CHAR()</SMALL> jast najlepszym typem do przechowywania <SMALL>VARCHAR(n)</SMALL> jest
łańcuchów o tej samej długości. <SMALL>VARCHAR()</SMALL> jest
najodpowiedniejszy do przechowywania łańcuchów o różnej długości najodpowiedniejszy do przechowywania łańcuchów o różnej długości
ale określa on maksymalną jego długość. <SMALL>TEXT</SMALL> jest ale określa on maksymalną jego długość.
najlepszy dla łańcuchów o dowolnej długości, nie przekraczającej 1GB.
<SMALL>BYTEA</SMALL> służy do przechowywania danych binarnych, <SMALL>TEXT</SMALL> jest najlepszy dla łańcuchów o dowolnej długości,
w szczególności dla danych zawierających <SMALL>NULL</SMALL> bajty.</P> nie przekraczającej 1GB.</P>
<P>
<SMALL>CHAR(n)</SMALL> jast najlepszym typem do przechowywania
łańcuchów o tej samej długości. CHAR(n) wypełnia dane do żadanej
długości, podczas gdy VARCHAR(n) przechowuje jedynie dane
dostarczone.
<SMALL>BYTEA</SMALL> służy do przechowywania danych binarnych,
w szczególności dla danych zawierających <SMALL>NULL</SMALL> bajty.
Wszystkie typy opisane tutaj maja podobne charakterystyki jeśli
chodzi o wydajność.</P>
<H4><A name="4.15.1">4.15.1</A>) Jak mogę utworzyć pole które samo <H4><A name="4.15.1">4.15.1</A>) Jak mogę utworzyć pole które samo
zwiększa swoją wartość?</H4> zwiększa swoją wartość?</H4>
@ -1188,7 +1259,7 @@ BYTEA bytea zmiennej d
<H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie są <H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie są
ponownie używane przy przerwaniu transakcji? ponownie używane przy przerwaniu transakcji?
Skąd się biorą luki w numerowaniu kolumny tabeli Skąd się biorą luki w numerowaniu kolumny tabeli
sekwancjami/SERIALem?</H4> sekwancjami/SERIALem?</H4>
<P>Aby poprawić zbieżność (concurrency), wartości sekwencji są <P>Aby poprawić zbieżność (concurrency), wartości sekwencji są
@ -1197,8 +1268,7 @@ BYTEA bytea zmiennej d
numerowaniu z przerwanych transakcji.</P> numerowaniu z przerwanych transakcji.</P>
<H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to <H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to
jest jest <SMALL>TID</SMALL>?</H4>
<SMALL>TID</SMALL>?</H4>
<P><SMALL>OID</SMALL> są PostgreSQL'owym rozwiązaniem problemu <P><SMALL>OID</SMALL> są PostgreSQL'owym rozwiązaniem problemu
unikalnych numerów rzędów. Każdy rząd tworzony przez PostgreSQL unikalnych numerów rzędów. Każdy rząd tworzony przez PostgreSQL
@ -1274,15 +1344,15 @@ BYTEA bytea zmiennej d
</UL> </UL>
<P>Listę terminów związanych z bazami danych możesz znaleźć pod tym <P>Listę terminów związanych z bazami danych możesz znaleźć pod tym
adresem:<A href= adresem:<A
"http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P> href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.
<H4><A name="4.18">4.18</A>) Skąd bierze się ten błąd <I>"ERROR: <H4><A name="4.18">4.18</A>) Skąd bierze się ten błąd <I>"ERROR:
Memory exhausted in AllocSetAlloc()"</I>?</H4> Memory exhausted in AllocSetAlloc()"</I>?</H4>
<P>Jeśli używasz wersji starszej niż 7.1, upgrade może rozwiązać ten <P>
problem. Jest także mozliwe, że po prostu wyczerpała Ci się pamięć Prawdopodobnie wyczerpała Ci się pamięć wirtualna (virtual memory)
wirtualna (virtual memory) w systemie lub Twój kernel ma zbyt nisko w systemie lub Twój kernel ma zbyt nisko
ustawione limity dla pewnych zasobów. Spróbuj wykonać następujące ustawione limity dla pewnych zasobów. Spróbuj wykonać następujące
polecenia zanim uruchomisz <I>postmaster'a</I>:</P> polecenia zanim uruchomisz <I>postmaster'a</I>:</P>
<PRE> <PRE>
@ -1332,29 +1402,38 @@ BYTEA bytea zmiennej d
<H4><A name="4.22">4.22</A>) Dlaczego zapytania używające <H4><A name="4.22">4.22</A>) Dlaczego zapytania używające
<CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4> <CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4>
<P>Obecnie łączymy podzapytania w outer queries poprzez sekwencyjne <P>W wersjach wcześniejszych niż 7.4 łączymy podzapytania w outer queries
przeszukiwanie wyników podzapytania dla każdego rzędu z outer query. poprzez sekwencyjne przeszukiwanie wyników podzapytania dla każdego rzędu
Można to ominąć zastępując <CODE>IN</CODE> przez z outer query. Jeśli podzapytanie zwraca jedynie kilka rzędów a
zewnętrzne zapytanie zwraca ich wiele, IN jest najszybsze.
Aby przyspieszyć inne zapytania można zastąpić <CODE>IN</CODE> przez
<CODE>EXISTS</CODE>:</P> <CODE>EXISTS</CODE>:</P>
<PRE> <PRE>
<CODE>SELECT * <CODE>SELECT *
FROM tab FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col IN (SELECT subcol FROM subtab)
</CODE> </CODE>
</PRE> </PRE>
na: na:
<PRE> <PRE>
<CODE>SELECT * <CODE>SELECT *
FROM tab FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
</CODE> </CODE>
</PRE> </PRE>
Mamy zamiar poprawić to ograniczenie w przyszłych wydaniach. <P>
Aby to rozwiązanie było szybkie, subcol powinna być kolumną
indeksowaną.
</P>
<P>
W wersji 7.4 i późniejszych, IN w rzeczywistości używa tej samej
wyrafinowanej techniki łączenia jak normalne zapytania i jest
preferowane nad używaniem EXISTS.
</P>
<H4><A name="4.23">4.23</A>) Jak wykonać "outer join"?</H4> <H4><A name="4.23">4.23</A>) Jak wykonać "outer join"?</H4>
<P>PostgreSQL 7.1 i późniejsze wersje mają zaimplementowane outer join <P>PostgreSQL ma zaimplementowane outer join
wykorzystując standardową składnie SQL. Poniżej dwa przykłady:</P> wykorzystując standardową składnię SQL. Poniżej dwa przykłady:</P>
<PRE> <PRE>
SELECT * SELECT *
@ -1367,7 +1446,7 @@ BYTEA bytea zmiennej d
</PRE> </PRE>
<P>Te dwa identyczne zapytania łączą kolumnę t1.col z kolumną t2.col, <P>Te dwa identyczne zapytania łączą kolumnę t1.col z kolumną t2.col,
ale także zwrócą niepołączone rzędy w t1 (te które nie pasują w t2). ale także zwrócą niepołączone rzędy w t1 (te, które nie pasują w t2).
<SMALL>RIGHT</SMALL> join dodałby niepołączone rzędy z tabeli t2. <SMALL>RIGHT</SMALL> join dodałby niepołączone rzędy z tabeli t2.
<SMALL>FULL</SMALL> join zwróciłby rzędy plus dodatkowo wszystkie <SMALL>FULL</SMALL> join zwróciłby rzędy plus dodatkowo wszystkie
rzędy z tabel t1 i t2. Słowo <SMALL>OUTER</SMALL> jest opcjonalne i rzędy z tabel t1 i t2. Słowo <SMALL>OUTER</SMALL> jest opcjonalne i
@ -1401,19 +1480,63 @@ BYTEA bytea zmiennej d
katalogi systemowe, nie jest do końca jasne jak zapytanie pomiędzy katalogi systemowe, nie jest do końca jasne jak zapytanie pomiędzy
różnymi bazami danych powinno się zachowywać.</P> różnymi bazami danych powinno się zachowywać.</P>
<P>Oczywiście klient może łączyć się z różnymi bazami danych i łączyć <P><I>contrib/dblink</I> pozwala na wykonywanie zapytań poprzez różne
informację w ten sposób uzyskaną.</P> bazy danych wywołując odpowiednie funkcje. Oczywiście klient może łączyć
się z różnymi bazami danych i łączyć informację w ten sposób uzyskaną
po stronie klienta.</P>
<H4><A name="4.25">4.25</A>) Jak zwrócić w funkcji wiele rzędów lub <H4><A name="4.25">4.25</A>) Jak zwrócić w funkcji wiele rzędów lub
kolumn?</H4> kolumn?</H4>
<P>Możesz zwracać zbiory z funkcji PL/pgSQL używając <P>Możesz w łatwy sposób zwracać wiele rzędów lub kolumn używając
<i>refcursors</i>. Zobacz <a funkcji z: <A HREF="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a>
sekcję 23.7.3.3.</P>
<H4><A name="4.26">4.26</A>) Dlaczego nie mogę w sposób pewny
tworzyć/usuwać tabel tymczasowych w funkcjach PL/PgSQL?</H4>
<P>
PL/PgSQL przechowuje w cache zawartość funkcji, niepożądanym efektem tego
jest to, że gdy taka funkcja korzysta z tabel tymczasowych, które są
później kasowane i odtwarzane, a funkcja wywoływana jest ponownie,jej
wywołanie nie powiedzie się ponieważ cachowana funkcja wciąż będzie
wskazywać na stara tablicę tymczasową. Rozwiązaniem tego problemu jest
używanie EXECUTE aby korzystać z tabel tymczasowych w PL/PgSQL. To
spowoduje, że zapytanie będzie parsowane przy każdym wywołaniu
funkcji.
</P>
<H4><A name="4.27">4.27) Jakie są możliwości replikacji w PostgreSQL?</H4>
<P>
Jest kilka opcji aby stosować replikację typu master/slave. Ten typ
pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
slave może jedynie te zmiany odczytywać. Na stronie
<A
HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
znajduje się ich lista. Replikacja typu multi-master jest w trakcie
prac, opis projektu znajduje się pod adresem: <A
HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
</P>
<H4><A name="4.28">4.28) Jakie możliwości szyfrowania oferuje
PostgreSQL?</H4>
<P>
<UL>
<LI>contrib/pgcrypto zawiera wiele funkcji za pomocą, których możemy używać
kryptografii w zapytaniach SQL.
<LI>Aby szyfrować transmisję od klienta do serwera, ten musi mieć
ustawioną opcję ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi występować w pliku pg_hba.conf, oraz
sslmode nie może być wyłączone w kliencie. (Warto zwrócić uwagę, że
możliwe jest także używanie transportów szyfrująców przez strony
trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
przez PostgreSQL).
<LI>Hasła użytkowników bazy danych są automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, należy tą funkcjonalność poprzez
włączenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
<LI>Serwer może działać używając szyfrowanego systemu plików.
</UL>
</P>
<H2 align="center">Rozwijanie PostgreSQL</H2> <H2 align="center">Rozwijanie PostgreSQL</H2>
<H4><A name="5.1">5.1</A>) Napisałem własną funkcję. Kiedy użyję jej <H4><A name="5.1">5.1</A>) Napisałem własną funkcję. Kiedy użyję jej
@ -1432,8 +1555,12 @@ BYTEA bytea zmiennej d
<H4><A name="5.3">5.3</A>) Jak napisać funkcję C zwracającą krotkę <H4><A name="5.3">5.3</A>) Jak napisać funkcję C zwracającą krotkę
(tuple)?</H4> (tuple)?</H4>
<P>To wymaga wysiłku tak olbrzymiego, że nawet autorzy nigdy tego nie <P>
prubowali, chociaż z zalożeń wynika, że jest to możliwe.</P> W wersjach PostgreSQL od numeru 7.3, funckje zwracające tabele są w
pęlni wspierane w C, PL/PgSQL i SQL. Sprawdź w Programmer's Guide aby
uzyskać więcej informacji. Przykład funkcji napisanej w C zwracającej
tabelę został umieszczony w <I>contrib/tablefunc</I>.
</P>
<H4><A name="5.4">5.4</A>) Zmieniłem plik źródłowy. Dlaczego po <H4><A name="5.4">5.4</A>) Zmieniłem plik źródłowy. Dlaczego po
rekompilacji nie widać zmiany?</H4> rekompilacji nie widać zmiany?</H4>
@ -1443,6 +1570,8 @@ BYTEA bytea zmiennej d
<I>make clean</I>, a następnie ponownie <I>make</I>. <I>make clean</I>, a następnie ponownie <I>make</I>.
Jeśli używasz <SMALL>GCC</SMALL> możesz użyć opcji Jeśli używasz <SMALL>GCC</SMALL> możesz użyć opcji
<I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby <I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby
kompilator mógł określić zależności samodzielnie.
</P>
</BODY> </BODY>
</HTML> </HTML>

@ -12,7 +12,7 @@
<BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff"> <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
<P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: óÒÅÄÁ 19 ÎÏÑÂÒÑ 11:50:04 EDT 2003</P> <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: ÷ÔÏÒÎÉË 6 ÑÎ×ÁÒÑ 16:42:01 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>
@ -35,7 +35,7 @@
<A href="#1.4">1.4</A>) Существуют ли версии портированные не на Unix системы?<BR> <A href="#1.4">1.4</A>) Существуют ли версии портированные не на Unix системы?<BR>
<A href="#1.5">1.5</A>) Где можно взять PostgreSQL?<BR> <A href="#1.5">1.5</A>) Где можно взять PostgreSQL?<BR>
<A href="#1.6">1.6</A>) Где получить поддержку?<BR> <A href="#1.6">1.6</A>) Где получить поддержку?<BR>
<A href="#1.7">1.7</A>) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?<BR> <A href="#1.7">1.7</A>) ëÁËÁÑ ×ÅÒÓÉÑ ÐÏÓÌÅÄÎÑÑ?<BR>
<A href="#1.8">1.8</A>) Какая документация имеется в наличии?<BR> <A href="#1.8">1.8</A>) Какая документация имеется в наличии?<BR>
<A href="#1.9">1.9</A>) Как найти информацию об известных ошибках или отсутствующих <A href="#1.9">1.9</A>) Как найти информацию об известных ошибках или отсутствующих
возможностях?<BR> возможностях?<BR>
@ -320,7 +320,7 @@
<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 É Freenode, Ó ÎÁÚ×ÁÎÉÅÍ <P>åÝÅ ÓÕÝÅÓÔ×ÕÅÔ IRC ËÁÎÁÌ ÎÁ Freenode É EFNet, Ó ÎÁÚ×ÁÎÉÅÍ
<I>#PostgreSQL</I>. Я использую для подключения к этому каналу команду Unix <I>#PostgreSQL</I>. Я использую для подключения к этому каналу команду Unix
<CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE> или <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE> или
<CODE>irc -c '#PostgreSQL' "$USER" irc.freenode.net.</CODE></P> <CODE>irc -c '#PostgreSQL' "$USER" irc.freenode.net.</CODE></P>
@ -330,7 +330,7 @@
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
<P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.4.</P> <P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.4.1</P>
<P>Мы планируем выпускать новые версии каждые 6-8 месяцев.</P> <P>Мы планируем выпускать новые версии каждые 6-8 месяцев.</P>
@ -565,11 +565,10 @@
пользователя?</H4> пользователя?</H4>
<P>Да, существует несколько графических интерфейсов для PostgreSQL. <P>Да, существует несколько графических интерфейсов для PostgreSQL.
üÔÏ PgAccess (<A href="http://www.pgaccess.org/">http://www.pgaccess.org</A>, üÔÏ PgAccess (<A href="http://www.pgaccess.org/">http://www.pgaccess.org</A>),
PgAdmin III (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>, PgAdmin III (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>),
Win32-only), RHDB Admin (<A href="http://sources.redhat.com/rhdb/"> RHDB Admin (<A href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</A>)
http://sources.redhat.com/rhdb/</A>) É Rekall É Rekall (<A href="http://www.thekompany.com/products/rekall/">
(<A href="http://www.thekompany.com/products/rekall/">
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, основанный

@ -3,8 +3,8 @@
/* /*
* Parts of pg_config.h that you get with autoconf on other systems * Parts of pg_config.h that you get with autoconf on other systems
*/ */
#define PG_VERSION "7.4.1" #define PG_VERSION "7.4.2"
#define PG_VERSION_STR "7.4.1 (win32)" #define PG_VERSION_STR "7.4.2 (win32)"
#define SYSCONFDIR "" #define SYSCONFDIR ""

@ -1,8 +1,8 @@
#include <winver.h> #include <winver.h>
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 7,4,1,0 FILEVERSION 7,4,2,0
PRODUCTVERSION 7,4,1,0 PRODUCTVERSION 7,4,2,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
FILEFLAGS 0 FILEFLAGS 0
FILEOS VOS__WINDOWS32 FILEOS VOS__WINDOWS32
@ -15,13 +15,13 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", "\0" VALUE "CompanyName", "\0"
VALUE "FileDescription", "PostgreSQL Access Library\0" VALUE "FileDescription", "PostgreSQL Access Library\0"
VALUE "FileVersion", "7, 4, 1, 0\0" VALUE "FileVersion", "7, 4, 2, 0\0"
VALUE "InternalName", "libpq\0" VALUE "InternalName", "libpq\0"
VALUE "LegalCopyright", "Copyright (C) 2003\0" VALUE "LegalCopyright", "Copyright (C) 2003\0"
VALUE "LegalTrademarks", "\0" VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "libpq.dll\0" VALUE "OriginalFilename", "libpq.dll\0"
VALUE "ProductName", "PostgreSQL\0" VALUE "ProductName", "PostgreSQL\0"
VALUE "ProductVersion", "7, 4, 1, 0\0" VALUE "ProductVersion", "7, 4, 2, 0\0"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"