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