Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

FAQ_polish.html

Blame
  • FAQ_polish.html 61.85 KiB
    <!DOCTYPE html PUBLIC "-//W3C//DTD html 4.01 transitional//EN">
    
    <HTML>
      <!-- DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//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">
        <TITLE>PostgreSQL FAQ</TITLE>
      </HEAD>
    
      <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
      alink="#0000ff">
    
    	<H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1>
    
        <P>Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002</P>
    
        <P>Obecny maintainer: Bruce Momjian (<A href=
        "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
        </P>
        <P>Tumaczenie: Marcin Mazurek (<A href=
        "mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR>
        </P>
    
    
        <P>Najbardziej aktualn wersj tego dokumentu mona znale pod
    	 adresem:
    	 <A href=
        "http://www.Postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P>
    
        <P>Odpowiedzi na pytania dotyczce konkretnych systemw operacyjnych
    	 mona znale pod adresem: 
    	 <A href=
        "http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html</A>.</P>
        <HR>
    
        <H2 align="center">Pytania oglne</H2>
        <A href="#1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia?<BR>
         <A href="#1.2">1.2</A>) Jak licencj chroniony jest PostgreSQL?<BR>
         <A href="#1.3">1.3</A>) Na jakich systemach Unixowych dziaa
    	  PostreSQL?<BR>
         <A href="#1.4">1.4</A>) Na jakich nie-Unixowych systemach dziaa
    	  PostgreSQL?<BR>
         <A href="#1.5">1.5</A>) Skd mog cign PostgreSQL?<BR>
         <A href="#1.6">1.6</A>) Gdzie mona szuka wsparcia technicznego?<BR>
         <A href="#1.7">1.7</A>) Jaka jest ostatnia dostpna wersja?<BR>
         <A href="#1.8">1.8</A>) Jaka dokumentacja jest dostpna?<BR>
         <A href="#1.9">1.9</A>) Gdzie mog znale informacj o znanych
    	  bdach czy brakujcych rozwizanich?<BR>
         <A href="#1.10">1.10</A>) Jak mog si nauczy <SMALL>SQL</SMALL>?<BR>
         <A href="#1.11">1.11</A>) Czy PostgreSQL ma rozwizany problem Y2K?<BR>
         <A href="#1.12">1.12</A>) Jak mog si przyczy do grupy osb
    	  bezporednio pracujcych nad rozwojem PostgreSQL?<BR>
         <A href="#1.13">1.13</A>) Jak mog zgasza bdy?<BR>
         <A href="#1.14">1.14</A>) Jak mona porwna PostgreSQL w stosunku
    	  do innych <SMALL>DBMS</SMALL>?<BR>
         <A href="#1.15">1.15</A>) W jaki sposb mog wesprze finansowo
        PostgreSQL?<BR>
        
    	 <H2 align="center">Pytania uytkownikw</H2>
        <A href="#2.1">2.1</A>) Czy s jakie driwery <SMALL>ODBC</SMALL> dla
        PostgreSQL?<BR>
         <A href="#2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do
    	  PostgreSQL przez www?<BR>
         <A href="#2.3">2.3</A>) Czy istnieje jakie GUI dla PostgreSQL?
        Narzdzie do raportowania? Interfejs dla "embedded query language"?<BR>
         <A href="#2.4">2.4</A>) Za pomoc jakich jzykw programowania mona
    	  si komunikowa z PostgreSQL?<BR>
         
    
        <H2 align="center">Pytania administratora</H2>
        <A href="#3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej 
    	 		lokalizacji ni <I>/usr/local/pgsql</I>?<BR>
         <A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
    	  otrzymuj komunikat:
        <I>Bad System Call</I> lub "core dumped". Dlaczego?<BR>
         <A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>, 
         otrzymuj komunikato bdzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
         <A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
         otrzymuj komunikat o bdzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR>
         <A href="#3.5">3.5</A>) W jaki sposb mog kontrolowa poczenia z
    	  innych hostw?<BR>
         <A href="#3.6">3.6</A>) Jak powinienem skonfigurowa system baz
    	  danych aby uzyska lepsz wydajno?<BR>
         <A href="#3.7">3.7</A>) Jakie s moliwoci wyszukiwania bdw?<BR>
         <A href="#3.8">3.8</A>) Skd si bierze komunikat: <I>"Sorry, too many
        clients"</I> podczas prby poczenia si z baz danych?<BR>
         <A href="#3.9">3.9</A>) Co to za pliki typu <I>pg_sorttempNNN.NN</I>
        , ktre znajduj si w katalogu z plikami bazy danych?<BR>
         
    
        <H2 align="center">Pytania dotyczce uytkowania</H2>
        <A href="#4.1">4.1</A>) Jaka jest rnica pomidzy kursorami
    	 binarnymi (binary cursors) i zwykymi kursorami (normal cursors)?<BR>
         <A href="#4.2">4.2</A>) Jak mog pobra za pomoc <SMALL>SELECT</SMALL>
    	  jedynie kilka pierwszych wynikw zapytania?<BR>
         <A href="#4.3">4.3</A>) Jak mog uzyska list wszystkich tabel czy
    	  innych rzeczy pod <I>psql</I>?<BR>
         <A href="#4.4">4.4</A>) Jak usun kolumn z tabeli?<BR>
         <A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu,
    	  tabeli i bazy danych?<BR>
         <A href="#4.6">4.6</A>) Jak duo miejsca w bazie danych jest
    	  potrzebne aby przechowa dane ze zwyczajnego pliku tekstowego?<BR>
         <A href="#4.7">4.7</A>) Jak mog sprawdzi jakie tabele, klucze,
    	  bazy danych i uytkownicy s utworzeni?<BR>
         <A href="#4.8">4.8</A>) Moje zapytania s wolne lub nie uywaj
    	  kluczy. Dlaczego?<BR>
         <A href="#4.9">4.9</A>) Jak mog sprawdzi w jakis sposb "query
    	  optimizer" wykonuje moje zapytanie?<BR>
         <A href="#4.10">4.10</A>) Co to jest "R-tree index"?<BR>
         <A href="#4.11">4.11</A>) Co to jest "Genetic Query Optimizer"?<BR>
         <A href="#4.12">4.12</A>) Jak mog uywa wyrae regularnych w
    	  zapytaniach i zapyta case-insensitive w wyraeniach regularnych?
    	  Jak korzysta z indeksw dla zapyta case-insensitive?<BR>
         <A href="#4.13">4.13</A>) Jak sprawdzi w zapytaniu czy pole ma
    	  warto <SMALL>NULL</SMALL>?<BR>
         <A href="#4.14">4.14</A>) Jaka jest rnica pomidzy rnymi typami
    	  tekstowymi (character types)?<BR>
         <A href="#4.15.1">4.15.1</A>) Jak mog utworzy pole typu int, ktre samo
    	  zwiksza swoj warto?<BR>
         <A href="#4.15.2">4.15.2</A>) Jak pobra warto pola typu 
        <SMALL>SERIAL</SMALL> po wykonaniu insert'u?<BR>
         <A href="#4.15.3">4.15.3</A>) Czy uycie <I>currval()</I> i
        <I>nextval()</I> nie doprowadzi do "race condition" z innymi
    	 uytkownikami?<BR>
         <A href="#4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s
    	  ponownie uywane przy przerwaniu transakcji?
        Skd si bior luki w numerowaniu kolumny tabeli sekwencjami/SERIALem?<BR>
         <A href="#4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to jest
        <SMALL>TID</SMALL>?<BR>
         <A href="#4.17">4.17</A>) Jakie jest znaczenie niektrych terminw w 
        PostgreSQL?<BR>
         <A href="#4.18">4.18</A>) Skd bierze si ten bd: <I>"ERROR: Memory
        exhausted in AllocSetAlloc()"</I>?<BR>
         <A href="#4.19">4.19</A>) Jak sprawdzi jakiej wersji PostgreSQL
        uywam?<BR>
         <A href="#4.20">4.20</A>) Dlaczego operacje, ktre wykonuj na
    	  duych obiektach "large-object" zwracaj komunikat:
        <I>"invalid large obj descriptor"</I>?<BR>
         <A href="#4.21">4.21</A>) Jak stworzy kolumn ktrej domyln
    	  wartoci bdzie biecy czas?<BR>
         <A href="#4.22">4.22</A>) Dlaczego zapytania uywajce
        <CODE><SMALL>IN</SMALL></CODE> s takie wolne?<BR>
         <A href="#4.23">4.23</A>) Jak wykona "outer join"?<BR>
         <A href="#4.24">4.24</A>) Jak wykonywa zapytanie uywajce kilku
    	  baz danych jednoczenie?<BR>
         <A href="#4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub
    	  kolumn?<BR>
         
    
        <H2 align="center">Rozwijanie PostgreSQL</H2>
        <A href="#5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej w
    	 <I>psql</I>, program zrzuca pami (dump core)?<BR>
         <A href="#5.2">5.2</A>) Jak mog doda/zgosi nowe typy czy funkcje
    	  do PostgreSQL?<BR>
         <A href="#5.3">5.3</A>) Jak napisa funkcj C zwracajc krotk
    	  (tuple)?<BR>
         <A href="#5.4">5.4</A>) Zmieniem plik rdowy. Dlaczego po
    	  rekompilacji nie wida zmiany?<BR>
         
        <HR>
    
        <H2 align="center">Pytania oglne</H2>
    
        <H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia?</H4>
    
        <P>PostgreSQL wymawia si <I>Post-Gres-kju-el</I>.</P>
    
        <P>PostgreSQL jest rozszerzeniem systemu zarzdzania bazami danych -
    	 POSTGRES, kolejn generacj rozwojowego prototypu <SMALL>DBMS</SMALL>.
        Mimo, e PostgreSQL zachowa bardzo dobrze zbudowany model danych
    	 (data model) i bogaty zestaw typw danych POSTGRES'a, zastpi
    	 PostQuel'owy jzyk zapyta z rozbudowanym podzbiorem jzyka 
    	 <SMALL>SQL</SMALL>. PostgreSQL jest oprogramowaniem darmowym 
    	 z dostpnymi caymi rdami.
    	 </P>
    
        <P>Rozwj PostgreSQL jest prowadzony przez grup ludzi z Internetu,
    	 komunikujcych si poprzez mailowe listy dyskusyjne PostgreSQL.
        Obecnym koordynatorem jest Marc G. Fournier (<A href=
        "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz
    	 poniej jak si przyczy). Ta grupa ludzi jest odpowiedzialna za
    	 cay rozwj PostgreSQL.</P>
    
        <P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
    	 Wiele innych osb pomogo przy portowaniu, testowaniu, debugowaniu, i
    	 rozwijaniu kodu. Oryginalny kod Postgresa, na ktrym zosta oparty
    	 PostgreSQL, by wysikiem studentw oraz pracownikw pracujcych pod
    	 kierownictwem profesora Michael'a Stonebraker'a z University of
    	 California w Berkeley.</P>
    
        <P>Oryginaln nazw oprogramowania w Berkeley by Postgres.  Po
    	 dodaniu obsugi <SMALL>SQL</SMALL> w 1995, nazwa zostaa zmieniona
        na Postgres95. Pod koniec roku 1996 nazwa zostaa zmieniona na
        PostgreSQL.</P>
    
        <H4><A name="1.2">1.2</A>) Jak licencj chroniony jest
        PostgreSQL?</H4>
    
        <P>PostgreSQL objty jest nastpujc licencj:</P>
    
        <P>PostgreSQL Data Base Management System</P>
    
        <P>Portions copyright (c) 1996-2002, PostgreSQL Global Development
        Group Portions Copyright (c) 1994-6 Regents of the University of
        California</P>
    
        <P>Permission to use, copy, modify, and distribute this software
        and its documentation for any purpose, without fee, and without a
        written agreement is hereby granted, provided that the above
        copyright notice and this paragraph and the following two
        paragraphs appear in all copies.</P>
    
        <P>IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
        PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
        DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
        SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
        CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</P>
    
        <P>THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
        WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
        SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE
        UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
        SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P>
    
        <P>Tekst powyej, jest klasyczn licencj BSD.
        Nie posiada ona adnych restrykcji co do uywania kodu rdowego.
    	 Podoba nam si i nie zamierzamy jej zmienia.
    
        <H4><A name="1.3">1.3</A>) Na jakich systemach Unixowych dziaa
    	      PostreSQL?</H4>
    
        <P>PostgreSQL powinien dziaa na wszystkich nowych Unix-podobnych
    	 systemach. Platformy, ktre zostay szczegowo przetestowane podczas
    	 publikowania PostgreSQL s wymienione w dokumentacji opisujcej
    	 instalacj.</P>
    
        <H4><A name="1.4">1.4</A>) Na jakich nie-Unixowych systemach dziaa
    	      PostgreSQL?</H4>
    
        <P><STRONG>Klient</STRONG></P>
    
        <P>Moliwa jest kompilacja bibliteki C <I>libpq</I> C, psql oraz
    	 innych interfejsw i uruchamianie ich na platformie MS Windows. W tym
    	 wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje si
    	 poprzez TCP/IP. Serwer moe dziaa na dowolnej wspieranej platformie 
    	 Unixowej. Plik <I>win31.mak</I> jest doczony
    	 do rde, aby mona byo stworzy bibliotek <I>libpq</I> oraz
    	 program <I>psql</I> dziaajce w rodowisku Win32. PostgreSQL moe si 
    	 take komunikowa z klientami <SMALL>ODBC</SMALL>.</P>
    
        <P><STRONG>Serwer</STRONG></P>
    
        <P>Serwer moe by uruchamiany na Windows NT i Win2k uywajc
    	 bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
    	 znajdujcym si w rdach lub pod adresem: <A href=
        "http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A>
        na naszych stronach. Nie planujemy tworzy portu przeznaczonego
    	 docelowo dla platformy Microsoft.</P>
    
        <H4><A name="1.5">1.5</A>) Skd mona cign PostgreSQL?</H4>
    
        <P>Gwny serwer ftp z dostpem "anonymous" dla PostgreSQL znajduje
    	 si <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
    	 jeli szukasz mirrorw sprawd nasz gwn stron www.<P>
    
        <H4><A name="1.6">1.6</A>) Gdzie mona szuka wsparcia technicznego?</H4>
    
        <P>Adres gwnej listy mailowej: <A href=
        "mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>.
        Jest ona przeznaczona dyskusjom dotyczcym spraw zwizanych z PostgreSQL.
        eby zapisac si na list, wylij email z nastpujcymi liniami w
    	 treci maila (nie w temacie):</P>
    <PRE>
        subscribe
        end
    </PRE>
    
        <P>na adres: <A href=
        "mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A>.</P>
    
        <P>Dostpna jest take lista wysyajca digesty. Aby zapisa si na
    	 ni, wylij email na adres:
        <A href=
        "mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A>
        z treci maila zawierajc:</P>
    <PRE>
        subscribe
        end
    </PRE>
    	Digesty s wysyane do czonkw listy, kiedy na gwn list dotrze ok
    	30k wiadomoci.
    
        <P>Dostpna jest take lista powicona bdom znalezionym w
    	 PostgreSQL. Aby zapisa si na ni wylij email na adres:
        <A href=
        "mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
        z treci maila zawierajc:</P>
    <PRE>
        subscribe
        end
    </PRE>
        Lista powicona dyskusjom developerw jest dostpna pod adresem:
        <A href=
        "mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>
    	 Aby si na ni zapisa wylij na jej adres mail z treci:
    <PRE>
        subscribe
        end
    </PRE>
    
        <P>Dodatkowe informacje o listach mailowych dotyczcych PostgreSQL
    	 mona znale na stronach WWW PostgreSQL pod adresem:</P>
    
        <BLOCKQUOTE>
          <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
        </BLOCKQUOTE>
    
        <P>W sieci EFNet istnieje kana IRC <I>#PostgreSQL</I>. Ja, do
    	 poczenia si z kanaem uywam Unixowego polecenia <CODE>irc -c
        '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
    
        <P>Lista firm oferujcych wsparcie na zasadach komercyjnych znajduje
    	 si pod adresem: <A href=
        "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P>
    
        <H4><A name="1.7">1.7</A>) Jaka jest ostatnia dostpna wersja?</H4>
    
        <P>Ostatnia dostpna wersja PostgreSQL to 7.2.1.</P>
    
        <P>Planujemy publikowanie kolejnych wersji co cztery miesice.</P>
    
        <H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dostpna?</H4>
    
        <P>Kilka manuali, stron podcznika man, oraz kilka przykadw do
    	 testowania s zaczone w samej dystrybucji. Znajduj si one w
    	 katalogu <I>/doc</I>. Manual moe by take przegldany poprzez
    	 strony www pod adresem <A href=
        "http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</A>.</P>
    
        <P>Istniej take dwie ksiki dostpne online pod adresami
    	 <A href=
        "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
        i <A href=
        "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
        Lista ksiek o PostgreSQL, ktre mona kupi znajduje si pod adresem
    	 <A href=
        "http://www.postgresql.org/books/">http://www.postgresql.org/books/</A>.
        Zbir technicznych artykuw o PostgreSQL znajduje si pod adresem <A
        href=
        "http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
    
        <P><I>psql</I> posiada kilka wbudowanych polece \d, za pomoca ktrych
    	 mona sprawdzi informacje dotyczce typw, operatorw, funkcji,
    	 aggregatw itd.</P>
    
        <P>Na naszej stronie mona znale duo wicej dokumentacji.</P>
    
        <H4><A name="1.9">1.9</A>) Gdzie mona znale informacj o znanych
    	      bdach czy brakujcych rozwizanich?</H4>
    
        <P>PostgreSQL wspiera rozszerzony podzbir standardu <SMALL>SQL</SMALL>-92.
        Sprawd nasz list <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
        aby znale informacj o znanych problemach, brakujcych
    	 rozwizaniach czy przyszych planach.</P>
    
        <H4><A name="1.10">1.10</A>) Jak mog si nauczy
        <SMALL>SQL</SMALL>?</H4>
    
        <P>Ksika o PostgreSQL <A href=
        "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
        uczy <SMALL>SQL</SMALL>. Jest jeszcze inna ksizka o PostgreSQL
    	 dostpna pod adresem: <A href=
        "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook.</A>
        Dobry tutorial moesz znale pod adresem: <A href=
        "http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
        oraz <A href=
        "http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
        http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,</A>
        i <A href=
        "http://sqlcourse.com/">http://sqlcourse.com.</A></P>
    
        <P>Jeszcze inny to "Teach Yourself SQL in 21 Days, Second Edition"
        pod adresem: <A href=
        "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A></P>
    
        <P>Wielu z naszych uytkownikw poleca <I>The Practical SQL Handbook</I>,
        Bowman, Judith S., et al., Addison-Wesley. Inni polecaj <I>The
        Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
    
        <H4><A name="1.11">1.11</A>) Czy PostgreSQL ma rozwizany problem Y2K?</H4>
    
        <P>Tak, bez problemu radzimy sobie z datami po roku 2000 AD, oraz
    	 przed rokiem 2000 BC.</P>
    
        <H4><A name="1.12">1.12</A>) Jak mog si przyczy do grupy osb
    	      bezporednio pracujcych nad rozwojem PostgreSQL?</H4>
    
        <P>Przede wszystkim cignij ostatnie dostpne rda i przeczytaj
    	 dokumentacj przeznaczon dla developerw na naszej stronie www lub
    	 dostpn take w rdach PostgreSQL. Nastpnie zapisz si na listy
    	 mailowe <I>pgsql-hackers</I> i
        <I>pgsql-patches</I>. I na koniec, wysyaj nam wysokiej jakoci
    	 patch'e na list pgsql-patches.</P>
    
        <P>Jest okoo 12 osb, ktre maj uprawnienia do commit'owania w
        <SMALL>CVS</SMALL> PostgreSQL'a. Kady z nich submitowa tak wiele
    	 wysokiej jakoci patchy, e stao si niemoliwe dla obecnych
    	 commiterw by z nimi na bieco, majc pewno e s to poprawki
    	 wysokiej jakoci.</P>
    
        <H4><A name="1.13">1.13</A>) Jak mog zgasza bdy?</H4>
    
        <P>Zajrzyj na stron <A href=
        "http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A>, na
    	 ktrej opisane s wskazwki jak zgasza informacje o bdach.</P>
    
        <P>Zajrzyj take na nasz ftp <A href=
        "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>, aby
    	 sprawdzi czy nie ma nowszych wersji PostgreSQL czy patchy.</P>
    
        <H4><A name="1.14">1.14</A>) Jak mona porwna PostgreSQL w stosunku
    	      do innych <SMALL>DBMS</SMALL>?</H4>
    
        <P>Jest kilka sposobw oceny softwaru: moliwoci,
        wydajno, stabilno, wsparcie i cena.</P>
    
        <DL>
          <DT><B>Moliwoci</B></DT>
    
          <DD>PostgreSQL posiada moliwoci dostpne w duych, komercyjnych
    		systemach <SMALL>DBMS</SMALL>, takie jak transakcje, podzapytania
    		(subselects), triggery, widoki, klucze obce, referential integrity,
    		oraz wyrafinowany system blokowania. Mamy take waciowci ktrych
    		inni nie posiadaj, jak typy definiowane przez uytkownika,
    		dziedziczenie, rules, multi-version concurrency control, ktra
    		redukuje problemy z blokowaiem (lock contention).<BR>
          <BR>
          </DD>
    
          <DT><B>Wydajno</B></DT>
    
          <DD>PostgreSQL dziaa w dwch trybach. Standardowy tryb <I>fsync</I>
          zrzuca kad zakoczon transakcj na dysk, gwarantujc w ten
    		sposb to, e jeli system operacyjny si zawiesi lub straci
    		zasilanie wcigu kilku nastepnych sekund, wszystkie Twoje dane
    		zostan bezpiecznie zapisane na dysku. W tym trybie, jestemy
    		wolniejsi ni wikszo komercyjnych baz danych, czciowo dlatego
    		e niewiele z nich wykonuje taki sposb zapisywania danych jako
    		domylne ustawienie.
          W trybie <I>no-fsync</I> z reguy jestemy szybsi ni komercyjne
    		bazy danych, chocia w tym wypadku zawieszenie si systemu moe
    		spowodowa uszkodzenie danych. Pracujemy nad tym, aby stworzy
    		poredni tryb, ktry powoduje mniejsz redukcj wydajnoci ni tryb
    		fsync i pozwoli na integralno danych w przecigu 30 sekund do
    		zaamania si systemu operacyjnego.<BR>
          <BR>
           Porwnujc do MySQL czy innych prostych baz danych, jestemy
    		 wolniejsi przy wykonywaniu insertw/updatw przez narzut
    		 spowodowany przez transakcje. Oczywicie MySQL nie posiada adnej z
    		 wymienionych wyej <I>moliwoci</I>. PostgreSQL zosta zbudowany
    		 aby by DBMS elastycznym i bogatym z rnorakie moliwoci,
    		 aczkolwiek dbamy, aby poprawia jego wydajno poprzez analiz
    		 kodu rdowego i profilowanie. Ciekawe porwnanie PostgreSQL i MySQL
    		 mona znale pod adresem <A href=
          "http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A><BR>
    
          <BR>
    		 Kade poczenie klienta jest obsugiwane przez nas poprzez
    		 stworzenie nowego procesu Unixowego. Procesy backendu dziel
    		 bufory danych oraz informacj o blokadach. Uywajc wielu
    		 procesorw, rne backendy mog bez problemu dziaa na rnych
    		 procesorach.<BR>
          <BR>
          </DD>
    
          <DT><B>Stabilno</B></DT>
    
          <DD>Zdajemy sobie spraw, e <SMALL>DBMS</SMALL> musi by stabilny,
    		w przeciwnym wypadku jest bez wartoci. Staramy si publikowa kod
    		stabilny, dobrze przetestowany, z minimum moliwych bdw. Kade
    		wydanie poprzedza conajmniej miesic testw wersji beta. Patrzc na
    		histori wyda PostgreSQL wida, e dostarczamy stabilne, dobrze
    		sprawdzone wersje, ktre s gotowe do uycia w rodowisku
    		produkcyjnym. Mylimy, e proces publikowania kolejnych wersji
    		opracowany przez nas jest jednym z lepszych wrd innych twrcw
    		oprogramowania bazodanowego.<BR>
          <BR>
          </DD>
    
          <DT><B>Wsparcie</B></DT>
    
          <DD>Dziki naszym listom mailowym masz dostp do duej liczby
    		programistw i uytkownikw, ktrzy pomagaj rozwiza kady
    		napotkany problem. Chocia nie moemy gwarantowa znalezienia
    		rozwizania danego problemu, nie rnimy si w tym od innych
    		komercyjnych systemw <SMALL>DBMS</SMALL>. Bezporedni kontakt z
    		programistami, uytkownikami, dokumentacj i kodem rdowym
    		sprawiaj, e wsparcie oferowane PostgreSQL niejednokrotnie jest
    		lepsze ni w innych systemach <SMALL>DBMS</SMALL>. Istnieje take
    		moliwo skorzystania z komercyjnego wsparcia dla tych, ktrych
    		takiego rozwizania potrzebuj.
          (Sprawd <A href="#1.6">ten punkt FAQ</A>.)<BR>
          <BR>
          </DD>
    
          <DT><B>Cena</B></DT>
    
          <DD>Korzystanie z PostgreSQL jest darmowe, zarwno w przypadku
    		komercyjnym jak i niekomercyjnym. Moesz korzysta z naszego kodu
    		rdowego w Twoim produkcie bez adnych ogranicze, poza tymi
    		wymienionymi w licencji BSD przytoczonej powyej.<BR>
          <BR>
          </DD>
        </DL>
    
        <H4><A name="1.15">1.15</A>) W jaki sposb mog wesprze finansowo
    	     PostgreSQL?</H4>
    
        <P>PostgreSQL korzysta z najlepszej infrastruktury od samego pocztku
    	 istnienia projektu, tzn. szeciu lat. Wszystko to zawdziczamy Marc'owi
    	 Fournier'owi, ktry stworzy t infrastruktur i zarzdza ni od
    	 lat.</P>
    
        <P>Wysokiej jakoci infrastruktura jest bardzo wana dla kadego
    	 projektu open-source. Zapobiega przerwom w rozwoju projektu i
    	 jakimkolwiek przestojom.</P>
    
        <P>Oczywicie korzystanie z wysokiej jakoci infrastruktury nie jest
    	 tanie. Istnieje wiele rznych miesicznych, czy jednorazowych
    	 wydatkw, ktre trzeba ponosi aby wszystko dziaao jak naley.
    	 Jeli Ty, bd Twoja firma moe wspomc finansowo rozwj PostgreSQL
    	 odwied adres: <A href=
        "http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A>
     	 gdzie opisane jest jak to zrobi.</P>
    
        <P>Chocia na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
    	 s przeznaczone jedynie na rozwj projektu PostgreSQL i nie s
    	 przeznaczane na finansowanie jakiejkolwiek firmy. Jeli wolisz, 
    	 moesz wysa czek na adres kontaktowy.</P>
        <HR>
    
        <H2 align="center">User Client Questions</H2>
    
        <H4><A name="2.1">2.1</A>) Czy s jakie driwery <SMALL>ODBC</SMALL> dla
    	     PostgreSQL?</H4>
    
        <P>Dostpne s dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC
        i OpenLink <SMALL>ODBC</SMALL>.</P>
    
        <P>PsqlODBC jest doczony do rde. Wicej informacji na jego temat
    	 moesz znale pod adresem: <A href=
        "ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A>.</P>
    
        <P>OpenLink <SMALL>ODBC</SMALL> moe by pobrany z adresu: <A href=
        "http://www.openlinksw.com/">http://www.openlinksw.com</A>.
    	 Wsppracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL>
    	 wic w ten sposb moesz korzysta z PostgreSQL <SMALL>ODBC</SMALL>
    	 dostpnego na kadej plaformie ktr wspiera (Win, Mac, Unix, VMS).</P>
    
        <P>Autorzy bd prawdopodobnie sprzedawa ten produkt osobom ktre
    	 wymagaj komercyjnego wsparcia, ale wersja darmowa bdzie zawsze
    	 dostpna. Wszystkie pytania moesz wysya na adres: <A href=
        "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
    
        <P>Sprawd take rozdzia o  <A href=
        "http://www.postgresql.org/devel-corner/docs/programmer/odbc.html">ODBC
        w "Programmer's Guide"</A>.</P>
    
        <H4><A name="2.2">2.2</A>) Jakie istniej narzdzia pozwalajce na dostp do
    	      PostgreSQL przez www?</H4>
    
        <P>Dobry podrcznik dla pocztkujcych o dostpie do bazy danych
    	 przez www moesz znale pod adresem:
        <A href="http://www.webreview.com">http://www.webreview.com</A></P>
    
        <P>Inny znajduje si pod adresem: <A href=
        "http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
    
        <P>Do integracji z www, wietnym rozwizaniem jest PHP. Moesz
    	 znale wicej informacji na ten temat pod adresem
        <A href="http://www.php.net">http://www.php.net</A>.</P>
    
        <P>Wiele osb w przypadku skomplikowanych rozwiza uzywa Perl'a i
    	 moduu CGI.pl.</P>
    
        <H4><A name="2.3">2.3</A>)  Czy istnieje jakie GUI dla PostgreSQL?
    	     Narzdzie do raportowania? Interfejs dla "embedded query
    		  language"?</H4>
    
        <P>Mamy cakiem miy interfejs graficzny, ktry zosta nazwany
    	 <I>pgaccess</I> i jest on dostarczany jako cz rde.
    	 <I>pgaccess</I> posiada take generator raportw. Mona go znale
    	 pod adresem <A href=
        "http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P>
    
        <P>Udostpnilimy take <I>ecpg</I>, ktry jest "embedded SQL query
        language interface" dla jzyka C.</P>
    
        <H4><A name="2.4">2.4</A>) Za pomoc jakich jzykw programowania
    	 mona si komunikowa z PostgreSQL?</H4>
    	 
        <P>Mamy wsparcie dla:</P>
    
        <UL>
          <LI>C (libpq)</LI>
    
          <LI>C++ (libpq++)</LI>
    
          <LI>Embedded C (ecpg)</LI>
    
          <LI>Java (jdbc)</LI>
    
          <LI>Perl (perl5)</LI>
    
          <LI>ODBC (odbc)</LI>
    
          <LI>Python (PyGreSQL)</LI>
    
          <LI>TCL (libpgtcl)</LI>
    
          <LI>C Easy API (libpgeasy)</LI>
    
          <LI>Embedded <SMALL>HTML</SMALL> (<A href=
          "http://www.php.net">PHP z http://www.php.net</A>)</LI>
        </UL>
        <HR>
    
        <H2 align="center">Pytania administratora</H2>
    
        <H4><A name="3.1">3.1</A>) Jak mog zainstalowa PostgreSQL w innej
    	          lokalizacji ni <I>/usr/local/pgsql</I>?</H4>
    
        <P>Uyj opcji <I>--prefix</I> podczas uruchamiania skryptu
        <I>configure</I>.</P>
    
        <H4><A name="3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
    	      otrzymuj komunikat o bdzie: <I>Bad System Call</I> lub "core dumped".
    			Dlaczego?</H4>
    
    
        <P>Ten bd moe by wynikiem wielu problemw, ale na pocztek
    	 sprawd czy masz zainstalowane rozszerzenia systemu V w jdrze
    	 systemu. PostgreSQL wymaga do pracy zainstalowanej obsugi pamici
    	 dzielonej i semaforw.</P>
    
        <H4><A name="3.3">3.3</A>) Podczas startu <I>postmaster'a</I>,
    	      otrzymuj komunikat o bdzie: <I>IpcMemoryCreate</I>.
    			Dlaczego?</H4>
    
        <P>Albo nie masz poprawnie skonfigurowanej obsugi pamici dzielonej
    	 w jdrze systemu, albo musisz zwikszy jej dostpny rozmiar.
        Dokadna ilo jak potrzebujesz jest zalena od architektury systemu
    	 na jakim pracujesz, jak duo buforw oraz jak duo procesw backendu
    	 skonfigurowae dla <I>postmaster'a</I>. Dla wikszoci systemw, z
    	 domyln liczb buforw i procesw potrzebujesz minimum w
    	 przyblieniu 1MB. Zobacz  <A href=
        "http://www.postgresql.org/idocs/index.php?kernel-resources.html">PostgreSQL
        Administrator's Guide</A> gdzie szczegowo zostao opisane
    	 wykorzystanie pamici dzielonej i semaforw.</P>
    
        <H4><A name="3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
    	      otrzymuj komunikat o bdzie: <I>IpcSemaphoreCreate</I>.
    			Dlaczego?</H4>
    			
        <P>Jeli tre bdu brzmi: <I>IpcSemaphoreCreate: semget failed
    	 (No space left on device)</I> oznacza to, e jdro systemu nie jest
    	 skonfigurowane do obsugi wystarczajcej liczby semaforw.
    	 Postgres wymaga jednego semafor'a na potencjalny jeden proces backend.
    	 Tymczasowym rozwizaniem jest uruchomienie programu <I>postmaster</I>
    	 z mniejsz  maksymaln liczb procesw backend.
    	 Uyj opcji <I>-N</i> z parameterem mniejszym od domylnego - 32.   
    	 Bardziej trwaym rozwizaniem jest zwikszenie parametrw
    	 <SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> jdra twojego systemu.</P>
    
    	 <P>Niedziaajce semafory mog spowodowa niepoprawne zamknicie
    	 systemu w czasie intensywnego  korzystania  z bazy.</P>
    	 <P>Jeli tre bdu jest inna, moe to oznacza, e obsuga semaforw 
    	 nie zostaa wczona do jdra wcale. Zobacz PostgreSQL 
    	 Administrator's Guide po bardziej szczegowe informacje o pamici 
    	 dzielonej i semaforach.</P>
    
        <H4><A name="3.5">3.5</A>) W jaki sposb mog kontrolowa poczenia
    	 z innych hostw?</H4>
    
        <P>Domylnie PostgreSQL pozwala jedynie na poczenia za pomoc
    	 socketw Unixowych z lokalnego hosta. Inne hosty nie bd  mogy si
    	 poczy z serwerem dopki nie zostanie dodana opcja <I>-i</I> do
    	 <I>postmaster'a</I>,
        <B>oraz</B> nie umoliwi si autoryzacji na podstawie adresu hostw
    	 modyfikujc odpowiednio plik
        <I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol na
    	 poczenia TCP/IP.</P>
    
        <H4><A name="3.6">3.6</A>) Jak powinienem skonfigurowa system baz
    	      danych aby uzyska lepsz wydajno?</H4>
    
        <P>Indeksy bez wtpienia mog przyspieszy wykonywanie zapyta.
        Polecenie <SMALL>EXPLAIN</SMALL> pozwala zobaczy jak PostgreSQL
    	 interpretuje Twoje zapytanie i ktre indeksy s uywane.</P>
    
        <P>Jeli wykonujesz bardzo duo <SMALL>INSERTw</SMALL>, moe warto
    	 je wykona za pomoc jednego duego pliku uywajc polecenia
    	<SMALL>COPY</SMALL>. Jest to duo szybsze ni pojedyncze
        <SMALL>INSERTy.</SMALL> Po drugie polecenia SQL nie zawarte w bloku
    	 okrelajcym transakcj - <SMALL>BEGIN WORK/COMMIT</SMALL>, s
    	 traktowane jako pojedyncza transakcja. Rozwa wykonanie kilku
    	 polece/zda SQL w jednym bloku transakcji. To redukuje narzut
    	 powodowany przez transakcj. Przy duych zmianach w danych, warto
    	 usun i stworzy na nowo indeksy.</P>
    
        <P>Jest kilka opcji pozwalajcych na poprawienie wydajnoci.
    	 Moesz wyczy <I>fsync()</I> poprzez uruchomienie <I>postmaster'a</I>
    	 z opcjami <I>-o -F</I>. To spowoduje, e
        <I>fsync()</I> nie bdzie zrzuca danych na dysk po kadej
    	 transakcji.</P>
    
        <P>Moesz take uruchomi <I>postmaster'a</I> z opcj <I>-B</I>
    	 aby zwikszy wielko pamici dzielonej uywanej przez procesy
    	 backendw. Jeli ustawisz t warto zbyt wysoko i przekroczysz limity
    	 ustawione przez kernel na pami dzielon, <I>postmaster</I>  moe si
    	 nie uruchomi. Kady bufor zajmuje 8K a domylna ilo buforw to 64.</P>
    
        <P>Moesz take uy opcji <I>-S</I> dla backendu aby zwikszy
    	 maksymaln warto pamici uywan przez proces backendu podczas
    	 sortowania. Opcja <I>-S</I> jest ustawiana wartoci podawan w
    	 kilobajtach, domylna warto to 512K.</P>
    
        <P>Moesz take uy polecenia <SMALL>CLUSTER</SMALL> aby pogrupowa
    	 dane w tabelach wg indeksu. Zobacz opis polecenia <SMALL>CLUSTER</SMALL>
        w manualu eby dowiedzie si wicej.</P>
    
        <H4><A name="3.7">3.7</A>) Jakie s moliwoci wyszukiwania
    	 bdw?</H4>
    
        <P>PostgreSQL ma kilka moliwoci na raportowanie informacji o
    	 jego statusie, ktre mog by przydatne przy debugowaniu procesu.</P>
    
        <P>Przede wszystkim uruchom skrypt <I>configure</I> z opcj
    	 --enable-cassert, wiele funkcji <I>assert()</I> monitoruj postp
    	 procesu backend i zatrzymuj program kiedy wydarzy si co
    	 nieoczekiwanego.</P>
    
        <P>Zarwno <I>postmaster</I> jak i <I>postgres</I> maj kilka opcji
    	 do debugowania. Za kadym razem kiedy uruchamiasz <I>postmaster'a</I>,
        upewnij si, e wysyasz standardowe wyjcie i error do pliku z
    	 logami, np. w ten sposb:</P>
    <PRE>
        cd /usr/local/pgsql
        ./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;
    </PRE>
    
        <P>To utworzy plik server.log w gwnym katalogu PostgreSQL.
    	 Ten plik zawiera poyteczne informacje o problemach i bdach, ktre
    	 wydarzyy si podczas pracy serwera. <I>Postmaster</I> posiada opcj
    	 <I>-d</I>, ktra pozwala na raportowanie bardzo szczeglowych
    	 informacji. Do opcji <I>-d</I> podajemy liczb, ktra okrela
    	 szczegowo wysyanych informacji. Musisz mie wiadomo, e
    	 wysoki poziom logowania bdzie powodowa tworzenie bardzo duzych
    	 plikw z logami.</P>
    
        <P>Jeli <I>postmaster</I> nie zosta uruchomiony, moesz uruchomi
        <I>postgres'owy</I> backend z linii polece, i uruchomi Twoje
    	 polecenie <SMALL>SQL</SMALL> bezporednio na nim.
    	 Taki sposb jest polecany <B>jedynie</B> w przypadku debugowania.
    	 Zwr uwag, e w tym wypadku zapytanie koczy znak nowej linii a nie
    	 rednik. Jeli skompilowae z opcjami debugowania mozesz uy
    	 debuggera aby sprawdzi co si dzieje. Poniew backend nie zosta
    	 uruchomiony przez <I>postmaster'a</I>, nie dziaa w identycznym
    	 rodowisku, co oznacza e powtrzenie warunkw w jakich wystpiy
    	 problemy moze by problemem.</P>
    
        <P>Jeli <I>postmaster</I> dziaa, uruchom <I>psql</I> w jednym z
    	 okien, nastpnie znajd <SMALL>PID</SMALL> procesu <I>postgres</I>
        uywanego przez <I>psql</I>. Uyj debuggera aby do
    	 <SMALL>PID'u</SMALL> <I>postgres'a</I>. Moesz ustawia puapki
    	 (breakpoints) w debuggerze i wykonywa zapytania z <I>psql</I>. 
    	 Jeli debugujesz uruchamianie <I>postgres'a</I>, moesz ustawi zmienn
    	 PGOPTIONS="-W n", nastpnie uruchomi <I>psql</I>. 
    	 Opcja ta pozwoli spowolni uruchomienie na	 
    	 <I>n</I> sekund aby mg si poczy z procesem za pomoc
    	 debugera, ustawi jakiekolwiek puapki i kontynuowa proces
    	 uruchamiania.</P>
    
        <P><I>postgres</I> moe by uruchamiany z opcjami <I>-s, -A</I> i
    	 <I>-t</I>, ktre mog by bardzo przydatne przy debuggowaniu i ocenie
    	 wydajnoci.</P>
    
        <P>Moesz take skompilowa z profilingiem aby zobaczy jakie funkcje
    	 ile czasu wykonuj si. Pliki profilowane dla backendu zostan
    	 umieszczone w katalogu
        <I>pgsql/data/base/dbname</I>. Pliki profilu klienta zostan
    	 umieszczone w biecym katalogu klienta. Linux wymaga aby kompilowa
    	 z opcj <I>-DLINUX_PROFILE</I> aby profilowanie odbywao si
    	 poprawnie.</P>
    
        <H4><A name="3.8">3.8</A>) Skd si bierze komunikat: <I>"Sorry, too
    	 many clients"</I> podczas prby poczenia si z baz danych?</H4>
    
        <P>Musisz zwikszy limit iloci jednoczesnych procesw bacekendu
    	 dla procesu <I>postmaster'a</I>.</P>
    
        <P>Domylny limit to 32 procesy. Moesz go zwikszy przez restart
        <I>postmaster</I> z odpowiedni wartoci ustawian opcj <I>-N</I> w
    	 pliku <I>postgresql.conf</I>.</P>
    
        <P>We pod uwag, e jeli zwikszysz warto podan w opcji
    	 <I>-N</I> na wicej ni 32 musisz take zwikszy warto w opcji
        <I>-B</I> ponad jej domyln warto 64; warto <I>-B</I> musi by
    	 co najmniej dwa razy wiksza od wartoci podanej w opcji 
        <I>-N</I>, a prawdopodobnie powinna by w rzeczywistoci jeszcze
    	 wiksza dla optymalnej wydajnoci.
        Dla duej liczby procesw backendu na pewno zauwaysz, e trzeba
    	 zwikszy rne parametry jdra Unixa. Rzeczy, ktre powniene
    	 sprawdzi to maksymalna liczba blokw pamici dzielonej, 
    	 <SMALL>SHMMAX;</SMALL> maksymalna liczba semaforw, <SMALL>SEMMNS</SMALL>
    	 oraz <SMALL>SEMMNI;</SMALL> 
        maksymalna liczba procesw, <SMALL>NPROC;</SMALL> maksymalna liczba
    	 procesw na jednego uytkownika, <SMALL>MAXUPRC;</SMALL> i maksymalna
    	 liczba otwartych plikw, <SMALL>NFILE</SMALL> oraz
        <SMALL>NINODE.</SMALL> Powd dla ktrego PostgreSQL ma limit na
    	 maksymaln liczb procesw backendu to obawa o wyczerpanie zasobw
    	 systemu.</P>
    
        <P>W wersjach PostgreSQL wczeniejszych ni 6.5, maksymalna liczba
    	 backendw bya ustawiona na 64, a zmiana tej wartoci wymaga
    	 rekompliacji po zmianie staej MaxBackendId w pliku
        <I>include/storage/sinvaladt.h</I>.</P>
    
        <H4><A name="3.9">3.9</A>)  Co to s za pliki typu: 
    	 <I>pg_sorttempNNN.NN</I>, 
    	 ktre znajduj si w katalogu z plikami bazy danych?</H4>
    
        <P>S to tymczasowe pliki utworzone przez executor. Dla przykadu,
    	 jeli jaka operacja sortowania jest wymagana do wykonania
        <SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga wicej  miejsca ni
    	 paratmetr backendu
        <I>-S</I> ustawi do wykorzystania, wtedy tymczasowe pliki s uywane
    	 do przechowywania tych danych.</P>
    
        <P>Pliki tymczasowe powinny by usunite automatycznie, ale mogo si
    	 to nie sta jeli proces backendu w midzyczasie nie zakoczy si
    	 poprawnie podczas operacji sortowania. Jeli w danym momencie nie
    	 dziaaj adne procesy backendw mozesz spokojnie usun pliki
        pg_tempNNN.NN.</P>
        <HR>
    
        <H2 align="center">Pytania dotyczce uywania</H2>
    
        <H4><A name="4.1">4.1</A>) Jaka jest rnica pomidzy kursorami
    	     binarnymi (binary cursors) i zwykymi kursorami (normal
    		  cursors)?</H4>
    
        <P>Zobacz w manualu opis polecenia <SMALL>DECLARE</SMALL>.</P>
    
        <H4><A name="4.2">4.2</A>) Jak mog pobra za pomoc
    	 <SMALL>SELECT</SMALL> jedynie kilka pierwszych wynikw
    	 zapytania?</H4>
    	 
        <P>Zobacz w manualu opis polecenia <SMALL>FETCH</SMALL> lub uyj
        polecenia <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
    
        <P>Nawet jeli chesz pobra kilka pierwszych rzdw z wyniku
    	 zapytania, cae zapytanie musi zosta wykonane. Byc moe powiniene
    	 skorzysta z polecenia <SMALL>ORDER BY.</SMALL>
    	 Jeli istnieje indeks ktry odpowiada polom okrelonym przez
    	 <SMALL>ORDER BY</SMALL>, PostgreSQL moe wykorzysta jedynie kilka
    	 pierwszych rzdw, by moe bdzie konieczno wykonania zapytania do
    	 momentu a zostan znalezione podane wyniki.</P>
    
        <H4><A name="4.3">4.3</A>) Jak mog uzyska list wszystkich tabel
    	 czy  innych rzeczy pod <I>psql</I>?</H4>
    	 
        <P>Moesz sprawdzi zawarto rde <I>psql</I>, a konkretnie plik
        <I>pgsql/src/bin/psql/describe.c</I>. Zawiera on polecenia
        <SMALL>SQL</SMALL> ktre generuja wyniki komend z backslashem.
        Moesz take uruchomi <I>psql</I> z opcj
        <I>-E</I> wtedy po wykonaniu polecenia z backslashem wywietlane
    	 bdzie zapytanie, ktre w rzeczywistoci jest wykonywane.</P>
    
        <H4><A name="4.4">4.4</A>) Jak usun kolumn z tabeli?</H4>
    	 
        <P>Nie mamy zaimplementowanego <SMALL>ALTER TABLE DROP
    	 COLUMN,</SMALL> ale moesz zrobi tak:</P>
    <PRE>
        SELECT ...  -- wybierz zawarto wszystkich kolumn poza t jedn ktrej chcesz si pozby
        INTO TABLE new_table
        FROM old_table;
        DROP TABLE old_table;
        ALTER TABLE new_table RENAME TO old_table;
    </PRE>
    
        <H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzdu,
    	      tabeli i bazy danych?</H4>
    	 
        <P>Oto wszystkie ograniczenia:</P>
    <PRE>
        Maksymalny rozmiar dla bazdy danych?     nieograniczony ( istniej bazy danych o wielkoci 500 GB databases )
        Maksymalny rozmiar dla tabeli?           16 TB
        Maksymalny rozmiar dla rzdu?            nieograniczony w 7.1 i pniejszych
        Maksymalny rozmiar pola?                 1 GB w 7.1 and later
        Maksymalna liczba rzdw w tabeli?       nieograniczona
        Maksymalna liczba kolumn w tabeli?    250-1600 w zaleonoci od typw kolumn
        Makasymalna liczba indeksw na tabeli?    nieograniczona
    </PRE>
    
    	Oczywicie "nieograniczony" nie jest prawd tak do koca, istniej
    	ograniczenia wynikajce z dostpnego miejsca na dysku, pamici/swapa.
    	Kiedy wielkoci te bd bardzo due moe odbi si to na wydajnoci.
    
        <P>Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu
    	 operacyjnego wsparcia dla duych plikw. Due tabele s przechowywane
    	 jako pliki o rozmiarze 1 GB, wic ograniczenia co do wielkoci plikw
    	 narzucone przez system plikw nie s istotne.</P>
    
        <P>Masymalny rozmiar tabeli i maksymalna liczba kolumn moe by
    	 zwikszona jeli zwikszymy domylny rozmiar bloku (block size) do
    	 32k.</P>
    
        <H4><A name="4.6">4.6</A>) Jak duo miejsca w bazie danych jest
    	      konieczne aby przechowywa dane ze zwyczajnego pliku
    			tekstowego?</H4>
    
        <P>Baza danych PostgreSQL moe potrzebowa do piciu razy wicej
    	 miejsca na przechowywanie danych z plikw tekstowych ni ich
    	 objto.</P>
    
        <P>Jako przykad moemy rozway plik skadajcy si z 100,000 linii
    	 zbudowanych z liczby cakowitej oraz opisu tekstowego w kadej.
    	 Zamy, e rednio kady acuch tekstu w linii zajmuje 20
    	 bajtw. Cay plik powinien zajmowa ok. 2.8 MB. Rozmiar pliku bazy danych w
    	 PostgreSQL zawierajcego te dane mozna oszacowa na okoo 6.4MB:</P>
    
    <PRE>
        36 bajtw: nagwek kadego rzdu w przyblieniu)
        24 bajty:  jedno pole int i jedno pole typu text
       + 4 bajty:  wkanik na stronie do krotki
       --------------------------------------------------
        64 bajty w jednym rzdzie
    
    	Strona danych w PostgreSQL zajmuje 8192 bajtw (8 KB), wic:
    
       8192 bajtw na stron
       ---------------------   =  128 rzdw na jedn strone w bazie (zaokrglone w d)
         64 bajtw na rzd
    
       100000 rzdw danych
       -----------------------  =  782 stron w bazie danych (zaokrglone w gr)
          128 rzdw na stron
    
    782 stron w bazie * 8192 bajtw na stron  =  6,406,144 bajtw (6.4 MB)
    </PRE>
    
        <P>Indeksy nie powoduj duego narzutu na zajmowane miejsce, 
    	 ale zawieraj pewne dane,
    	 wic w pewnych przypadkach moga by cakiem due.</P>
    
        <H4><A name="4.7">4.7</A>) Jak mog sprawdzi jakie tabele, klucze,
    	      bazy danych i uytkownicy s utworzeni?</H4>
    	 
        <P><I>psql</I> ma cakiem du ilo polece z backslashem aby
    	 wydoby takie informacje. Wprowad \? aby zobaczy ich spis. Istniej
    	 take tablice systemowe rozpoczynajce si od <i>pg_</i>, zawierajce
    	 interesujce Ciebie informacje. Wykonanie <i>psql -l</i> pokae spis
    	 wszystkich baz danych.</P>
    
        <P>Obejrzyj take plik <I>pgsql/src/tutorial/syscat.source</I>.
    	 Zawiera on wiele z zapyta typu <SMALL>SELECT</SMALL>, ktre s
    	 potrzebne aby wydoby informacje z tablic systemowych.</P>
    
        <H4><A name="4.8">4.8</A>) Moje zapytania s wolne lub nie uywaj
    	      kluczy. Dlaczego?</H4>
    			
    	Indeksy nie s uywane automatycznie przez kde z zapyta. Ideksy s
    	uywane jedynie gdy tabela jest odpowiedniego rozmiaru, wikszego ni
    	wymagany minimalny, a zapytanie wybiera jedynie may procent
    	zawartoci tabeli. Wynika to z tego, e losowy dostep do dysku
    	powodowany przez ideksowane poszukiwanie jest czasami wolniejsze ni
    	poszukiwanie sekwencyjne bez uycia kluczy.
    	
        <P>eby zdecydowa czy indeks powinien byc uywany, PostgreSQL musi
    	 mie statystyki dotyczce danej tabeli. S one gromadzone przez
    	 uycie polecenia <SMALL>VACUUM ANALYZE</SMALL>, lub poprostu
    	 <SMALL>ANALYZE</SMALL>. uywajc statystyk, optymalizator wie ile
    	 rzdw jest w tabeli i moe lepiej okreli czy indeksy powinny by
    	 uyte. Statystyki mog by take pomocne w okreleniu najlepszej
    	 kolejnoci wykonania zczenia (join) i jego sposobu. Gromadzenie
    	 statystyk powinno si odbywa w okrelonych interwaach czasu
    	 poniewa dane w tabelach zmieniaj si.</P>
    
        <P>Indeksy nie s zazwyczaj uywane przez <SMALL>ORDER BY</SMALL> lub
    	 przy wykonywaniu zcze (join). Sekwencyjne przeszukiwanie po ktrym
    	 nastpuje sortowanie jest zazwyczaj szybsze ni wyszukiwanie za
    	 pomoc indeksu na duej tabeli.</P>
    	 Jakkolwiek <SMALL>LIMIT</SMALL> w poczeniu z <SMALL>ORDER BY</SMALL>
    	czsto bdzie wykorzystywa indeksw poniewz jedynie maa czc z
    	tabeli jest zwracana.
    
        <P>Kiedy uywa si operatorw dopasujcych takich jak
    	 <SMALL>LIKE</SMALL> lub <I>~</I>, indeksy bd uywane jedynie jeli 
    	 pocztek wyszukiwania jest oparty na pocztku acucha tekstu.
    	 Dlatego, aby uywac indeksw,
        dopasowania operatorem <SMALL>LIKE</SMALL> nie mog si zaczyna
    	 <I>%</I>, a dopasowania operatorem <I>~</I> (dopasowania regularne)
    	 musz si zaczyna znakiem specjalnym <I>^</I>.</P>
    
        <H4><A name="4.9">4.9</A>) Jak mog sprawdzi w jakis sposb "query
    	 optimizer" wykonuje moje zapytanie?</H4>
    
        <P>Zobacz manual dla polecenia <SMALL>EXPLAIN</SMALL>.</P>
    
        <H4><A name="4.10">4.10</A>) Co to jest "R-tree index"?</H4>
    
        <P>Indeks R-tree jest uywany do indeksowania danych przestrzennych.
    	 Indeks hasuujcy nie nadaje si do wyszukiwania odlegoci.
        Natomiast indeks typu B-tree moe wyszukiwa odlegloci jedynie w
    	 jednowymiarowych przestrzeniach. R-tree indeks radzi sobie z
    	 przestrzeniami wielo-wymiarowymi. Dla przykadu, jeli zostanie
    	 zaoony indeks typu R-tree na polu typu <I>point</I>, system moe
    	 bardziej wydajnie odpowiada na zapytania typu
        "select all points within a bounding rectangle."</P>
    
        <P>rdowym dokumentem opisujcym oryginalnie projektowanie R-tree
    	 indeksw jest:</P>
    
        <P>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>Ten dokument moesz znale take w pracy Stonebraker'a "Readings in
        Database Systems".</P>
    
        <P>Wbudowane indeksy R-trees radz sobie w wielobokami i boxes.
    	 Teoretycznie, indeksy R-tree mog by rozszerzone o moliwoci
    	 indeksowania w wicej wymiarowych przestrzeniach. W praktyce,
    	 rozbudowa indeksw R-tree wymaga troch pracy, a w tej chwili nie
    	 dysponujemy jakkolwiek dokumentacj jak to zrobi.</P>
    
        <H4><A name="4.11">4.11</A>) Co to jest "Genetic Query
    	 Optimizer"?</H4>
    
        <P>Modu <SMALL>GEQO</SMALL> ma za zadanie przyspieszenie
    	 optymalizacji zapyta czc wiele tabel za pomoc algorytmw
    	 genetycznych (Genetic Algorithm (GA)). Pozwala na uywanie duych
    	 zapyta czcych tabele (join queries) bez wykorzystywania
    	 zasoboernego wyszukiwania.</P>
    
        <H4><A name="4.12">4.12</A>) Jak mog uywa wyrae regularnych w
    	      zapytaniach i zapyta case-insensitive w wyraeniach
    			regularnych?
    			     jak korzysta z indeksw dla zapyta case-insensitive?</H4>
    
        <P>Operator <I>~</I> moze by wykorzystywany do wyszukiwania za
    	 pomoc wyrae regularnych, a 
        <I>~*</I> do wyszukiwania case-insensitive z wyraeniami
    	 regularnymi. 
        Wariant case-insensitive dla <SMALL>LIKE</SMALL> zosta nazwany
        <SMALL>ILIKE</SMALL> i jest dostpny w PostgreSQL 7.1 i pniejszych
    	 wersjach.</P>
    
        <P>Porwnania case-insensitive s zazwyczaj wykonywane w nastpujcy
    	 sposb:</P>
    <PRE>
        SELECT *
        FROM tab
        WHERE lower(col) = 'abc'
       
    </PRE>
    	W tym wypadku standardowe indeksy nie bd uywane. Moesz utworzy
    	indeks funkcyjny, poprzez:
    <PRE>
        CREATE INDEX tabindex on tab (lower(col));
       
    </PRE>
    
        <H4><A name="4.13">4.13</A>) Jak sprawdzi w zapytaniu czy pole ma
    	      warto <SMALL>NULL</SMALL>?</H4>
    
        <P>Moesz to sprawdzi, testujc warto kolumny warunkiem 
    	 <SMALL>IS NULL</SMALL> albo <SMALL>IS NOT NULL</SMALL>.</P>
    
        <H4><A name="4.14">4.14</A>) Jaka jest rnica pomidzy rnymi
    	 typami tekstowymi (character types)?</H4>
    <PRE>
    Type            Nazwa wewntrzna   Uwagi
    --------------------------------------------------
    "char"          char            	  1 znak
    CHAR(#)         bpchar             wypeniane pustymi znakami do podanej dugoci
    VARCHAR(#)      varchar            rozmiar okrela maksymaln dugo, nie ma tutaj wypeniania
    TEXT            text               bez limitu na dugo acucha
    BYTEA           bytea              zmiennej dugoci tablica bajtw (null-byte safe)
    </PRE>
    
        <P>Jeli bdziesz przeglda katalogi systemowe lub komunikaty o
    	 bdach czsto spotkasz si z podanymi powyej nazwami
    	 wewntrznymi.</P>
    
        <P>Ostatnie cztery typy powyej to tzw typy "varlena" (np. pierwsze
    	 cztery bajty na dysku to dugo, po ktrych jest data). Dlatego
    	 faktyczna dugoc takiego acucha jest troch wiksza ni
    	 zadeklarowany rozmiar. Te typy take podlegaj kompresji lub mog by
    	 przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wic faktyczne
    	 zuycie miejsca na dysku moe by mniejsze ni oczekiwane.</P>
    
        <P><SMALL>CHAR()</SMALL> jast najlepszym typem do przechowywania
    	 acuchw o tej samej dugoci. <SMALL>VARCHAR()</SMALL> jest
    	 najodpowiedniejszy do przechowywania acuchw o rnej dugoci
    	 ale okrela on maksymaln jego dugo. <SMALL>TEXT</SMALL> jest
    	 najlepszy dla acuchw o dowolnej dugoci, nie przekraczajcej 1GB.
        <SMALL>BYTEA</SMALL> suy do przechowywania danych binarnych,
    	 w szczeglnoci dla danych zawierajcych <SMALL>NULL</SMALL> bajty.</P>
    
        <H4><A name="4.15.1">4.15.1</A>) Jak mog utworzy pole ktre samo
    	      zwiksza swoj warto?</H4>
    
        <P>PostgreSQL ma zaimplementowany typ <SMALL>SERIAL</SMALL>.
    	 Automatycznie tworzy sekwencj i indeks na tej kolumnie. Dla
    	 przykladu:</P>
    <PRE>
        CREATE TABLE person ( 
            id   SERIAL, 
            name TEXT 
        );
    </PRE>
        zostanie automatycznie prztumaczone na:
    <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>
        Wicej informacji o sekwencjach znajdziesz w manualu o
    	 <I>create_sequence</I>. Moesz take uy  pola <I>OID</I> jako
    	 unikalnej wartoci dla kadego rzdu danych. Jeli bdziesz
    	 potrzebowa z backupowa dane robic dump bazy i odtworzy j, musisz
    	 uyc <I>pg_dump</I> z opcj <I>-o</I> lub polecenia <SMALL>COPY
    	     WITH OIDS</SMALL> aby zachowa <SMALL>OIDy</SMALL>.
    	 
        <H4><A name="4.15.2">4.15.2</A>) Jak pobra warto pola typu
    	     <SMALL>SERIAL</SMALL> po wykonaniu insert'u?</H4>
    
        <P>Jednym z podej jest pobranie kolejnej wartoci typu 
    	 <SMALL>SERIAL</SMALL> z sekwencji za pomoc funkcji <I>nextval()</I>
        <I>zanim</I> zostanie wstawiona, a pniej naley jej uy. Uywajc
    	 przykadu z tabeli z punktu <A href="#4.15.1">4.15.1</A>, moe to
    	 wyglda w Perlu na przykad w ten sposb:</P>
    
    <PRE>
        new_id = output of "SELECT nextval('person_id_seq')"
        INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
    </PRE>
    	Bdziesz mia wtedy t warto przechowan w zmiennej 
        <CODE>new_id</CODE> do uytku w innych zapytaniach (np. jako klucz
    	 obcy do tabeli <CODE>person</CODE>). Warto zwrci uwag, e nazwa
    	 automatycznie utworzonej sekwencji
        <SMALL>SEQUENCE</SMALL> bdzie nastpujca:
        &lt;<I>tabela</I>&gt;_&lt;<I>kolumnatypuserial</I>&gt;_<I>seq</I>,
    	 gdzie 
        <I>tabela</I> i <I>kolumnatypuserial</I> s nazwami Twojej tabeli i
    	 Twojej kolumny typu <SMALL>SERIAL</SMALL>. 
    
        <P>Inne rozwizanie to uycie funkcji <I>currval</I>() na pola typu
        <SMALL>SERIAL</SMALL> po dodaniu nowej wartoci do rzdu zawierajcego
    	 kolumn typu <SMALL>SERIAL</SMALL> z wstawion domylnie wartoci,
    	 np.</P>
    <PRE>
        INSERT INTO person (name) VALUES ('Blaise Pascal');
        new_id = output of "SELECT currval('person_id_seq')";
    </PRE>
    	Ostatecznie moesz uy <A href="#4.16"><SMALL>OID</SMALL></A>
    	zwracanej po wykonaniu <SMALL>INSERT</SMALL>, chocia to jest najmniej
    	przenone rozwizanie.
       W Perlu, wykorzystujc bibliotek DBI z moduem Edmunda Mergla
    	DBD::Pg, oid jest dostpny poprzez <I>$sth-&gt;{pg_oid_status}</I> po
    	wykonaniu <I>$sth-&gt;execute()</I>. 
    
        <H4><A name="4.15.3">4.15.3</A>) Czy uycie <I>currval()</I> i
    	     <I>nextval()</I> nie doprowadzi do race condition z innymi
    		      uytkownikami?</H4>
    
        <P>Nie. currval() zwraca biec warto przypisan przez Twj
    	 backend, a nie przez wszystkich uytkownikw.</P>
    
        <H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s
    	      ponownie uywane przy przerwaniu transakcji?
    			    Skd si bior luki w numerowaniu kolumny tabeli
    				     sekwancjami/SERIALem?</H4>
    
        <P>Aby poprawi zbieno (concurrency), wartoci sekwencji s
    	 podawane dziaajcym transakcjom kiedy tego potrzebuj i nie s
    	 blokowane dopki transakcja si nie zakoczy. To spowoduje przerwy w
    	 numerowaniu z przerwanych transakcji.</P>
    
        <H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to
    	 jest
    	     <SMALL>TID</SMALL>?</H4>
    
        <P><SMALL>OID</SMALL> s PostgreSQL'owym rozwizaniem problemu
    	 unikalnych numerw rzdw. Kady rzd tworzony przez PostgreSQL
    	 otrzymuje unikalny <SMALL>OID</SMALL>. Wszystkie <SMALL>OID</SMALL>y
    	 generowane podczas procesu uruchamianego przez skrypt
        <I>initdb</I> maj mniejsz warto ni 16384 (na podstawie pliku
        <I>backend/access/transam.h</I>). Wszystkie 
        <SMALL>OID</SMALL>y tworzone przez uytkownika sa rwne lub wiksze
    	 podanej wczeniej wartoci. Domylnie
        wszystkie <SMALL>OID</SMALL>y s unikalne nie tylko w pojedyczej
    	 tabeli czy bazie danych ale w caej instalacji PostgreSQL.</P>
    
        <P>PostgreSQL uywa <SMALL>OIDw</SMALL> w swoim wewntrznym systemie
    	 tabel, aby mona byo je czy.
        Te <SMALL>OIDy</SMALL> mog byc uywane aby identyfikowac rzdy w
    	 tabelach i wykorzystywa je w zczeniach tych tabel. Zaleca si aby
    	 uywa typu <SMALL>OID</SMALL> aby przechowywa wartoci
        <SMALL>OID</SMALL>. Moesz utworzy indeks na polu 
        <SMALL>OID</SMALL> aby dostp do niego by szybszy.</P>
    
        <P><SMALL>OID</SMALL> s przypisane do wszystkich rzdw z jednego
    	 gwnego miejsca i uywane sa przez wszystkie bazy danych. Jeli
    	 chciaby zmieni <SMALL>OID</SMALL> na co innego, lub jeli
    	 chciaby zrobi kopi tabeli, z orginalnymi <SMALL>OIDami</SMALL>
    	 nie ma adnego przeciwwskazania aby to zrobi:</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';
    <!--
        CREATE TABLE new_table (mycol int);
        INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM old_table;
    -->
    </PRE>
    
        <P><SMALL>OIDy</SMALL> s przechowywane jako cztero-bajtowe liczby
    	 cakowite i skocz si po osigniciu czterech miliardw. Nikt jak
    	 dotd nie zgosi aby co takiego si stalo, ale mamy zamiar pozby
    	 si tego ograniczenia zanim kto to zgosi.</P>
    
        <P><SMALL>TID</SMALL> s uywane aby zidentyfikowa konkretne rzdy z
    	 blokami i wartoci ofsetw. <SMALL>TIDy</SMALL> zmieniaj si wraz
    	 ze zmianami rzdw. Sa uywane przez indeksy, aby wskazywa do
    	 fizycznych rzdw.</P>
    
        <H4><A name="4.17">4.17</A>) Jakie jest znaczenie niektrych terminw
    	 w PostgreSQL?</H4>
    
        <P>W czci kodu rdowego i starszej dokumentacji uywamy terminw,
    	 ktre maj bardziej oglne znaczenie. Oto niektre z nich:</P>
    
        <UL>
          <LI>table, relation, class</LI>
    
          <LI>row, record, tuple</LI>
    
          <LI>column, field, attribute</LI>
    
          <LI>retrieve, select</LI>
    
          <LI>replace, update</LI>
    
          <LI>append, insert</LI>
    
          <LI><SMALL>OID</SMALL>, serial value</LI>
    
          <LI>portal, cursor</LI>
    
          <LI>range variable, table name, table alias</LI>
        </UL>
    
        <P>List terminw zwizanych z bazami danych moesz znale pod tym
    	 adresem:<A href=
        "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P>
    
        <H4><A name="4.18">4.18</A>) Skd bierze si ten bd <I>"ERROR:
    	 Memory exhausted in AllocSetAlloc()"</I>?</H4>
    
        <P>Jeli uywasz wersji starszej ni 7.1, upgrade moe rozwiza ten
    	 problem. Jest take mozliwe, e po prostu wyczerpaa Ci si pami
    	 wirtualna (virtual memory) w systemie lub Twj kernel ma zbyt nisko
    	 ustawione limity dla pewnych zasobw. Sprbuj wykona nastpujce
    	 polecenia zanim uruchomisz <I>postmaster'a</I>:</P>
    <PRE>
        ulimit -d 262144
        limit datasize 256m
    </PRE>
    	W zalenoci od shell'a jakiego uywasz jedno z tych polece moe nie
    	zadziaa, ale to ustawienie pozwoli ustawi segment danych dla
    	procesu znacznie wikszy i by moe pozwoli wykona zapytanie.
    	To polecenie zadziaa dla biecego procesu oraz wszytkich podprocesw
    	utworzonych po wykonaniu polecenia. Jeli ten problem wystpuje z
    	klientem <SMALL>SQL</SMALL>, poniewa backend zwraca zbyt duo danych,
    	sprbuj wykona to polecenie przed uruchomieniem klienta.
    
        <H4><A name="4.19">4.19</A>) Jak sprawdzi jakiej wersji PostgreSQL
    	     uywam?</H4>
    
        <P>W <I>psql</I>, wpisz <CODE>select version();</CODE></P>
    
        <H4><A name="4.20">4.20</A>) Dlaczego operacje, ktre wykonuj na
    	      duych obiektach "large-object" zwracaj komunikat:
    			    <I>"invalid large obj descriptor"</I>?</H4>
    
        <P>Musisz uy <CODE>BEGIN WORK</CODE> i <CODE>COMMIT</CODE>
        przed i po uyciu uchwytu do duego obiektu, tzn. musisz nimi otoczy
        funkcje <CODE>lo_open</CODE> ... <CODE>lo_close.</CODE></P>
    
        <P>Obecnie PostgreSQL uywjc "rule" zamyka uchwyt do duego obiektu
    	 przy kadym wywoaniu "commit". Wic pierwsze prba zrobienia
    	 czegokolwiek z uchwytem spowoduje wypisanie: <I>invalid large obj 
    	 descriptor</I>. Kod, ktry do tej pory dziaa (przynajmniej
    	 wikszo razy) bdzie teraz generowa informacj o bdzie jeli nie
    	 bdziesz korzysta z transakcji.</P>
    
        <P>Jeli uywasz interfejsu klienta jak <SMALL>ODBC</SMALL>  by moe
    	 bdziesz musia ustawi <CODE>auto-commit off.</CODE></P>
    
        <H4><A name="4.21">4.21</A>) Jak stworzy kolumn ktrej domyln
    	      wartoci bdzie biecy czas?</H4>
    
        <P>Uyj <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>) Dlaczego zapytania uywajce
    	     <CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4>
    
        <P>Obecnie czymy podzapytania w outer queries poprzez sekwencyjne
    	 przeszukiwanie wynikw podzapytania dla kadego rzdu z outer query. 
    	 Mona to omin zastpujc <CODE>IN</CODE> przez 
        <CODE>EXISTS</CODE>:</P>
    <PRE>
    <CODE>SELECT *
        FROM tab
        WHERE col1 IN (SELECT col2 FROM TAB2)
    </CODE>
    </PRE>
        na: 
    <PRE>
    <CODE>SELECT *
        FROM tab
        WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
    </CODE>
    </PRE>
    	Mamy zamiar poprawi to ograniczenie w przyszych wydaniach.
    
        <H4><A name="4.23">4.23</A>) Jak wykona "outer join"?</H4>
    
        <P>PostgreSQL 7.1 i pniejsze wersje maj zaimplementowane outer join
    	 wykorzystujc standardow skadnie SQL. Poniej dwa przykady:</P>
    	 
    <PRE>
        SELECT *
        FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
    </PRE>
        or 
    <PRE>
        SELECT *
        FROM t1 LEFT OUTER JOIN t2 USING (col);
    </PRE>
    
        <P>Te dwa identyczne zapytania cz kolumn t1.col z kolumn t2.col,
    	 ale take zwrc niepoczone rzdy w t1 (te ktre nie pasuj w t2).
        <SMALL>RIGHT</SMALL> join dodaby niepoczone rzdy z tabeli t2.
        <SMALL>FULL</SMALL> join zwrciby rzdy plus dodatkowo wszystkie
    	 rzdy z tabel t1 i t2. Sowo <SMALL>OUTER</SMALL> jest opcjonalne i
    	 jest dodawane domylnie przy
        <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL>, i <SMALL>FULL</SMALL>
    	 join'ach. Zwyke join'y s nazywane <SMALL>INNER</SMALL> joins.</P>
    
        <P>W poprzednich wersjach "outer joins" mog by zasymulowane poprzez
    	 uycie slowa kluczowego
        <SMALL>UNION</SMALL> i <SMALL>NOT IN</SMALL>. Dla przykadu, czc
    	 tabele <I>tab1</I> i <I>tab2</I>, nastpujce zapytanie wykonuje
    	 <I>outer</I> join:<BR>
        <BR>
        </P>
    <PRE>
        SELECT tab1.col1, tab2.col2
        FROM tab1, tab2
        WHERE tab1.col1 = tab2.col1
        UNION ALL
        SELECT tab1.col1, 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 wykonywa zapytanie uywajce kilku
    	      baz danych jednoczenie?</H4>
    
        <P>Nie ma takiej moliwoci aby w zapytaniu odpytawa inn baze danych
    	 poza biec. Poniewa PostgreSQL aduje specyficzne dla bazy danych
    	 katalogi systemowe, nie jest do koca jasne jak zapytanie pomidzy
    	 rnymi bazami danych powinno si zachowywa.</P>
    	 
        <P>Oczywicie klient moe czy si z rnymi bazami danych i czy
    	 informacj w ten sposb uzyskan.</P>
    
        <H4><A name="4.25">4.25</A>) Jak zwrci w funkcji wiele rzdw lub
    	      kolumn?</H4>
    
         <P>Moesz zwraca zbiory z funkcji PL/pgSQL uywajc 
         <i>refcursors</i>. Zobacz <a
         href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
         http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a>
         sekcj 23.7.3.3.</P>
    
         
        <H2 align="center">Rozwijanie PostgreSQL</H2>
    
        <H4><A name="5.1">5.1</A>) Napisaem wasn funkcj. Kiedy uyj jej
    	 w <I>psql</I>, program zrzuca pami (dump core)?</H4>
    
        <P>Problem moe by spowodowany przez bardzo wiele rzeczy. Sprbuj
    	 najpierw przetestowa Twoj funkcj w samodzielnie dziaajcym programie.
    	 </P>
    
        <H4><A name="5.2">5.2</A>) Jak mog doda/zgosi nowe typy czy
    	 funkcje do PostgreSQL?</H4>
    
        <P>Wylij Twoje propozycje na list mailow <I>pgsql-hackers</I>,
        wtedy prawdopodobnie Twj kod znajdzie si w katalogu <I>contrib/</I>.</P>
    
        <H4><A name="5.3">5.3</A>) Jak napisa funkcj C zwracajc krotk
    	      (tuple)?</H4>
    
        <P>To wymaga wysiku tak olbrzymiego, e nawet autorzy nigdy tego nie
    	 prubowali, chocia z zaloe wynika, e jest to moliwe.</P>
    
        <H4><A name="5.4">5.4</A>)  Zmieniem plik rdowy. Dlaczego po
    	      rekompilacji nie wida zmiany?</H4>
    
        <P>Pliki <I>Makefiles</I> nie maj dorzuconych odpowiednich
    	 zalenoci dla plikw nagwkowych (include files). Wykonaj najpierw
    	 <I>make clean</I>, a nastpnie ponownie <I>make</I>.
        Jeli uywasz <SMALL>GCC</SMALL> moesz uy opcji
        <I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby
      </BODY>
    </HTML>