PostgreSQL
,
stworzony
początkowo
na
Wydziale
Nauk
Komputerowych
Uniwersytetu
Berkeley
,
był
pionierem
wielu
koncepcji
obiektowych
obecnie
dostępnych
w
komercyjnych
bazach
danych
.
Jest
zgodny
z
ze
standardami
języka
SQL92
/
SQL3
,
obsługuje
transakcje
i
pozwala
definiować
własne
typy
danych
.
PostgreSQL
jest
wolno-dostępnym
spadkobiercą
oryginalnego
kodu
Berkeley
.
PostgreSQL
jest
produktem
Open
Source
i
jest
dostępny
za
darmo
.
Aby
korzystać
wsparcia
dla
PosgreSQL-a
,
będziesz
potrzebował
PostgreSQL
w
wersji
6.5
lub
nowszej
.
Aby
wykorzystać
wszystkie
możliwości
modułu
potrzebny
jest
PostgreSQL
7.0
lub
nowszy
.
PostgreSQL
wspiera
wiele
stron
kodowych
,
z
wielobajtowymi
włącznie
.
Aktualna
wersja
i
więcej
informacji
jest
dostępne
tu
:
http
:
/
/www.postgresql.org
/
.
W
celu
uruchomienia
wsparcia
dla
PostgreSQL-a
,
należy
użyć
opcji
--with-pgsql[
=DIR
]
w
czasie
kompilacji
PHP
.
Jeśli
jest
dostępny
współdzielony
moduł
,
może
on
być
załadowany
przez
wpisanie
dyrektywy
extension
w
pliku
php.ini
lub
funkcji
dl(
)
.
Wspierane
dyrektywy
ini
są
opisane
w
pliku
php.ini-dist
który
jest
zawarty
w
dystrybucji
źródłowej
.
Ostrzeżenie
|
Używanie
modułu
PostgreSQL
z
PHP
4.0.6
nie
jest
zalecane
ze
względu
na
błąd
w
obsłudze
komunikatów
.
Zaleca
się
używanie
wersji
4.1.0
lub
nowszej
.
|
Ostrzeżenie
|
Nazwy
funkcji
PostgreSQL
będą
zmienione
w
wersji
4.2.0
w
celu
dostosowania
do
obecnych
standardów
kodowania
.
Większość
nowych
nazw
będzie
miała
dodatkowe
podkreślenia
np
.
pg_lo_open(
)
.
Niektóre
funkcje
będą
miały
zmienione
nazwy
,
aby
ujednolicić
nazewnictwo
np
.
pg_exec(
)
na
pg_query(
)
.
Stare
nazwy
będzie
można
używać
w
wersji
4.2.0
i
w
kilku
kolejnych
,
mogą
jednak
być
usunięte
w
przyszłości
.
Tabela
1
.
Zmienione
nazwy
funkcji
Stara
składnia
pg_connect(
)
/
pg_pconnect(
)
będzie
wycofywana
aby
zapewnić
w
przyszłości
wsparcie
dla
asynchronicznych
połączeń
.
Prosimy
używać
łańcucha
połączeniowego
dla
pg_connect(
)
i
pg_pconnect(
)
.
|
Nie
wszystkie
funkcje
są
wspierane
przez
wszystkie
wersje
.
Zależy
to
od
twojej
wersji
libpq
(
Interfejs
C
klienta
PostgreSQL
)
i
sposobu
jej
kompilacji
.
Jeśli
brakuje
jakiejś
funkcji
,
libpq
nie
będzie
wspierać
danej
funkcjonalności
.
Jest
istotne
żeby
używać
nowszej
biblioteki
libpq
niż
serwer
PostgreSQL
z
którym
się
łączymy
.
Jeśli
libpq
jest
starsze
niż
oczekiwane
przez
serwer
PostgreSQL
,
możesz
mieć
problemy
.
Od
wersji
6.3
(
03
/
02
/
1998
)
PostgreSQL
używa
gniazdek
domen
unixowych
("unix
domain
socket"
)
.
Port
TCP
NIE
będzie
domyślnie
otwarty
.
Poniższa
tabela
pokazuje
te
nowe
rodzaje
połączeń
.
Plik
gniazdka
znajduje
się
w
/
tmp
/
.s.PGSQL.5432
.
Ta
opcja
może
być
odblokowana
przez
użycie
flagi
'
-i
'
z
poleceniem
postmaster
i
oznacza
:
"nasłuchuj
na
gniazdkach
TCP
/
IP
oraz
na
gniazdkach
domen
unixowych
"
.
Tabela
2
.
PostgreSQL
Postmaster
i
PHP
Połączenie
do
serwera
PostgreSQL
może
być
nawiązane
poprzez
ustawienie
następujących
wartości
w
łańcuchu
połączenia
:
$conn
=
pg_connect(
"host=myHost
port=myPort
tty=myTTY
options=myOptions
dbname=myDB
user=myUser
password=myPassword
")
;
Poprzednia
składnia
:
$conn
=
pg_connect
(
"host"
,
"port"
,
"options"
,
"tty"
,
"dbname"
)
jest
wycofywana
.
Zmienne
środowiskowe
wpływają
na
zachowanie
klienta
i
serwera
PostgreSQL
.
Przykładowo
,
moduł
PostgreSQL
będzie
poszukiwał
zmiennej
PGHOST
kiedy
nazwa
serwera
będzie
pominięta
w
łańcuchu
połączeniowym
.
Używane
zmienne
środowiskowe
zmieniają
się
wraz
z
wersjami
.
Szczegóły
można
znaleźć
w
PostgreSQL
Programmer'
s
Manual
(libpq
-
Environment
Variables
)
.
Upewnij
się
że
ustawiłeś
zmienne
środowiskowe
dla
właściwego
użytkownika
.
Użyj
$_ENV
lub
getenv(
)
aby
sprawdzić
jakie
zmienne
środowiskowe
są
dostępne
dla
bieżącego
procesu
.
Przykład
1
.
Ustawianie
domyślnych
parametrów
PGHOST=psgql.exmaple.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP
export
PGHOST
PGPORT
PGDATABASE
PGUSER
PGPASSWORD
PGDATESTYLE
PGTZ
PGCLIENTENCODING
|
|
Poczynając
od
PostgreSQL
7.1.0
,
jedno
pole
typu
text
może
pomieścić
do
1GB
.
Wcześniejsze
wersje
limitowały
wielkość
pola
do
rozmiaru
bloku
(
domyślnie
8KB
,
maksymalnie
32KB
,
definiowane
przy
kompilacji
)
.
Użycie
interfejsu
wielkich
obiektów
(
LO
-
Large
Objects
)
wymaga
zamknięcia
go
wewnątrz
bloku
transakcji
.
Transakcja
rozpoczyna
się
poleceniem
SQL
BEGIN
i
-
jeśli
transakcja
się
powiedzie
-
kończy
się
poleceniem
COMMIT
lub
END
.
Jeśli
transakcja
nie
powiedzie
się
,
powinna
być
zakończona
poleceniem
ROLLBACK
lub
ABORT
.
Przykład
2
.
Używanie
wielkich
obiektów
(
Large
Objects
)
|
Nie wolno zamykać połączenia do serwera PostgreSQL, przed
zamknięciem wielkiego obiektu.