You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
postgres/doc/FAQ_czech

1118 lines
48 KiB

<EFBFBD>asto kladen<EFBFBD> dotazy (FAQ) PostgreSQL
Posledn<EFBFBD> aktualizace: St<EFBFBD>eda 23. <EFBFBD>ervna 21:10:00 EST 2004
Sou<EFBFBD>asn<EFBFBD> spr<EFBFBD>vce: Bruce Momjian (pgman@candle.pha.pa.us)
P<EFBFBD>elo<EFBFBD>il: Pavel St<EFBFBD>hule (stehule@kix.fsv.cvut.cz)
Aktu<EFBFBD>ln<EFBFBD> verzi tohoto dokumentu naleznete na adrese:
http://www.PostgreSQL.org/docs/faqs/FAQ.html. <EFBFBD>esk<EFBFBD> p<EFBFBD>eklad na adrese:
http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html.
Odpov<EFBFBD>di na dotazy relevantn<EFBFBD> ke konkr<EFBFBD>tn<EFBFBD>m platform<EFBFBD>m lze nal<EFBFBD>zt na
adrese: http://www.PostgreSQL.org/docs/index.html.
_________________________________________________________________
Obecn<EFBFBD> ot<EFBFBD>zky
1.1) Co je PostgreSQL? Jak se vyslovuje?
1.2) Jak<EFBFBD> je licence na PostgreSQL?
1.3) Na kter<EFBFBD>ch Unixex lze spustit PostgreSQL?
1.4) Kter<EFBFBD> ne-unixov<EFBFBD> platformy jsou podporovan<EFBFBD>?
1.5) Kde mohu z<EFBFBD>skat PostgreSQL?
1.6) Kde mohu z<EFBFBD>skat podporu?
1.7) Kde je posledn<EFBFBD> verze?
1.8) Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
1.9) Kde najdu seznam zn<EFBFBD>m<EFBFBD>ch chyb nebo nepodporovan<EFBFBD>ch vlastnost<EFBFBD>?
1.10) Jak se mohu nau<EFBFBD>it SQL?
1.11) Nem<EFBFBD> PostgreSQL probl<EFBFBD>my s rokem 2000?
1.12) Jak se p<EFBFBD>ipojit k v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD>mu t<EFBFBD>mu?
1.13) Kam podat report o chyb<EFBFBD>?
1.14) Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
1.15) Jak lze finan<EFBFBD>n<EFBFBD> pomoci PostgreSQL?
User client dotazy
2.1) Kde naleznu ODBC ovlada<EFBFBD>e pro PostgreSQL?
2.2) Jak<EFBFBD> n<EFBFBD>stroje lze pou<EFBFBD><EFBFBD>t pro PostgreSQL a web?
2.3) Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
2.4) Kter<EFBFBD> programovac<EFBFBD> jazyky maj<EFBFBD> podporu pro PostgreSQL?
Administrativn<EFBFBD> dotazy
3.1) Jak nainstalovat PostgreSQL jinam ne<EFBFBD> do /usr/local/pgsql?
3.2) P<EFBFBD>i startu postmaster, dostanu chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> Bad System Call
nebo core dump. Pro<EFBFBD>?
3.3) P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD> IpcMemoryCreate.
Pro<EFBFBD>?
3.4) P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD>
IpcSemaphoreCreate. Pro<EFBFBD>?
3.5) Jak povolit nebo zak<EFBFBD>zat p<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stanic?
3.6) Jak ladit datab<EFBFBD>zov<EFBFBD> stroj na lep<EFBFBD><EFBFBD> v<EFBFBD>kon?
3.7) Jak<EFBFBD> jsou mo<EFBFBD>nosti lad<EFBFBD>n<EFBFBD>?
3.8) Pro<EFBFBD> dostanu "Sorry, too many clients", kdy<EFBFBD> se zkou<EFBFBD><EFBFBD>m p<EFBFBD>ipojit?
3.9) K <EFBFBD>emu slou<EFBFBD><EFBFBD> adres<EFBFBD><EFBFBD> pgsql_tmp?
3.10) Pro<EFBFBD> je po<EFBFBD>adov<EFBFBD>no dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze b<EFBFBD>hem upgrade
mezi velk<EFBFBD>mi verzemi PostgreSQL?
Provozn<EFBFBD> dotazy
4.1) <EFBFBD><EFBFBD>m se li<EFBFBD><EFBFBD> bin<EFBFBD>rn<EFBFBD> a norm<EFBFBD>ln<EFBFBD> kurzor?
4.2) Jak z<EFBFBD>skat pouze prvn<EFBFBD> <EFBFBD><EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> <EFBFBD><EFBFBD>dek?
4.3) Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek nebo jinak jak jej z<EFBFBD>sk<EFBFBD> psql?
4.4) Jak odstran<EFBFBD>m sloupec tabulky, jak zm<EFBFBD>n<EFBFBD>m jeho typ?
4.5) Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dku, tabulky a datab<EFBFBD>ze?
4.6) Kolik diskov<EFBFBD>ho prostoru je pot<EFBFBD>eba k ulo<EFBFBD>en<EFBFBD> dat z norm<EFBFBD>ln<EFBFBD>ho
textov<EFBFBD>ho souboru?
4.7) Jak z<EFBFBD>sk<EFBFBD>m seznam vytvo<EFBFBD>en<EFBFBD>ch tabulek, index<EFBFBD>, datab<EFBFBD>z<EFBFBD>?
4.8) M<EFBFBD>j dotaz je pomal<EFBFBD> a nepou<EFBFBD><EFBFBD>v<EFBFBD> vytvo<EFBFBD>en<EFBFBD> indexy. Pro<EFBFBD>?
4.9) Jak zjist<EFBFBD>m, jak optimizer dotazu vyhodnocuje m<EFBFBD>j dotaz?
4.10) Co to je R-tree index?
4.11) Co je Genetic Query Optimizer?
4.12) Jak prov<EFBFBD>st vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> regul<EFBFBD>rn<EFBFBD>ho v<EFBFBD>razu case sensitiv,
insensitiv? Jak pou<EFBFBD><EFBFBD>t index pro case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>?
4.13) Jak v dotazu detekovat, <EFBFBD>e polo<EFBFBD>ka je NULL?
4.14) Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi r<EFBFBD>zn<EFBFBD>mi znakov<EFBFBD>mi typy?
4.15.1) Jak vytvo<EFBFBD>it serial/auto-increment pole?
4.15.2) Jak z<EFBFBD>skat hodnotu SERIAL po vlo<EFBFBD>en<EFBFBD> <EFBFBD><EFBFBD>dku?
4.15.3) Nepovede currval() a nextval() k rozhozen<EFBFBD> podm<EFBFBD>nek p<EFBFBD>i
soub<EFBFBD>hu s jin<EFBFBD>mi u<EFBFBD>ivateli?
4.15.4) Pro<EFBFBD> nen<EFBFBD> vygenerovan<EFBFBD> <EFBFBD><EFBFBD>slo pou<EFBFBD>ito p<EFBFBD>i p<EFBFBD>eru<EFBFBD>en<EFBFBD> transakce?
Pro<EFBFBD> vznikaj<EFBFBD> d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> vlastn<EFBFBD> sekvenc<EFBFBD>/SERIAL sloupce?
4.16) Co to je OID? Co je to TID?
4.17) Jak<EFBFBD> je v<EFBFBD>znam n<EFBFBD>kter<EFBFBD>ch v<EFBFBD>raz<EFBFBD> pou<EFBFBD>it<EFBFBD>ch v PostgreSQL?
4.18) Pro<EFBFBD> jsem z<EFBFBD>skal chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> "ERROR: Memory exhausted in
AllocSetAlloc()"?
4.19) Jak se dozv<EFBFBD>m, kterou verzi PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD>m?
4.20) Pro<EFBFBD> operace s velk<EFBFBD>mi objekty kon<EFBFBD><EFBFBD> "invalid large obj
descriptor"?
4.21) Jak vytvo<EFBFBD>it sloupec obsahuj<EFBFBD>c<EFBFBD> implicitn<EFBFBD> aktu<EFBFBD>ln<EFBFBD> datum?
4.22) Pro<EFBFBD> jsou moje vno<EFBFBD>en<EFBFBD> dotazy pou<EFBFBD><EFBFBD>vaj<EFBFBD>c<EFBFBD> IN tak pomal<EFBFBD>?
4.23) Jak prov<EFBFBD>st vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> (outer join)?
4.24) Jak prov<EFBFBD>st dotaz nap<EFBFBD><EFBFBD><EFBFBD> n<EFBFBD>kolika datab<EFBFBD>zemi?
4.25) M<EFBFBD><EFBFBD>e funkce vr<EFBFBD>tit v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD>?
4.26) Pro<EFBFBD> nelze spolehliv<EFBFBD> vytv<EFBFBD><EFBFBD>et a ru<EFBFBD>it do<EFBFBD>asn<EFBFBD> tabulky v
PL/pgSQL funkc<EFBFBD>ch?
4.27) Jak<EFBFBD> jsou mo<EFBFBD>nosti replikace datab<EFBFBD>z<EFBFBD>?
4.28) Jak<EFBFBD> jsou mo<EFBFBD>nosti <EFBFBD>ifrov<EFBFBD>n<EFBFBD> datab<EFBFBD>z<EFBFBD>?
Roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> PostgreSQL
5.1) Napsal jsem UDF funkci, PostgreSQL v<EFBFBD>ak kon<EFBFBD><EFBFBD> dump core?
5.2) Jak mohu p<EFBFBD>isp<EFBFBD>t n<EFBFBD>jak<EFBFBD>mi <EFBFBD>ikovn<EFBFBD>mi datov<EFBFBD>mi typy a funkcemi do
PostgreSQL?
5.3) Jak napsat funkci v C vracej<EFBFBD>c<EFBFBD> ntici?
5.4) Modifikoval jsem zdrojov<EFBFBD> soubory. Tato zm<EFBFBD>na nebyla p<EFBFBD>i
rekompilaci vzata v potaz. Pro<EFBFBD>?
_________________________________________________________________
Obecn<EFBFBD> ot<EFBFBD>zky
1.1) Co je PostgreSQL? Jak se vyslovuje?
PostgreSQL se vyslovuje Post-Gres-Q-L. Zvukov<EFBFBD> z<EFBFBD>znam je dostupn<EFBFBD> na
adrese .
PostgreSQL vych<EFBFBD>z<EFBFBD> z datab<EFBFBD>ze POSTGRES (a st<EFBFBD>le je n<EFBFBD>kdy ozna<EFBFBD>ov<EFBFBD>n
zjednodu<EFBFBD>en<EFBFBD> jako Postgres) - v<EFBFBD>zkumn<EFBFBD>ho prototypu DBMS nov<EFBFBD> generace.
Z postgresu byl p<EFBFBD>evzat siln<EFBFBD> datov<EFBFBD> model a bohat<EFBFBD> soubor datov<EFBFBD>ch
typ<EFBFBD> a jeho dotazovac<EFBFBD> jazyk PostQuel byl nahrazen roz<EFBFBD><EFBFBD><EFBFBD>enou
podmno<EFBFBD>inou jazyka SQL. PostgreSQL lze pou<EFBFBD><EFBFBD>vat bez omezen<EFBFBD> a jeho
zdrojov<EFBFBD> k<EFBFBD>dy jsou voln<EFBFBD> k dispozici.
PostgreSQL vyv<EFBFBD>j<EFBFBD> t<EFBFBD>m v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>ihl<EFBFBD><EFBFBD>en<EFBFBD>ch do v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD> konference
PostgreSQL. Sou<EFBFBD>asn<EFBFBD>m koordin<EFBFBD>torem je Marc G. Fournier
(scrappy@PostgreSQL.org). (viz 1.6 - jak se zapojit). Tento t<EFBFBD>m je
zodpov<EFBFBD>dn<EFBFBD> za ve<EFBFBD>ker<EFBFBD> v<EFBFBD>voj PostgreSQL. Jedn<EFBFBD> se o ve<EFBFBD>ejn<EFBFBD> projekt,
kter<EFBFBD> nen<EFBFBD> <EFBFBD><EFBFBD>zen <EFBFBD><EFBFBD>dnou firmou. Pokud se chcete zapojit, p<EFBFBD>e<EFBFBD>t<EFBFBD>te si
developer's FAQ na adrese
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Autory prvn<EFBFBD> verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
portace, testov<EFBFBD>n<EFBFBD>, lad<EFBFBD>n<EFBFBD> a roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> k<EFBFBD>du se zapojilo mnoho
dal<EFBFBD><EFBFBD>ch v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> . P<EFBFBD>vodni k<EFBFBD>d Postgresu, ze kter<EFBFBD>ho PostgreSQL
vych<EFBFBD>z<EFBFBD>, je v<EFBFBD>sledkem <EFBFBD>sil<EFBFBD> mnoha student<EFBFBD> a program<EFBFBD>tor<EFBFBD> pracuj<EFBFBD>c<EFBFBD>ch
pod veden<EFBFBD>m prof. Michaela Stonebrakera na University of California v
Berkley.
P<EFBFBD>vodn<EFBFBD> n<EFBFBD>zev software z Berkley byl Postgres. Po p<EFBFBD>id<EFBFBD>n<EFBFBD> jazyka SQL
se n<EFBFBD>zev zm<EFBFBD>nil na Postgres95. Koncem roku 1996 byl RDBMS p<EFBFBD>ejmenov<EFBFBD>n
na PostgreSQL.
1.2) Jak<EFBFBD> je licence na PostgreSQL?
PostgreSQL je p<EFBFBD>edm<EFBFBD>tem n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch autorsk<EFBFBD>ch pr<EFBFBD>v:
D<EFBFBD>l<EFBFBD><EFBFBD> Copyright (c) 1996-2005, PostgreSQL Global Development Group
D<EFBFBD>l<EFBFBD><EFBFBD> Copyright (c) 1994-6, Regents of the University of California
Ud<EFBFBD>luje se opr<EFBFBD>vn<EFBFBD>n<EFBFBD> k u<EFBFBD>it<EFBFBD>, rozmno<EFBFBD>ov<EFBFBD>n<EFBFBD>, prov<EFBFBD>d<EFBFBD>n<EFBFBD> <EFBFBD>prav a
roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> tohoto softwaru a dokumentace k n<EFBFBD>mu, pro jak<EFBFBD>koli <EFBFBD><EFBFBD>ely,
bez licen<EFBFBD>n<EFBFBD>ho poplatku a bez p<EFBFBD>semn<EFBFBD> licen<EFBFBD>n<EFBFBD> smlouvy, za podm<EFBFBD>nky,
<EFBFBD>e na v<EFBFBD>ech jeho kopi<EFBFBD>ch je uvedeno ozn<EFBFBD>men<EFBFBD> o v<EFBFBD><EFBFBD>e uveden<EFBFBD>ch pr<EFBFBD>vech,
jako<EFBFBD> i obsah tohoto a dvou n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch odstavc<EFBFBD>.
THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK<EFBFBD> UNIVERZITA") NEN<EFBFBD> V <EFBFBD><EFBFBD>DN<EFBFBD>M
P<EFBFBD><EFBFBD>PAD<EFBFBD> ODPOV<EFBFBD>DNA <EFBFBD><EFBFBD>DN<EFBFBD> T<EFBFBD>ET<EFBFBD> OSOB<EFBFBD> ZA P<EFBFBD><EFBFBD>MOU, NEP<EFBFBD><EFBFBD>MOU, ZVL<EFBFBD><EFBFBD>TN<EFBFBD>,
NAHODILOU NEBO V<EFBFBD>SLEDNOU <EFBFBD>KODU, V<EFBFBD>ETN<EFBFBD> U<EFBFBD>L<EFBFBD>HO ZISKU, ZP<EFBFBD>SOBENOU U<EFBFBD>IT<EFBFBD>M
TOHOTO SOFTWARU A DOKUMENTACE K N<EFBFBD>MU, A TO I V P<EFBFBD><EFBFBD>PAD<EFBFBD>, <EFBFBD>E THE
UNIVERSITY OF CALIFORNIA BYLA INFORMOV<EFBFBD>NA O MO<EFBFBD>NOSTI VZNIKU TAKOV<EFBFBD>
<EFBFBD>KODY.
HE UNIVERSITY OF CALIFORNIA ZEJM<EFBFBD>NA NEPOSKYTUJE JAK<EFBFBD>KOLI Z<EFBFBD>RUKY, A TO
NEJEN Z<EFBFBD>RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V<EFBFBD>ROBKU KE
SPECIFICK<EFBFBD>M <EFBFBD><EFBFBD>EL<EFBFBD>M. NͮE UVEDEN<EFBFBD> SOFTWARE JE POSKYTNUT "JAK STOJ<EFBFBD> A
LE<EFBFBD><EFBFBD>" A THE UNIVERSITY OF CALIFORNIA NEN<EFBFBD> POVINNA ZAJISTIT JEHO
<EFBFBD>DR<EFBFBD>BU, PODPORU, AKTUALIZACI, VYLEP<EFBFBD>EN<EFBFBD> NEBO MODIFIKACI.
V<EFBFBD><EFBFBD>e uveden<EFBFBD> je BSD licence, b<EFBFBD><EFBFBD>n<EFBFBD> licence otev<EFBFBD>en<EFBFBD>ho zdroje. Nen<EFBFBD> zde
<EFBFBD><EFBFBD>dn<EFBFBD> omezen<EFBFBD> ohledn<EFBFBD> u<EFBFBD>it<EFBFBD> k<EFBFBD>du zdroje. Jsme s t<EFBFBD>m spokojeni a nem<EFBFBD>me
v <EFBFBD>myslu na t<EFBFBD>to skute<EFBFBD>nosti cokoli m<EFBFBD>nit.
1.3) Na kter<EFBFBD>ch Unixex lze spustit PostgreSQL?
PostgreSQL b<EFBFBD><EFBFBD><EFBFBD> na v<EFBFBD>ech modern<EFBFBD>ch unixov<EFBFBD>ch platform<EFBFBD>ch. V
instala<EFBFBD>n<EFBFBD>ch instrukc<EFBFBD>ch naleznete aktu<EFBFBD>ln<EFBFBD> seznam v<EFBFBD>ech platforem na
kter<EFBFBD>ch byla testov<EFBFBD>n<EFBFBD>m ov<EFBFBD><EFBFBD>ena funkcionalita PostgreSQL.
1.4) Kter<EFBFBD> ne-unixov<EFBFBD> platformy jsou podporovan<EFBFBD>?
Klient
Knihovna libpq, psql a n<EFBFBD>kter<EFBFBD> dal<EFBFBD><EFBFBD> moduly byly p<EFBFBD>elo<EFBFBD>eny pro MS
Windows. Klienta lze provozovat na MS Windows, ten prost<EFBFBD>ednictv<EFBFBD>m
TCP/IP protokolu komunikuje se serverem b<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>m na n<EFBFBD>kter<EFBFBD> z
podporovan<EFBFBD>ch Unixov<EFBFBD>ch platforem. K p<EFBFBD>ekladu lze pou<EFBFBD><EFBFBD>t win32.mak a
Win32 knihovny libpq a psql. K datab<EFBFBD>zi PostgerSQL lze p<EFBFBD>istupovat
skrze rozhran<EFBFBD> ODBC.
Server
Server m<EFBFBD><EFBFBD>e b<EFBFBD>t na WindowsNT a Win2k provozov<EFBFBD>n pouze s knihovnou
Cygwin, Cygnus Unix/NT porting library. V<EFBFBD>ce pgsql/doc/FAQ_MSWIN v
distribuci nebo MS Windows FAQ na adrese
http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
Na nativn<EFBFBD>m portu pro MS Win NT/2000/XP se pracuje. Dal<EFBFBD><EFBFBD> informace o
aktu<EFBFBD>ln<EFBFBD>m stavu PostgreSQL pro Windows naleznet na adrese
http://techdocs.postgresql.org/guides/Windows a
http://momjian.postgresql.org/main/writings/pgsql/win32.html.
Existuj<EFBFBD>c<EFBFBD> port pro Novell Netware 6 naleznete na
http://forge.novell.com.
1.5) Kde mohu z<EFBFBD>skat PostgreSQL?
Prim<EFBFBD>rn<EFBFBD>m anonymn<EFBFBD>m ftp serverem pro PostgreSQL je
ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na na<EFBFBD>ich
webov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch.
1.6) Kde mohu z<EFBFBD>skat podporu?
Hlavn<EFBFBD> mailov<EFBFBD> konference je: pgsql-general@PostgreSQL.org. Slou<EFBFBD><EFBFBD> k
diskuz<EFBFBD>m ohledn<EFBFBD> PostgreSQL. P<EFBFBD>ihl<EFBFBD>s<EFBFBD>te se zasl<EFBFBD>n<EFBFBD>m mailu obsahuj<EFBFBD>c<EFBFBD>
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> <EFBFBD><EFBFBD>dky v t<EFBFBD>le dopisu (nikoliv v z<EFBFBD>hlav<EFBFBD> - subjectu):
subscribe
end
na adresu pgsql-general-request@PostgreSQL.org.
M<EFBFBD><EFBFBD>ete si vy<EFBFBD><EFBFBD>dat denn<EFBFBD> p<EFBFBD>ehled (diggest), kter<EFBFBD> m<EFBFBD> zhruba 30K denn<EFBFBD>
zpr<EFBFBD>v.
Konference psql-bugs je ur<EFBFBD>ena k zas<EFBFBD>l<EFBFBD>n<EFBFBD> zpr<EFBFBD>v o chyb<EFBFBD>ch. Pro
p<EFBFBD>ihl<EFBFBD><EFBFBD>en<EFBFBD> po<EFBFBD>lete mail se stejn<EFBFBD>m obsahem jako v p<EFBFBD>edchoz<EFBFBD>m p<EFBFBD><EFBFBD>pad<EFBFBD>
na adresu pgsql-bugs-request@PostgreSQL.org.
Do v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD> konference se p<EFBFBD>ihl<EFBFBD>s<EFBFBD>te odesl<EFBFBD>n<EFBFBD>m dopisu s ji<EFBFBD>
zmi<EFBFBD>ovan<EFBFBD>m obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
Seznam dal<EFBFBD><EFBFBD>ch konferenc<EFBFBD> naleznete na str<EFBFBD>nk<EFBFBD>ch PostgreSQL:
http://www.postgresql.org
1.7) Jak<EFBFBD> je posledn<EFBFBD> verze?
Posledn<EFBFBD> verze PostgreSQL je 7.4.3. Pl<EFBFBD>nujeme uvolnit v<EFBFBD>znamnou verzi
ka<EFBFBD>d<EFBFBD>ch <EFBFBD>est a<EFBFBD> osm m<EFBFBD>s<EFBFBD>c<EFBFBD>.
1.8) Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
R<EFBFBD>zn<EFBFBD> manu<EFBFBD>ly, manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nky a n<EFBFBD>kolik mal<EFBFBD>ch testovac<EFBFBD>ch p<EFBFBD><EFBFBD>klad<EFBFBD>
jsou sou<EFBFBD><EFBFBD>sti distribuce. Pod<EFBFBD>vejte se do adres<EFBFBD><EFBFBD>e /doc. Manu<EFBFBD>ly jsou
p<EFBFBD><EFBFBD>stupn<EFBFBD> online na http://www.PostgreSQL.org/docs.
Na adres<EFBFBD>ch http://www.PostgreSQL.org/docs/awbook.html a
http://www.commandprompt.com/ppbook/ naleznezte dv<EFBFBD> online knihy o
PostgreSQL. Seznam dostupn<EFBFBD> literatury je na
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
technick<EFBFBD>ch <EFBFBD>l<EFBFBD>nk<EFBFBD> s tematikou PostgresQL najdete na
http://techdocs.PostgreSQL.org/.
psql m<EFBFBD> u<EFBFBD>ite<EFBFBD>n<EFBFBD> metap<EFBFBD><EFBFBD>kaz \d slou<EFBFBD><EFBFBD>c<EFBFBD> k zobrazen<EFBFBD> informac<EFBFBD> o
typech, oper<EFBFBD>torech, funkc<EFBFBD>, agrega<EFBFBD>n<EFBFBD>ch funkc<EFBFBD> atd.
V<EFBFBD>ce dokumentace naleznete na na<EFBFBD>ich webov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch.
1.9) Kde najdu seznam zn<EFBFBD>m<EFBFBD>ch chyb nebo nepodporovan<EFBFBD>ch vlastnost<EFBFBD>?
PostgreSQL podporuje roz<EFBFBD><EFBFBD><EFBFBD>enou podmno<EFBFBD>inu SQL-92. V na<EFBFBD>em TODO
najdete seznam zn<EFBFBD>m<EFBFBD>ch chyb, chyb<EFBFBD>j<EFBFBD>c<EFBFBD>ch vlastnost<EFBFBD> a seznam
vlastnost<EFBFBD>, kter<EFBFBD> budou do syst<EFBFBD>mu implementov<EFBFBD>ny v budoucnu (v<EFBFBD>etn<EFBFBD>
priorit).
1.10) Jak se mohu nau<EFBFBD>it SQL?
V knize The PostgreSQL book na
http://www.PostgreSQL.org/docs/awbook.html je vysv<EFBFBD>tlen jazyk SQL
(vy<EFBFBD>la <EFBFBD>esky). Dal<EFBFBD><EFBFBD> dostupnou knihou je
http://www.commandprompt.com/ppbook. Kvalitn<EFBFBD> n<EFBFBD>vody naleznete na
http://www.intermedia.net/support/sql/sqltut.shtm, a na
http://sqlcourse.com.
Dal<EFBFBD><EFBFBD> je Teach Yourself SQL in 21 days, Second Edition na
http://members.tripod.com/er4ebus/sql/index.htm.
Mnoho u<EFBFBD>ivatel<EFBFBD> doporu<EFBFBD>uje The Practical SQL Handbook, Bowman, Judith
S., et al., Addison-Wesley. Jin<EFBFBD> preferuj<EFBFBD> The Complete Reference SQL,
Groff et al., McGraw-Hill.
1.11) Nem<EFBFBD> PostgreSQL probl<EFBFBD>my s rokem 2000?
Nem<EFBFBD>, m<EFBFBD><EFBFBD>eme pracovat s datumy po roce 2000 na<EFBFBD>eho letopo<EFBFBD>tu i p<EFBFBD>ed
rokem 2000 p<EFBFBD>.n.l.
1.12) Jak se p<EFBFBD>ipojit k v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD>mu t<EFBFBD>mu?
Nejd<EFBFBD><EFBFBD>ve si st<EFBFBD>hn<EFBFBD>te nejnov<EFBFBD>j<EFBFBD><EFBFBD> zdroje a p<EFBFBD>e<EFBFBD>t<EFBFBD>te si v<EFBFBD>voj<EFBFBD><EFBFBD>skou
dokumentaci na na<EFBFBD>em webu nebo v distribuci. Pak se p<EFBFBD>ihla<EFBFBD>te do
konferenc<EFBFBD> pgsql-hackers a pgsql-patches. Kvalitn<EFBFBD> z<EFBFBD>platy pos<EFBFBD>lejte
do pgsql-patches.
Pr<EFBFBD>vo commit m<EFBFBD> v CVS archivu asi t<EFBFBD>in<EFBFBD>cti lid<EFBFBD>. Ka<EFBFBD>d<EFBFBD> z nich poslal
mnoho kvalitn<EFBFBD>ch z<EFBFBD>plat, tak<EFBFBD>e tehdej<EFBFBD><EFBFBD> commiters m<EFBFBD>li jistotu, <EFBFBD>e
budou p<EFBFBD>edkl<EFBFBD>dat jenom kvalitn<EFBFBD> z<EFBFBD>platy a mohli jim p<EFBFBD>ed<EFBFBD>lit v<EFBFBD>t<EFBFBD><EFBFBD>
pr<EFBFBD>va.
1.13) Kam podat report o chyb<EFBFBD>?
Nav<EFBFBD>tivte na<EFBFBD>i PostgreSQL BugTool str<EFBFBD>nku na
http://www.PostgreSQL.org/bugs/bugs.php, kter<EFBFBD> obsahuje n<EFBFBD>vod a
sm<EFBFBD>rnice jak podat chybov<EFBFBD> report.
Ov<EFBFBD><EFBFBD>te si na na<EFBFBD>em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li
m<EFBFBD>te nejnov<EFBFBD>j<EFBFBD><EFBFBD> verzi PostgreSQL a zda-li k n<EFBFBD> neexistuj<EFBFBD> n<EFBFBD>jak<EFBFBD>
z<EFBFBD>platy.
1.14) Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
Existuje n<EFBFBD>kolik hledisek jak porovn<EFBFBD>vat software: vlastnosti, v<EFBFBD>kon,
spolehlivost, podpora a cena.
Vlastnosti
PostgreSQL m<EFBFBD> hodn<EFBFBD> spole<EFBFBD>n<EFBFBD>ch vlastnost<EFBFBD> s velk<EFBFBD>mi komer<EFBFBD>n<EFBFBD>mi
DBMS, nap<EFBFBD>. transakce, vno<EFBFBD>en<EFBFBD> dotazy, spou<EFBFBD>t<EFBFBD>, pohledy,
kontrolu referen<EFBFBD>n<EFBFBD> integrity a sofistikovan<EFBFBD> zamyk<EFBFBD>n<EFBFBD>.
Podporuje n<EFBFBD>kter<EFBFBD> vlastnosti, kter<EFBFBD> tyto syst<EFBFBD>my nemaj<EFBFBD>,
u<EFBFBD>ivatelem definovan<EFBFBD> typy, d<EFBFBD>di<EFBFBD>nost, pravidla, MVCC
redukuj<EFBFBD>c<EFBFBD> zamyk<EFBFBD>n<EFBFBD>.
V<EFBFBD>kon
V<EFBFBD>konnostn<EFBFBD> je na tom PostgreSQL podobn<EFBFBD> jako dal<EFBFBD><EFBFBD> komer<EFBFBD>n<EFBFBD>
ale i open source datab<EFBFBD>ze, v n<EFBFBD><EFBFBD>em je rychlej<EFBFBD><EFBFBD>, jindy
pomalej<EFBFBD><EFBFBD>. V porovn<EFBFBD>n<EFBFBD> s MySQL a podobn<EFBFBD>mi datab<EFBFBD>zov<EFBFBD>mi syst<EFBFBD>my
je PostgreSQL rychlej<EFBFBD><EFBFBD> p<EFBFBD>i v<EFBFBD>ceu<EFBFBD>ivatelsk<EFBFBD>m p<EFBFBD><EFBFBD>stupu,
slo<EFBFBD>it<EFBFBD>j<EFBFBD><EFBFBD>ch dotazech a zat<EFBFBD><EFBFBD>en<EFBFBD> read/write dotazy. MySQL je
rychlej<EFBFBD><EFBFBD> v jednodu<EFBFBD><EFBFBD><EFBFBD>ch dotazech s mal<EFBFBD>m po<EFBFBD>tem u<EFBFBD>ivatel<EFBFBD>.
Nav<EFBFBD>c, MySQL nepodporuje mnoh<EFBFBD> vlatnosti zm<EFBFBD>n<EFBFBD>n<EFBFBD> v sekci
vlastnosti. Zapracovali jsme na spolehlivosti a podporovan<EFBFBD>ch
vlastnostech, a v<EFBFBD>kon zvy<EFBFBD>ujeme v ka<EFBFBD>d<EFBFBD> verzi. Zaj<EFBFBD>mavou
str<EFBFBD>nku porovn<EFBFBD>vaj<EFBFBD>c<EFBFBD> PostgreSQL a MySQL naleznete na
http://openacs.org/philosophy/why-not-mysql.html. Za v<EFBFBD>vojem
MySQL nen<EFBFBD> Open Source komunita, ale komer<EFBFBD>n<EFBFBD> spole<EFBFBD>nost,
p<EFBFBD>esto<EFBFBD>e svoje produkty distribuuje jako Open Source.
Spolehlivost
Jsme si v<EFBFBD>domi, <EFBFBD>e datab<EFBFBD>ze mus<EFBFBD> b<EFBFBD>t spolehliv<EFBFBD>, jinak je
nepou<EFBFBD>iteln<EFBFBD>. Sna<EFBFBD><EFBFBD>me se zve<EFBFBD>ej<EFBFBD>ovat dob<EFBFBD>e otestovan<EFBFBD>, stabiln<EFBFBD>
k<EFBFBD>d s minimem chyb. Ka<EFBFBD>d<EFBFBD> verze je v<EFBFBD>ce ne<EFBFBD> m<EFBFBD>s<EFBFBD>c v beta
testov<EFBFBD>n<EFBFBD>, a na<EFBFBD>e historie verz<EFBFBD> ukazuje, <EFBFBD>e m<EFBFBD><EFBFBD>eme nab<EFBFBD>dnout
stabiln<EFBFBD>, solidn<EFBFBD> verze, kter<EFBFBD> jsou p<EFBFBD>ipraveny pro re<EFBFBD>ln<EFBFBD>
nasazen<EFBFBD>. V t<EFBFBD>to oblasti jsme srovnateln<EFBFBD> s dal<EFBFBD><EFBFBD>mi datab<EFBFBD>zemi.
Podpora
Na na<EFBFBD><EFBFBD> mailov<EFBFBD> konferenci m<EFBFBD><EFBFBD>ete kontaktovat velkou skupinu
v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> a u<EFBFBD>ivatel<EFBFBD>.probl<EFBFBD>m<EFBFBD>. Nem<EFBFBD><EFBFBD>eme garantovat opravu,
nicm<EFBFBD>n<EFBFBD> komer<EFBFBD>n<EFBFBD> datab<EFBFBD>ze tak<EFBFBD> ne v<EFBFBD>dy nab<EFBFBD>dnou opravu. Podle
ohlas<EFBFBD> je na<EFBFBD>e podpora hodnocena l<EFBFBD>pe ne<EFBFBD> u jin<EFBFBD>ch DBMS a to
d<EFBFBD>ky p<EFBFBD><EFBFBD>m<EFBFBD>mu kontaktu s v<EFBFBD>voj<EFBFBD><EFBFBD>i, velkou komunitou u<EFBFBD>ivatel<EFBFBD>,
kvalitn<EFBFBD>mi manu<EFBFBD>ly a p<EFBFBD><EFBFBD>stupn<EFBFBD>m zdrojov<EFBFBD>m k<EFBFBD>dem. Pro u<EFBFBD>ivatele,
kte<EFBFBD><EFBFBD> vy<EFBFBD>aduj<EFBFBD> podporu ke konkr<EFBFBD>tn<EFBFBD>m p<EFBFBD><EFBFBD>pad<EFBFBD>m, existuje placen<EFBFBD>
podpora (FAQ sekce 1.6).
Cena
PosgreSQL lze voln<EFBFBD> pou<EFBFBD><EFBFBD>vat pro nekomer<EFBFBD>n<EFBFBD> i komer<EFBFBD>n<EFBFBD> pou<EFBFBD>it<EFBFBD>.
M<EFBFBD><EFBFBD>ete do sv<EFBFBD>ch produkt<EFBFBD> p<EFBFBD>idat n<EFBFBD><EFBFBD> k<EFBFBD>d bez omezen<EFBFBD>, respektive
v souladu s podm<EFBFBD>nkami na<EFBFBD><EFBFBD> licen<EFBFBD>n<EFBFBD> smlouvy (v duchu BSD
licence).
1.15) Jak lze finan<EFBFBD>n<EFBFBD> pomoci PostgreSQL?
PosgreSQL m<EFBFBD> prvot<EFBFBD><EFBFBD>dn<EFBFBD> infrastrukturu od na<EFBFBD>eho za<EFBFBD><EFBFBD>tku v roce 1996.
Vd<EFBFBD><EFBFBD><EFBFBD>me za to Marku Fournierovi, kter<EFBFBD> zalo<EFBFBD>il a spravoval tuto
infrastrukturu n<EFBFBD>kolik let.
Kvalitn<EFBFBD> infrastruktura je velice d<EFBFBD>le<EFBFBD>it<EFBFBD> pro ka<EFBFBD>d<EFBFBD> open source
projekt. P<EFBFBD>edch<EFBFBD>z<EFBFBD> nedorozum<EFBFBD>n<EFBFBD>m, kter<EFBFBD> velice zdr<EFBFBD>uj<EFBFBD> pokrok v
projektu.
Tato infrastruktura nen<EFBFBD> lacin<EFBFBD>. K jej<EFBFBD>mu zaji<EFBFBD>t<EFBFBD>n<EFBFBD> je t<EFBFBD>eba st<EFBFBD>le
hradit ur<EFBFBD>it<EFBFBD> m<EFBFBD>s<EFBFBD><EFBFBD>n<EFBFBD> a jednor<EFBFBD>zov<EFBFBD> <EFBFBD><EFBFBD>stky. Pokud m<EFBFBD>te Vy nebo Va<EFBFBD>e
spole<EFBFBD>nost pen<EFBFBD>ze, kter<EFBFBD> n<EFBFBD>m m<EFBFBD><EFBFBD>ete darovat, obra<EFBFBD>e se na
http://store.pgsql.com/shopping/ a darujte je.
A<EFBFBD>koliv webov<EFBFBD> str<EFBFBD>nka zmi<EFBFBD>uje PostgreSQL, Inc. vklady jsou ur<EFBFBD>eny
pouze k podpo<EFBFBD>e projektu PostgreSQL a nepodporuj<EFBFBD> <EFBFBD><EFBFBD>dnou existuj<EFBFBD>c<EFBFBD>
spole<EFBFBD>nost. Pokud to vy<EFBFBD>adujete, m<EFBFBD><EFBFBD>ete poslat kontrolu na na<EFBFBD>i
kontaktn<EFBFBD> adresu.
_________________________________________________________________
Pokud m<EFBFBD>te p<EFBFBD><EFBFBD>klad <EFBFBD>sp<EFBFBD><EFBFBD>n<EFBFBD>ho nasazen<EFBFBD> PostgreSQL, p<EFBFBD>ihla<EFBFBD>t<EFBFBD> se na n<EFBFBD><EFBFBD>
advocacy site na http://advocacy.postgresql.org.
User client dotazy
2.1) Kde naleznu ODBC ovlada<EFBFBD>e pro PostgreSQL?
Pro PostgreSQL existuj<EFBFBD> dva ODBC ovlada<EFBFBD>e - PsqlODBC a OpenLink ODBC.
PsqlODBC je ke sta<EFBFBD>en<EFBFBD> na
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
OpenLink m<EFBFBD><EFBFBD>ete z<EFBFBD>skat na http://www.openlinksw.com. Spolupracuje s
jejich klientsk<EFBFBD>m programov<EFBFBD>m vybaven<EFBFBD>m a je dostupn<EFBFBD> pro v<EFBFBD>echny jimi
podporovan<EFBFBD> platformy (Win, Mac, Unix, VMS).
Tento ovlada<EFBFBD> je ur<EFBFBD>en pro ty, kte<EFBFBD><EFBFBD> vy<EFBFBD>aduj<EFBFBD> podporu komer<EFBFBD>n<EFBFBD>
kvality, nicm<EFBFBD>n<EFBFBD> freeware verze je dostupn<EFBFBD> a funk<EFBFBD>n<EFBFBD>. Dotazy
zas<EFBFBD>lejte na postgres95@openlink.co.uk.
2.2) Jak<EFBFBD> n<EFBFBD>stroje lze pou<EFBFBD><EFBFBD>t pro PostgreSQL a web?
P<EFBFBD>kn<EFBFBD> <EFBFBD>vod do datab<EFBFBD>zov<EFBFBD>ch technologi<EFBFBD> zabezpe<EFBFBD>uj<EFBFBD>c<EFBFBD>ch chod webov<EFBFBD>ch
str<EFBFBD>nek najdete na http://www.webreview.com.
Pro tvorbu webu existuje excelentn<EFBFBD> rozhran<EFBFBD> PHP, kter<EFBFBD> naleznete na
http://www.php.net.
Pro slo<EFBFBD>it<EFBFBD>j<EFBFBD><EFBFBD> p<EFBFBD><EFBFBD>pady se <EFBFBD>asto pou<EFBFBD><EFBFBD>v<EFBFBD> Perl a CGI.pm nebo mod_perl.
2.3) Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
Pro PostgreSQL existuje n<EFBFBD>kolik grafick<EFBFBD>ch rozhran<EFBFBD>: PgAccess
(http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin
(http://sources.redhat.com/rhdb/) a Rekall (
http://www.thekompany.com/products/rekall/). D<EFBFBD>le je<EFBFBD>t<EFBFBD> PhpPgAdmin
(http://phppgadmin.sourceforge.net/) co<EFBFBD> je rozhran<EFBFBD> PostgreSQL
zalo<EFBFBD>en<EFBFBD> na web technologii.
<EFBFBD>pln<EFBFBD>j<EFBFBD><EFBFBD> seznam najdete na
http://techdocs.postgresql.org/guides/GUITools.
2.4) Kter<EFBFBD> programovac<EFBFBD> jazyky maj<EFBFBD> podporu pro PostgreSQL?
V<EFBFBD>t<EFBFBD>ina programovac<EFBFBD>ch jazyk<EFBFBD> obsahuje rozhran<EFBFBD> pro PostgreSQL.
Pod<EFBFBD>vejte se do roz<EFBFBD>i<EFBFBD>uj<EFBFBD>c<EFBFBD>ch modul<EFBFBD> Va<EFBFBD>eho programovac<EFBFBD>ho jazyka.
Distribuce PostgreSQL obsahuje tato rozhran<EFBFBD>:
* C (libpq)
* Embbedded C (ecpg)
* Java (jdbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
Dal<EFBFBD><EFBFBD> rozhran<EFBFBD> jsou dostupn<EFBFBD> na http://gborg.postgresql.org v sekci
Drivers/Interfaces.
_________________________________________________________________
Administrativn<EFBFBD> dotazy
3.1) Jak nainstalovat PostgreSQL jinam ne<EFBFBD> do /usr/local/pgsql?
Pou<EFBFBD>ijte volbu --prefix p<EFBFBD>i spu<EFBFBD>t<EFBFBD>n<EFBFBD> configure.
3.2) P<EFBFBD>i startu postmaster, dostanu chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> Bad System Call nebo
core dump. Pro<EFBFBD>?
D<EFBFBD>vody mohou b<EFBFBD>t r<EFBFBD>zn<EFBFBD>, ale nejprve zkontrolujte, zda V<EFBFBD><EFBFBD> syst<EFBFBD>m
podporuje System V extensions. PostgreSQL vy<EFBFBD>aduje v j<EFBFBD>d<EFBFBD>e podporu
sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti a semafor<EFBFBD>.
3.3) P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD> IpcMemoryCreate. Pro<EFBFBD>?
Bu<EFBFBD>to nem<EFBFBD>te spr<EFBFBD>vn<EFBFBD> nakonfigurovanou sd<EFBFBD>lenou pam<EFBFBD><EFBFBD> v j<EFBFBD>d<EFBFBD>e nebo
musite zv<EFBFBD>t<EFBFBD>it jej<EFBFBD> velikost. Pot<EFBFBD>ebn<EFBFBD> velikost je z<EFBFBD>visl<EFBFBD> na
architektu<EFBFBD>e a na tom, kolik pam<EFBFBD><EFBFBD>ov<EFBFBD>ch buffer<EFBFBD> a backend<EFBFBD> m<EFBFBD>te
povoleno pro postmastera. Pro v<EFBFBD>t<EFBFBD>inu syst<EFBFBD>m<EFBFBD> s p<EFBFBD>eddefinovan<EFBFBD>m po<EFBFBD>tem
backend<EFBFBD> a pam<EFBFBD><EFBFBD>ov<EFBFBD>ch buffer<EFBFBD> je minimum zhruba 1MB. V PostgreSQL
Administrator's Guide naleznete podrobn<EFBFBD>j<EFBFBD><EFBFBD> informace o sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti
a semaforech.
3.4) P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD> IpcSemaphoreCreate.
Pro<EFBFBD>?
Pokud dostane chybovou zpr<EFBFBD>vu IpcSemaphoreCreate: semget failed (No
space left on device), pak va<EFBFBD>e j<EFBFBD>dro nem<EFBFBD> dost voln<EFBFBD>ch semafor<EFBFBD>.
PostgreSQL vy<EFBFBD>aduje jeden semafor pro ka<EFBFBD>d<EFBFBD> backend v pozad<EFBFBD>. Do<EFBFBD>asn<EFBFBD>m
<EFBFBD>e<EFBFBD>en<EFBFBD>m je start postmaster s limitem backend<EFBFBD>. Pou<EFBFBD>ijte p<EFBFBD>ep<EFBFBD>na<EFBFBD> -N s
hodnotou men<EFBFBD><EFBFBD> ne<EFBFBD> 32. <EFBFBD>pln<EFBFBD>m <EFBFBD>e<EFBFBD>en<EFBFBD>m je zv<EFBFBD><EFBFBD>en<EFBFBD> hodnot SEMMNS a
SEMMNI jadra.
Nefunk<EFBFBD>n<EFBFBD> semafory mohou zp<EFBFBD>sobit p<EFBFBD>d b<EFBFBD>hem intenzivn<EFBFBD>ch datab<EFBFBD>zov<EFBFBD>ch
operac<EFBFBD>.
Pokud se tato chyba vyskytuje je<EFBFBD>t<EFBFBD> n<EFBFBD>kde jinde, mo<EFBFBD>n<EFBFBD> nem<EFBFBD>te v<EFBFBD>bec
nakonfigurov<EFBFBD>ny semafory ve va<EFBFBD>em j<EFBFBD>d<EFBFBD>e. V PostgreSQL Administrator's
Guide najdete podrobn<EFBFBD>j<EFBFBD><EFBFBD> popis po<EFBFBD>adavk<EFBFBD> na sd<EFBFBD>lenou pam<EFBFBD>t a
semafory.
3.5) Jak povolit nebo zak<EFBFBD>zat p<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stanic?
P<EFBFBD>i v<EFBFBD>choz<EFBFBD>m nastaven<EFBFBD> PostgreSQL odep<EFBFBD>e p<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stanic ne<EFBFBD>
lok<EFBFBD>ln<EFBFBD> s pou<EFBFBD>it<EFBFBD>m UDP. P<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stroj<EFBFBD> nen<EFBFBD> mo<EFBFBD>n<EFBFBD> dokud jej
nepovol<EFBFBD>te nastaven<EFBFBD>m tcpip_socket v postgresql.conf a ur<EFBFBD>en<EFBFBD>m zp<EFBFBD>sobu
autentifikace v $PGDATA/pg_hba.conf.
3.6) Jak ladit datab<EFBFBD>zov<EFBFBD> stroj na lep<EFBFBD><EFBFBD> v<EFBFBD>kon?
Ur<EFBFBD>it<EFBFBD> pomohou indexy. P<EFBFBD><EFBFBD>kaz EXPLAIN ANALYZE V<EFBFBD>m umo<EFBFBD>n<EFBFBD> sledovat jak
PostgreSQL interpretuje V<EFBFBD><EFBFBD> dotaz a kter<EFBFBD> indexy pou<EFBFBD><EFBFBD>v<EFBFBD>.
P<EFBFBD>i v<EFBFBD>t<EFBFBD><EFBFBD> d<EFBFBD>vce INSERT<EFBFBD> uva<EFBFBD>ujte o n<EFBFBD>hrad<EFBFBD> p<EFBFBD><EFBFBD>kazem COPY. Ten je
mnohem rychlej<EFBFBD><EFBFBD> ne<EFBFBD>li samotn<EFBFBD> INSERT. Ka<EFBFBD>d<EFBFBD> p<EFBFBD><EFBFBD>kaz mimo blok BEGIN
WORK/COMMIT se prov<EFBFBD>d<EFBFBD> ve vlastn<EFBFBD> transakci. Zva<EFBFBD>te, zda-li by se
nedalo n<EFBFBD>kolik p<EFBFBD><EFBFBD>kaz<EFBFBD> spojit do jedn<EFBFBD> transakce. T<EFBFBD>m se sn<EFBFBD><EFBFBD><EFBFBD> re<EFBFBD>ie
na transakce. P<EFBFBD>ed proveden<EFBFBD>m rozs<EFBFBD>hl<EFBFBD>ch zm<EFBFBD>n zru<EFBFBD>te indexy, kter<EFBFBD> po
dokon<EFBFBD>en<EFBFBD> zm<EFBFBD>n op<EFBFBD>t vytvo<EFBFBD>te.
M<EFBFBD>te n<EFBFBD>kolik dal<EFBFBD><EFBFBD>ch mo<EFBFBD>nost<EFBFBD>, jak zlep<EFBFBD>it v<EFBFBD>kon. M<EFBFBD><EFBFBD>ete zak<EFBFBD>zat
fsyn() p<EFBFBD>i startu postmastera p<EFBFBD>ep<EFBFBD>na<EFBFBD>i -o -F. Tyto p<EFBFBD>ep<EFBFBD>na<EFBFBD>e zabr<EFBFBD>n<EFBFBD>
fsync(), tj. z<EFBFBD>pisu na disk po ka<EFBFBD>d<EFBFBD> transakci.
M<EFBFBD><EFBFBD>ete zv<EFBFBD><EFBFBD>it velikost pam<EFBFBD><EFBFBD>ov<EFBFBD>ch buffer<EFBFBD> pou<EFBFBD>it<EFBFBD>ch backendy tj.
parametr -B postmasteru. Pokud ale tato hodnota bude p<EFBFBD><EFBFBD>li<EFBFBD> velk<EFBFBD>, tak
mo<EFBFBD>n<EFBFBD> nespust<EFBFBD>te postmastera jeliko<EFBFBD> dos<EFBFBD>hnete limitu sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti.
Ka<EFBFBD>d<EFBFBD> buffer m<EFBFBD> 8K a implicitn<EFBFBD> je 64 buffer<EFBFBD>.
D<EFBFBD>le m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD>ep<EFBFBD>na<EFBFBD> -S k zv<EFBFBD><EFBFBD>en<EFBFBD> limitu pam<EFBFBD>ti pro backendy na
do<EFBFBD>asn<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>. Hodnota je m<EFBFBD>n<EFBFBD>na v kilobytech a v<EFBFBD>choz<EFBFBD> nastaven<EFBFBD> je
512, tj. 512K.
M<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD><EFBFBD>kaz CLUSTER, kter<EFBFBD> uspo<EFBFBD><EFBFBD>d<EFBFBD> fyzicky data v tabulk<EFBFBD>ch
podle indexu. V<EFBFBD>ce na manu<EFBFBD>lov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch p<EFBFBD><EFBFBD>kazu CLUSTER.
3.7) Jak<EFBFBD> jsou mo<EFBFBD>nosti lad<EFBFBD>n<EFBFBD>?
M<EFBFBD>te n<EFBFBD>kolik mo<EFBFBD>nost<EFBFBD> jak se dostat k u<EFBFBD>ite<EFBFBD>n<EFBFBD>m stavov<EFBFBD>m informac<EFBFBD>m.
Zaprv<EFBFBD>, p<EFBFBD>i p<EFBFBD>ekladu pou<EFBFBD>ijte p<EFBFBD>ep<EFBFBD>na<EFBFBD> --enable-cassert, t<EFBFBD>m se zapne
monitorov<EFBFBD>n<EFBFBD> a n<EFBFBD>sledn<EFBFBD> zastaven<EFBFBD> aplikace, kdy<EFBFBD> se proces v backendu
dostane do neo<EFBFBD>ek<EFBFBD>van<EFBFBD>ho stavu.
Jak postmaster tak postgres m<EFBFBD> n<EFBFBD>kolik p<EFBFBD>ep<EFBFBD>na<EFBFBD><EFBFBD> umo<EFBFBD><EFBFBD>uj<EFBFBD>c<EFBFBD>ch lad<EFBFBD>n<EFBFBD>.
Postmaster nastartujte tak, abyste si byli jisti, <EFBFBD>e je standartn<EFBFBD>
v<EFBFBD>stup a standartn<EFBFBD> chybov<EFBFBD> v<EFBFBD>stup p<EFBFBD>esm<EFBFBD>rov<EFBFBD>n do souboru logu,
nap<EFBFBD><EFBFBD>klad:
cd /usr/local/pgsql
./bin/postmaster > server.log 2>&1 &
T<EFBFBD>m se vytvo<EFBFBD><EFBFBD> log v adres<EFBFBD><EFBFBD>i PostgreSQL, Tento soubor obsahuje
u<EFBFBD>ite<EFBFBD>n<EFBFBD> informace o probl<EFBFBD>mech a chyb<EFBFBD>ch vyskytl<EFBFBD>ch se na serveru.
Postmaster m<EFBFBD> p<EFBFBD>ep<EFBFBD>na<EFBFBD> -d ur<EFBFBD>uj<EFBFBD>c<EFBFBD>, jak podrobn<EFBFBD> maj<EFBFBD> b<EFBFBD>t reportovan<EFBFBD>
informace, tj. debug level. Pozor, p<EFBFBD>i velk<EFBFBD> hodnot<EFBFBD> debug levelu
rychle roste velikost souboru logu.
Pokud neb<EFBFBD><EFBFBD><EFBFBD> postmaster, m<EFBFBD><EFBFBD>ete spustit backend PostgreSQL z p<EFBFBD><EFBFBD>kazov<EFBFBD>
<EFBFBD><EFBFBD>dky a napsat sv<EFBFBD>j SQL dotaz p<EFBFBD><EFBFBD>mo v backendu (doporu<EFBFBD>eno pouze pro
lad<EFBFBD>n<EFBFBD>). Dotaz je v tomto p<EFBFBD><EFBFBD>pad<EFBFBD> ukon<EFBFBD>en novou <EFBFBD><EFBFBD>dkou, nikoliv
st<EFBFBD>edn<EFBFBD>kem. Pokud m<EFBFBD>te aplikaci p<EFBFBD>elo<EFBFBD>enou s lad<EFBFBD>c<EFBFBD>mi symboly, m<EFBFBD><EFBFBD>ete
pou<EFBFBD><EFBFBD>t debbuger k monitorov<EFBFBD>n<EFBFBD> procesu. Pokud nen<EFBFBD> backend spu<EFBFBD>t<EFBFBD>n
postmasterem, pak neb<EFBFBD><EFBFBD><EFBFBD> ve sv<EFBFBD>m obvykl<EFBFBD>m prost<EFBFBD>ed<EFBFBD> a tud<EFBFBD><EFBFBD> n<EFBFBD>kter<EFBFBD>
probl<EFBFBD>my dan<EFBFBD> interakc<EFBFBD> mezi backendy nemohou b<EFBFBD>t nasimulov<EFBFBD>ny.
Pokud b<EFBFBD><EFBFBD><EFBFBD> postmaster, spus<EFBFBD>e psql v jednom okn<EFBFBD> a pak si zjist<EFBFBD>te PID
procesu postgres pou<EFBFBD>it<EFBFBD>ho psql. V debuggeru sep<EFBFBD>ipojte k postgresql
PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql.
Pokud lad<EFBFBD>te startup postgresu, pak nastavte PGOPTIONS="-W n" a spus<EFBFBD>e
psql. Tento p<EFBFBD>ep<EFBFBD>na<EFBFBD> zp<EFBFBD>sob<EFBFBD> pauzu n sekund, tak<EFBFBD>e budete m<EFBFBD>t <EFBFBD>as se
p<EFBFBD>ipojit k procesu, a nastavit breakpointy a pokra<EFBFBD>ovat v startup
posloupnosti.
Pro lad<EFBFBD>n<EFBFBD> a m<EFBFBD><EFBFBD>en<EFBFBD> v<EFBFBD>konu mohou b<EFBFBD>t u<EFBFBD>ite<EFBFBD>n<EFBFBD> p<EFBFBD>ep<EFBFBD>na<EFBFBD>e -s, -A a -t
programu postgres (backend).
M<EFBFBD><EFBFBD>ete prov<EFBFBD>st p<EFBFBD>eklad s profilac<EFBFBD>, tak abyste vid<EFBFBD>li kolik <EFBFBD>asu
zab<EFBFBD>raj<EFBFBD> jednotliv<EFBFBD> funkce. Soubory s profily backend<EFBFBD> jsou ulo<EFBFBD>eny v
adres<EFBFBD><EFBFBD>i pgsql/data/base/dbname. Profil klienta pak v jeho aktu<EFBFBD>ln<EFBFBD>m
adres<EFBFBD><EFBFBD>i. Korektn<EFBFBD> profilace v prost<EFBFBD>ed<EFBFBD> Linux po<EFBFBD>aduje konfiguraci
syst<EFBFBD>mu s parametrem -DLINUX_PROFILE.
3.8) Pro<EFBFBD> dostanu "Sorry, too many clients", kdy<EFBFBD> se zkou<EFBFBD><EFBFBD>m p<EFBFBD>ipojit?
Zvy<EFBFBD>te limit postmastera na maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sou<EFBFBD>asn<EFBFBD> spu<EFBFBD>t<EFBFBD>n<EFBFBD>ch
backend<EFBFBD>.
V<EFBFBD>choz<EFBFBD> hodnota je 32 backend<EFBFBD>. Tuto hodnotu zv<EFBFBD><EFBFBD><EFBFBD>te zastaven<EFBFBD>m a
op<EFBFBD>tovn<EFBFBD>m spu<EFBFBD>t<EFBFBD>n<EFBFBD>m postmastera s parametrem -N nebo <EFBFBD>pravou
postgresql.conf.
P<EFBFBD>i zv<EFBFBD><EFBFBD>en<EFBFBD> hodnoty -N nad 32 mus<EFBFBD>te zv<EFBFBD><EFBFBD>it hodnotu -B nad v<EFBFBD>choz<EFBFBD> 64,
-B mus<EFBFBD> b<EFBFBD>t minim<EFBFBD>ln<EFBFBD> dvakr<EFBFBD>t v<EFBFBD>t<EFBFBD><EFBFBD>, nebo je<EFBFBD>t<EFBFBD> l<EFBFBD>pe v<EFBFBD>ce.
Pravd<EFBFBD>podobn<EFBFBD> zjist<EFBFBD>te, <EFBFBD>e pro velk<EFBFBD> po<EFBFBD>et proces<EFBFBD> backendu je nutn<EFBFBD>
zv<EFBFBD><EFBFBD>it n<EFBFBD>kter<EFBFBD> parametry j<EFBFBD>dra. Jsou to p<EFBFBD>edev<EFBFBD><EFBFBD>m maxim<EFBFBD>ln<EFBFBD> velikost
sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti SHMMAX, maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et semaf<EFBFBD>r<EFBFBD> SEMMNS a SEMMNI,
maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et proces<EFBFBD> NPROC, maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et proces<EFBFBD> u<EFBFBD>ivatele
MAXUPRC a maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et otev<EFBFBD>en<EFBFBD>ch soubor<EFBFBD> NFILE a NINODE. D<EFBFBD>vod pro
omezen<EFBFBD> maxim<EFBFBD>ln<EFBFBD>ho po<EFBFBD>tu backend<EFBFBD> je fakt, <EFBFBD>e by mohlo doj<EFBFBD>t k
vy<EFBFBD>erp<EFBFBD>n<EFBFBD> zdroj<EFBFBD> Va<EFBFBD>eho syst<EFBFBD>mu.
3.9) K <EFBFBD>emu slou<EFBFBD><EFBFBD> adres<EFBFBD><EFBFBD> pgsql_tmp?
Tento adres<EFBFBD><EFBFBD> obsahuje do<EFBFBD>asn<EFBFBD> soubory vytvo<EFBFBD>en<EFBFBD> exekutorem dotaz<EFBFBD>.
Nap<EFBFBD><EFBFBD>klad, kdy<EFBFBD> je nutn<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> k zaji<EFBFBD>t<EFBFBD>n<EFBFBD> ORDER BY a t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> m<EFBFBD>
v<EFBFBD>t<EFBFBD><EFBFBD> n<EFBFBD>roky na prostor ne<EFBFBD> povoluje parametr -S backendu, pak je
vytvo<EFBFBD>en do<EFBFBD>asn<EFBFBD> soubor k ulo<EFBFBD>en<EFBFBD> extra <EFBFBD>daj<EFBFBD>.
Do<EFBFBD>asn<EFBFBD> soubory jsou obvykle maz<EFBFBD>ny automaticky, ale m<EFBFBD><EFBFBD>e se st<EFBFBD>t, <EFBFBD>e
b<EFBFBD>hem t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> server spadne. Zastaven<EFBFBD> a dal<EFBFBD><EFBFBD> start postmastera
zajist<EFBFBD> odstran<EFBFBD>n<EFBFBD> soubor<EFBFBD> s t<EFBFBD>chto adres<EFBFBD><EFBFBD><EFBFBD>.
3.10) Pro<EFBFBD> je po<EFBFBD>adov<EFBFBD>no dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze b<EFBFBD>hem upgrade mezi
velk<EFBFBD>mi verzemi PostgreSQL?
PostgreSQL se minim<EFBFBD>ln<EFBFBD> m<EFBFBD>n<EFBFBD> b<EFBFBD>hem mal<EFBFBD>ch verz<EFBFBD>, tak<EFBFBD>e nap<EFBFBD>. p<EFBFBD>i
upgrade z 7.2 na 7.2.1 nen<EFBFBD> nutn<EFBFBD> dump a load datab<EFBFBD>ze. Ale v<EFBFBD>ynamn<EFBFBD>
verze <EFBFBD>asto m<EFBFBD>n<EFBFBD> intern<EFBFBD> form<EFBFBD>t syst<EFBFBD>mov<EFBFBD>ch tabulek a datov<EFBFBD>ch
soubor<EFBFBD>. Tyto zm<EFBFBD>ny jsou natolik rozs<EFBFBD>hl<EFBFBD>, <EFBFBD>e nelze zajistit zp<EFBFBD>tnou
kompatibilitu pro datov<EFBFBD> soubory. Dump ulo<EFBFBD><EFBFBD> data v obecn<EFBFBD>m form<EFBFBD>tu,
tak<EFBFBD>e mohou b<EFBFBD>t na<EFBFBD>tena a pou<EFBFBD><EFBFBD>v<EFBFBD>na v nov<EFBFBD>m intern<EFBFBD>m form<EFBFBD>tu.
_________________________________________________________________
Provozn<EFBFBD> dotazy
4.1) <EFBFBD><EFBFBD>m se li<EFBFBD><EFBFBD> bin<EFBFBD>rn<EFBFBD> a norm<EFBFBD>ln<EFBFBD> kurzor?
Popis najdete v manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nce DECLARE
4.2) Jak z<EFBFBD>skat pouze prvn<EFBFBD> <EFBFBD><EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> <EFBFBD><EFBFBD>dek?
Pod<EFBFBD>vejte se do man. str<EFBFBD>nky p<EFBFBD><EFBFBD>kazu FETCH, nebo pou<EFBFBD>ijte SELECT ...
LIMIT ...
I kdy<EFBFBD> pot<EFBFBD>ebujete z<EFBFBD>skat pouze prvn<EFBFBD>ch n<EFBFBD>kolik <EFBFBD><EFBFBD>dk<EFBFBD>, je t<EFBFBD>eba
zpracovat v<EFBFBD>echna data, nap<EFBFBD>. pokud dotaz m<EFBFBD> ORDER BY. Pokud v<EFBFBD>ak
existuje index, kter<EFBFBD> odpov<EFBFBD>d<EFBFBD> ORDER BY, PostgreSQL m<EFBFBD><EFBFBD>e z<EFBFBD>skat pouze
prvn<EFBFBD>ch n <EFBFBD><EFBFBD>dk<EFBFBD> a ukon<EFBFBD>it zpracov<EFBFBD>n<EFBFBD> dotazu.
K z<EFBFBD>sk<EFBFBD>n<EFBFBD> n<EFBFBD>hodn<EFBFBD>ho <EFBFBD><EFBFBD>dku pou<EFBFBD>ijte:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek nebo jinak jak jej z<EFBFBD>sk<EFBFBD> psql?
P<EFBFBD><EFBFBD>kaz \dt v psql zobraz<EFBFBD> seznam tabulek. <EFBFBD>pln<EFBFBD> seznam p<EFBFBD><EFBFBD>kaz<EFBFBD> psql
dostanete p<EFBFBD><EFBFBD>kazem \?. Tak<EFBFBD> se m<EFBFBD><EFBFBD>ete pod<EFBFBD>vat do zdrojov<EFBFBD>ch k<EFBFBD>d<EFBFBD> psql
do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL p<EFBFBD><EFBFBD>kazy,
kter<EFBFBD> se pou<EFBFBD><EFBFBD>vaj<EFBFBD> v psql metap<EFBFBD><EFBFBD>kazech. D<EFBFBD>le m<EFBFBD><EFBFBD>ete spustit psql s
p<EFBFBD>ep<EFBFBD>na<EFBFBD>em -E, kter<EFBFBD> zp<EFBFBD>sob<EFBFBD> zobrazen<EFBFBD> ka<EFBFBD>d<EFBFBD>ho dotazu, kter<EFBFBD>
zpracov<EFBFBD>n<EFBFBD> metap<EFBFBD><EFBFBD>kazu vyvol<EFBFBD>. PostgreSQL nab<EFBFBD>z<EFBFBD> SQLi INFORMATION
SCHEMA s tabulkami obsahuj<EFBFBD>c<EFBFBD> informace o datab<EFBFBD>zi.
4.4) Jak odstran<EFBFBD>m sloupec tabulky, jak zm<EFBFBD>n<EFBFBD>m jeho typ?
Po<EFBFBD><EFBFBD>naje verz<EFBFBD> 7.3 m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD><EFBFBD>kaz ALTER TABLE DROP COLUMN. Ve
star<EFBFBD><EFBFBD>ch verz<EFBFBD>ch m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> postup:
BEGIN;
LOCK TABLE old_table;
SELECT ... -- mimo sloupec, kter<EFBFBD> chceme odstranit
INTO TABLE new_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
Pro zm<EFBFBD>nu typu sloupce je t<EFBFBD>eba prov<EFBFBD>st:
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;
Pot<EFBFBD> prove<EFBFBD>te VACUUM FULL tab - uvoln<EFBFBD>te t<EFBFBD>m diskov<EFBFBD> prostor zabran<EFBFBD>
nyn<EFBFBD> ji<EFBFBD> neplatn<EFBFBD>mi <EFBFBD><EFBFBD>dky.
4.5) Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dku, tabulky a datab<EFBFBD>ze?
PostgreSQL m<EFBFBD> tato omezen<EFBFBD>:
Maxim<EFBFBD>ln<EFBFBD> velikost datab<EFBFBD>ze: neomezena (existuj<EFBFBD> 32TB db)
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky: 32 TB
Maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dky: 1.6 TB
Maxim<EFBFBD>ln<EFBFBD> velikost polo<EFBFBD>ky 1 GB
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et <EFBFBD><EFBFBD>dk<EFBFBD> v tabulce: neomezeno
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sloupc<EFBFBD> v tabulce: 250-1600 podle typ<EFBFBD>
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et index<EFBFBD> na tabulce: neomezeno
Ve skute<EFBFBD>nosti nic nen<EFBFBD> neomezeno, limitem b<EFBFBD>v<EFBFBD> v<EFBFBD>dy dostupn<EFBFBD> diskov<EFBFBD>
pam<EFBFBD><EFBFBD> nebo velikost opera<EFBFBD>n<EFBFBD> pam<EFBFBD>ti. Pokud m<EFBFBD>te n<EFBFBD>kterou z t<EFBFBD>chto
hodnot neobvykle velkou, m<EFBFBD><EFBFBD>e doj<EFBFBD>t ke sn<EFBFBD><EFBFBD>en<EFBFBD> v<EFBFBD>konu.
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky je 32 TB a nevy<EFBFBD>aduje podporu velk<EFBFBD>ch
soubor<EFBFBD> opera<EFBFBD>n<EFBFBD>m syst<EFBFBD>mem. Velk<EFBFBD> tabulky se ukl<EFBFBD>daj<EFBFBD> do n<EFBFBD>kolika 1 GB
soubor<EFBFBD> tak<EFBFBD>e limity souborov<EFBFBD>ho syst<EFBFBD>mu nejsou podstatn<EFBFBD>.
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky a maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sloupc<EFBFBD> m<EFBFBD><EFBFBD>eme
ze<EFBFBD>ty<EFBFBD>n<EFBFBD>sobit nastaven<EFBFBD>m velikosti bloku na 32K.
4.6) Kolik diskov<EFBFBD>ho prostoru je pot<EFBFBD>eba k ulo<EFBFBD>en<EFBFBD> dat z
norm<EFBFBD>ln<EFBFBD>ho textov<EFBFBD>ho souboru?
PostgreSQL vy<EFBFBD>aduje a<EFBFBD> p<EFBFBD>tin<EFBFBD>sobek diskov<EFBFBD>ho prostoru k ulo<EFBFBD>en<EFBFBD> dat z
textov<EFBFBD>ho souboru.
Nap<EFBFBD><EFBFBD>klad, uva<EFBFBD>ujme soubor se 100 tis<EFBFBD>ci <EFBFBD><EFBFBD>dky obsahuj<EFBFBD>c<EFBFBD> na ka<EFBFBD>d<EFBFBD>
<EFBFBD><EFBFBD>dce cel<EFBFBD> <EFBFBD><EFBFBD>slo a textov<EFBFBD> popis. Text je v pr<EFBFBD>m<EFBFBD>ru dvacet byt<EFBFBD>
dlouh<EFBFBD>. Textov<EFBFBD> soubor bude 2.8 MB dlouh<EFBFBD>. Velikost datab<EFBFBD>ze
obsahuj<EFBFBD>c<EFBFBD> odpov<EFBFBD>daj<EFBFBD>c<EFBFBD> data bude zhruba 6.4 MB.
36 byt<EFBFBD>: hlavi<EFBFBD>ka <EFBFBD><EFBFBD>dku (p<EFBFBD>ibli<EFBFBD>n<EFBFBD>)
24 byt<EFBFBD>: jedna celo<EFBFBD><EFBFBD>seln<EFBFBD> polo<EFBFBD>ka a jedna textov<EFBFBD>
+ 4 byty: ukazatel na str<EFBFBD>nku k ntici
------------------------------------------------------
64 byt<EFBFBD> na <EFBFBD><EFBFBD>dek
Velikost datov<EFBFBD> str<EFBFBD>nky PostgreSQL je 8KB
8192 byt<EFBFBD> na str<EFBFBD>nce
---------------------- = 128 <EFBFBD><EFBFBD>dek na str<EFBFBD>nku
64 byt<EFBFBD> za <EFBFBD><EFBFBD>dek
100000 <EFBFBD><EFBFBD>dek
-------------------- = 782 str<EFBFBD>nek (zaokrouhleno nahoru)
128 <EFBFBD><EFBFBD>dek na str<EFBFBD>nce
782 * 8192 = 6, 406, 144 byt<EFBFBD> (6.4 MB)
Indexy nemaj<EFBFBD> tak velkou re<EFBFBD>ii, ale mohou b<EFBFBD>t tak<EFBFBD> velk<EFBFBD>, proto<EFBFBD>e
obsahuj<EFBFBD> indexovan<EFBFBD> data.
Hodnoty NULL jsou ulo<EFBFBD>eny v bitmap<EFBFBD>ch, tak<EFBFBD>e spot<EFBFBD>ebuj<EFBFBD> jen velmi m<EFBFBD>lo
diskov<EFBFBD>ho prostoru.
4.7) Jak z<EFBFBD>sk<EFBFBD>m seznam vytvo<EFBFBD>en<EFBFBD>ch tabulek, index<EFBFBD>, datab<EFBFBD>z<EFBFBD>?
psql m<EFBFBD> sadu metap<EFBFBD><EFBFBD>kaz<EFBFBD> k zobrazen<EFBFBD> t<EFBFBD>chto informac<EFBFBD>. Jejich seznam
z<EFBFBD>sk<EFBFBD>te p<EFBFBD><EFBFBD>kazem \?. D<EFBFBD>le se m<EFBFBD><EFBFBD>ete pod<EFBFBD>vat na obsah syst<EFBFBD>mov<EFBFBD>ch
tabulek za<EFBFBD><EFBFBD>naj<EFBFBD>c<EFBFBD>ch pg_. Spu<EFBFBD>t<EFBFBD>n<EFBFBD> psql s parametrem -l provede v<EFBFBD>pis
n<EFBFBD>zv<EFBFBD> v<EFBFBD>ech datab<EFBFBD>z<EFBFBD>.
Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy p<EFBFBD>istupuj<EFBFBD>c<EFBFBD>
k syst<EFBFBD>mov<EFBFBD>m tabulk<EFBFBD>mm.
4.8) M<EFBFBD>j dotaz je pomal<EFBFBD> a nepou<EFBFBD><EFBFBD>v<EFBFBD> vytvo<EFBFBD>en<EFBFBD> indexy. Pro<EFBFBD>?
Ka<EFBFBD>d<EFBFBD> dotaz nemus<EFBFBD> nutn<EFBFBD> pou<EFBFBD><EFBFBD>t existuj<EFBFBD>c<EFBFBD> indexy. Index se pou<EFBFBD>ije
tehdy, kdy<EFBFBD> je tabulka v<EFBFBD>t<EFBFBD><EFBFBD> ne<EFBFBD> ur<EFBFBD>it<EFBFBD> minim<EFBFBD>ln<EFBFBD> velikost, a dotaz
vyb<EFBFBD>r<EFBFBD> pouze procentu<EFBFBD>ln<EFBFBD> malou <EFBFBD><EFBFBD>st <EFBFBD><EFBFBD>dk<EFBFBD> tabulky. To proto, <EFBFBD>e
n<EFBFBD>hodn<EFBFBD> p<EFBFBD><EFBFBD>stup k disku dan<EFBFBD> <EFBFBD>ten<EFBFBD>m indexu m<EFBFBD><EFBFBD>e b<EFBFBD>t pomalej<EFBFBD><EFBFBD> ne<EFBFBD>
line<EFBFBD>rn<EFBFBD> <EFBFBD>ten<EFBFBD> tabulky nebo sekven<EFBFBD>n<EFBFBD> <EFBFBD>ten<EFBFBD>.
PostgreSQL rozhoduje o pou<EFBFBD>it<EFBFBD> index<EFBFBD> na z<EFBFBD>klad<EFBFBD> statistiky p<EFBFBD><EFBFBD>stup<EFBFBD> k
tabulce. Tyto statistiky se shroma<EFBFBD><EFBFBD>uj<EFBFBD> p<EFBFBD><EFBFBD>kazy VACUUM ANALYZE nebo
ANALYZE. D<EFBFBD>ky statistik<EFBFBD>m m<EFBFBD> optimizer informaci o po<EFBFBD>tu <EFBFBD><EFBFBD>dek v
tabulce a m<EFBFBD><EFBFBD>e l<EFBFBD>pe rozhodnout o pou<EFBFBD>it<EFBFBD> index<EFBFBD>. Statistiky se uplatn<EFBFBD>
p<EFBFBD>i ur<EFBFBD>en<EFBFBD> optim<EFBFBD>ln<EFBFBD>ho po<EFBFBD>ad<EFBFBD> a metody spojen<EFBFBD> tabulek. Statistiky by
se m<EFBFBD>li aktualizovat opakovan<EFBFBD>, tak jak se m<EFBFBD>n<EFBFBD> obsah tabulek.
Indexy nejsou oby<EFBFBD>ejn<EFBFBD> pou<EFBFBD>ity pro set<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> nebo spojen<EFBFBD> tabulek.
Sekven<EFBFBD>n<EFBFBD> zpracov<EFBFBD>n<EFBFBD> n<EFBFBD>sledovan<EFBFBD> explicitn<EFBFBD>m t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>m je oby<EFBFBD>ejn<EFBFBD>
rychlej<EFBFBD><EFBFBD> ne<EFBFBD> indexn<EFBFBD> <EFBFBD>ten<EFBFBD> na velk<EFBFBD> tabulce.
Jinak je tomu v p<EFBFBD><EFBFBD>pad<EFBFBD> pou<EFBFBD>it<EFBFBD> LIMIT a ORDER BY, p<EFBFBD>i kter<EFBFBD>m se
v<EFBFBD>t<EFBFBD>inou index pou<EFBFBD>ije, v<EFBFBD>sledkem je pouze mal<EFBFBD> <EFBFBD><EFBFBD>st tabulky. Funkce
MAX() a MIN() nepou<EFBFBD><EFBFBD>vaj<EFBFBD> indexy, ale je mo<EFBFBD>n<EFBFBD> tut<EFBFBD><EFBFBD> hodnotu z<EFBFBD>skat:
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
Pokud si mysl<EFBFBD>te, <EFBFBD>e optimizer myln<EFBFBD> zvolil sekven<EFBFBD>n<EFBFBD> prohled<EFBFBD>v<EFBFBD>n<EFBFBD>
tabulky, pou<EFBFBD>ijte p<EFBFBD><EFBFBD>kaz SET enable_seqscan TO 'off' a zkuste zda je
indexn<EFBFBD> prohled<EFBFBD>v<EFBFBD>n<EFBFBD> rychlej<EFBFBD><EFBFBD>.
P<EFBFBD>i vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> na z<EFBFBD>klad<EFBFBD> vzoru jako je nap<EFBFBD>. oper<EFBFBD>tor LIKE nebo ~ se
indexy pou<EFBFBD><EFBFBD>j<EFBFBD> pouze za ur<EFBFBD>it<EFBFBD>ch skute<EFBFBD>nost<EFBFBD>:
* za<EFBFBD><EFBFBD>tek hledan<EFBFBD>ho vzoru mus<EFBFBD> b<EFBFBD>t ukotven k za<EFBFBD><EFBFBD>tku, tj.
+ vzor LIKE nesm<EFBFBD> za<EFBFBD><EFBFBD>nat %
+ ~ regul<EFBFBD>rn<EFBFBD> v<EFBFBD>raz mus<EFBFBD> za<EFBFBD><EFBFBD>nat ^
* vzor nesm<EFBFBD> za<EFBFBD><EFBFBD>nat intervalem, nap<EFBFBD>. [a-e]
* vyhled<EFBFBD>van<EFBFBD>, kter<EFBFBD> nen<EFBFBD> Case sensitiv jako je ILIKE nebo ~*
nepou<EFBFBD><EFBFBD>v<EFBFBD> indexy. M<EFBFBD><EFBFBD>ete ale pou<EFBFBD><EFBFBD>t funkcion<EFBFBD>ln<EFBFBD> indexy, kter<EFBFBD>
jsou pos<EFBFBD>ny v sekci 4.12
* p<EFBFBD>i inicializaci datab<EFBFBD>ze (initdb) mus<EFBFBD> b<EFBFBD>t pou<EFBFBD>ito C locale
(pozn. p<EFBFBD>ekladatele - tud<EFBFBD><EFBFBD> v na<EFBFBD>ich podm<EFBFBD>nk<EFBFBD>ch nepou<EFBFBD>iteln<EFBFBD>,
nepracovalo by <EFBFBD>esk<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>).
4.9) Jak zjist<EFBFBD>m, jak optimizer dotazu vyhodnocuje m<EFBFBD>j dotaz?
Pod<EFBFBD>vejte se do manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nky p<EFBFBD><EFBFBD>kazu EXPLAIN.
4.10) Co to je R-tree index?
R-tree index se pou<EFBFBD><EFBFBD>v<EFBFBD> pro indexov<EFBFBD>n<EFBFBD> prostorov<EFBFBD>ch dat. Hash index
nem<EFBFBD><EFBFBD>e obslou<EFBFBD>it prohled<EFBFBD>v<EFBFBD>n<EFBFBD> oblast<EFBFBD>. B-tree index m<EFBFBD><EFBFBD>e <EFBFBD><EFBFBD>dit
vyhled<EFBFBD>n<EFBFBD> oblast<EFBFBD> v jedn<EFBFBD> dimenzi. R-tree index m<EFBFBD><EFBFBD>e podporovat
hled<EFBFBD>n<EFBFBD> v multidimenzion<EFBFBD>ln<EFBFBD>ch datech. Pou<EFBFBD>ijeme-li nap<EFBFBD><EFBFBD>klad R-tree
index na atributy typu point, pak syst<EFBFBD>m m<EFBFBD><EFBFBD>e efektivn<EFBFBD> odpov<EFBFBD>d<EFBFBD>t na
dotaz - vyber v<EFBFBD>echny body uvnit<EFBFBD> obd<EFBFBD>ln<EFBFBD>k<EFBFBD>.
P<EFBFBD>vodn<EFBFBD> n<EFBFBD>vrh R-tree je Guttman, A. "R-trees: A Dynamic Index
Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD
Int'l Conf on Mgmt of Data, 45-57
Tyto materi<EFBFBD>ly naleznete v Stonebraker's "Readings in Database
Systems".
Vestav<EFBFBD>n<EFBFBD> R-tree m<EFBFBD><EFBFBD>e slou<EFBFBD>it k indexaci polygon<EFBFBD> a oblast<EFBFBD>.
Teoreticky m<EFBFBD><EFBFBD>eme R-tree pou<EFBFBD><EFBFBD>t i pro v<EFBFBD>ce dimenz<EFBFBD> (jin<EFBFBD> ne<EFBFBD> 3D). Ve
skute<EFBFBD>nosti ale takov<EFBFBD> roz<EFBFBD><EFBFBD><EFBFBD>en<EFBFBD> R-tree vy<EFBFBD>aduje trochu pr<EFBFBD>ce a ve
sou<EFBFBD>astnosti chyb<EFBFBD> dokumentace jak na to.
4.11) Co je Genetic Query Optimizer?
GEQO modul urychluje optimalizaci dotaz<EFBFBD> p<EFBFBD>i spojov<EFBFBD>n<EFBFBD> mno<EFBFBD>stv<EFBFBD>
tabulek metodou Genetick<EFBFBD>ch algoritm<EFBFBD> (GA). To umo<EFBFBD><EFBFBD>uje z<EFBFBD>skat velk<EFBFBD>ho
mno<EFBFBD>stv<EFBFBD> variant spojen<EFBFBD> p<EFBFBD>i ne<EFBFBD>pln<EFBFBD>m prohled<EFBFBD>v<EFBFBD>n<EFBFBD>m.
4.12) Jak prov<EFBFBD>st vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> regul<EFBFBD>rn<EFBFBD>ho v<EFBFBD>razu case sensitiv, insensitiv?
Jak pou<EFBFBD><EFBFBD>t index pro case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>?
Oper<EFBFBD>tor ~ slou<EFBFBD><EFBFBD> k porov<EFBFBD>n<EFBFBD> s regul<EFBFBD>rn<EFBFBD>m v<EFBFBD>razem, jeho modifikace *~
p<EFBFBD>edstavuje case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>. Jedn<EFBFBD> se o obdobu LIKE a
ILIKE.
Pro vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> bez ohledu na velk<EFBFBD> mal<EFBFBD> p<EFBFBD>smena pou<EFBFBD>ijeme:
SELECT *
FROM tab
WHERE lower(col) = 'abc';
V tomto p<EFBFBD><EFBFBD>pad<EFBFBD> se nepou<EFBFBD>ije standardn<EFBFBD> index. Nicm<EFBFBD>n<EFBFBD>, pou<EFBFBD>ije se
funkcion<EFBFBD>ln<EFBFBD> index, pokud jej vytvo<EFBFBD><EFBFBD>te:
CREATE INDEX tabindex ON tab (lower(col));
4.13) Jak v dotazu detekovat, <EFBFBD>e polo<EFBFBD>ka je NULL?
Ur<EFBFBD><EFBFBD>te pomoc<EFBFBD> IS NULL nebo IS NOT NULL
4.14) Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi r<EFBFBD>zn<EFBFBD>mi znakov<EFBFBD>mi typy?
Typ Intern<EFBFBD> n<EFBFBD>zev Pozn<EFBFBD>mka
--------------------------------------------------------------------------
VARCHAR(n) varchar omezeno maxim<EFBFBD>ln<EFBFBD> d<EFBFBD>lkou, bez dopln<EFBFBD>n<EFBFBD> mezerami
CHAR(n) bpchar <EFBFBD>et<EFBFBD>zec je dopln<EFBFBD>n mezerami do dan<EFBFBD> d<EFBFBD>lky
TEXT text bez horn<EFBFBD>ho limitu na d<EFBFBD>lku
BYTEA bytea pole byt<EFBFBD> (bezpe<EFBFBD>n<EFBFBD> lze ulo<EFBFBD>it i znak NULL)
"char" char jeden znak
S intern<EFBFBD>mi n<EFBFBD>zvy se setk<EFBFBD>te v syst<EFBFBD>mov<EFBFBD>m katalogu a v n<EFBFBD>kter<EFBFBD>ch
chybov<EFBFBD>ch hl<EFBFBD><EFBFBD>en<EFBFBD>ch.
Prvn<EFBFBD> <EFBFBD>ty<EFBFBD>i uveden<EFBFBD> typy jsou tzv. varlena typy (tj. prvn<EFBFBD> <EFBFBD>ty<EFBFBD>i byty
na disku nesou <EFBFBD>daj o d<EFBFBD>lce, n<EFBFBD>sleduj<EFBFBD> samotn<EFBFBD> data). Proto skute<EFBFBD>n<EFBFBD>
pou<EFBFBD>it<EFBFBD> prostor je v<EFBFBD>dy o n<EFBFBD>co m<EFBFBD>lo v<EFBFBD>t<EFBFBD><EFBFBD> ne<EFBFBD> deklarovan<EFBFBD> d<EFBFBD>lka.
Naopak, tyto datov<EFBFBD> typy jsou komprimov<EFBFBD>nty TOASTem, tak<EFBFBD>e prostor na
disku m<EFBFBD><EFBFBD>e b<EFBFBD>t ni<EFBFBD><EFBFBD><EFBFBD> ne<EFBFBD> je o<EFBFBD>ek<EFBFBD>v<EFBFBD>no.
VARCHAR(n) je vhodn<EFBFBD> pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> text<EFBFBD> promm<EFBFBD>n<EFBFBD> d<EFBFBD>lky s pevn<EFBFBD>
stanovenou maxim<EFBFBD>ln<EFBFBD> d<EFBFBD>lkou. TEXT je pro <EFBFBD>et<EFBFBD>zce bez omezen<EFBFBD> d<EFBFBD>lky s
maximem jeden gigabajt.
CHAR(n) slou<EFBFBD><EFBFBD> k ukl<EFBFBD>d<EFBFBD>n<EFBFBD> <EFBFBD>et<EFBFBD>zc<EFBFBD> stejn<EFBFBD> d<EFBFBD>lky. CHAR(n) dopln<EFBFBD> pr<EFBFBD>zdn<EFBFBD>
znaky do specifikovan<EFBFBD> d<EFBFBD>lky, zat<EFBFBD>mco VARCHAR(n) ulo<EFBFBD><EFBFBD> pouze p<EFBFBD>edan<EFBFBD>
znaky. BYTEA je ur<EFBFBD>eno pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> bin<EFBFBD>rn<EFBFBD>ch dat, v<EFBFBD>etn<EFBFBD> NULL byte.
V<EFBFBD>echny zde popsan<EFBFBD> typy maj<EFBFBD> podobn<EFBFBD> v<EFBFBD>konnostn<EFBFBD> charakteristiky.
4.15.1) Jak vytvo<EFBFBD>it serial/auto-increment pole?
PostgreSQL podporuje typ SERIAL. P<EFBFBD>i jeho pou<EFBFBD>it<EFBFBD> se automaticky
vytvo<EFBFBD><EFBFBD> SEQUENCE. Nap<EFBFBD><EFBFBD>klad:
CREATE TABLE person (
id SERIAL,
name TEXT
);
je automaticky p<EFBFBD>evedeno do
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
CREATE UNIQUE INDEX person_id_key ON person(id);
Viz dokumentace create_sequence v manu<EFBFBD>lov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch. D<EFBFBD>le m<EFBFBD><EFBFBD>ete
pou<EFBFBD><EFBFBD>t unik<EFBFBD>tn<EFBFBD> hodnotu OID ka<EFBFBD>d<EFBFBD>ho <EFBFBD><EFBFBD>dku. Potom ale mus<EFBFBD>te spou<EFBFBD>t<EFBFBD>t
pg_dump s p<EFBFBD>ep<EFBFBD>na<EFBFBD>em -o, tak aby z<EFBFBD>staly zachov<EFBFBD>ny hodnoty OID (u
p<EFBFBD><EFBFBD>kazu copy COPY WITH OIDS).
4.15.2) Jak z<EFBFBD>skat hodnotu SERIAL po vlo<EFBFBD>en<EFBFBD> <EFBFBD><EFBFBD>dku?
Jednou z mo<EFBFBD>nost<EFBFBD> je z<EFBFBD>skat budouc<EFBFBD> hodnotu SERIAL funkc<EFBFBD> nextval()
p<EFBFBD>ed samotn<EFBFBD>m vlo<EFBFBD>en<EFBFBD>m a pak ji vlo<EFBFBD>it explicitn<EFBFBD>. Nap<EFBFBD><EFBFBD>klad v jak<EFBFBD>msi
pseudojazyku:
newid = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
M<EFBFBD><EFBFBD>ete pak je<EFBFBD>t<EFBFBD> pou<EFBFBD><EFBFBD>t hodnotu newid v dal<EFBFBD><EFBFBD>ch dotazech, nap<EFBFBD>. jako
hodnotu ciz<EFBFBD>ho kl<EFBFBD><EFBFBD>e. N<EFBFBD>zev automaticky vytvo<EFBFBD>en<EFBFBD> sekvence je
tabulka_sloupec_seq.
Alternativn<EFBFBD> m<EFBFBD><EFBFBD>ete z<EFBFBD>skat hodnotu posledn<EFBFBD> generovou sekvenc<EFBFBD> funkc<EFBFBD>
currval() po vlo<EFBFBD>en<EFBFBD>:
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
Kone<EFBFBD>n<EFBFBD> m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t OID hodnotu vr<EFBFBD>cenou p<EFBFBD><EFBFBD>kazem INSERT, ale to je
pravd<EFBFBD>podobn<EFBFBD> nejm<EFBFBD>n<EFBFBD> p<EFBFBD>enositeln<EFBFBD> <EFBFBD>e<EFBFBD>en<EFBFBD>. V Perlu p<EFBFBD>i pou<EFBFBD>it<EFBFBD> DBI
modulu Edmunda Mergleho DBD:Pg oid hodnotu z<EFBFBD>sk<EFBFBD>me
$sth->{pg_oid_status} po ka<EFBFBD>d<EFBFBD>m $sth->execute().
4.15.3) Nepovede currval() a nextval() k rozhozen<EFBFBD> podm<EFBFBD>nek p<EFBFBD>i soub<EFBFBD>hu s
jin<EFBFBD>mi u<EFBFBD>ivateli?
Nikoliv, currval() vrac<EFBFBD> hodnotu naposledy generovanou ve va<EFBFBD>em
backendu, a ta tud<EFBFBD><EFBFBD> nen<EFBFBD> spole<EFBFBD>n<EFBFBD> v<EFBFBD>em u<EFBFBD>ivatel<EFBFBD>m.
4.15.4) Pro<EFBFBD> nen<EFBFBD> vygenerovan<EFBFBD> <EFBFBD><EFBFBD>slo pou<EFBFBD>ito p<EFBFBD>i p<EFBFBD>eru<EFBFBD>en<EFBFBD> transakce? Pro<EFBFBD>
vznikaj<EFBFBD> d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> vlastn<EFBFBD> sekvenc<EFBFBD>/SERIAL sloupce?
K zaji<EFBFBD>t<EFBFBD>n<EFBFBD> efektivnosti soub<EFBFBD>hu, jsou hodnoty posloupnosti, kdy<EFBFBD> se o
n<EFBFBD> po<EFBFBD><EFBFBD>d<EFBFBD>, a sekvence nen<EFBFBD> zam<EFBFBD>ena do ukon<EFBFBD>en<EFBFBD> transakce. To zp<EFBFBD>sobuje
d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> ze zru<EFBFBD>en<EFBFBD>ch transakc<EFBFBD>.
4.16) Co to je OID? Co je to TID?
Ka<EFBFBD>d<EFBFBD> <EFBFBD><EFBFBD>dek vytvo<EFBFBD>en<EFBFBD> v PostgreSQL z<EFBFBD>sk<EFBFBD> jedine<EFBFBD>n<EFBFBD> OID. V<EFBFBD>echna OID
generovan<EFBFBD> b<EFBFBD>hem inicializace datab<EFBFBD>ze jsou men<EFBFBD><EFBFBD> ne<EFBFBD> 16384
(include/access/transam.h). V<EFBFBD>echna OID generovan<EFBFBD> na po<EFBFBD>adavek
u<EFBFBD>ivatele jsou rovna nebo vy<EFBFBD><EFBFBD><EFBFBD> t<EFBFBD>to hodnot<EFBFBD>. Norm<EFBFBD>ln<EFBFBD>, v<EFBFBD>echna OID
jsou jedine<EFBFBD>n<EFBFBD> nejen uvnit<EFBFBD> tabulky nebo datab<EFBFBD>ze, ale v r<EFBFBD>mci cel<EFBFBD>
instalace PostgreSQL
PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD> OID ve sv<EFBFBD>m intern<EFBFBD>m syst<EFBFBD>mu tabulek k vytvo<EFBFBD>en<EFBFBD>
relac<EFBFBD>. Tato OID mohou b<EFBFBD>t pou<EFBFBD>ita k identifikaci konkr<EFBFBD>tn<EFBFBD>ho
u<EFBFBD>ivatele a pou<EFBFBD>ita v spojen<EFBFBD>. Pro OID hodnoty je doporu<EFBFBD>en typ OID.
Nad t<EFBFBD>mto sloupcem m<EFBFBD><EFBFBD>ete vytvo<EFBFBD>it index pro urychlen<EFBFBD> p<EFBFBD><EFBFBD>stupu.
OID jsou d<EFBFBD>na v<EFBFBD>em <EFBFBD><EFBFBD>dk<EFBFBD>m z centr<EFBFBD>ln<EFBFBD> oblasti a jsou pou<EFBFBD>ita v ka<EFBFBD>d<EFBFBD>
datab<EFBFBD>zi. Pokud pot<EFBFBD>ebujete zm<EFBFBD>nit OID, nebo chcete zkop<EFBFBD>rovat tabulku
s p<EFBFBD>vodn<EFBFBD>mi OID, lze pou<EFBFBD><EFBFBD>t:
CREATE TABLE new_table(old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable';
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/pgtable';
OID jsou ulo<EFBFBD>ena jako 4bajtov<EFBFBD> integer a p<EFBFBD>ete<EFBFBD>ou po <EFBFBD>ty<EFBFBD>ech
miliard<EFBFBD>ch. Nebylo hl<EFBFBD><EFBFBD>eno, <EFBFBD>e by se tak n<EFBFBD>kdy stalo, p<EFBFBD>esto ale
pl<EFBFBD>nujeme odstranit tento limit d<EFBFBD><EFBFBD>v ne<EFBFBD> se tak stane.
TID se pou<EFBFBD><EFBFBD>vaj<EFBFBD> i identifikaci fyzick<EFBFBD>ch <EFBFBD><EFBFBD>dk<EFBFBD> s hodnotou bloku a
offsetu. TIDs se m<EFBFBD>n<EFBFBD> modifikac<EFBFBD> <EFBFBD><EFBFBD>dk<EFBFBD> (pou<EFBFBD><EFBFBD>v<EFBFBD> se jako ukazatel
indexu fyzick<EFBFBD>ho <EFBFBD><EFBFBD>dku).
4.17) Jak<EFBFBD> je v<EFBFBD>znam n<EFBFBD>kter<EFBFBD>ch v<EFBFBD>raz<EFBFBD> pou<EFBFBD>it<EFBFBD>ch v PostgreSQL?
V n<EFBFBD>kter<EFBFBD>ch zdrojov<EFBFBD>ch k<EFBFBD>dech nebo star<EFBFBD><EFBFBD> dokumentaci se m<EFBFBD><EFBFBD>ete setkat
s n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>mi v<EFBFBD>razy, kter<EFBFBD> maj<EFBFBD> <EFBFBD>ir<EFBFBD><EFBFBD> v<EFBFBD>znam. Zde je p<EFBFBD><EFBFBD>klad
nekter<EFBFBD>ch:
* tabulka, relace, t<EFBFBD><EFBFBD>da (table, relation, class)
* <EFBFBD><EFBFBD>dek, z<EFBFBD>znam, ntice (row, record, tuple)
* sloupec, polo<EFBFBD>ka, atribut (column, field, attribute)
* vyhled<EFBFBD>n<EFBFBD>, v<EFBFBD>b<EFBFBD>r (retrieve, select)
* n<EFBFBD>hrada, <EFBFBD>prava (replace, update)
* p<EFBFBD>id<EFBFBD>n<EFBFBD>, vkl<EFBFBD>d<EFBFBD>n<EFBFBD> (append, insert)
* OID, serial value (OID, serial value)
* portal, kurzor (portal, cursor)
* range variable, jm<EFBFBD>no tabulky, alias tabulky (range variable,
table name, table alias)
seznam t<EFBFBD>chto v<EFBFBD>raz<EFBFBD> m<EFBFBD><EFBFBD>ete nal<EFBFBD>zt na
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
/glossary.html.
4.18) Pro<EFBFBD> jsem z<EFBFBD>skal chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> "ERROR: Memory exhausted in
AllocSetAlloc()"?
Pravd<EFBFBD>podobn<EFBFBD> do<EFBFBD>lo k vy<EFBFBD>erp<EFBFBD>n<EFBFBD> virtu<EFBFBD>ln<EFBFBD> pam<EFBFBD><EFBFBD>i na Va<EFBFBD>em syst<EFBFBD>mu,
nebo j<EFBFBD>dro m<EFBFBD> n<EFBFBD>zk<EFBFBD> limit pro ur<EFBFBD>it<EFBFBD> zdroje. Vyzkou<EFBFBD>ejte p<EFBFBD>ed startem
posmatera
ulimit -d 262144
limit datasize 256m
Z<EFBFBD>le<EFBFBD><EFBFBD> na Va<EFBFBD>em shellu, zda budou tyto p<EFBFBD><EFBFBD>kazy <EFBFBD>sp<EFBFBD><EFBFBD>n<EFBFBD>, m<EFBFBD>ly by zv<EFBFBD><EFBFBD>it
limit datov<EFBFBD>ho segmentu pro Va<EFBFBD>e procesy a umo<EFBFBD>nit tak dokon<EFBFBD>en<EFBFBD>
dotazu. Tyto p<EFBFBD><EFBFBD>kazy se aplikuj<EFBFBD> na aktu<EFBFBD>ln<EFBFBD> proces a v<EFBFBD>echny synovsk<EFBFBD>
procesy vytvo<EFBFBD>en<EFBFBD> po proveden<EFBFBD> p<EFBFBD><EFBFBD>kazu. Pokud m<EFBFBD>te probl<EFBFBD>my s SQL
klientem proto<EFBFBD>e backend vrac<EFBFBD> p<EFBFBD><EFBFBD>li<EFBFBD> mnoho dat, zkuste zv<EFBFBD><EFBFBD>it limity
p<EFBFBD>ed startem klienta.
4.19) Jak se dozv<EFBFBD>m, kterou verzi PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD>m?
V psql spus<EFBFBD>te SELECT version();
4.20) Pro<EFBFBD> operace s velk<EFBFBD>mi objekty kon<EFBFBD><EFBFBD> "invalid large obj descriptor"?
V<EFBFBD>echny operace s velk<EFBFBD>mi objekty - lo_open, lo_close, ... mus<EFBFBD>te
spou<EFBFBD>t<EFBFBD>t v transakci, tj. mezi p<EFBFBD><EFBFBD>kazy BEGIN WORK a COMMIT.
PostgreSQL uvol<EFBFBD>uje handle velk<EFBFBD>ch objekt<EFBFBD> p<EFBFBD>i skon<EFBFBD>en<EFBFBD> transakce.
Pokud budete pracovat s velk<EFBFBD>mi objekty mimo transakci, pravd<EFBFBD>podobn<EFBFBD>
dostanete toto chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD>, proto<EFBFBD>e handle ji<EFBFBD> budou neplatn<EFBFBD>.
Pokud pou<EFBFBD><EFBFBD>v<EFBFBD>te interface podobn<EFBFBD> ODBC mus<EFBFBD>te nastavit set auto_commit
off.
4.21) Jak vytvo<EFBFBD>it sloupec obsahuj<EFBFBD>c<EFBFBD> implicitn<EFBFBD> aktu<EFBFBD>ln<EFBFBD> datum?
Pou<EFBFBD>ijte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Pro<EFBFBD> jsou moje vno<EFBFBD>en<EFBFBD> dotazy pou<EFBFBD><EFBFBD>vaj<EFBFBD>c<EFBFBD> IN tak pomal<EFBFBD>?
D<EFBFBD><EFBFBD>v<EFBFBD>j<EFBFBD><EFBFBD> verze (p<EFBFBD>ed 7.4) spojovali vno<EFBFBD>en<EFBFBD> dotazy k vn<EFBFBD>j<EFBFBD><EFBFBD>m
sekven<EFBFBD>n<EFBFBD>m <EFBFBD>ten<EFBFBD>m v<EFBFBD>sledku poddotazu pro ka<EFBFBD>d<EFBFBD> <EFBFBD><EFBFBD>dek vn<EFBFBD>j<EFBFBD><EFBFBD>ho dotazu.
Pokud poddotaz vr<EFBFBD>til n<EFBFBD>kolik m<EFBFBD>lo <EFBFBD><EFBFBD>dk<EFBFBD> IN bylo rychl<EFBFBD>. Pro ostatn<EFBFBD>
p<EFBFBD><EFBFBD>pady je vhodn<EFBFBD> nahradit IN EXISTS:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
na:
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
Pro urychlen<EFBFBD> vytvo<EFBFBD>ete index pro subcol.
Ve verzi 7.4 a pozd<EFBFBD>j<EFBFBD><EFBFBD>ch, IN pou<EFBFBD><EFBFBD>v<EFBFBD> stejn<EFBFBD> sofistikovanou techniku
spojov<EFBFBD>n<EFBFBD> tabulek jako ostatn<EFBFBD> dotazy a je preferovan<EFBFBD> p<EFBFBD>ed EXISTS.
4.23) Jak prov<EFBFBD>st vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> (outer join)?
PostgreSQL podporuje vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> tabulek standardn<EFBFBD>mi SQL p<EFBFBD><EFBFBD>kazy.
Zde jsou dva p<EFBFBD><EFBFBD>klady:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
nebo
SELECT *
FROM t1 LEFT OUTER JOIN USING (col);
Tyto identick<EFBFBD> dotazy napoj<EFBFBD> t1.col na t2.col a je<EFBFBD>t<EFBFBD> p<EFBFBD>id<EFBFBD>
nep<EFBFBD>ipojen<EFBFBD> <EFBFBD><EFBFBD>dky z t1 (kter<EFBFBD> nemaj<EFBFBD> obdoby v t2). Prav<EFBFBD> spojen<EFBFBD>
(RIGHT JOIN) p<EFBFBD>id<EFBFBD> nep<EFBFBD>ipojen<EFBFBD> <EFBFBD><EFBFBD>dky z t2. FULL JOIN vr<EFBFBD>t<EFBFBD> v<EFBFBD>echny
<EFBFBD><EFBFBD>dky, v<EFBFBD>etn<EFBFBD> nep<EFBFBD>ipojen<EFBFBD>ch z tbulek t1 a t2. Kl<EFBFBD><EFBFBD>ov<EFBFBD> slovo OUTER je
nepovinn<EFBFBD> a v<EFBFBD><EFBFBD>e se na LEFT, RIGHT a FULL join. B<EFBFBD><EFBFBD>n<EFBFBD> spojen<EFBFBD> se
naz<EFBFBD>v<EFBFBD> INNER JOIN.
V d<EFBFBD><EFBFBD>v<EFBFBD>j<EFBFBD><EFBFBD>ch verz<EFBFBD>ch se vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> tabulek mohlo simulovat pomoc<EFBFBD>
UNION a NOT IN. Nap<EFBFBD><EFBFBD>klad pro spojen<EFBFBD> tabulek tab1 a tab2, je
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> dotaz ekvivalentn<EFBFBD> k vn<EFBFBD>j<EFBFBD><EFBFBD>mu spojen<EFBFBD> dvou tabulek:
SELECT tab1.col2, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
UNION ALL
SELECT tab1.col2, NULL
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1;
4.24) Jak prov<EFBFBD>st dotaz z v<EFBFBD>ce datab<EFBFBD>z<EFBFBD>?
PostgreSQL nepodporuje dotazy do jin<EFBFBD> ne<EFBFBD> aktu<EFBFBD>ln<EFBFBD> datab<EFBFBD>ze.
contrib/dblink nab<EFBFBD>z<EFBFBD> funkce umo<EFBFBD><EFBFBD>uj<EFBFBD>c<EFBFBD> proveden<EFBFBD> dotazu v jin<EFBFBD>
datab<EFBFBD>zi. Klient si m<EFBFBD><EFBFBD>e otev<EFBFBD><EFBFBD>t simult<EFBFBD>ln<EFBFBD> p<EFBFBD>ipojen<EFBFBD> do r<EFBFBD>zn<EFBFBD>ch db
bez omezen<EFBFBD>.
4.25) M<EFBFBD><EFBFBD>e funkce vr<EFBFBD>tit v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD>?
V PostgreSQL 7.3 m<EFBFBD><EFBFBD>ete jednodu<EFBFBD>e vracet v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD> z
funkce, viz:
http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Pro<EFBFBD> nelze spolehliv<EFBFBD> vytv<EFBFBD><EFBFBD>et a ru<EFBFBD>it do<EFBFBD>asn<EFBFBD> tabulky v PL/pgSQL
funkc<EFBFBD>ch?
P<EFBFBD>elo<EFBFBD>en<EFBFBD> k<EFBFBD>d PL/pgSQL funkce je ulo<EFBFBD>en ve vyrovn<EFBFBD>vac<EFBFBD> pam<EFBFBD>ti, tj.
funkce je p<EFBFBD>ekl<EFBFBD>d<EFBFBD>na pouze p<EFBFBD>i zm<EFBFBD>n<EFBFBD> k<EFBFBD>du, nikoliv p<EFBFBD>ed ka<EFBFBD>d<EFBFBD>m vol<EFBFBD>n<EFBFBD>m
funkce. Necht<EFBFBD>n<EFBFBD>m vedlej<EFBFBD><EFBFBD>m efektem je, <EFBFBD>e vol<EFBFBD>n<EFBFBD> funkce sel<EFBFBD>e, kdy<EFBFBD>
se funkce odkazuje na do<EFBFBD>asnou tabulku, pokud tato tabulka byla od
p<EFBFBD>ekladu funkce zru<EFBFBD>ena (a<EFBFBD>koliv ji<EFBFBD> byla znovu vytvo<EFBFBD>ena a existuje).
Jedin<EFBFBD>m <EFBFBD>e<EFBFBD>en<EFBFBD>m probl<EFBFBD>mu je p<EFBFBD><EFBFBD>stup k do<EFBFBD>asn<EFBFBD> tabulce pomoc<EFBFBD> EXECUTE,
tj. dynamick<EFBFBD> prov<EFBFBD>d<EFBFBD>n<EFBFBD> dotazu. Tento p<EFBFBD><EFBFBD>kaz zajist<EFBFBD> opakovan<EFBFBD> p<EFBFBD>eklad
dotazu p<EFBFBD>i ka<EFBFBD>d<EFBFBD>m vol<EFBFBD>n<EFBFBD> funkce.
4.27) Jak<EFBFBD> jsou mo<EFBFBD>nosti replikace datab<EFBFBD>z<EFBFBD>?
Existuje n<EFBFBD>kolik dostupn<EFBFBD>ch <EFBFBD>e<EFBFBD>en<EFBFBD> master/slave replikac<EFBFBD>, tj umo<EFBFBD><EFBFBD>uj<EFBFBD>
modifikace master datab<EFBFBD>ze a slave datab<EFBFBD>z<EFBFBD>m umo<EFBFBD><EFBFBD>uj<EFBFBD> pouze <EFBFBD>ten<EFBFBD>. Na
konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
jejich seznam. Na <EFBFBD>e<EFBFBD>en<EFBFBD> multi-master replikaci se pracuje na
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) Jak<EFBFBD> jsou mo<EFBFBD>nosti <EFBFBD>ifrov<EFBFBD>n<EFBFBD> datab<EFBFBD>z<EFBFBD>?
* contrib/pgcrypto obsahuje <EFBFBD>ifrovac<EFBFBD> funkce pou<EFBFBD>iteln<EFBFBD> v SQL
dotazech.
* K <EFBFBD>ifrov<EFBFBD>n<EFBFBD> p<EFBFBD>enosu dat z klienta na server, mus<EFBFBD> b<EFBFBD>t server
p<EFBFBD>elo<EFBFBD>en s podporou ssl a p<EFBFBD>ep<EFBFBD>na<EFBFBD> ssl v postgresql.conf mus<EFBFBD> b<EFBFBD>t
nastaven na hodnotu true. Klient mus<EFBFBD> m<EFBFBD>t vytvo<EFBFBD>en z<EFBFBD>znam hostssl
v pg_hba.conf a tak<EFBFBD> m<EFBFBD>t povolen re<EFBFBD>im ssl. Lze pou<EFBFBD><EFBFBD>t i jin<EFBFBD>
prost<EFBFBD>edky, nejen nativn<EFBFBD> podporu ssl v PostgreSQL, nap<EFBFBD>. stunel a
ssh.
* Hesla u<EFBFBD>ivatel<EFBFBD> datab<EFBFBD>ze jsou za<EFBFBD>ifrov<EFBFBD>na po<EFBFBD><EFBFBD>naje verz<EFBFBD> 7.3. Ve
star<EFBFBD><EFBFBD>ch verz<EFBFBD>ch toto chov<EFBFBD>n<EFBFBD> muselo b<EFBFBD>t vynuceno volbou
PASSWORD_ENCRYPTION v postgresql.conf
* Server m<EFBFBD><EFBFBD>e b<EFBFBD><EFBFBD>et na <EFBFBD>ifrovan<EFBFBD>m souborov<EFBFBD>m syst<EFBFBD>mu.
_________________________________________________________________
Roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> PostgreSQL
5.1) Napsal jsem UDF funkci, PostgreSQL v<EFBFBD>ak kon<EFBFBD><EFBFBD> dump core?
Probl<EFBFBD>m m<EFBFBD><EFBFBD>e b<EFBFBD>t zp<EFBFBD>soben mnoha okolnostmi. Vyzkou<EFBFBD>ejte si svoji
funkci nejd<EFBFBD><EFBFBD>ve v n<EFBFBD>jak<EFBFBD> jednoduch<EFBFBD> aplikaci.
5.2) Jak mohu p<EFBFBD>isp<EFBFBD>t n<EFBFBD>jak<EFBFBD>mi <EFBFBD>ikovn<EFBFBD>mi datov<EFBFBD>mi typy a funkcemi do
PostgreSQL?
Po<EFBFBD>lete sv<EFBFBD> roz<EFBFBD><EFBFBD><EFBFBD>en<EFBFBD> do konference pgsql-hackers, a ono pak mo<EFBFBD>n<EFBFBD>
skon<EFBFBD><EFBFBD> v podadres<EFBFBD><EFBFBD>i contrib.
5.3) Jak napsat funkci v C vracej<EFBFBD>c<EFBFBD> ntici?
Funkce vracej<EFBFBD>c<EFBFBD> tabulky jsou podporovan<EFBFBD> PostgreSQL 7.3 a vy<EFBFBD><EFBFBD><EFBFBD> pro
jazyky C, PL/PgSQL a SQL. V<EFBFBD>ce naleznete v The Programmer's Guide.
P<EFBFBD><EFBFBD>klady t<EFBFBD>chto funkc<EFBFBD> pro C naleznete v contrib/tablefunc.
5.4) Modifikoval jsem zdrojov<EFBFBD> soubory. Tato zm<EFBFBD>na nebyla p<EFBFBD>i rekompilaci
vzata v potaz. Pro<EFBFBD>?
Makefile nem<EFBFBD> informace o z<EFBFBD>vislostech mezi hlavi<EFBFBD>kov<EFBFBD>mi soubory.
Mus<EFBFBD>te prov<EFBFBD>st make clean a pak make. Pokud pou<EFBFBD><EFBFBD>v<EFBFBD>te gcc, m<EFBFBD><EFBFBD>ete
pou<EFBFBD><EFBFBD>t p<EFBFBD>ep<EFBFBD>na<EFBFBD> --enable-depend p<EFBFBD><EFBFBD>kazu configure k automatick<EFBFBD>mu
<EFBFBD>e<EFBFBD>en<EFBFBD> z<EFBFBD>vislost<EFBFBD> p<EFBFBD>eklada<EFBFBD>em.