summaryrefslogtreecommitdiff
path: root/doc/src/FAQ/FAQ_czech.html
blob: 9eea7cee0eab22c5846b83b81ca26977c52d9cdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
  <HEAD>
    <META name="generator" content="HTML Tidy, see www.w3.org">
    <META http-equiv="Content-Type" content="text/html; charset="iso-8859-2">
    <META http-equiv="Content-language" content="cs">
    <META name="description" lang="en" content="Czech translation of FAQ for PostgreSQL"> 
    <META name="description" lang="cs" content="Èeský pøeklad FAQ PostgreSQL">

    <TITLE>PostgreSQL FAQ</TITLE>
  </HEAD>

  <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
  alink="#0000ff">


   <H1>Èasto kladené dotazy (FAQ) PostgreSQL</H1>

   <P>Poslední aktualizace: Støeda 23. èervna 21:10:00 EST 2004</P>

   <P>Souèasný správce: Bruce Momjian (<A href=
   "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)</P>

   <P>Pøelo¾il: Pavel Stìhule (<A href=
   "mailto:stehule@kix.fsv.cvut.cz">stehule@kix.fsv.cvut.cz</A>)</P>

   <P>Aktuální verzi tohoto dokumentu naleznete na adrese: <A href=
   "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>. 
   Èeský pøeklad na adrese: <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html">
   http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html</A>.</P>

   <P>Odpovìdi na dotazy relevantní ke konkrétním platformám
   lze nalézt na adrese: <A href="http://www.PostgreSQL.org/docs/index.html">
   http://www.PostgreSQL.org/docs/index.html</A>.</P>
   <HR>
   <H2 align="center">Obecné otázky</H2>

   <A href="#1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?<BR>
   <A href="#1.2">1.2</A>) Jaká je licence na PostgreSQL?<BR>
   <A href="#1.3">1.3</A>) Na kterých Unixex lze spustit PostgreSQL?<BR>
   <A href="#1.4">1.4</A>) Které ne-unixové platformy jsou podporované?<BR>
   <A href="#1.5">1.5</A>) Kde mohu získat PostgreSQL?<BR>
   <A href="#1.6">1.6</A>) Kde mohu získat podporu?<BR>
   <A href="#1.7">1.7</A>) Kde je poslední verze?<BR>
   <A href="#1.8">1.8</A>) Jaká je dostupná dokumentace?<BR>
   <A href="#1.9">1.9</A>) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?<BR>
   <A href="#1.10">1.10</A>) Jak se mohu nauèit SQL?<BR>
   <A href="#1.11">1.11</A>) Nemá PostgreSQL problémy s rokem 2000?<BR>
   <A href="#1.12">1.12</A>) Jak se pøipojit k vývojáøskému týmu?<BR>
   <A href="#1.13">1.13</A>) Kam podat report o chybì?<BR>
   <A href="#1.14">1.14</A>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?<BR>
   <A href="#1.15">1.15</A>) Jak lze finanènì pomoci PostgreSQL?<BR>

   <H2 align="center">User client dotazy</H2>

   <A href="#2.1">2.1</A>) Kde naleznu ODBC ovladaèe pro PostgreSQL?<BR>
   <A href="#2.2">2.2</A>) Jaké nástroje lze pou¾ít pro PostgreSQL a web?<BR>
   <A href="#2.3">2.3</A>) Existuje grafické rozhraní pro PostgreSQL?<BR>
   <A href="#2.4">2.4</A>) Které programovací jazyky mají podporu pro PostgreSQL?<BR>

   <H2 align="center">Administrativní dotazy</H2>
 
   <A href="#3.1">3.1</A>) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?<BR>
   <A href="#3.2">3.2</A>) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo
   core dump. Proè?<BR>
   <A href="#3.3">3.3</A>) Pøi startu postmastera dostanu hlá¹ení o chybì
   IpcMemoryCreate. Proè?<BR>
   <A href="#3.4">3.4</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate. 
   Proè?<BR>
   <A href="#3.5">3.5</A>) Jak povolit nebo zakázat pøístup z jiných stanic?<BR>
   <A href="#3.6">3.6</A>) Jak ladit databázový stroj na lep¹í výkon?<BR>
   <A href="#3.7">3.7</A>) Jaké jsou mo¾nosti ladìní?<BR>
   <A href="#3.8">3.8</A>) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?<BR>
   <A href="#3.9">3.9</A>) K èemu slou¾í adresáø pgsql_tmp?<BR>
   <A href="#3.10">3.10</A>) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade
   mezi velkými verzemi PostgreSQL?<BR>

   <H2 align="center">Provozní dotazy</H2>

   <A href="#4.1">4.1</A>) Èím se li¹í binární a normální kurzor?<BR>
   <A href="#4.2">4.2</A>) Jak získat pouze první øádek dotazu? Náhodný øádek?<BR>
   <A href="#4.3">4.3</A>) Jak získám seznam tabulek nebo jinak jak jej získá psql?<BR>
   <A href="#4.4">4.4</A>) Jak odstraním sloupec tabulky, jak zmìním jeho typ?<BR>
   <A href="#4.5">4.5</A>) Jaká je maximální velikost øádku, tabulky a databáze?<BR>
   <A href="#4.6">4.6</A>) Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního
   textového souboru?<BR>
   <A href="#4.7">4.7</A>) Jak získám seznam vytvoøených tabulek, indexù,
   databází?<BR>
   <A href="#4.8">4.8</A>) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?<BR>
   <A href="#4.9">4.9</A>) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?<BR>
   <A href="#4.10">4.10</A>) Co to je R-tree index?<BR>
   <A href="#4.11">4.11</A>) Co je Genetic Query Optimizer?<BR>
   <A href="#4.12">4.12</A>) Jak provést vyhledávání regulárního výrazu case sensitiv,
   insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?<BR>
   <A href="#4.13">4.13</A>) Jak v dotazu detekovat, ¾e polo¾ka je NULL?<BR>
   <A href="#4.14">4.14</A>) Jaké jsou rozdíly mezi rùznými znakovými typy?<BR>
   <A href="#4.15.1">4.15.1</A>) Jak vytvoøit serial/auto-increment pole?<BR>
   <A href="#4.15.2">4.15.2</A>) Jak získat hodnotu SERIAL po vlo¾ení øádku?<BR>
   <A href="#4.15.3">4.15.3</A>) Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s
   jinými u¾ivateli?<BR>
   <A href="#4.15.4">4.15.4</A>) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce?
   Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?<BR>
   <A href="#4.16">4.16</A>) Co to je OID? Co je to TID?<BR>
   <A href="#4.17">4.17</A>) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?<BR>
   <A href="#4.18">4.18</A>) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
   AllocSetAlloc()"?<BR>
   <A href="#4.19">4.19</A>) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?<BR>
   <A href="#4.20">4.20</A>) Proè operace s velkými objekty konèí "invalid large obj descriptor"?<BR>
   <A href="#4.21">4.21</A>) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?<BR>
   <A href="#4.22">4.22</A>) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?<BR>
   <A href="#4.23">4.23</A>) Jak provést vnìj¹í spojení (outer join)?<BR>
   <A href="#4.24">4.24</A>) Jak provést dotaz napøíè nìkolika databázemi?<BR>
   <A href="#4.25">4.25</A>) Mù¾e funkce vrátit více øádkù nebo sloupcù?<BR>
   <A href="#4.26">4.26</A>) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky 
   v PL/pgSQL funkcích?<BR>
   <A href="#4.27">4.27</A>) Jaké jsou mo¾nosti replikace databází?<BR>
   <A href="#4.28">4.28</A>) Jaké jsou mo¾nosti ¹ifrování databází?<BR>

   <H2 align="center">Roz¹iøování PostgreSQL</H2>

   <A href="#5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?<BR>
   <A href="#5.2">5.2</A>) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
   PostgreSQL?<BR>
   <A href="#5.3">5.3</A>) Jak napsat funkci v C vracející ntici?<BR>
   <A href="#5.4">5.4</A>) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci
   vzata v potaz. Proè?<BR>

   <HR>
 
   <H2 align="center">Obecné otázky</H2>

   <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H4>

   <P>PostgreSQL se vyslovuje <I>Post-Gres-Q-L</I>. Zvukový záznam je 
   dostupný na adrese <A href="http://www.postgresql.org/postgresql.mp3"></A>.</P>

   <P>PostgreSQL vychází z databáze POSTGRES (a stále je nìkdy oznaèován
   zjednodu¹enì jako Postgres) - výzkumného prototypu <SMALL>DBMS</SMALL> nové
   generace. Z postgresu byl pøevzat silný datový model a bohatý soubor
   datových typù a jeho dotazovací jazyk PostQuel byl nahrazen roz¹íøenou
   podmno¾inou jazyka <SMALL>SQL</SMALL>. PostgreSQL lze pou¾ívat bez omezení a jeho
   zdrojové kódy jsou volnì k dispozici.</P>

   <P>PostgreSQL vyvýjí tým vývojáøù pøihlá¹ených do vývojáøské konference
   PostgreSQL. Souèasným koordinátorem je Marc G. Fournier (<A href=
   "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). 
   (viz <A href="#1.6">1.6</A> - jak se zapojit). Tento tým je zodpovìdný za ve¹kerý vývoj 
   PostgreSQL. Jedná se o veøejný projekt, který není øízen ¾ádnou firmou.
   Pokud se chcete zapojit, pøeètìte si  developer's FAQ na adrese <A href=
   "http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A></P>

   <P>Autory první verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
   portace, testování, ladìní a roz¹iøování kódu se zapojilo mnoho dal¹ích
   vývojáøù . Pùvodni kód Postgresu, ze kterého PostgreSQL vychází, je
   výsledkem úsilí mnoha studentù a programátorù pracujících pod vedením
   prof. Michaela Stonebrakera na University of California v Berkley.</P>

   <P>Pùvodní název software z Berkley byl Postgres. Po pøidání jazyka <SMALL>SQL</SMALL> se
   název zmìnil na Postgres95. Koncem roku 1996 byl RDBMS pøejmenován na
   PostgreSQL.</P>

   <H4><A name="1.2">1.2</A>) Jaká je licence na PostgreSQL?</H4>

   <P>PostgreSQL je pøedmìtem následujících autorských práv:</P>

   <P>Dílèí Copyright (c) 1996-2006, PostgreSQL Global Development Group
   Dílèí Copyright (c) 1994-6, Regents of the University of California</P>

   <P>Udìluje se oprávnìní k u¾ití, rozmno¾ování, provádìní úprav a
   roz¹iøování tohoto softwaru a dokumentace k nìmu, pro jakékoli úèely,
   bez licenèního poplatku a bez písemné licenèní smlouvy, za podmínky, ¾e
   na v¹ech jeho kopiích je uvedeno oznámení o vý¹e uvedených právech,
   jako¾ i obsah tohoto a dvou následujících odstavcù.</P>

   <P>THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ®ÁDNÉM
   PØÍPADÌ ODPOVÌDNA ®ÁDNÉ TØETÍ OSOBÌ ZA PØÍMOU, NEPØÍMOU, ZVLÁ©TNÍ,
   NAHODILOU NEBO VÝSLEDNOU ©KODU, VÈETNÌ U©LÉHO ZISKU, ZPùSOBENOU U®ITÍM
   TOHOTO SOFTWARU A DOKUMENTACE K NÌMU, A TO I V PØÍPADÌ, ®E THE
   UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MO®NOSTI VZNIKU TAKOVÉ
   ©KODY.</P>

   <P>HE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
   NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VýROBKU KE SPECIFICKýM
   ÚÈELùM. NÍ®E UVEDENý SOFTWARE JE POSKYTNUT "JAK STOJÍ A LE®Í" A THE
   UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO ÚDR®BU, PODPORU,
   AKTUALIZACI, VYLEP©ENÍ NEBO MODIFIKACI.</P>

   <P>Vý¹e uvedené je BSD licence, bì¾ná licence otevøeného zdroje. Není zde
   ¾ádné omezení ohlednì u¾ití kódu zdroje. Jsme s tím spokojeni a nemáme v
   úmyslu na této skuteènosti cokoli mìnit.</P>

   <H4><A name="1.3">1.3</A>) Na kterých Unixex lze spustit PostgreSQL?</H4>

   <P>PostgreSQL bì¾í na v¹ech moderních unixových platformách. V instalaèních
   instrukcích naleznete aktuální seznam v¹ech platforem na kterých byla
   testováním ovìøena funkcionalita PostgreSQL.</P>

   <H4><A name="1.4">1.4</A>) Které ne-unixové platformy jsou podporované?</H4>

   <P><STRONG>Klient</STRONG></P>

   <P>Knihovna <I>libpq</I>, psql a nìkteré dal¹í moduly byly pøelo¾eny pro MS
   Windows. Klienta lze provozovat na MS Windows, ten prostøednictvím
   TCP/IP protokolu komunikuje se serverem bì¾ícím na nìkteré z
   podporovaných Unixových platforem. K pøekladu lze pou¾ít <I>win32.mak</I> a
   Win32 knihovny <I>libpq</I> a <I>psql</I>. K databázi PostgerSQL lze pøistupovat skrze
   rozhraní <SMALL>ODBC</SMALL>.</P>

   <P><STRONG>Server</STRONG></P>

   <P>Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
   Cygwin, Cygnus Unix/NT porting library. Více <I>pgsql/doc/FAQ_MSWIN</I> v
   distribuci nebo MS Windows FAQ na adrese
   <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>

   <P>Na nativním portu pro MS Win NT/2000/XP se pracuje. Dal¹í informace
   o aktuálním stavu PostgreSQL pro Windows naleznet na adrese
   <A href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> a
   <A href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
   http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.</P>

   <P>Existující port pro Novell Netware 6 naleznete na
   <A href="http://forge.novell.com">http://forge.novell.com</A>.</P>

   <H4><A name="1.5">1.5</A>) Kde mohu získat PostgreSQL?</H4>

   <P>Primárním anonymním ftp serverem pro PostgreSQL je
   <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>. 
   Seznam zrcadel naleznete na na¹ich webových stránkách.</P>

   <H4><A name="1.6">1.6</A>) Kde mohu získat podporu?</H4>

   <P>Hlavní mailová konference je: <A href="mailto:pgsql-general@PostgreSQL.org">
   pgsql-general@PostgreSQL.org</A>. Slou¾í k
   diskuzím ohlednì PostgreSQL. Pøihlásíte se zasláním mailu obsahující
   následující øádky v tìle dopisu (nikoliv v záhlaví - subjectu):</P>
<PRE>
    subscribe
    end
</PRE>
<P>na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
   pgsql-general-request@PostgreSQL.org</A>.</P>

   <P>Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
   zpráv.</P>

   <P>Konference psql-bugs je urèena k zasílání zpráv o chybách. Pro
   pøihlá¹ení po¹lete mail se stejným obsahem jako v pøedchozím pøípadì na
   adresu <A href="mailto:pgsql-bugs-request@PostgreSQL.org">
   pgsql-bugs-request@PostgreSQL.org</A>.</P>

   <P>Do vývojáøské konference se pøihlásíte odesláním dopisu s ji¾ zmiòovaným
   obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.</P>

   <P>Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL:</P>
   <BLOCKQUOTE>
   <P><A href="http://www.postgresql.org">http://www.postgresql.org</A></P>
   </BLOCKQUOTE>
   <H4><A name="1.7">1.7</A>) Jaká je poslední verze?</H4>

   <P>Poslední verze PostgreSQL je 7.4.3. Plánujeme uvolnit významnou verzi
   ka¾dých ¹est a¾ osm mìsícù.</P>

   <H4><A name="1.8">1.8</A>) Jaká je dostupná dokumentace?</H4>

   <P>Rùzné manuály, manuálové stránky a nìkolik malých testovacích pøíkladù
   jsou souèásti distribuce. Podívejte se do adresáøe <I>/doc</I>. Manuály jsou
   pøístupné online na <A href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>

   <P>Na adresách <A href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> a
   <A href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A> 
   naleznezte dvì online knihy o PostgreSQL. Seznam dostupné literatury je na
   <A href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>. Soubor
   technických èlánkù s tematikou PostgresQL najdete na <A href=
   "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>

   <P><I>psql</I> má u¾iteèný metapøíkaz \d slou¾ící k zobrazení informací o typech,
   operátorech, funkcí, agregaèních funkcí atd.</P>

   <P>Více dokumentace naleznete na na¹ich webových stránkách.</P>

   <H4><A name="1.9">1.9</A>) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?</H4>

   <P>PostgreSQL podporuje roz¹íøenou podmno¾inu <SMALL>SQL-92</SMALL>. V na¹em 
   <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
   najdete seznam známých chyb, chybìjících vlastností a seznam vlastností,
   které budou do systému implementovány v budoucnu (vèetnì priorit).</P>

   <H4><A name="1.10">1.10</A>) Jak se mohu nauèit SQL?</H4>

   <P>V knize The PostgreSQL book na <A href=
   "http://www.PostgreSQL.org/docs/awbook.html">
   http://www.PostgreSQL.org/docs/awbook.html</A> je vysvìtlen jazyk SQL (vy¹la
   èesky). Dal¹í dostupnou knihou je <A href=
   "http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</A>.
   Kvalitní návody naleznete na <A href=
   "http://www.intermedia.net/support/sql/sqltut.shtm"> 
   http://www.intermedia.net/support/sql/sqltut.shtm</A>, a na
   <A href="http://sqlcourse.com">http://sqlcourse.com</A>.</P>

   <P>Dal¹í je Teach Yourself SQL in 21 days, Second Edition na <A href=
   "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>.</P>

   <P>Mnoho u¾ivatelù doporuèuje <I>The Practical SQL Handbook</I>, Bowman, Judith
   S., et al., Addison-Wesley. Jiní preferují <I>The Complete Reference SQL</I>,
   Groff et al., McGraw-Hill.</P>

   <H4><A name="1.11">1.11</A>) Nemá PostgreSQL problémy s rokem 2000?</H4>

   <P>Nemá, mù¾eme pracovat s datumy po roce 2000 na¹eho letopoètu i pøed
   rokem 2000 pø.n.l.</P>

   <H4><A name="1.12">1.12</A>) Jak se pøipojit k vývojáøskému týmu?</H4>

   <P>Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
   dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
   konferencí <I>pgsql-hackers</I> a <I>pgsql-patches</I>. Kvalitní záplaty posílejte do
   pgsql-patches.</P>

   <P>Právo commit má v <SMALL>CVS</SMALL> archivu asi tøinácti lidí. Ka¾dý z nich poslal
   mnoho kvalitních záplat, tak¾e tehdej¹í commiters mìli jistotu, ¾e budou
   pøedkládat jenom kvalitní záplaty a mohli jim pøedìlit vìt¹í práva.</P>

   <H4><A name="1.13">1.13</A>) Kam podat report o chybì?</H4>

   <P>Nav¹tivte na¹i PostgreSQL BugTool stránku na <A href=
   "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, 
   která obsahuje návod a smìrnice jak podat chybový report.</P>

   <P>Ovìøte si na na¹em ftp serveru <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>, 
   zda-li máte nejnovìj¹í verzi PostgreSQL a zda-li k ní neexistují nìjaké záplaty.</P>

   <H4><A name="1.14">1.14</A>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?</H4>

   <P>Existuje nìkolik hledisek jak porovnávat software: vlastnosti, výkon,
   spolehlivost, podpora a cena.</P>
   <DL>
   <DT><B>Vlastnosti</B></DT>
	<DD>PostgreSQL má hodnì spoleèných vlastností s velkými komerèními 
	<SMALL>DBMS</SMALL>, napø. transakce, vnoøené dotazy, spou¹tì, pohledy, kontrolu 
	referenèní integrity a sofistikované zamykání. Podporuje nìkteré 
	vlastnosti, které tyto systémy nemají, u¾ivatelem definované typy, 
	dìdiènost, pravidla, MVCC redukující zamykání.<BR><BR></DD>

   <DT><B>Výkon</B></DT>
	<DD>Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní ale 
	i open source databáze, v nìèem je rychlej¹í, jindy pomalej¹í. 
	V porovnání s MySQL a podobnými databázovými systémy je PostgreSQL 
	rychlej¹í pøi víceu¾ivatelském pøístupu, slo¾itìj¹ích dotazech 
	a zatí¾ení read/write dotazy. MySQL je rychlej¹í v jednodu¹¹ích 
	dotazech s malým poètem u¾ivatelù. Navíc, MySQL nepodporuje mnohé 
	vlatnosti zmínìné v sekci <I>vlastnosti</I>. Zapracovali jsme na 
	spolehlivosti a podporovaných vlastnostech, a výkon zvy¹ujeme 
	v ka¾dé verzi. Zajímavou stránku porovnávající PostgreSQL a MySQL 
	naleznete na <A href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>. 
	Za vývojem MySQL není Open Source komunita, ale komerèní spoleènost,
	pøesto¾e svoje produkty distribuuje jako Open Source.<BR><BR></DD>

   <DT><B>Spolehlivost</B></DT>
	<DD>Jsme si vìdomi, ¾e databáze musí být spolehlivá, jinak je 
	nepou¾itelná. Sna¾íme se zveøejòovat dobøe otestovaný, stabilní 
	kód s minimem chyb. Ka¾dá verze je více ne¾ mìsíc v beta testování, 
	a na¹e historie verzí ukazuje, ¾e mù¾eme nabídnout stabilní, solidní 
	verze, které jsou pøipraveny pro reálné nasazení. V této oblasti 
	jsme srovnatelní s dal¹ími databázemi.<BR><BR></DD>

   <DT><B>Podpora</B></DT>
	<DD>Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu 
	vývojáøù a u¾ivatelù.problémù. Nemù¾eme garantovat opravu, 
	nicménì komerèní databáze také ne v¾dy nabídnou opravu. Podle 
	ohlasù je na¹e podpora hodnocena lépe ne¾ u jiných <SMALL>DBMS</SMALL> a to 
	díky pøímému kontaktu s vývojáøi, velkou komunitou u¾ivatelù, 
	kvalitními manuály a pøístupným zdrojovým kódem. Pro u¾ivatele, 
	kteøí vy¾adují podporu ke konkrétním pøípadùm, existuje placená 
	podpora (<A href="#1.6">FAQ sekce 1.6</A>).<BR><BR></DD>

   <DT><B>Cena</B></DT>
	<DD>PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití. 
	Mù¾ete do svých produktù pøidat ná¹ kód bez omezení, respektive 
	v souladu s podmínkami na¹í licenèní smlouvy (v duchu BSD licence).<BR>
        <BR></DD>
   </DL>

   <H4><A name="1.15">1.15</A>) Jak lze finanènì pomoci PostgreSQL?</H4>

   <P>PosgreSQL má prvotøídní infrastrukturu od na¹eho zaèátku v roce 1996.
   Vdìèíme za to Marku Fournierovi, který zalo¾il a spravoval tuto
   infrastrukturu nìkolik let.</P>

   <P>Kvalitní infrastruktura je velice dùle¾itá pro ka¾dý open source
   projekt. Pøedchází nedorozumìním, která velice zdr¾ují pokrok v
   projektu.</P>

   <P>Tato infrastruktura není laciná. K jejímu zaji¹tìní je tøeba stále
   hradit urèité mìsíèní a jednorázové èástky. Pokud máte Vy nebo Va¹e
   spoleènost peníze, které nám mù¾ete darovat, obra»e se na <A href=
   "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A> a darujte je.</P>

   <P>Aèkoliv webová stránka zmiòuje PostgreSQL, Inc. vklady jsou urèeny pouze
   k podpoøe projektu PostgreSQL a nepodporují ¾ádnou existující
   spoleènost. Pokud to vy¾adujete, mù¾ete poslat kontrolu na na¹i
   kontaktní adresu.</P>
   <HR>

   <P>Pokud máte pøíklad úspì¹ného nasazení PostgreSQL, pøihla¹tì se na ná¹
   advocacy site na <A href="http://advocacy.postgresql.org">http://advocacy.postgresql.org</A>.</P>

   <H2 align="center">User client dotazy</H2>

   <H4><A name="2.1">2.1</A>) Kde naleznu <SMALL>ODBC</SMALL> ovladaèe pro PostgreSQL?</H4>

   <P>Pro PostgreSQL existují dva <SMALL>ODBC</SMALL> ovladaèe - PsqlODBC a OpenLink ODBC.</P>

   <P>PsqlODBC je ke sta¾ení na <A href=
   "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>.</P>

   <P>OpenLink mù¾ete získat na <A href="http://www.openlinksw.com">http://www.openlinksw.com</A>. 
   Spolupracuje s jejich klientským programovým vybavením a je dostupný pro v¹echny jimi
   podporované platformy (Win, Mac, Unix, VMS).</P>

   <P>Tento ovladaè je urèen pro ty, kteøí vy¾adují podporu komerèní kvality,
   nicménì freeware verze je dostupná a funkèní. Dotazy zasílejte na <A href=
   "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>

   <H4><A name="2.2">2.2</A>) Jaké nástroje lze pou¾ít pro PostgreSQL a web?</H4>

   <P>Pìkný úvod do databázových technologií zabezpeèujících chod webových
   stránek najdete na <A href="http://www.webreview.com">http://www.webreview.com</A>.</P>

   <P>Pro tvorbu webu existuje excelentní rozhraní PHP, které naleznete na
   <A href="http://www.php.net">http://www.php.net</A>.</P>

   <P>Pro slo¾itìj¹í pøípady se èasto pou¾ívá Perl a CGI.pm nebo mod_perl.</P>

   <H4><A name="2.3">2.3</A>) Existuje grafické rozhraní pro PostgreSQL?</H4>

   <P>Pro PostgreSQL existuje nìkolik grafických rozhraní: PgAccess
   (<A href="http://www.php.net">http://www.php.net</A>), PgAdmin III 
   (<A href="http://www.php.net">http://www.php.net</A>), RHDB Admin
   (<A href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</A>) a Rekall (
   <A href="http://www.thekompany.com/products/rekall/">http://www.thekompany.com/products/rekall/</A>). 
   Dále je¹tì PhpPgAdmin
   (<A href="http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/</A>) co¾ je rozhraní PostgreSQL 
   zalo¾ené na web technologii.</P>

   <P>Úplnìj¹í seznam najdete na <A href=
   "http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.</P>

   <H4><A name="2.4">2.4</A>) Které programovací jazyky mají podporu pro PostgreSQL?</H4>

   <P>Vìt¹ina programovacích jazykù obsahuje rozhraní pro PostgreSQL.
   Podívejte se do roz¹iøujících modulù Va¹eho programovacího jazyka.</P>

   <P>Distribuce PostgreSQL obsahuje tato rozhraní:</P>
   <UL>
      <LI>C (libpq)</LI>
      <LI>Embbedded C (ecpg)</LI>
      <LI>Java (jdbc)</LI>
      <LI>Python (PyGreSQL)</LI>
      <LI>TCL (libpgtcl)</LI>
   </UL>
   <P>Dal¹í rozhraní jsou dostupná na <A href="http://gborg.postgresql.org">http://gborg.postgresql.org</A> 
   v sekci <I>Drivers/Interfaces</I>.</P>
  <HR>

  <H2 align="center">Administrativní dotazy</H2>

   <H4><A name="3.1">3.1</A>) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?</H4>

   <P>Pou¾ijte volbu <I>--prefix</I> pøi spu¹tìní configure.</P>

   <H4><A name="3.2">3.2</A>) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call 
    nebo core dump. Proè?</H4>

   <P>Dùvody mohou být rùzné, ale nejprve zkontrolujte, zda Vá¹ systém
   podporuje System V extensions. PostgreSQL vy¾aduje v jádøe podporu
   sdílené pamìti a semaforù.</P>

   <H4><A name="3.3">3.3</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate. Proè?</H4>

   <P>Buïto nemáte správnì nakonfigurovanou sdílenou pamì» v jádøe nebo musite
   zvìt¹it její velikost. Potøebná velikost je závislá na architektuøe a na
   tom, kolik pamì»ových bufferù a backendù máte povoleno pro postmastera.
   Pro vìt¹inu systémù s pøeddefinovaným poètem backendù a pamì»ových
   bufferù je minimum zhruba 1MB. V PostgreSQL Administrator's Guide
   naleznete podrobnìj¹í informace o sdílené pamìti a semaforech.</P>

   <H4><A name="3.4">3.4</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate. 
    Proè?</H4>

   <P>Pokud dostane chybovou zprávu IpcSemaphoreCreate: semget failed (No
   space left on device), pak va¹e jádro nemá dost volných semaforù.
   PostgreSQL vy¾aduje jeden semafor pro ka¾dý backend v pozadí. Doèasným
   øe¹ením je start <I>postmaster</I> s limitem backendù. Pou¾ijte pøepínaè <I>-N</I> s
   hodnotou men¹í ne¾ 32. Úplným øe¹ením je zvý¹ení hodnot <SMALL>SEMMNS</SMALL> 
   a <SMALL>SEMMNI</SMALL> jadra.</P>

   <P>Nefunkèní semafory mohou zpùsobit pád bìhem intenzivních databázových
   operací.</P>

   <P>Pokud se tato chyba vyskytuje je¹tì nìkde jinde, mo¾ná nemáte vùbec
   nakonfigurovány semafory ve va¹em jádøe. V PostgreSQL Administrator's
   Guide najdete podrobnìj¹í popis po¾adavkù na sdílenou pamìt a semafory.</P>

   <H4><A name="3.5">3.5</A>) Jak povolit nebo zakázat pøístup z jiných stanic?</H4>

   <P>Pøi výchozím nastavení PostgreSQL odepøe pøístup z jiných stanic ne¾
   lokální s pou¾itím UDP. Pøístup z jiných strojù není mo¾ný dokud
   jej nepovolíte nastavením tcpip_socket v postgresql.conf <B>a</B> urèením
   zpùsobu autentifikace v <I>$PGDATA/pg_hba.conf</I>.</P> 

   <H4><A name="3.6">3.6</A>) Jak ladit databázový stroj na lep¹í výkon?</H4>

   <P>Urèitì pomohou indexy. Pøíkaz <SMALL>EXPLAIN ANALYZE</SMALL> Vám umo¾ní sledovat
   jak PostgreSQL interpretuje Vá¹ dotaz a které indexy pou¾ívá.</P>

   <P>Pøi vìt¹í dávce INSERTù uva¾ujte o náhradì pøíkazem <SMALL>COPY</SMALL>. Ten je mnohem
   rychlej¹í ne¾li samotný <SMALL>INSERT</SMALL>. Ka¾dý pøíkaz mimo blok <SMALL>BEGIN WORK/COMMIT</SMALL>
   se provádí ve vlastní transakci. Zva¾te, zda-li by se nedalo nìkolik
   pøíkazù spojit do jedné transakce. Tím se sní¾í re¾ie na transakce. Pøed
   provedením rozsáhlých zmìn zru¹te indexy, které po dokonèení zmìn opìt
   vytvoøte.</P>

   <P>Máte nìkolik dal¹ích mo¾ností, jak zlep¹it výkon. Mù¾ete zakázat <I>fsyn()</I>
   pøi startu postmastera pøepínaèi <I>-o -F</I>. Tyto pøepínaèe zabrání <I>fsync()</I>,
   tj. zápisu na disk po ka¾dé transakci.</P>

   <P>Mù¾ete zvý¹it velikost pamì»ových bufferù pou¾itých backendy tj.
   parametr <I>-B</I> postmasteru. Pokud ale tato hodnota bude pøíli¹ velká, tak
   mo¾ná nespustíte postmastera jeliko¾ dosáhnete limitu sdílené pamìti.
   Ka¾dý buffer má 8K a implicitnì je 64 bufferù.</P>

   <P>Dále mù¾ete pou¾ít pøepínaè <I>-S</I> k zvý¹ení limitu pamìti pro backendy na
   doèasné tøídìní. Hodnota je mínìna v kilobytech a výchozí nastavení je
   512, tj. 512K.</P>

   <P>Mù¾ete pou¾ít pøíkaz <SMALL>CLUSTER</SMALL>, který uspoøádá fyzicky data v tabulkách
   podle indexu. Více na manuálových stránkách pøíkazu <SMALL>CLUSTER</SMALL>.</P>

   <H4><A name="3.7">3.7</A>) Jaké jsou mo¾nosti ladìní?</H4>

   <P>Máte nìkolik mo¾ností jak se dostat k u¾iteèným stavovým informacím.</P>

   <P>Zaprvé, pøi pøekladu pou¾ijte pøepínaè <I>--enable-cassert</I>, tím se zapne
   monitorování a následné zastavení aplikace, kdy¾ se proces v backendu
   dostane do neoèekávaného stavu.</P>

   <P>Jak postmaster tak postgres má nìkolik pøepínaèù umo¾òujících ladìní.
   Postmaster nastartujte tak, abyste si byli jisti, ¾e je standartní
   výstup a standartní chybový výstup pøesmìrován do souboru logu,
   napøíklad:</P>
<PRE>
    cd /usr/local/pgsql
    ./bin/postmaster > server.log 2>&amp;1 &amp;
</PRE>
   <P>Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje u¾iteèné
   informace o problémech a chybách vyskytlých se na serveru. Postmaster má
   pøepínaè <I>-d</I> urèující, jak podrobné mají být reportované informace, tj.
   debug level. Pozor, pøi velké hodnotì debug levelu rychle roste velikost
   souboru logu.</P>

   <P>Pokud nebì¾í postmaster, mù¾ete spustit backend PostgreSQL z pøíkazové
   øádky a napsat svùj <SMALL>SQL</SMALL> dotaz pøímo v backendu (doporuèeno <B>pouze</B> pro
   ladìní). Dotaz je v tomto pøípadì ukonèen novou øádkou, nikoliv
   støedníkem. Pokud máte aplikaci pøelo¾enou s ladícími symboly, mù¾ete
   pou¾ít debbuger k monitorování procesu. Pokud není backend spu¹tìn
   postmasterem, pak nebì¾í ve svém obvyklém prostøedí a tudí¾ nìkteré
   problémy dané interakcí mezi backendy nemohou být nasimulovány.</P>

   <P>Pokud bì¾í <I>postmaster</I>, spus»e <I>psql</I> v jednom oknì a pak si zjistìte <SMALL>PID</SMALL>
   procesu postgres pou¾itého psql. V debuggeru sepøipojte k postgresql
   <SMALL>PID</SMALL>. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
   ladíte startup postgresu, pak nastavte PGOPTIONS="-W n" a spus»e <I>psql</I>.
   Tento pøepínaè zpùsobí pauzu n sekund, tak¾e budete mít èas se pøipojit
   k procesu, a nastavit breakpointy a pokraèovat v startup posloupnosti.</P>

   <P>Pro ladìní a mìøení výkonu mohou být u¾iteèné pøepínaèe <I>-s, -A</I> a <I>-t</I>
   programu postgres (backend).</P>

   <P>Mù¾ete provést pøeklad s profilací, tak abyste vidìli kolik èasu
   zabírají jednotlivé funkce. Soubory s profily backendù jsou ulo¾eny v
   adresáøi <I>pgsql/data/base/dbname</I>. Profil klienta pak v jeho aktuálním
   adresáøi. Korektní profilace v prostøedí Linux po¾aduje konfiguraci
   systému s parametrem <I>-DLINUX_PROFILE</I>.</P>

   <H4><A name="3.8">3.8</A>) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?</H4>

   <P>Zvy¹te limit postmastera na maximální poèet souèasnì spu¹tìných
   backendù.</P>

   <P>Výchozí hodnota je 32 backendù. Tuto hodnotu zvý¹íte zastavením a
   opìtovným spu¹tìním postmastera s parametrem <I>-N</I> nebo úpravou
   <I>postgresql.conf</I>.</P>

   <P>Pøi zvý¹ení hodnoty <I>-N</I> nad 32 musíte zvý¹it hodnotu <I>-B</I> nad výchozí 64,
   <I>-B</I> musí být minimálnì dvakrát vìt¹í, nebo je¹tì lépe více. Pravdìpodobnì
   zjistíte, ¾e pro velký poèet procesù backendu je nutné zvý¹it nìkteré
   parametry jádra. Jsou to pøedev¹ím maximální velikost sdílené pamìti
   <SMALL>SHMMAX</SMALL>, maximální poèet semafórù <SMALL>SEMMNS</SMALL> a <SMALL>SEMMNI</SMALL>, maximální poèet
   procesù <SMALL>NPROC</SMALL>, maximální poèet procesù u¾ivatele <SMALL>MAXUPRC</SMALL> a maximální
   poèet otevøených souborù <SMALL>NFILE</SMALL> a <SMALL>NINODE</SMALL>. Dùvod pro omezení maximálního
   poètu backendù je fakt, ¾e by mohlo dojít k vyèerpání zdrojù Va¹eho
   systému.</P>

   <H4><A name="3.9">3.9</A>) K èemu slou¾í adresáø pgsql_tmp?</H4>

   <P>Tento adresáø obsahuje doèasné soubory vytvoøené exekutorem dotazù.
   Napøíklad, kdy¾ je nutné tøídìní k zaji¹tìní <SMALL>ORDER BY</SMALL> a tøídìní má vìt¹í
   nároky na prostor ne¾ povoluje parametr <I>-S</I> backendu, pak je vytvoøen
   doèasný soubor k ulo¾ení extra údajù.</P>

   <P>Doèasné soubory jsou obvykle mazány automaticky, ale mù¾e se stát, ¾e
   bìhem tøídìní server spadne. Zastavení a dal¹í start postmastera zajistí
   odstranìní souborù s tìchto adresáøù.</P>

   <H4><A name="3.10">3.10</A>) Proè je po¾adováno dump a obnovení (load) databáze bìhem 
    upgrade mezi velkými verzemi PostgreSQL?</H4>

   <P>PostgreSQL se minimálnì mìní bìhem malých verzí, tak¾e napø. pøi upgrade
   z 7.2 na 7.2.1 není nutné dump a load databáze. Ale výynamné verze èasto
   mìní interní formát systémových tabulek a datových souborù. Tyto zmìny
   jsou natolik rozsáhlé, ¾e nelze zajistit zpìtnou kompatibilitu pro
   datové soubory. Dump ulo¾í data v obecném formátu, tak¾e mohou být
   naètena a pou¾ívána v novém interním formátu.</P>

   <HR>

   <H2 align="center">Provozní dotazy</H2>

   <H4><A name="4.1">4.1</A>) Èím se li¹í binární a normální kurzor?</H4>

   <P>Popis najdete v manuálové stránce <SMALL>DECLARE</SMALL></P>

   <H4><A name="4.2">4.2</A>) Jak získat pouze první øádek dotazu? Náhodný øádek?</H4>

   <P>Podívejte se do man. stránky pøíkazu <SMALL>FETCH</SMALL>, nebo pou¾ijte <SMALL>SELECT</SMALL> ...
   <SMALL>LIMIT</SMALL> ...</P>

   <P>I kdy¾ potøebujete získat pouze prvních nìkolik øádkù, je tøeba
   zpracovat v¹echna data, napø. pokud dotaz má <SMALL>ORDER BY</SMALL>. Pokud v¹ak
   existuje index, který odpovídá <SMALL>ORDER BY</SMALL>, PostgreSQL mù¾e získat
   pouze prvních n øádkù a ukonèit zpracování dotazu.</P>

   <P>K získání náhodného øádku pou¾ijte:</P>
<PRE>
    SELECT col 
    FROM tab
    ORDER BY random() 
    LIMIT 1;
</PRE>
   <H4><A name="4.3">4.3</A>) Jak získám seznam tabulek nebo jinak jak jej získá psql?</H4>

   <P>Pøíkaz \dt v psql zobrazí seznam tabulek. Úplný seznam pøíkazù <I>psql</I>
   dostanete pøíkazem \?. Také se mù¾ete podívat do zdrojových kódù <I>psql</I> 
   do souboru <I>pgsql/src/bin/psql/describe.c</I>. Ten obsahuje <SMALL>SQL</SMALL> pøíkazy, 
   které se pou¾ívají v psql metapøíkazech. Dále mù¾ete spustit <I>psql</I>
   s pøepínaèem <I>-E</I>, který zpùsobí zobrazení ka¾dého dotazu, které 
   zpracování metapøíkazu vyvolá. PostgreSQL nabízí SQLi INFORMATION 
   SCHEMA s tabulkami obsahující informace o databázi.</P>

   <H4><A name="4.4">4.4</A>) Jak odstraním sloupec tabulky, jak zmìním jeho typ?</H4>

   <P>Poèínaje verzí 7.3 mù¾ete pou¾ít pøíkaz <SMALL>ALTER TABLE DROP COLUMN</SMALL>. Ve
   star¹ích verzích mù¾ete pou¾ít následující postup:</P>
<PRE>
    BEGIN;
    LOCK TABLE old_table;
    SELECT ... -- mimo sloupec, který chceme odstranit
    INTO TABLE new_table;
    DROP TABLE old_table;
    ALTER TABLE new_table RENAME TO old_table;
    COMMIT;
</PRE>
   <P>Pro zmìnu typu sloupce je tøeba provést:</P>
<PRE>
    BEGIN;
    ALTER TABLE tab ADD COLUMN new_col new_data_type;
    UPDATE tab SET new_col = CAST(old_col AS new_data_type;
    ALTER TABLE tab DROP COLUMN old_col;
    COMMIT;
</PRE>
   Poté proveïte <I>VACUUM FULL tab</I> - uvolníte tím diskový prostor zabraný
   nyní ji¾ neplatnými øádky.

   <H4><A name="4.5">4.5</A>) Jaká je maximální velikost øádku, tabulky a databáze?</H4>

   <P>PostgreSQL má tato omezení:</P>
<PRE>
    Maximální velikost databáze:           neomezena (existují 32TB db)
    Maximálné velikost tabulky:            32 TB
    Maximální velikost øádky:              1.6 TB
    Maximální velikost polo¾ky             1 GB
    Maximální poèet øádkù v tabulce:       neomezeno
    Maximální poèet sloupcù v tabulce:     250-1600 podle typù
    Maximální poèet indexù na tabulce:     neomezeno
</PRE>
   <P>Ve skuteènosti nic není neomezeno, limitem bývá v¾dy dostupná disková
   pamì» nebo velikost operaèní pamìti. Pokud máte nìkterou z tìchto hodnot
   neobvykle velkou, mù¾e dojít ke sní¾ení výkonu.</P>

   <P>Maximální velikost tabulky je 32 TB a nevy¾aduje podporu velkých souborù
   operaèním systémem. Velké tabulky se ukládají do nìkolika 1 GB souborù
   tak¾e limity souborového systému nejsou podstatné.</P>

   <P>Maximální velikost tabulky a maximální poèet sloupcù mù¾eme
   zeètyønásobit nastavením velikosti bloku na 32K.</P>

   <H4><A name="4.6">4.6</A>) Kolik diskového prostoru je potøeba k ulo¾ení dat z </H4>
    normálního textového souboru?

   <P>PostgreSQL vy¾aduje a¾ pìtinásobek diskového prostoru k ulo¾ení dat z
   textového souboru.</P>

   <P>Napøíklad, uva¾ujme soubor se 100 tisíci øádky obsahující na ka¾dé øádce
   celé èíslo a textový popis. Text je v prùmìru dvacet bytù dlouhý.
   Textový soubor bude 2.8 MB dlouhý. Velikost databáze obsahující
   odpovídající data bude zhruba 6.4 MB.</P>
<PRE>
    36 bytù: hlavièka øádku (pøibli¾nì)
    24 bytù: jedna celoèíselná polo¾ka a jedna textová
   + 4 byty: ukazatel na stránku k ntici
   ------------------------------------------------------
    64 bytù na øádek

   Velikost datové stránky PostgreSQL je 8KB

    8192 bytù na stránce
    ---------------------- = 128 øádek na stránku
      64 bytù za øádek

    100000 øádek
    -------------------- = 782 stránek (zaokrouhleno nahoru)
       128 øádek na stránce

    782 * 8192 = 6, 406, 144 bytù (6.4 MB)
</PRE>
   <P>Indexy nemají tak velkou re¾ii, ale mohou být také velké, proto¾e
   obsahují indexovaná data.</P>

   <P>Hodnoty <SMALL>NULL</SMALL> jsou ulo¾eny v bitmapách, tak¾e spotøebují jen velmi málo
   diskového prostoru.</P>

   <H4><A name="4.7">4.7</A>) Jak získám seznam vytvoøených tabulek, indexù, databází?</H4>

   <P><I>psql</I> má sadu metapøíkazù k zobrazení tìchto informací. Jejich seznam
   získáte pøíkazem \?. Dále se mù¾ete podívat na obsah systémových tabulek
   zaèínajících <I>pg_</I>. Spu¹tìní <I>psql</I> s parametrem <I>-l</I> provede výpis názvù
   v¹ech databází.</P>

   <P>Soubor <I>pgsql/src/tutorial/syscat.source</I> obsahuje <SMALL>SELECT</SMALL>y pøistupující k
   systémovým tabulkámm.</P>

   <H4><A name="4.8">4.8</A>) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?</H4>

   <P>Ka¾dý dotaz nemusí nutnì pou¾ít existující indexy. Index se pou¾ije
   tehdy, kdy¾ je tabulka vìt¹í ne¾ urèitá minimální velikost, a dotaz
   vybírá pouze procentuálnì malou èást øádkù tabulky. To proto, ¾e náhodný
   pøístup k disku daný ètením indexu mù¾e být pomalej¹í ne¾ lineární ètení
   tabulky nebo sekvenèní ètení.</P>

   <P>PostgreSQL rozhoduje o pou¾ití indexù na základì statistiky pøístupù k
   tabulce. Tyto statistiky se shroma¾ïují pøíkazy <SMALL>VACUUM ANALYZE</SMALL> nebo
   <SMALL>ANALYZE</SMALL>. Díky statistikám má optimizer informaci o poètu øádek v tabulce
   a mù¾e lépe rozhodnout o pou¾ití indexù. Statistiky se uplatní pøi
   urèení optimálního poøadí a metody spojení tabulek. Statistiky by se
   mìli aktualizovat opakovanì, tak jak se mìní obsah tabulek.</P>

   <P>Indexy nejsou obyèejnì pou¾ity pro setøídìní nebo spojení tabulek.
   Sekvenèní zpracování následované explicitním tøídìním je obyèejnì
   rychlej¹í ne¾ indexní ètení na velké tabulce.</P>

   <P>Jinak je tomu v pøípadì pou¾ití <SMALL>LIMIT</SMALL> a <SMALL>ORDER BY</SMALL>, pøi kterém se vìt¹inou
   index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce MAX() a
   MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:</P>
<PRE>
    SELECT col 
    FROM tab
    ORDER BY col [ DESC ] 
    LIMIT 1;
</PRE>
   <P>Pokud si myslíte, ¾e optimizer mylnì zvolil sekvenèní prohledávání
   tabulky, pou¾ijte pøíkaz <CODE>SET enable_seqscan TO 'off'</CODE> a zkuste zda je
   indexní prohledávání rychlej¹í.</P>

   <P>Pøi vyhledávání na základì vzoru jako je napø. operátor <SMALL>LIKE</SMALL> nebo <I>~</I> se
   indexy pou¾íjí pouze za urèitých skuteèností:</P>
   <UL>
    <LI>zaèátek hledaného vzoru musí být ukotven k zaèátku, tj.
      <UL>
        <LI>vzor <SMALL>LIKE</SMALL> nesmí zaèínat <I>%</I></LI>
        <LI><I>~</I> regulární výraz musí zaèínat <I>^</I></LI>
      </UL></LI>
    <LI>vzor nesmí zaèínat intervalem, napø. [a-e]</LI>
    <LI>vyhledávaní, které není Case sensitiv jako je <SMALL>ILIKE</SMALL> nebo <I>~*</I> 
      nepou¾ívá indexy. Mù¾ete ale pou¾ít funkcionální indexy, které jsou 
      posány v sekci <A href="#4.12">4.12</A></LI>
    <LI>pøi inicializaci databáze (<I>initdb</I>) musí být pou¾ito C locale
      (pozn. pøekladatele - tudí¾ v na¹ich podmínkách nepou¾itelné,
      nepracovalo by èeské tøídìní).</LI>
   </UL>
   <H4><A name="4.9">4.9</A>) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?</H4>

   Podívejte se do manuálové stránky pøíkazu <SMALL>EXPLAIN</SMALL>.

   <H4><A name="4.10">4.10</A>) Co to je R-tree index?</H4>

   <P>R-tree index se pou¾ívá pro indexování prostorových dat. Hash index
   nemù¾e obslou¾it prohledávání oblastí. B-tree index mù¾e øídit vyhledání
   oblastí v jedné dimenzi. R-tree index mù¾e podporovat hledání v
   multidimenzionálních datech. Pou¾ijeme-li napøíklad R-tree index na
   atributy typu <I>point</I>, pak systém mù¾e efektivnì odpovìdìt na dotaz -
   vyber v¹echny body uvnitø obdélníkù.</P>
   
   <P>Pùvodní návrh R-tree je Guttman, A. "R-trees: A Dynamic Index Structure
   for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on
   Mgmt of Data, 45-57</P>

   <P>Tyto materiály naleznete v Stonebraker's "Readings in Database Systems".</P>

   <P>Vestavìné R-tree mù¾e slou¾it k indexaci polygonù a oblastí. Teoreticky
   mù¾eme R-tree pou¾ít i pro více dimenzí (jiné ne¾ 3D). Ve skuteènosti
   ale takové roz¹íøení R-tree vy¾aduje trochu práce a ve souèastnosti
   chybí dokumentace jak na to.</P>

   <H4><A name="4.11">4.11</A>) Co je Genetic Query Optimizer?</H4>

   <P><SMALL>GEQO</SMALL> modul urychluje optimalizaci dotazù pøi spojování mno¾ství tabulek
   metodou Genetických algoritmù (GA). To umo¾òuje získat velkého mno¾ství
   variant spojení pøi neúplném prohledáváním.</P>

   <H4><A name="4.12">4.12</A>) Jak provést vyhledávání regulárního výrazu case sensitiv,
    insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?</H4>

   <P>Operátor <I>~</I> slou¾í k porování s regulárním výrazem, jeho modifikace <I>*~</I>
   pøedstavuje case insensitive vyhledávání. Jedná se o obdobu <SMALL>LIKE</SMALL> a
   <SMALL>ILIKE</SMALL>.</P>

   <P>Pro vyhledávání bez ohledu na velká malá písmena pou¾ijeme:</P>
<PRE>
    SELECT * 
    FROM tab
    WHERE lower(col) = 'abc';
</PRE>
   V tomto pøípadì se nepou¾ije standardní index. Nicménì, pou¾ije se
   funkcionální index, pokud jej vytvoøíte:
<PRE>
    CREATE INDEX tabindex ON tab (lower(col));
</PRE>
   <H4><A name="4.13">4.13</A>) Jak v dotazu detekovat, ¾e polo¾ka je NULL?</H4>

   <P>Urèíte pomocí <SMALL>IS NULL</SMALL> nebo <SMALL>IS NOT NULL</SMALL></P>

 <H4><A name="4.14">4.14</A>) Jaké jsou rozdíly mezi rùznými znakovými typy?</H4>
<PRE>
Typ         Interní název       Poznámka
--------------------------------------------------------------------------
VARCHAR(n)  varchar             omezeno maximální délkou, bez doplnìní mezerami
CHAR(n)     bpchar              øetìzec je doplnìn mezerami do dané délky
TEXT        text                bez horního limitu na délku
BYTEA       bytea               pole bytù (bezpeènì lze ulo¾it i znak NULL)
"char"      char                jeden znak
</PRE>
   <P>S interními názvy se setkáte v systémovém katalogu a v nìkterých
   chybových hlá¹eních.</P>

   <P>První ètyøi uvedené typy jsou tzv. varlena typy (tj. první ètyøi byty na
   disku nesou údaj o délce, následují samotná data). Proto skuteèný
   pou¾itý prostor je v¾dy o nìco málo vìt¹í ne¾ deklarovaná délka. Naopak,
   tyto datové typy jsou komprimovánty <SMALL>TOAST</SMALL>em, tak¾e prostor na disku mù¾e
   být ni¾¹í ne¾ je oèekáváno.</P>

   <P><SMALL>VARCHAR(n)</SMALL> je vhodný pro ukládání textù prommìné délky s pevnì
   stanovenou maximální délkou. <SMALL>TEXT</SMALL> je pro øetìzce bez omezení délky s
   maximem jeden gigabajt.</P>

   <P><SMALL>CHAR(n)</SMALL> slou¾í k ukládání øetìzcù stejné délky. <SMALL>CHAR(n)</SMALL> doplní prázdné
   znaky do specifikované délky, zatímco VARCHAR(n) ulo¾í pouze pøedané
   znaky. <SMALL>BYTEA</SMALL> je urèeno pro ukládání binárních dat, vèetnì <SMALL>NULL</SMALL> byte.
   V¹echny zde popsané typy mají podobné výkonnostní charakteristiky.</P>

   <H4><A name="4.15.1">4.15.1</A>) Jak vytvoøit serial/auto-increment pole?</H4>

   <P>PostgreSQL podporuje typ <SMALL>SERIAL</SMALL>. Pøi jeho pou¾ití se automaticky vytvoøí
   SEQUENCE. Napøíklad:</P>
<PRE>
    CREATE TABLE person (
        id   SERIAL,
        name TEXT
    );
</PRE>
   je automaticky pøevedeno do
<PRE>
    CREATE SEQUENCE person_id_seq;
    CREATE TABLE person (
        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
        name TEXT
    );
    CREATE UNIQUE INDEX person_id_key ON person(id);
</PRE>
   Viz dokumentace <I>create_sequence</I> v manuálových stránkách. Dále mù¾ete
   pou¾ít unikátní hodnotu <I>OID</I> ka¾dého øádku. Potom ale musíte spou¹tìt
   <I>pg_dump</I> s pøepínaèem <I>-o</I>, tak aby zùstaly zachovány hodnoty <SMALL>OID</SMALL> (u
   pøíkazu copy <SMALL>COPY WITH OIDS</SMALL>).

   <H4><A name="4.15.2">4.15.2</A>) Jak získat hodnotu <SMALL>SERIAL</SMALL> po vlo¾ení øádku?</H4>

   <P>Jednou z mo¾ností je získat budoucí hodnotu <SMALL>SERIAL</SMALL> funkcí <I>nextval()</I> pøed
   samotným vlo¾ením a pak ji vlo¾it explicitnì. Napøíklad v jakémsi
   pseudojazyku:</P>
<PRE>
    newid = execute("SELECT nextval('person_id_seq')");
    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
</PRE>
   <P>Mù¾ete pak je¹tì pou¾ít hodnotu newid v dal¹ích dotazech, napø. jako
   hodnotu cizího klíèe. Název automaticky vytvoøené sekvence je
   <I>tabulka_sloupec_seq</I>.</P>

   <P>Alternativnì mù¾ete získat hodnotu poslednì generovou sekvencí funkcí
   <I>currval()</I> po vlo¾ení:</P>
<PRE>
    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
    new_id = execute("SELECT currval('person_id_seq')");
</PRE>
   <P>Koneènì mù¾ete pou¾ít <SMALL>OID</SMALL> hodnotu vrácenou pøíkazem <SMALL>INSERT</SMALL>, ale to je
   pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
   modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme <I>$sth->{pg_oid_status}</I>
   po ka¾dém <I>$sth->execute()</I>.</P>

   <H4><A name="4.15.3">4.15.3</A>) Nepovede <I>currval()</I> a <I>nextval()</I> k rozhození 
     podmínek pøi soubìhu s jinými u¾ivateli?</H4>

   <P>Nikoliv, <I>currval()</I> vrací hodnotu naposledy generovanou ve va¹em
   backendu, a ta tudí¾ není spoleèná v¹em u¾ivatelùm.</P>

   <H4><A name="4.15.4">4.15.4</A>) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce? 
   Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?</H4>

   <P>K zaji¹tìní efektivnosti soubìhu, jsou hodnoty posloupnosti, kdy¾ se o
   nì po¾ádá, a sekvence není zamèena do ukonèení transakce. To zpùsobuje
   díry v èíslování ze zru¹ených transakcí.</P>

   <H4><A name="4.16">4.16</A>) Co to je <SMALL>OID</SMALL>? Co je to <SMALL>TID</SMALL>?</H4>

   <P>Ka¾dý øádek vytvoøený v PostgreSQL získá jedineèné <SMALL>OID</SMALL>. V¹echna <SMALL>OID</SMALL>
   generovaná bìhem inicializace databáze jsou men¹í ne¾ 16384
   (include/access/transam.h). V¹echna <SMALL>OID</SMALL> generovaná na po¾adavek
   u¾ivatele jsou rovna nebo vy¹¹í této hodnotì. Normálnì, v¹echna <SMALL>OID</SMALL> jsou
   jedineèná nejen uvnitø tabulky nebo databáze, ale v rámci celé instalace
   PostgreSQL</P>

   <P>PostgreSQL pou¾ívá <SMALL>OID</SMALL> ve svém interním systému tabulek k vytvoøení
   relací. Tato <SMALL>OID</SMALL> mohou být pou¾ita k identifikaci konkrétního u¾ivatele
   a pou¾ita v spojení. Pro <SMALL>OID</SMALL> hodnoty je doporuèen typ <SMALL>OID</SMALL>. Nad tímto
   sloupcem mù¾ete vytvoøit index pro urychlení pøístupu.</P>

   <P><SMALL>OID</SMALL> jsou dána v¹em øádkùm z centrální oblasti a jsou pou¾ita v ka¾dé
   databázi. Pokud potøebujete zmìnit <SMALL>OID</SMALL>, nebo chcete zkopírovat tabulku s
   pùvodními <SMALL>OID</SMALL>, lze pou¾ít:</P>
<PRE>
        CREATE TABLE new_table(old_oid oid, mycol int);
        SELECT old_oid, mycol INTO new FROM old;
        COPY new TO '/tmp/pgtable';
        DELETE FROM new;
        COPY new WITH OIDS FROM '/tmp/pgtable';
</PRE>
   <P><SMALL>OID</SMALL> jsou ulo¾ena jako 4bajtový integer a pøeteèou po ètyøech miliardách.
   Nebylo hlá¹eno, ¾e by se tak nìkdy stalo, pøesto ale plánujeme odstranit
   tento limit døív ne¾ se tak stane.</P>
    
   <P><SMALL>TID</SMALL> se pou¾ívají i identifikaci fyzických øádkù s hodnotou bloku a
   offsetu. TIDs se mìní modifikací øádkù (pou¾ívá se jako ukazatel indexu
   fyzického øádku).</P>

   <H4><A name="4.17">4.17</A>) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?</H4>

   <P>V nìkterých zdrojových kódech nebo star¹í dokumentaci se mù¾ete setkat s
   následujícími výrazy, které mají ¹ir¹í význam. Zde je pøíklad nekterých:</P>
   <UL>
      <LI> tabulka, relace, tøída (table, relation, class)</LI>
      <LI> øádek, záznam, ntice (row, record, tuple)</LI>
      <LI> sloupec, polo¾ka, atribut (column, field, attribute)</LI>
      <LI> vyhledání, výbìr (retrieve, select)</LI>
      <LI> náhrada, úprava (replace, update)</LI>
      <LI> pøidání, vkládání (append, insert)</LI>
      <LI> OID, serial value (OID, serial value)</LI>
      <LI> portal, kurzor (portal, cursor)</LI>
      <LI> range variable, jméno tabulky, alias tabulky (range
        variable, table name, table alias)</LI>
   </UL>

   <P>seznam tìchto výrazù mù¾ete nalézt na
   <A href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.</P>

   <H4><A name="4.18">4.18</A>) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in AllocSetAlloc()"?</H4>

   <P>Pravdìpodobnì do¹lo k vyèerpání virtuální pamì»i na Va¹em systému, nebo
   jádro má nízký limit pro urèité zdroje. Vyzkou¹ejte pøed startem
   posmatera</P>
<PRE>
    ulimit -d 262144
    limit datasize 256m
</PRE>
   <P>Zále¾í na Va¹em shellu, zda budou tyto pøíkazy úspì¹né, mìly by zvý¹it
   limit datového segmentu pro Va¹e procesy a umo¾nit tak dokonèení dotazu.
   Tyto pøíkazy se aplikují na aktuální proces a v¹echny synovské procesy
   vytvoøené po provedení pøíkazu. Pokud máte problémy s SQL klientem
   proto¾e backend vrací pøíli¹ mnoho dat, zkuste zvý¹it limity pøed
   startem klienta.</P>

   <H4><A name="4.19">4.19</A>) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?</H4>

   <P>V psql spus»te <CODE>SELECT version();</CODE></P>

   <H4><A name="4.20">4.20</A>) Proè operace s velkými objekty konèí "invalid large obj descriptor"?</H4>

   <P>V¹echny operace s velkými objekty - <CODE>lo_open</CODE>, <CODE>lo_close</CODE>, ... musíte
   spou¹tìt v transakci, tj. mezi pøíkazy <CODE>BEGIN WORK</CODE> a <CODE>COMMIT</CODE>.</P>

   <P>PostgreSQL uvolòuje handle velkých objektù pøi skonèení transakce. Pokud
   budete pracovat s velkými objekty mimo transakci, pravdìpodobnì
   dostanete toto chybové hlá¹ení, proto¾e handle ji¾ budou neplatné.</P>

   Pokud pou¾íváte interface podobné <SMALL>ODBC</SMALL> musíte nastavit <CODE>set 
   auto_commit off</CODE>.

   <H4><A name="4.21">4.21</A>) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?</H4>

   <P>Pou¾ijte <I>CURRENT_TIMESTAMP</I>:</P>
<PRE>
<CODE>
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
</CODE>
</PRE>
   <H4><A name="4.22">4.22</A>) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?</H4>

   <P>Døívìj¹í verze (pøed 7.4) spojovali vnoøené dotazy k vnìj¹ím sekvenèním
   ètením výsledku poddotazu pro ka¾dý øádek vnìj¹ího dotazu. Pokud poddotaz
   vrátil nìkolik málo øádkù <SMALL>IN</SMALL> bylo rychlé. Pro ostatní pøípady je vhodné
   nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:</P>
<PRE>
    SELECT * 
    FROM tab
    WHERE col IN (SELECT subcol FROM subtab);
</PRE>
<p>na:</p>
<PRE>
   SELECT * 
   FROM tab
   WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
   <P>Pro urychlení vytvoøete index pro subcol. </P>

   <P>Ve verzi 7.4 a pozdìj¹ích, <SMALL>IN</SMALL> pou¾ívá stejnì sofistikovanou techniku
   spojování tabulek jako ostatní dotazy a je preferovaný pøed <SMALL>EXISTS</SMALL>.</P>

   <H4><A name="4.23">4.23</A>) Jak provést vnìj¹í spojení (outer join)?</H4>

   <P>PostgreSQL podporuje vnìj¹í spojení tabulek standardními SQL pøíkazy.
   Zde jsou dva pøíklady:</P>
<PRE>
    SELECT * 
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
</PRE>
   nebo
<PRE>
    SELECT * 
    FROM t1 LEFT OUTER JOIN USING (col);
</PRE>
   <P>Tyto identické dotazy napojí t1.col na t2.col a je¹tì pøidá nepøipojené
   øádky z t1 (které nemají obdoby v t2). Pravé spojení (<SMALL>RIGHT JOIN</SMALL>) pøidá
   nepøipojené øádky z t2. <SMALL>FULL JOIN</SMALL> vrátí v¹echny øádky, vèetnì
   nepøipojených z tbulek t1 a t2. Klíèové slovo <SMALL>OUTER</SMALL> je nepovinné a vá¾e
   se na <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> a <SMALL>FULL</SMALL> join. Bì¾né 
   spojení se nazývá <SMALL>INNER JOIN</SMALL>.</P>

   <P>V døívìj¹ích verzích se vnìj¹í spojení tabulek mohlo simulovat pomocí
   <SMALL>UNION</SMALL> a <SMALL>NOT IN</SMALL>. Napøíklad pro spojení tabulek tab1 a tab2, je
   následující dotaz ekvivalentní k vnìj¹ímu spojení dvou tabulek:</P>
<PRE>
    SELECT tab1.col2, tab2.col2 
    FROM tab1, tab2
    WHERE tab1.col1 = tab2.col1
    UNION ALL
    SELECT tab1.col2, NULL 
    FROM tab1
    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
    ORDER BY col1;
</PRE>

   <H4><A name="4.24">4.24</A>) Jak provést dotaz z více databází?</H4>

   <P>PostgreSQL nepodporuje dotazy do jiné ne¾ aktuální databáze.</P>

   <P><I>contrib/dblink</I> nabízí funkce umo¾òující provedení dotazu v jiné 
   databázi. Klient si mù¾e otevøít simultální pøipojení do rùzných
   db bez omezení.</P>

   <H4><A name="4.25">4.25</A>) Mù¾e funkce vrátit více øádkù nebo sloupcù?</H4>

   <P>V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
   funkce, viz:
   <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>

   <H4><A name="4.26">4.26</A>) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL funkcích?</H4>

   <P>Pøelo¾ený kód PL/pgSQL funkce je ulo¾en ve vyrovnávací pamìti, tj.
   funkce je pøekládána pouze pøi zmìnì kódu, nikoliv pøed ka¾dým voláním
   funkce. Nechtìným vedlej¹ím efektem je, ¾e volání funkce sel¾e, kdy¾ se
   funkce odkazuje na doèasnou tabulku, pokud tato tabulka byla od pøekladu
   funkce zru¹ena (aèkoliv ji¾ byla znovu vytvoøena a existuje). Jediným
   øe¹ením problému je pøístup k doèasné tabulce pomocí <SMALL>EXECUTE</SMALL>, tj.
   dynamické provádìní dotazu. Tento pøíkaz zajistí opakovaný pøeklad
   dotazu pøi ka¾dém volání funkce.</P>

   <H4><A name="4.27">4.27</A>) Jaké jsou mo¾nosti replikace databází?</H4>

   <P>Existuje nìkolik dostupných øe¹ení master/slave replikací, tj umo¾òují
   modifikace master databáze a slave databázím umo¾òují pouze ètení. Na
   konci <A href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A> najdete
   jejich seznam. Na øe¹ení multi-master replikaci se pracuje na
   <A href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</P>

   <H4><A name="4.28">4.28</A>) Jaké jsou mo¾nosti ¹ifrování databází?</H4>
     <UL>
     <LI><I>contrib/pgcrypto</I> obsahuje ¹ifrovací funkce pou¾itelné v SQL
       dotazech.</LI>
     <LI>K ¹ifrování pøenosu dat z klienta na server, musí být server
       pøelo¾en s podporou <I>ssl</I> a pøepínaè <I>ssl</I> v <I>postgresql.conf</I> musí být
       nastaven na hodnotu true. Klient musí mít vytvoøen záznam hostssl v
       <I>pg_hba.conf</I> a také mít povolen re¾im <I>ssl</I>. Lze pou¾ít i jiné
       prostøedky, nejen nativní podporu ssl v PostgreSQL, napø. stunel a
       ssh.</LI>
     <LI>Hesla u¾ivatelù databáze jsou za¹ifrována poèínaje verzí 7.3. Ve
       star¹ích verzích toto chování muselo být vynuceno volbou
       <I>PASSWORD_ENCRYPTION</I> v <I>postgresql.conf</I></LI>
     <LI> Server mù¾e bì¾et na ¹ifrovaném souborovém systému.</LI>
    </UL>
   <HR>

   <H2 align="center">Roz¹iøování PostgreSQL</H2>

   <H4><A name="5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?</H4>
 
   <P>Problém mù¾e být zpùsoben mnoha okolnostmi. Vyzkou¹ejte si svoji funkci
   nejdøíve v nìjaké jednoduché aplikaci.</P>

   <H4><A name="5.2">5.2</A>) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do PostgreSQL?</H4>

   <P>Po¹lete své roz¹íøení do konference pgsql-hackers, a ono pak mo¾ná
   skonèí v podadresáøi contrib.</P>

   <H4><A name="5.3">5.3</A>) Jak napsat funkci v C vracející ntici?</H4>

   <P>Funkce vracející tabulky jsou podporované PostgreSQL 7.3 a vy¹¹í pro
   jazyky C, PL/PgSQL a SQL. Více naleznete v The Programmer's Guide.
   Pøíklady tìchto funkcí pro C naleznete v <I>contrib/tablefunc</I>.</P>

   <H4><A name="5.4">5.4</A>) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci vzata v potaz. Proè?</H4>

   <P><I>Makefile</I> nemá informace o závislostech mezi hlavièkovými soubory. Musíte
   provést <I>make clean</I> a pak <I>make</I>. Pokud pou¾íváte <SMALL>gcc</SMALL>, mù¾ete pou¾ít
   pøepínaè <I>--enable-depend</I> pøíkazu <I>configure</I> k automatickému øe¹ení
   závislostí pøekladaèem.</P>
 </BODY>
</HTML>