Update Polish FAQ, from Marcin Mazurek.
authorBruce Momjian
Fri, 5 Mar 2004 19:29:23 +0000 (19:29 +0000)
committerBruce Momjian
Fri, 5 Mar 2004 19:29:23 +0000 (19:29 +0000)
doc/FAQ_polish
doc/src/FAQ/FAQ_polish.html

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

Frequently Asked Questions (FAQ) o PostgreSQL

 
-    

Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002

+    

Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004

+
+    

Ostatnia aktualizacja t³umaczenia: Pi±tek Marzec 5 19:31:12 EST 2004

 
     

Obecny maintainer: Bruce Momjian (

     

 
-
     

Najbardziej aktualn± wersjê tego dokumentu mo¿na znale¼æ pod

     adresem:
     
-    "http://www.Postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html.

+    "http://www.Postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html.

 
     

Odpowiedzi na pytania dotycz±ce konkretnych systemów operacyjnych

     mo¿na znale¼æ pod adresem: 
     
-    "http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html.

+    "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html.

     
 
     Pytania ogólne
     PostgreSQL?
      2.2) Jakie istniej± narzêdzia pozwalaj±ce na dostêp do
      PostgreSQL przez www?
-     2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
-    Narzêdzie do raportowania? Interfejs dla "embedded query language"?
+     2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
      2.4) Za pomoc± jakich jêzyków programowania mo¿na
      siê komunikowaæ z PostgreSQL?
      
 
-    Pytania administratora
+    Pytania dotycz±ce administracji
     3.1) Jak mogê zainstalowaæ PostgreSQL w innej 
            lokalizacji ni¿ /usr/local/pgsql?
      3.2) Podczas startu postmaster'a,
      otrzymujê komunikat:
     Bad System Call lub "core dumped". Dlaczego?
      3.3) Podczas startu postmaster'a
-     otrzymujê komunikato b³êdzie: IpcMemoryCreate. Dlaczego?
+     otrzymujê komunikat o b³êdzie: IpcMemoryCreate. Dlaczego?
      3.4) Podczas startu postmaster'a,
      otrzymujê komunikat o b³êdzie: IpcSemaphoreCreate. Dlaczego?
      3.5) W jaki sposób mogê kontrolowaæ po³±czenia z
@@ -87,9 +87,9 @@
      3.7) Jakie s± mo¿liwo¶ci wyszukiwania b³êdów?
      3.8) Sk±d siê bierze komunikat: "Sorry, too many
     clients" podczas próby po³±czenia siê z baz± danych?
-     3.9) Co to za pliki typu pg_sorttempNNN.NN>
-    , które znajduj± siê w katalogu z plikami bazy danych?
-     
+     3.9) Jakie pliki znajduj± siê w pg_temp?>
+     3.10) Dlaczego konieczne jest przy upgradzie
+     PostgreSQL korzystanie ze skryptów dump i restore?
 
     Pytania dotycz±ce u¿ytkowania
     4.1) Jaka jest ró¿nica pomiêdzy kursorami
@@ -98,7 +98,8 @@
      jedynie kilka pierwszych wyników zapytania?
      4.3) Jak mogê uzyskaæ listê wszystkich tabel czy
      innych rzeczy pod psql?
-     4.4) Jak usun±æ kolumnê z tabeli?
+     4.4) Jak usun±æ kolumnê z tabeli lub zmieniæ jej
+     typ?
      4.5) Jaki jest maksymalny rozmiar dla rzêdu,
      tabeli i bazy danych?
      4.6) Jak du¿o miejsca w bazie danych jest
      baz danych jednocze¶nie?
      4.25) Jak zwróciæ w funkcji wiele rzêdów lub
      kolumn?
-     
-
+     4.26) Dlaczego nie mogê w sposób pewny
+     tworzyæ/usuwaæ tabel tymczasowych w funkcjach PL/PgSQL?
+     4.27) Jakie s± mo¿liwo¶ci replikacji w
+     PostgreSQL?
+     4.28) Jakie mo¿liwo¶ci szyfrowania oferuje
+     PostgreSQL?
+    
     Rozwijanie PostgreSQL
     5.1) Napisa³em w³asn± funkcjê. Kiedy u¿yjê jej w
     psql, program zrzuca pamiêæ (dump core)?
 
     

1.1) Co to jest PostgreSQL? Jak to wymawiaæ?

 
-    

PostgreSQL wymawia siê Post-Gres-kju-el.

+    

PostgreSQL wymawia siê Post-Gres-kju-el. Czêsto podczas

+    rozmów u¿ywany jest termin "Postgres"

 
     

PostgreSQL jest rozszerzeniem systemu zarz±dzania bazami danych -

     POSTGRES, kolejn± generacj± rozwojowego prototypu DBMS.
     komunikuj±cych siê poprzez mailowe listy dyskusyjne PostgreSQL.
     Obecnym koordynatorem jest Marc G. Fournier (
     "mailto:[email protected]">[email protected]). (Zobacz
-    poni¿ej jak siê przy³±czyæ). Ta grupa ludzi jest odpowiedzialna za
-    ca³y rozwój PostgreSQL.

+    pytanie 1.6 jak siê przy³±czyæ). Ta grupa ludzi jest 
+    odpowiedzialna za ca³y rozwój PostgreSQL. PostgreSQL jest projektem
+    nie kontrolowanym przez ¿adn± firmê, aby wzi±æ udzia³ w jego rozwoju
+    sprawd¼, 
+    http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html

 
     

Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.

-    Wiele innych osób pomog³o przy portowaniu, testowaniu, debugowaniu, i
+    Wiele innych osób pomog³o przy portowaniu, testowaniu, debugowaniu i
     rozwijaniu kodu. Oryginalny kod Postgresa, na którym zosta³ oparty
     PostgreSQL, by³ wysi³kiem studentów oraz pracowników pracuj±cych pod
     kierownictwem profesora Michael'a Stonebraker'a z University of
 
     

Klient

 
-    

Mo¿liwa jest kompilacja bibliteki C libpq C, psql oraz

+    

Mo¿liwa jest kompilacja bibliteki C libpq, psql oraz

     innych interfejsów 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 mo¿e dzia³aæ na dowolnej wspieranej platformie 
-    Unixowej. Plik win31.mak jest do³±czony
+    Unixowej. Plik win32.mak jest do³±czony
     do ¼róde³, aby mo¿na by³o stworzyæ bibliotekê libpq oraz
     program psql dzia³aj±ce w ¶rodowisku Win32. PostgreSQL mo¿e siê 
     tak¿e komunikowaæ z klientami ODBC.

     

Serwer mo¿e byæ uruchamiany na Windows NT i Win2k u¿ywaj±c

     bibliotek Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN
     znajduj±cym siê w ¼ród³ach lub pod adresem: 
-    "http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ
-    na naszych stronach. Nie planujemy tworzyæ portu przeznaczonego
-    docelowo dla platformy Microsoft.

+    "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych stronach.

+    Obecnie prowadzone s± prace nad stworzeniem wersji dla MS Win
+    NT/200/XP. Je¶li chcesz siê dowiedzieæ o obecnym statusie tych prac
+    zobacz 
+    href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows and
+    
+    href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">http://momjian.postgresql.org/main/writings/pgsql/win32.html.
+    

+    

+    Istnieje tak¿e port pod Novell Netware 6 dostêpny pod adresem 
+    href="http://forge.novell.com">http://forge.novell.com.
+    

 
     

1.5) Sk±d mo¿na ¶ci±gn±æ PostgreSQL?

 
     '#PostgreSQL' "$USER" irc.phoenix.net.

 
     

Lista firm oferuj±cych wsparcie na zasadach komercyjnych znajduje

-    siê pod adresem: 
-    "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html.

+    siê pod adresem: http://techdocs.postgresql.org/companies.php.

 
     

1.7) Jaka jest ostatnia dostêpna wersja?

 
-    

Ostatnia dostêpna wersja PostgreSQL to 7.2.1.

+    

Ostatnia dostêpna wersja PostgreSQL to 7.4.1.

 
-    

Planujemy publikowanie kolejnych wersji co cztery miesi±ce.

+    

Planujemy publikowanie kolejnych wersji co sze¶æ do o¶miu miesiêcy.

 
     

1.8) Jaka dokumentacja jest dostêpna?

 
     testowania s± za³±czone w samej dystrybucji. Znajduj± siê one w
     katalogu /doc. Manual mo¿e byæ tak¿e przegl±dany poprzez
     strony www pod adresem 
-    "http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/.

-
+    "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs.

+   
     

Istniej± tak¿e dwie ksi±¿ki dostêpne online pod adresami

     
     "http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html
     "http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/.
     Lista ksi±¿ek o PostgreSQL, które mo¿na kupiæ znajduje siê pod adresem
     
-    "http://www.postgresql.org/books/">http://www.postgresql.org/books/.
+    "http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
+    http://techdocs.PostgreSQL.org/techdocs/bookreviews.php.
     Zbiór technicznych artyku³ów o PostgreSQL znajduje siê pod adresem 
     href=
-    "http://techdocs.postgresql.org/">http://techdocs.postgresql.org/.

+    "http://techdocs.PostgreSQL.org">http://techdocs.postgresql.org/.

 
     

psql posiada kilka wbudowanych poleceñ \d, za pomoca których

     mo¿na sprawdziæ informacje dotycz±ce typów, operatorów, funkcji,
-    aggregatów itd.

+    agregatów itd.

 
     

Na naszej stronie mo¿na znale¼æ du¿o wiêcej dokumentacji.

 
     

Jest oko³o 12 osób, które maj± uprawnienia do commit'owania w

     CVS PostgreSQL'a. Ka¿dy z nich submitowa³ tak wiele
     wysokiej jako¶ci patchy, ¿e sta³o siê niemo¿liwe dla obecnych
-    commiterów byæ z nimi na bie¿±co, maj±c pewno¶æ ¿e s± to poprawki
-    wysokiej jako¶ci.

+    commiterów byæ z nimi na bie¿±co, wiêc musieli¶my im ufaæ i mieæ
+    pewno¶æ, ¿e ich poprawki s± wysokiej jako¶ci.

 
     

1.13) Jak mogê zg³aszaæ b³êdy?

 
        oraz wyrafinowany system blokowania. Mamy tak¿e w³a¶ciow¶ci których
        inni nie posiadaj±, jak typy definiowane przez u¿ytkownika,
        dziedziczenie, rules, multi-version concurrency control, która
-       redukuje problemy z blokowaiem (lock contention).
+       redukuje problemy z blokowaniem (lock contention).
       
       
 
       
Wydajno¶æ
 
-      
PostgreSQL dzia³a w dwóch trybach. Standardowy tryb fsync
-      zrzuca ka¿d± zakoñczon± transakcjê na dysk, gwarantuj±c w ten
-       sposób to, ¿e je¶li system operacyjny siê zawiesi lub straci
-       zasilanie wci±gu kilku nastepnych sekund, wszystkie Twoje dane
-       zostan± bezpiecznie zapisane na dysku. W tym trybie, jeste¶my
-       wolniejsi ni¿ wiêkszo¶æ komercyjnych baz danych, czê¶ciowo dlatego
-       ¿e niewiele z nich wykonuje taki sposób zapisywania danych jako
-       domy¶lne ustawienie.
-      W trybie no-fsync z regu³y jeste¶my szybsi ni¿ komercyjne
-       bazy danych, chocia¿ w tym wypadku zawieszenie siê systemu mo¿e
-       spowodowaæ uszkodzenie danych. Pracujemy nad tym, aby stworzyæ
-       po¶redni tryb, który powoduje mniejsz± redukcjê wydajno¶ci ni¿ tryb
-       fsync i pozwoli na integralno¶æ danych w przeci±gu 30 sekund do
-       za³amania siê systemu operacyjnego.
-      
-       Porównuj±c do MySQL czy innych prostych baz danych, jeste¶my
-        wolniejsi przy wykonywaniu insertów/updatów przez narzut
-        spowodowany przez transakcje. Oczywi¶cie MySQL nie posiada ¿adnej z
-        wymienionych wy¿ej mo¿liwo¶ci. PostgreSQL zosta³ zbudowany
-        aby byæ DBMS elastycznym i bogatym z ró¿norakie mo¿liwo¶ci,
-        aczkolwiek dbamy, aby poprawiaæ jego wydajno¶æ poprzez analizê
-        kodu ¼ród³owego i profilowanie. Ciekawe porównanie PostgreSQL i MySQL
-        mo¿na znale¼æ pod adresem 
-      "http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html
-
-      
-        Ka¿de po³±czenie klienta jest obs³ugiwane przez nas poprzez
-        stworzenie nowego procesu Unixowego. Procesy backendu dziel±
-        bufory danych oraz informacjê o blokadach. U¿ywaj±c wielu
-        procesorów, ró¿ne backendy mog± bez problemu dzia³aæ na ró¿nych
-        procesorach.
+      
Wydajno¶æ PostgreSQL jest podobna do innych komercyjnych i open
+       source baz danych. W niektórych sytuacjach jest szybszy w
+       niektórych wolniejszy. W porównianiu do MySQL lub mniejszych baz
+       danych jeste¶my szybsi przy wielu u¿ytkownikach, skomplikowaych
+       zapytaniach i du¿ym obci±¿eniu podczas. MySQL jest szybszy dla
+       prostych SELECTów wykonywanych przez niewielu u¿ytkowników.
+       Spowodowane jest to narzutem, który siê pojawia przy transakcjach.
+       Oczywi¶cie MySQL nie ma wiêkszo¶ci z rozwi±zañ opisanych powy¿ej
+       w sekcji  Mo¿liwo¶ci . PostgreSQL zosta³ stworzony z my¶l± o
+       stabilno¶ci, oraz szerokiej gamie mo¿liwo¶ci, ale mimo to staramy
+       siê w ka¿dej wersji poprawiaæ jego wydajno¶æ.
+       Ciekawe porównanie PostgreSQL i MySQL mo¿na znale¼æ pod adresem 
+      "http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html
+       Dodatkowo, MySQL jest firm±, która dystrybuuje jej produkty poprzez
+       zasadê Open Source i wymaga wykupienia licencji w przypadku
+       tworzenia close-source software, co ie ma miejsca w przypadku
+       PostgreSQL.
       
       
-
       
Stabilno¶æ
 
       
Zdajemy sobie sprawê, ¿e DBMS musi byæ stabilny,
        w przeciwnym wypadku jest bez warto¶ci. Staramy siê publikowaæ kod
        stabilny, dobrze przetestowany, z minimum mo¿liwych b³êdów. Ka¿de
-       wydanie poprzedza conajmniej miesi±c testów wersji beta. Patrz±c na
+       wydanie poprzedza co najmniej miesi±c testów wersji beta. Patrz±c na
        historiê wydañ PostgreSQL widaæ, ¿e dostarczamy stabilne, dobrze
        sprawdzone wersje, które s± gotowe do u¿ycia w ¶rodowisku
        produkcyjnym. My¶limy, ¿e proces publikowania kolejnych wersji
         PostgreSQL?
 
     

PostgreSQL korzysta z najlepszej infrastruktury od samego pocz±tku

-    istnienia projektu, tzn. sze¶ciu lat. Wszystko to zawdziêczamy Marc'owi
-    Fournier'owi, który stworzy³ t± infrastrukturê i zarz±dza ni± od
-    lat.

+    istnienia projektu, czyli roku 1996 kiedy rozpoczeli¶my pracê. Wszystko 
+    to zawdziêczamy Marc'owi Fournier'owi, który stworzy³ t± infrastrukturê 
+    i zarz±dza ni± od lat.

 
     

Wysokiej jako¶ci infrastruktura jest bardzo wa¿na dla ka¿dego

     projektu open-source. Zapobiega przerwom w rozwoju projektu i
     jakimkolwiek przestojom.

 
     

Oczywi¶cie korzystanie z wysokiej jako¶ci infrastruktury nie jest

-    tanie. Istnieje wiele róznych miesiêcznych, czy jednorazowych
+    tanie. Istnieje wiele ró¿nych miesiêcznych, czy jednorazowych
     wydatków, które trzeba ponosiæ aby wszystko dzia³a³o jak nale¿y.
     Je¶li Ty, b±d¼ Twoja firma mo¿e wspomóc finansowo rozwój PostgreSQL
     odwied¼ adres: 
-    "http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies
+    "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/
     gdzie opisane jest jak to zrobiæ.

 
     

Chocia¿ na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"

     przeznaczane na finansowanie jakiejkolwiek firmy. Je¶li wolisz, 
     mo¿esz wys³aæ czek na adres kontaktowy.

     
+    Je¶li mo¿esz siê pochwaliæ udanymi wdro¿eniami PostgreSQL, prosimy
+    aby¶ zg³osi³ nam to na stronie: 
+    href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org.
 
     User Client Questions
 
     

Dostêpne s± dwa driwery ODBC: PsqlODBC

     i OpenLink ODBC.

 
-    

PsqlODBC jest do³±czony do ¼róde³. Wiêcej informacji na jego temat

-    mo¿esz znale¼æ pod adresem: 
-    "ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/.

-
+    

Mo¿esz pobraæ PsqlODBC z adresu 

+    href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+    

+    
     

OpenLink ODBC mo¿e byæ pobrany z adresu: 

     "http://www.openlinksw.com/">http://www.openlinksw.com.
     Wspó³pracuje ze standardowym oprogramowaniem klienckim ODBC
     wiêc w ten sposób mo¿esz korzystaæ z PostgreSQL ODBC
-    dostêpnego na ka¿dej plaformie któr± wspiera (Win, Mac, Unix, VMS).

+    dostêpnego na ka¿dej pltaformie któr± wspiera (Win, Mac, Unix, VMS).

 
     

Autorzy bêd± prawdopodobnie sprzedawaæ ten produkt osobom które

     wymagaj± komercyjnego wsparcia, ale wersja darmowa bêdzie zawsze
     dostêpna. Wszystkie pytania mo¿esz wysy³aæ na adres: 
 
-    

Sprawd¼ tak¿e rozdzia³ o  

-    "http://www.postgresql.org/devel-corner/docs/programmer/odbc.html">ODBC
-    w "Programmer's Guide".

-
     

2.2) Jakie istniej± narzêdzia pozwalaj±ce na dostêp do

          PostgreSQL przez www?
 
     przez www mo¿esz znale¼æ pod adresem:
     http://www.webreview.com

 
-    

Inny znajduje siê pod adresem: 

-    "http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.

-
     

Do integracji z www, ¶wietnym rozwi±zaniem jest PHP. Mo¿esz

     znale¼æ wiêcej informacji na ten temat pod adresem
     http://www.php.net.

 
     

Wiele osób w przypadku skomplikowanych rozwi±zañ uzywa Perl'a i

-    modu³u CGI.pl.

-
-    

2.3)  Czy istnieje jakie¶ GUI dla PostgreSQL?

-        Narzêdzie do raportowania? Interfejs dla "embedded query
-         language"?
-
-    

Mamy ca³kiem mi³y interfejs graficzny, który zosta³ nazwany

-    pgaccess i jest on dostarczany jako czê¶æ ¼róde³.
-    pgaccess posiada tak¿e generator raportów. Mo¿na go znale¼æ
-    pod adresem 
-    "http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess

-
-    

Udostêpnili¶my tak¿e ecpg, który jest "embedded SQL query

-    language interface" dla jêzyka C.

-
-    

2.4) Za pomoc± jakich jêzyków programowania

+    modu³u CGI.pl lub mod_perl.

+
+    

2.3)  Czy istnieje jakie¶ GUI dla PostgreSQL?

+
+    

Tak, istnieje kilka interfejsów graficznych dla PostgreSQL.

+    W¶ród nich PgAccess (
+    http://www.pgaccess.org), PgAdmin III (
+    href="http://www.pgadmin.org">http://www.pgadmin.org), 
+    RHDB Admin (http://sources.redhat.com/rhdb/ ) oraz Rekall (
+   http://www.thekompany.com/products/rekall/, komercyjny). Istnieje
+   tak¿e PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
+   interfejs dla PostgreSQL.
+   

+   

+   Wiêcej informacji na ten temat znajduje siê pod adresem See
+   http://techdocs.postgresql.org/guides/GUITools.
+    
+    

2.4) Za pomoc± jakich jêzyków programowania

     mo¿na siê komunikowaæ z PostgreSQL?
     
-    

Mamy wsparcie dla:

+    

Najbardziej popularne jêzyki posiiadaj± w³asny interfejs dla

+    PostgreSQL. Sprawd¼ listê rozszerzeñ dla intersuj±cego Ciebie jêzyka
+    programowania.

+    
+    

Ze ¼ród³ami PostreSQL dystrubuowane s± interfejsy dla

+    nastêpuj±cych jêzyków programowania:

+
 
     
           
  • C (libpq)
  •  
    -      
  • C++ (libpq++)
  • -
           
  • Embedded C (ecpg)
  •  
           
  • Java (jdbc)
  •  
    -      
  • Perl (perl5)
  • -
    -      
  • ODBC (odbc)
  • -
           
  • Python (PyGreSQL)
  •  
           
  • TCL (libpgtcl)
  • -
    -      
  • C Easy API (libpgeasy)
  • -
    -      
  • Embedded HTML (
    -      "http://www.php.net">PHP z http://www.php.net)
  •      
    +   Inne interfejsy s± dostêpne pod adresem: 
    +    http://gborg.postgresql.org w
    +   sekcji Drivers/Interfaces.
         
     
    -    Pytania administratora
    +    Pytania dotycz±ce administracji
     
         

    3.1) Jak mogê zainstalowaæ PostgreSQL w innej

                  lokalizacji ni¿ /usr/local/pgsql?
         SEMMNS i SEMMNI j±dra twojego systemu.

     
         

    Niedzia³aj±ce semafory mog± spowodowaæ niepoprawne zamkniêcie

    -    systemu w czasie intensywnego  korzystania  z bazy.

    +    systemu w czasie intensywnego korzystania z bazy.

    +    
         

    Je¶li tre¶æ b³êdu jest inna, mo¿e to oznaczaæ, ¿e obs³uga semaforów 

         nie zosta³a w³±czona do j±dra wcale. Zobacz PostgreSQL 
         Administrator's Guide po bardziej szczegó³owe informacje o pamiêci 
         postmaster'a,
         oraz nie umo¿liwi siê autoryzacji na podstawie adresu hostów
         modyfikuj±c odpowiednio plik
    -    $PGDATA/pg_hba.conf. To zmiany pozwol± na
    -    po³±czenia TCP/IP.

    +    $PGDATA/pg_hba.conf. To zmiany pozwol± na po³±czenia TCP/IP.

     
         

    3.6) Jak powinienem skonfigurowaæ system baz

              danych aby uzyskaæ lepsz± wydajno¶æ?
         okre¶laj±cym transakcjê - BEGIN WORK/COMMIT, s±
         traktowane jako pojedyncza transakcja. Rozwa¿ wykonanie kilku
         poleceñ/zdañ SQL w jednym bloku transakcji. To redukuje narzut
    -    powodowany przez transakcjê. Przy du¿ych zmianach w danych, warto
    +    nak³adany przez transakcjê. Przy du¿ych zmianach w danych, warto
         usun±æ i stworzyæ na nowo indeksy.

     
         

    Jest kilka opcji pozwalaj±cych na poprawienie wydajno¶ci.

         maksymaln± liczbê procesów backendu to obawa o wyczerpanie zasobów
         systemu.

     
    -    

    W wersjach PostgreSQL wcze¶niejszych ni¿ 6.5, maksymalna liczba

    -    backendów by³a ustawiona na 64, a zmiana tej warto¶ci wymaga
    -    rekompliacji po zmianie sta³ej MaxBackendId w pliku
    -    include/storage/sinvaladt.h.

    +    

    3.9)  Jakie pliki znajduj± siê w pg_temp?

     
    -    

    3.9)  Co to s± za pliki typu: 

    -    pg_sorttempNNN.NN
    -    które znajduj± siê w katalogu z plikami bazy danych?
    -
    -    

    S± to tymczasowe pliki utworzone przez executor. Dla przyk³adu,

    -    je¶li jaka¶ operacja sortowania jest wymagana do wykonania
    +    

    Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla 

    +    przyk³adu, je¶li jaka¶ operacja sortowania jest wymagana do wykonania
         ORDER BY, a samo sortowanie wymaga wiêcej  miejsca ni¿
    -    paratmetr backendu
    +    parametr backendu
         -S ustawi³ do wykorzystania, wtedy tymczasowe pliki s± u¿ywane
         do przechowywania tych danych.

     
         poprawnie podczas operacji sortowania. Je¶li w danym momencie nie
         dzia³aj± ¿adne procesy backendów mozesz spokojnie usun±æ pliki
         pg_tempNNN.NN.

    +
    +    

    3.9) Dlaczego konieczne jest przy upgradzie

    +         PostgreSQL korzystanie ze skryptów dump i restore?
    +    

    +    Twórcy PostgreSQL dokonuj± jedynie ma³ych zmian pomiêdzy ma³ymi
    +    upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
    +    korzystania z dump i restore. Przy wiêkszych zmianach, np. z wersji
    +    7.2 do 7.3, czêsto zmianymaj± wp³yw na format przechowywanych danych.
    +    Zmiany te s± na tyle skomplikowane, ¿e nie utrzymujemy zgodo¶ci z
    +    poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
    +    takiej postaci, w której ³atwe jest ich zaimportowanie do nowszych
    +    wersji bez k³opotu.
    +    

    +    

    +    W wydaniach gdzie zmiany nie dotycz± formatu danych na dysku, mo¿na
    +    wykorzystaæ skryptu pg_upgrade, do upgradu bez u¿ycia dump/restore.
    +    Dokumentacja do danego wydania zawiera informacjê czy mo¿liwe jest
    +    u¿ycie pg_upgrade.
    +    

         
     
         Pytania dotycz±ce u¿ywania
         ORDER BY, PostgreSQL mo¿e wykorzystaæ jedynie kilka
         pierwszych rzêdów, byæ mo¿e bêdzie konieczno¶æ wykonania zapytania do
         momentu a¿ zostan± znalezione po¿±dane wyniki.

    +    

    +    Aby otrzymaæ losowy rz±d, u¿yj:
    +    
    +    SELECT col
    +    FROM tab
    +    ORDER BY random()
    +    LIMIT 1;
    +    
    +   

     
         

    4.3) Jak mogê uzyskaæ listê wszystkich tabel

         czy  innych rzeczy pod psql?
         -E wtedy po wykonaniu polecenia z backslashem wy¶wietlane
         bêdzie zapytanie, które w rzeczywisto¶ci jest wykonywane.

     
    -    

    4.4) Jak usun±æ kolumnê z tabeli?

    -    
    -    

    Nie mamy zaimplementowanego ALTER TABLE DROP

    -    COLUMN, ale mo¿esz zrobiæ tak:

    +    

    4.4) Jak usun±æ kolumnê z tabeli lub zmieniæ

    +    jej typ?
    +
    +    

    DROP COLUMNT zosta³o dodane w wersji 7.3 przy poleceniu ALTER

    +    TABLE DROP COLUMN. We wcze¶ñiejszych wersjach mo¿esz zrobiæ tak:
    +    

     
    -    SELECT ...  -- wybierz zawarto¶æ wszystkich kolumn poza t± jedn± której chcesz siê pozbyæ
    +    BEGIN;
    +    LOCAL TABLE old_table;
    +    SELECT ...  -- wybierz wszystkie kolumny poza t± jedn± której chcesz siê pozbyæ
         INTO TABLE new_table
         FROM old_table;
         DROP TABLE old_table;
         ALTER TABLE new_table RENAME TO old_table;
     
    +   

    +   Aby zmieniæ typ danych kolumny mo¿esz zrobiæ tak:
    +   

    +   
    +   BEGIN;
    +   ALTER TABLE tab ADD COLUMN new_col new_data_type;
    +   UPDATE tab SET new_col = CAST(old_col AS new_data_type);
    +   ALTER TABLE tab DROP COLUMN old_col;
    +   COMMIT;
    +   
    +   

     
         

    4.5) Jaki jest maksymalny rozmiar dla rzêdu,

              tabeli i bazy danych?
         
         

    Oto wszystkie ograniczenia:

     
    -    Maksymalny rozmiar dla bazdy danych?     nieograniczony ( istniej± bazy danych o wielko¶ci 500 GB databases )
    -    Maksymalny rozmiar dla tabeli?           16 TB
    -    Maksymalny rozmiar dla rzêdu?            nieograniczony w 7.1 i pó¼niejszych
    -    Maksymalny rozmiar pola?                 1 GB w 7.1 and later
    +    Maksymalny rozmiar dla bazdy danych?     nieograniczony ( istniej±
    +    bazy danych o wielko¶ci 32 TB databases )
    +    Maksymalny rozmiar dla tabeli?           32 TB
    +    Maksymalny rozmiar dla rzêdu?            1.6 TB
    +    Maksymalny rozmiar pola?                 1 GB
         Maksymalna liczba rzêdów w tabeli?       nieograniczona
    -    Maksymalna liczba kolumn w tabeli?    250-1600 w zale¿ono¶ci od typów kolumn
    -    Makasymalna liczba indeksów na tabeli?    nieograniczona
    +    Maksymalna liczba kolumn w tabeli?       250-1600 w zale¿ono¶ci od typów kolumn
    +    Makasymalna liczba indeksów na tabeli?   nieograniczona
     
     
        Oczywi¶cie "nieograniczony" nie jest prawd± tak do koñca, istniej±
        ograniczenia wynikaj±ce z dostêpnego miejsca na dysku, pamiêci/swapa.
        Kiedy wielko¶ci te bêd± bardzo du¿e mo¿e odbiæ siê to na wydajno¶ci.
     
    -    

    Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu

    +    

    Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu

         operacyjnego wsparcia dla du¿ych plików. Du¿e tabele s± przechowywane
         jako pliki o rozmiarze 1 GB, wiêc ograniczenia co do wielko¶ci plików
         narzucone przez system plików nie s± istotne.

         

    Indeksy nie powoduj± du¿ego narzutu na zajmowane miejsce, 

         ale zawieraj± pewne dane,
         wiêc w pewnych przypadkach moga byæ ca³kiem du¿e.

    +    

     NULLe s± przechowywane jako mapy bitowe, wiêc u¿ywaj± bardzo ma³o

    +    miejsca.
    +    

     
         

    4.7) Jak mogê sprawdziæ jakie tabele, klucze,

              bazy danych i u¿ytkownicy s± utworzeni?
         nastêpuje sortowanie jest zazwyczaj szybsze niê wyszukiwanie za
         pomoc± indeksu na du¿ej tabeli.

         Jakkolwiek LIMIT w po³±czeniu z ORDER BY
    -   czêsto bêdzie wykorzystywa³ indeksów poniew±z jedynie ma³a czê¶c z
    -   tabeli jest zwracana.
    +   czêsto bêdzie wykorzystywa³ indeksy poniewa¿ jedynie ma³a czê¶æ z
    +   tabeli jest zwracana. W rzeczywisto¶ci, chocia¿ MAX() i MIN() nie
    +   u¿ywaj± indeksów, mo¿liwe jest aby zwróciæ te warto¶ci u¿ywaj±c
    +   indeksów poprzez u¿ycie ORDER BY i LIMIT.
    +   

    +   
    +    SELECT col
    +    FROM tab
    +    ORDER BY col [ DESC ]
    +    LIMIT 1;                    
    +   
    +   

    +   Je¶li uwa¿asz, ¿e optimizer myli siê wybieraj±c sequential scan, u¿yj
    +   SET enable_seqscan TO 'off' i uruchom testy aby sprawdziæ czy wtym
    +   wypadku zapytanie bêdzie szybciej wykonywane.
     
         

    Kiedy u¿ywa siê operatorów dopasuj±cych takich jak

    -    LIKE lub ~, indeksy bêd± u¿ywane jedynie je¶li 
    -    pocz±tek wyszukiwania jest oparty na pocz±tku ³añcucha tekstu.
    -    Dlatego, aby u¿ywac indeksów,
    -    dopasowania operatorem LIKE nie mog± siê zaczynaæ
    -    %, a dopasowania operatorem ~ (dopasowania regularne)
    -    musz± siê zaczynaæ znakiem specjalnym ^.

    -
    +    LIKE lub ~, indeksy bêd± u¿ywane jedynie w
    +    pewnych wypadkach:

    +    
      +    
    • Pocz±tek wyszukiwania jest oparty na pocz±tku ³añcucha tekstu.
    • +    
        +       
      • wzorce LIKE nie mog± siê zaczynaæ %
      • +       
      • dopasowania operatorem ~ (dopasowania regularne)
      • +       musz± siê zaczynaæ znakiem specjalnym ^.

        +    
        +    
      • Pocz±tek wyszukiwania nie mo¿e siê zaczynaæ od klas znaków, np.
      • +    [a-e].
        +    
      • Case-insensitive searches such as ILIKE and ~* do not utilise
      • +    indexes. Instead, use functional indexes, which are described in
        +    section 4.12.
        +    
      • Standardowe locale C musi byæ uzyte przy wykonywaniu initdb
      • +    
             

        4.9) Jak mogê sprawdziæ w jakis sposób "query

             optimizer" wykonuje moje zapytanie?
         
             

        4.12) Jak mogê u¿ywaæ wyra¿eñ regularnych w

                  zapytaniach i zapytañ case-insensitive w wyra¿eniach
                    regularnych?
        -                jak korzystaæ z indeksów dla zapytañ case-insensitive?
        +                Jak korzystaæ z indeksów dla zapytañ case-insensitive?
         
             

        Operator ~ moze byæ wykorzystywany do wyszukiwania za

             pomoc± wyra¿eñ regularnych, a 
             ~* do wyszukiwania case-insensitive z wyra¿eniami
             regularnymi. 
             Wariant case-insensitive dla LIKE zosta³ nazwany
        -    ILIKE i jest dostêpny w PostgreSQL 7.1 i pó¼niejszych
        -    wersjach.

        +    ILIKE.

         
             

        Porównania case-insensitive s± zazwyczaj wykonywane w nastêpuj±cy

             sposób:

         
         Type            Nazwa wewnêtrzna   Uwagi
         --------------------------------------------------
        -"char"          char                 1 znak
        -CHAR(#)         bpchar             wype³niane pustymi znakami do podanej d³ugo¶ci
        -VARCHAR(#)      varchar            rozmiar okre¶la maksymaln± d³ugo¶æ, nie ma tutaj wype³niania
        +VARCHAR(n)      varchar            rozmiar okre¶la maksymaln± d³ugo¶æ, nie ma tutaj wype³niania
        +CHAR(n)         bpchar             wype³niane pustymi znakami do podanej d³ugo¶ci
         TEXT            text               bez limitu na d³ugo¶æ ³añcucha
         BYTEA           bytea              zmiennej d³ugo¶ci tablica bajtów (null-byte safe)
        +"char"          char                 1 znak
         
         
             

        Je¶li bêdziesz przegl±daæ katalogi systemowe lub komunikaty o

             b³êdach czêsto spotkasz siê z podanymi powy¿ej nazwami
             wewnêtrznymi.

         
        -    

        Ostatnie cztery typy powy¿ej to tzw typy "varlena" (np. pierwsze

        +    

        Pierwsze cztery typy powy¿ej to tzw typy "varlena" (np. pierwsze

             cztery bajty na dysku to d³ugo¶æ, po których jest data). Dlatego
             faktyczna d³ugo¶c takiego ³añcucha jest trochê wiêksza ni¿
             zadeklarowany rozmiar. Te typy tak¿e podlegaj± kompresji lub mog± byæ
             przechowywane out-of-line jako TOAST, wiêc faktyczne
             zu¿ycie miejsca na dysku mo¿e byæ mniejsze ni¿ oczekiwane.

         
        -    

        CHAR() jast najlepszym typem do przechowywania

        -    ³añcuchów o tej samej d³ugo¶ci. VARCHAR() jest
        +    VARCHAR(n) jest
             najodpowiedniejszy do przechowywania ³añcuchów o ró¿nej d³ugo¶ci
        -    ale okre¶la on maksymaln± jego d³ugo¶æ. TEXT jest
        -    najlepszy dla ³añcuchów o dowolnej d³ugo¶ci, nie przekraczaj±cej 1GB.
        -    BYTEA s³u¿y do przechowywania danych binarnych,
        -    w szczególno¶ci dla danych zawieraj±cych NULL bajty.

        +    ale okre¶la on maksymaln± jego d³ugo¶æ. 
        +    
        +    TEXT jest najlepszy dla ³añcuchów o dowolnej d³ugo¶ci,
        +    nie przekraczaj±cej 1GB.

        +
        +   

        +   CHAR(n) jast najlepszym typem do przechowywania
        +    ³añcuchów o tej samej d³ugo¶ci. CHAR(n) wype³nia dane do ¿adanej
        +    d³ugo¶ci, podczas gdy VARCHAR(n) przechowuje jedynie dane
        +    dostarczone.
        +   
        +   BYTEA s³u¿y do przechowywania danych binarnych,
        +    w szczególno¶ci dla danych zawieraj±cych NULL bajty.
        +    Wszystkie typy opisane tutaj maja podobne charakterystyki je¶li
        +    chodzi o wydajno¶æ.

         
             

        4.15.1) Jak mogê utworzyæ pole które samo

                  zwiêksza swoj± warto¶æ?
        @@ -1188,7 +1259,7 @@ BYTEA           bytea              zmiennej d
         
             

        4.15.4) Dlaczego numery sekwencji nie s±

                  ponownie u¿ywane przy przerwaniu transakcji?
        -               Sk±d siê bior± luki w numerowaniu kolumny tabeli
        +       Sk±d siê bior± luki w numerowaniu kolumny tabeli
                             sekwancjami/SERIALem?
         
             

        Aby poprawiæ zbie¿no¶æ (concurrency), warto¶ci sekwencji s±

        @@ -1197,8 +1268,7 @@ BYTEA           bytea              zmiennej d
             numerowaniu z przerwanych transakcji.

         
             

        4.16) Co to jest OID? Co to

        -    jest
        -        TID?
        +    jest TID?
         
             

        OID s± PostgreSQL'owym rozwi±zaniem problemu

             unikalnych numerów rzêdów. Ka¿dy rz±d tworzony przez PostgreSQL
        @@ -1274,15 +1344,15 @@ BYTEA           bytea              zmiennej d
             
         
             

        Listê terminów zwi±zanych z bazami danych mo¿esz znale¼æ pod tym

        -    adresem: href=
        -    "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html

        +    adresem:
        +    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.
         
             

        4.18) Sk±d bierze siê ten b³±d "ERROR:

             Memory exhausted in AllocSetAlloc()"?
         
        -    

        Je¶li u¿ywasz wersji starszej ni¿ 7.1, upgrade mo¿e rozwi±zaæ ten

        -    problem. Jest tak¿e mozliwe, ¿e po prostu wyczerpa³a Ci siê pamiêæ
        -    wirtualna (virtual memory) w systemie lub Twój kernel ma zbyt nisko
        +    

        +    Prawdopodobnie wyczerpa³a Ci siê pamiêæ wirtualna (virtual memory) 
        +    w systemie lub Twój kernel ma zbyt nisko
             ustawione limity dla pewnych zasobów. Spróbuj wykonaæ nastêpuj±ce
             polecenia zanim uruchomisz postmaster'a:

         
        @@ -1332,29 +1402,38 @@ BYTEA           bytea              zmiennej d
             

        4.22) Dlaczego zapytania u¿ywaj±ce

                 IN sa takie wolne?
         
        -    

        Obecnie ³±czymy podzapytania w outer queries poprzez sekwencyjne

        -    przeszukiwanie wyników podzapytania dla ka¿dego rzêdu z outer query. 
        -    Mo¿na to omin±æ zastêpuj±c IN przez 
        +    

        W wersjach wcze¶niejszych ni¿ 7.4 ³±czymy podzapytania w outer queries 

        +    poprzez sekwencyjne przeszukiwanie wyników podzapytania dla ka¿dego rzêdu 
        +    z outer query. Je¶li podzapytanie zwraca jedynie kilka rzêdów a
        +    zewnêtrzne zapytanie zwraca ich wiele, IN jest najszybsze.
        +    Aby przyspieszyæ inne zapytania mo¿na zast±piæ IN przez 
             EXISTS:

         
         SELECT *
             FROM tab
        -    WHERE col1 IN (SELECT col2 FROM TAB2)
        +    WHERE col IN (SELECT subcol FROM subtab)
         
         
             na: 
         
         SELECT *
             FROM tab
        -    WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
        +    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
         
         
        -   Mamy zamiar poprawiæ to ograniczenie w przysz³ych wydaniach.
        -
        +   

        +   Aby to rozwi±zanie by³o szybkie, subcol powinna byæ kolumn±
        +   indeksowan±.
        +   

        +   

        +   W wersji 7.4 i pó¼niejszych, IN w rzeczywisto¶ci u¿ywa tej samej
        +   wyrafinowanej techniki ³±czenia jak normalne zapytania i jest
        +   preferowane nad u¿ywaniem EXISTS.
        +   

             

        4.23) Jak wykonaæ "outer join"?

         
        -    

        PostgreSQL 7.1 i pó¼niejsze wersje maj± zaimplementowane outer join

        -    wykorzystuj±c standardow± sk³adnie SQL. Poni¿ej dwa przyk³ady:

        +    

        PostgreSQL ma zaimplementowane outer join

        +    wykorzystuj±c standardow± sk³adniê SQL. Poni¿ej dwa przyk³ady:

             
         
             SELECT *
        @@ -1367,7 +1446,7 @@ BYTEA           bytea              zmiennej d
         
         
             

        Te dwa identyczne zapytania ³±cz± kolumnê t1.col z kolumn± t2.col,

        -    ale tak¿e zwróc± niepo³±czone rzêdy w t1 (te które nie pasuj± w t2).
        +    ale tak¿e zwróc± niepo³±czone rzêdy w t1 (te, które nie pasuj± w t2).
             RIGHT join doda³by niepo³±czone rzêdy z tabeli t2.
             FULL join zwróci³by rzêdy plus dodatkowo wszystkie
             rzêdy z tabel t1 i t2. S³owo OUTER jest opcjonalne i
        @@ -1401,19 +1480,63 @@ BYTEA           bytea              zmiennej d
             katalogi systemowe, nie jest do koñca jasne jak zapytanie pomiêdzy
             ró¿nymi bazami danych powinno siê zachowywaæ.

             
        -    

        Oczywi¶cie klient mo¿e ³±czyæ siê z ró¿nymi bazami danych i ³±czyæ

        -    informacjê w ten sposób uzyskan±.

        +    

        contrib/dblink pozwala na wykonywanie zapytañ poprzez ró¿ne

        +    bazy danych wywo³uj±c odpowiednie funkcje. Oczywi¶cie klient mo¿e ³±czyæ 
        +    siê z ró¿nymi bazami danych i ³±czyæ informacjê w ten sposób uzyskan±
        +    po stronie klienta.

         
             

        4.25) Jak zwróciæ w funkcji wiele rzêdów lub

                  kolumn?
         
        -     

        Mo¿esz zwracaæ zbiory z funkcji PL/pgSQL u¿ywaj±c 

        -     refcursors. Zobacz 
        -     href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
        -     http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,
        -     sekcjê 23.7.3.3.

        -
        +     

        Mo¿esz w ³atwy sposób zwracaæ wiele rzêdów lub kolumn u¿ywaj±c

        +     funkcji z: http://techdocs.postgresql.org/guides/SetReturningFunctions.
              
        +   

        4.26) Dlaczego nie mogê w sposób pewny

        +        tworzyæ/usuwaæ tabel tymczasowych w funkcjach PL/PgSQL?
        +   

        +   PL/PgSQL przechowuje w cache zawarto¶æ funkcji, niepo¿±danym efektem tego
        +   jest to, ¿e gdy taka funkcja korzysta z tabel tymczasowych, które s±
        +   pó¼niej kasowane i odtwarzane, a funkcja wywo³ywana jest ponownie,jej
        +   wywo³anie nie powiedzie siê poniewa¿ cachowana funkcja wci±¿ bêdzie
        +   wskazywaæ na stara tablicê tymczasow±. Rozwi±zaniem tego problemu jest
        +   u¿ywanie EXECUTE aby korzystaæ z tabel tymczasowych w PL/PgSQL. To
        +   spowoduje, ¿e zapytanie bêdzie parsowane przy ka¿dym wywo³aniu
        +   funkcji.
        +   

        +   
        +   

        4.27) Jakie s± mo¿liwo¶ci replikacji w PostgreSQL?

        +   

        +   Jest kilka opcji aby stosowaæ replikacjê typu master/slave. Ten typ
        +   pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
        +   slave mo¿e jedynie te zmiany odczytywaæ. Na stronie 
        +   
        +   HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research
        +   znajduje siê ich lista. Replikacja typu multi-master jest w trakcie
        +   prac, opis projektu znajduje siê pod adresem: 
        +   HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
        +http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
        +   

        +
        +   

        4.28) Jakie mo¿liwo¶ci szyfrowania oferuje

        +   PostgreSQL?
        +   

        +   
          +   
        • contrib/pgcrypto zawiera wiele funkcji za pomoc±, których mo¿emy u¿ywaæ
        • +   kryptografii w zapytaniach SQL.
          +   
        • Aby szyfrowaæ transmisjê od klienta do serwera, ten musi mieæ
        • +   ustawion± opcjê ssl na true w pliku postgresql.conf, odpowiedni
          +   wpis host lub hostssl musi wystêpowaæ w pliku pg_hba.conf, oraz
          +   sslmode nie mo¿e byæ wy³±czone w kliencie. (Warto zwróciæ uwagê, ¿e
          +   mo¿liwe jest tak¿e u¿ywanie transportów szyfruj±ców przez strony
          +   trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
          +   przez PostgreSQL).
          +   
        • Has³a u¿ytkowników bazy danych s± automatycznie szyfrowane od
        • +   wersji 7.3. W poprzednich wersjach, nale¿y t± funkcjonalno¶æ poprzez
          +   w³±czenie opcji PASSWORD_ENCRYPTION w postgresql.conf. 
          +   
        • Serwer mo¿e dzia³aæ u¿ywaj±c szyfrowanego systemu plików.
        • +   
          +

          +
               Rozwijanie PostgreSQL
           
               

          5.1) Napisa³em w³asn± funkcjê. Kiedy u¿yjê jej

          @@ -1432,8 +1555,12 @@ BYTEA           bytea              zmiennej d
               

          5.3) Jak napisaæ funkcjê C zwracaj±c± krotkê

                    (tuple)?
           
          -    

          To wymaga wysi³ku tak olbrzymiego, ¿e nawet autorzy nigdy tego nie

          -    prubowali, chocia¿ z zalo¿eñ wynika, ¿e jest to mo¿liwe.

          +   

          +   W wersjach PostgreSQL od numeru 7.3, funckje zwracaj±ce tabele s± w
          +   pêlni wspierane w C, PL/PgSQL i SQL. Sprawd¼ w Programmer's Guide aby
          +   uzyskaæ wiêcej informacji. Przyk³ad funkcji napisanej w C zwracaj±cej
          +   tabelê zosta³ umieszczony w contrib/tablefunc.
          +   

           
               

          5.4)  Zmieni³em plik ¼ród³owy. Dlaczego po

                    rekompilacji nie widaæ zmiany?
          @@ -1443,6 +1570,8 @@ BYTEA           bytea              zmiennej d
               make clean, a nastêpnie ponownie make.
               Je¶li u¿ywasz GCC mo¿esz u¿yæ opcji
               --enable-depend przy wykonywaniu configure aby
          +    kompilator móg³ okre¶liæ zale¿no¶ci samodzielnie.
          +