summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2003-07-31 04:41:56 +0000
committerBruce Momjian2003-07-31 04:41:56 +0000
commit6b8f6a65e2a2086da3c0e0ba2ffe6f11fcde682e (patch)
tree5ce632f74ab5937e9558fd28d3504cf73d71f7f1
parentf766b376f1a4956f878e9cdf54e7ced49a4feaf3 (diff)
Update Turkish FAQ, Devrim GUNDUZ
-rw-r--r--doc/FAQ_turkish1731
-rw-r--r--doc/src/FAQ/FAQ_turkish.html2544
2 files changed, 2320 insertions, 1955 deletions
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish
index ce15326b6fe..e9e23986fb8 100644
--- a/doc/FAQ_turkish
+++ b/doc/FAQ_turkish
@@ -1,709 +1,1040 @@
+ PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
+
+ Son g�ncelleme : 19.05.2003 Cuma 05:03
- PostgreSQL i�in S�k�a Sorulan Sorular (SSS) Son g�ncelleme : 19 May�s
- 2003 Pazartesi - 03:05:21 Current maintainer: Bruce Momjian
- ([email protected] ) �eviren : Devrim G�ND�Z ([email protected] )
- Nicolai Tufar ([email protected] ) Bu belgenin en g�ncel hali,
- http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
- http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir.
- Platforma �zel sorular�n�z,http://www.PostgreSQL.org/docs/index.html
- adresinde yan�tlan�r..
- ----------------------------------------------------------------------
- -- Genel Sorular 1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur? 1.2
- <#1.2>) PostgreSQL' in haklar� nedir? 1.3 <#1.3>) PostgreSQL, hangi
- Unix platformlar�nda �al�s�r? 1.4 <#1.4>) Hangi Unix olmayan
- uyarlamalar� bulunmaktad�r? 1.5 <#1.5>) PostgreSQL'i nereden
- indirebilirim? 1.6 <#1.6>) Deste�i nereden alabilirim? 1.7 <#1.7>) En
- son s�r�m� nedir? 1.8 <#1.8>) Hangi belgelere ulasabilirim? 1.9
- <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
- 1.10 <#1.10>) Nas�l SQL ��renebilirim? 1.11 <#1.11>) PostgreSQL 2000
- y�l�na uyumlu mudur? 1.12 <#1.12>) Geli�tirme tak�m�na nas�l
- kat�labilirim?? 1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim?
- 1.14 <#1.14>) PostgreSQL, diger VTYS(DBMS lerle nas�l
- kar��la�t�r�labilir? 1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l
- destek olabilirim? Kullan�c�/istemci Sorular� 2.1 <#2.1>) Are there
- ODBC drivers for PostgreSQL? 2.2 <#2.2>) What tools are available for
- using PostgreSQL with Web pages? 2.3 <#2.3>) Does PostgreSQL have a
- graphical user interface? 2.4 <#2.4>) What languages are available to
- communicate with PostgreSQL? Administrative Questions 3.1 <#3.1>) How
- do I install PostgreSQL somewhere other than //usr/local/pgsql/? 3.2
- <#3.2>) When I start /postmaster/, I get a /Bad System Call/ or core
- dumped message. Why? 3.3 <#3.3>) When I try to start /postmaster/, I
- get /IpcMemoryCreate/ errors. Why? 3.4 <#3.4>) When I try to start
- /postmaster/, I get /IpcSemaphoreCreate/ errors. Why? 3.5 <#3.5>) How
- do I control connections from other hosts? 3.6 <#3.6>) How do I tune
- the database engine for better performance? 3.7 <#3.7>) What debugging
- features are available? 3.8 <#3.8>) Why do I get /"Sorry, too many
- clients"/ when trying to connect? 3.9 <#3.9>) What is in the
- /pgsql_tmp/ directory? 3.10 <#3.10>) Why do I need to do a dump and
- restore to upgrade PostgreSQL releases? Operational Questions 4.1
- <#4.1>) What is the difference between binary cursors and normal
- cursors? 4.2 <#4.2>) How do I SELECT only the first few rows of a
- query? 4.3 <#4.3>) How do I get a list of tables or other things I can
- see in /psql/? 4.4 <#4.4>) How do you remove a column from a table?
- 4.5 <#4.5>) What is the maximum size for a row, a table, and a
- database? 4.6 <#4.6>) How much database disk space is required to
- store data from a typical text file? 4.7 <#4.7>) How do I find out
- what tables, indexes, databases, and users are defined? 4.8 <#4.8>) My
- queries are slow or don't make use of the indexes. Why? 4.9 <#4.9>)
- How do I see how the query optimizer is evaluating my query? 4.10
- <#4.10>) What is an R-tree index? 4.11 <#4.11>) What is the Genetic
- Query Optimizer? 4.12 <#4.12>) How do I perform regular expression
- searches and case-insensitive regular expression searches? How do I
- use an index for case-insensitive searches? 4.13 <#4.13>) In a query,
- how do I detect if a field is NULL? 4.14 <#4.14>) What is the
- difference between the various character types? 4.15.1 <#4.15.1>) How
- do I create a serial/auto-incrementing field? 4.15.2 <#4.15.2>) How do
- I get the value of a SERIAL insert? 4.15.3 <#4.15.3>) Don't
- /currval()/ and /nextval()/ lead to a race condition with other users?
- 4.15.4 <#4.15.4>) Why aren't my sequence numbers reused on transaction
- abort? Why are there gaps in the numbering of my sequence/SERIAL
- column? 4.16 <#4.16>) What is an OID? What is a TID? 4.17 <#4.17>)
- What is the meaning of some of the terms used in PostgreSQL? 4.18
- <#4.18>) Why do I get the error /"ERROR: Memory exhausted in
- AllocSetAlloc()"/? 4.19 <#4.19>) How do I tell what PostgreSQL version
- I am running? 4.20 <#4.20>) Why does my large-object operations get
- /"invalid large obj descriptor"/? 4.21 <#4.21>) How do I create a
- column that will default to the current time? 4.22 <#4.22>) Why are my
- subqueries using |IN| so slow? 4.23 <#4.23>) How do I perform an outer
- join? 4.24 <#4.24>) How do I perform queries using multiple databases?
- 4.25 <#4.25>) How do I return multiple rows or columns from a
- function? 4.26 <#4.26>) Why can't I reliably create/drop temporary
- tables in PL/PgSQL functions? 4.27 <#4.27>) What replication options
- are available? 4.28 <#4.28>) What encryption options are available?
- Extending PostgreSQL 5.1 <#5.1>) I wrote a user-defined function. When
- I run it in /psql/, why does it dump core? 5.2 <#5.2>) How can I
- contribute some nifty new types and functions to PostgreSQL? 5.3
- <#5.3>) How do I write a C function to return a tuple? 5.4 <#5.4>) I
- have changed a source file. Why does the recompile not see the change?
- ----------------------------------------------------------------------
- -- General Questions 1.1) What is PostgreSQL? How is it pronounced?
- PostgreSQL is pronounced /Post-Gres-Q-L/. PostgreSQL is an enhancement
- of the POSTGRES database management system, a next-generation DBMS
- research prototype. While PostgreSQL retains the powerful data model
- and rich data types of POSTGRES, it replaces the PostQuel query
- language with an extended subset of SQL. PostgreSQL is free and the
- complete source is available. PostgreSQL development is performed by a
- team of developers who all subscribe to the PostgreSQL development
- mailing list. The current coordinator is Marc G. Fournier
- ([email protected] ). (See section 1.6 <#1.6> on how to join).
- This team is now responsible for all development of PostgreSQL. The
- authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many others
- have contributed to the porting, testing, debugging, and enhancement
- of the code. The original Postgres code, from which PostgreSQL is
- derived, was the effort of many graduate students, undergraduate
- students, and staff programmers working under the direction of
- Professor Michael Stonebraker at the University of California,
- Berkeley. The original name of the software at Berkeley was Postgres.
- When SQL functionality was added in 1995, its name was changed to
- Postgres95. The name was changed at the end of 1996 to PostgreSQL.
- 1.2) What is the copyright on PostgreSQL? PostgreSQL is subject to the
- following COPYRIGHT: PostgreSQL Data Base Management System Portions
- copyright (c) 1996-2002, PostgreSQL Global Development Group Portions
- Copyright (c) 1994-6 Regents of the University of California
+ Bruce Momjian ([email protected])
+ �eviren : Devrim G�ND�Z ([email protected]), Nicolai Tufar ([email protected]), Volkan Yaz�c� ([email protected])
+
+ Bu belgenin en g�ncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish ve
+ http://www.PostgreSQL.org/docs/faq-turkish.html
+ adreslerinde gor�lebilir.
+
+ Platforma �zel sorular�n�z,
+ http://www.PostgreSQL.org/users-lounge/docs/faq.html adresinde yan�tlan�r.
+ _________________________________________________________________
+
+ Genel Sorular
+
+ 1.1) PostgreSQL nedir? Nas�l okunur?
+ 1.2) PostgreSQL' in haklar� nedir?
+ 1.3) PostgreSQL, hangi Unix platformlar�nda �al�s�r?
+ 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+ 1.5) PostgreSQL'i nereden indirebilirim?
+ 1.6) Deste�i nereden alabilirim?
+ 1.7) En son s�r�m� nedir?
+ 1.8) Hangi belgelere ulasabilirim?
+ 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
+ 1.10) Nas�l SQL �grenebilirim?
+ 1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
+ 1.12) Geli�tirme tak�m�na nas�l kat�labilirim?
+ 1.13) Bir hata raporunu nas�l g�nderebilirim?
+ 1.14) PostgreSQL, diger DBMS'lerle nas�l kar��la�t�r�labilir?
+ 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+
+ Kullan�c�/istemci Sorular�
+
+ 2.1) PostgreSQL icin ODBC s�r�c�leri var m�?
+ 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r?
+ 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+ Report generator var m�d�r? G�m�l� sorgu dili arabirimi var m�d�r?
+ 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim?
+
+ Y�netimsel Sorular
+
+
+ 3.1) PostgreSQL'i, /usr/local/pgsql dizininden ba�ka dizinlere nas�l kurabilirim?
+ 3.2) Postmaster'i baslatt�g�mda, Bad System Call ya da core dumped mesaj�
+ al�yorum. Neden?
+ 3.3) Postmaster'i ba�latt���mda, IpcMemoryCreate hatas� al�yorum. Neden?
+ 3.4) Postmaster'i ba�latt���mda, IpcSemaphoreCreate hatas� al�yorum. Neden?
+ 3.5) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma ba�lant�lar�n� nas�l
+ kontrol edebilirim?
+ 3.6) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim?
+ 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+ 3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n� al�yorum?
+ 3.9) pgsql_tmp dizininin i�indeki dosyalar nelerdir?
+ 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek
+ zorunday�m?
+
+ ��letimsel Sorular
+
+ 4.1) Binary cursor ve normal cursor aras�ndaki fark nedir?
+ 4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
+ 4.3) psql'in i�inde g�rd���m tablolar�n ya da di�er �eylerin listesini nasil alabilirim?
+ 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
+ 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir?
+ 4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir?
+ 4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nas�l g�rebilirim?
+ 4.8) Sorgular�m cok yava�, ya da indexlerimi kullanm�yorlar. Neden?
+ 4.9) Query-optimizer in sorgular�m� nas�l de�erlendirdigini, i�leme soktu�unu nas�l g�rebilirim?
+ 4.10) R-tree index nedir?
+ 4.11) Genetic Query Optimizer nedir?
+ 4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim?
+ Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim?
+
+ 4.13) Bir sorguda, bir alan�n "NULL" oldu�unu nas�l ortaya ��karabilirim?
+ 4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
+ 4.15.1) Nas�l serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
+ 4.15.2) SERIAL giri�inin de�erini nas�l alabilirim?
+ 4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�?
+ 4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL
+ kolonumdaki say�larda atlamalar oluyor?
+ 4.16) OID nedir? TID nedir?
+ 4.17) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdir?
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatas�n� al�yorum?
+ 4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim?
+ 4.20) Neden large-object i�lemlerim, "invalid large obj descriptor"? hatas�n� veriyor?
+ 4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu nas�l yarat�r�m?
+ 4.22) Neden IN kullanan subquerylerim �ok yava�?
+ 4.23) Outer join i�lemini nas�l yapabilirim?
+ 4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
+ 4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
+ 4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
+ 4.27) Hangi replikasyon se�enekleri bulunmaktad�r?
+ 4.28) Hangi �ifreleme se�enekleri bulunmaktad�r?
+
+ PostgreSQL �zelliklerini Geni�letmek
+
+ 5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman neden
+ core dump ediyor?
+ 5.2) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim?
+ 5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m?
+ 5.4) Bir kaynak dosyas�nda de�isiklik yapt�m. Yeniden derlememe ra�men
+ de�i�iklik ge�erli olmuyor. Neden?
+ _________________________________________________________________
+
+ Genel sorular
+
+ 1.1) PostgreSQL nedir?
+
+ PostgreSQL, Post-Gres-Q-L olarak okunur.
+
+ PostgreSQL, yeni-nesil VTYS arast�rma prototipi olan POSTGRES veritaban�
+ y�netim sisteminin geli�tirilmesidir. POSTGRES' in zengin veri
+ tiplerini ve g��l� veri modelini tutarken, SQL'in geli�tirilmis alt k�mesi
+ olan PostQuel dilini kullan�r. PostgreSQL �cretsizdir ve kaynak kodu a��k da��t�l�r.
+
+ PostgreSQL, PostgreSQL gelistirme listesine �ye olan bir �nternet gelistirici
+ tak�m� taraf�ndan geli�tirilir. �u andaki koordinat�r, Marc G. Fournier
+ ([email protected]). (Bu tak�ma nas�l kat�lacag�n�z� �grenmek i�in
+ 1.6 numaral� maddeyi okuyunuz.) Bu tak�m, t�m PostgreSQL geli�iminden sorumludur.
+
+ PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi. Bunlar�n d�s�nda bir ka� kisi de uyarlama,
+ hata ay�klama ve kodun gelistirilmesi i�in �al�sm�st�. PostgreSQL'in t�redigi orijinal Postgres kodu,
+ lisans, lisans�st� ve akademisyenler tarafindan, Professor Michael Stonebraker ) University of
+ California, Berkeley) koordinat�rl�g�nde yaz�lm�st�r.
+
+ Berkley'deki yaz�l�m�m ad� Postgres idi. SQL uyumlulugu 1995'te eklenince, ad� Postgres 95
+ oldu. 1996 y�l�n�n sonlar�nda ad� PostgreSQL olarak degistirildi.
+
+ 1.2) PostgreSQL'in haklar� nedir?
+
+ PostgreSQL Data Base Management System
+
+ Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 Regents of the University of California
+
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written
agreement is hereby granted, provided that the above copyright notice
and this paragraph and the following two paragraphs appear in all
- copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO
- ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
- DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
- SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA
- HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF
- CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
- BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE
- MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. The
- above is the BSD license, the classic open-source license. It has no
- restrictions on how the source code may be used. We like it and have
- no intention of changing it. 1.3) What Unix platforms does PostgreSQL
- run on? In general, a modern Unix-compatible platform should be able
- to run PostgreSQL. The platforms that had received explicit testing at
- the time of release are listed in the installation instructions. 1.4)
- What non-Unix ports are available? *Client* It is possible to compile
- the /libpq/ C library, psql, and other interfaces and client
- applications to run on MS Windows platforms. In this case, the client
- is running on MS Windows, and communicates via TCP/IP to a server
- running on one of our supported Unix platforms. A file /win32.mak/ is
- included in the distribution for making a Win32 /libpq/ library and
- /psql/. PostgreSQL also communicates with ODBC clients. *Server* The
- database server can run on Windows NT and Win2k using Cygwin, the
- Cygnus Unix/NT porting library. See /pgsql/doc/FAQ_MSWIN/ in the
- distribution or the MS Windows FAQ at
- http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
- www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN>. A native port to MS Win
- NT/2000/XP is currently being worked on. For more details on the
- current status of PostgreSQL on Windows see
- http://techdocs.postgresql.org/guides/Windows
- techdocs.postgresql.org/guides/Windows>. There is also a Novell
- Netware 6 port at http://forge.novell.com. 1.5) Where can I get
- PostgreSQL? The primary anonymous ftp site for PostgreSQL is
- ftp://ftp.PostgreSQL.org/pub. For mirror sites, see our main web site.
- 1.6) Where can I get support? The main mailing list is:
- [email protected] . It is available for discussion of
- matters pertaining to PostgreSQL. To subscribe, send mail with the
- following lines in the body (not the subject line): subscribe end to
- [email protected] . There is also a digest list
- available. To subscribe to this list, send email to:
- [email protected] with a body of: subscribe
- end Digests are sent out to members of this list whenever the main
- list has received around 30k of messages. The bugs mailing list is
- available. To subscribe to this list, send email to
- [email protected] with a body of: subscribe end There
- is also a developers discussion mailing list available. To subscribe
- to this list, send email to [email protected] with
- a body of: subscribe end Additional mailing lists and information
- about PostgreSQL can be found via the PostgreSQL WWW home page at:
- http://www.PostgreSQL.org There is also an IRC channel on EFNet and
- OpenProjects, channel /#PostgreSQL/. I use the Unix command |irc -c
- '#PostgreSQL' "$USER" irc.phoenix.net.| A list of commercial support
- companies is available at
- http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html.
- 1.7) What is the latest release? The latest release of PostgreSQL is
- version 7.3.3. We plan to have major releases every four months. 1.8)
- What documentation is available? Several manuals, manual pages, and
- some small test examples are included in the distribution. See the
- //doc/ directory. You can also browse the manuals online at
- http://www.PostgreSQL.org/docs. There are two PostgreSQL books
- available online at http://www.PostgreSQL.org/docs/awbook.html and
- http://www.commandprompt.com/ppbook/. There is a list of PostgreSQL
- books available for purchase at http://www.ca.PostgreSQL.org/books/.
- There is also a collection of PostgreSQL technical articles at
- http://techdocs.PostgreSQL.org/. /psql/ has some nice \d commands to
- show information about types, operators, functions, aggregates, etc.
- Our web site contains even more documentation. 1.9) How do I find out
- about known bugs or missing features? PostgreSQL supports an extended
- subset of SQL-92. See our TODO developer.PostgreSQL.org/todo.php> list
- for known bugs, missing features, and future plans. 1.10) How can I
- learn SQL? The PostgreSQL book at
- http://www.PostgreSQL.org/docs/awbook.html teaches SQL. There is
- another PostgreSQL book at http://www.commandprompt.com/ppbook.
- www.commandprompt.com/ppbook/> There is a nice tutorial at
+ copies.
+
+ IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+ FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+ INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+ ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+ PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+ CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+ UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+ �stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak kodun nas�l
+ kullan�labilece�ine dair s�n�rlamalar� yoktur. Bu lisansi seviyoruz ve de�i�tirme
+ niyetimiz bulunmamaktad�r.
+
+ 1.3) PostgreSQL, hangi Unix platforlar�nda �al�s�r?
+
+ Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i �al�st�racakt�r.
+ Ayr�nt�l� bilgi i�in kurulum belgelerine bakabilirsiniz
+
+ 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+
+ �stemci
+
+ libpq C k�t�phanesini, psql ve diger arabirimleri ve binary dosyalar�, MS
+ Windows ortamlar�nda �al�smas� i�in derlemeniz m�mk�nd�r. Bu �rnekte istemcide
+ MS Windows �al�s�yor ve desteklenen Unix platformlar�ndan birinde �al�san PostgreSQL
+ sunucuna TCP/IP ile baglanmaktad�r. Da��t�m i�indeki win31.mak dosyas� ile,
+ Win32 libpg k�t�phanesi ve psql yaratabilirsiniz. PostgreSQL ayn� zamanda ODBC
+ istemcileri ile haberlesebilmektedir.
+
+ Sunucu
+
+ Veritaban� sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde calistirilabilir.
+ Dag�t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da web sitemizdeki MS Windows FAQ'u
+ inceleyebilirsiniz.
+
+ Do�al Windows NT/2000/XP portu i�in �u anda �al��malar devam etmektedir. Windows s�r�m�
+ hakk�nda g�ncel bilgi i�in, http://techdocs.postgresql.org/guides/Windows adresini
+ ziyaret edebilirsiniz.
+
+ Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktad�r.
+
+ 1.5) PostgreSQL'in nereden indirebilirim?
+
+ PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub ' dur.
+ Yans�lar i�in, ana web sayfam�za bakabilirsiniz.
+
+ 1.6) Deste�i nereden alabilirim?
+
+ Ana e-posta listesi : [email protected]. PostgreSQL konusundaki tart�smalara
+ a��kt�r. �ye olmak i�in, asag�daki sat�rlar� e-postanizin body k�sm�na (konu k�sm�na degil)
+ yaz�p, [email protected] adresine g�nderin:
+
+ subscribe
+ end
+
+ Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak i�in,
+ [email protected] adresine, body k�sm�nda
+
+ subscribe
+ end
+
+ yazan bir e-posta atman�z yeterli olacakt�r.
+
+ Digest postalar, ana liste 30k civar�nda e-postaya ulastiginda �yelere g�nderilmektedir.
+
+ Buglar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak i�in,
+ email to [email protected] adresine, body k�sm�nda
+
+ subscribe
+ end
+
+ yazan bir e-posta atman�z yeterli olacakt�r.
+
+ Ayn� zamanda, gelistiriciler i�in tart�sma listesi bulunmaktad�r. Bu listeye �ye olmak
+ i�in, [email protected] adresine, body k�sm�nda
+
+ subscribe
+ end
+
+ yazan bir e-posta atman�z yeterli olacakt�r.
+
+ Bunun d�s�ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW
+ ana sayfas�ndan ulasabilirsiniz:
+
+ http://www.PostgreSQL.org
+
+ Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir �RC kanal� bulunmaktad�r. Bunun i�in,
+ irc -c '#PostgreSQL' "$USER" irc.phoenix.net Unix komutunu kullanabilirsiniz.
+
+ Ticari destek veren firmalar�n listesine,
+
+ http://www.postgresql.org/users-lounge/commercial-support.html
+
+ adresinden ulasabilirsiniz.
+
+ 1.7) En son s�r�m� nedir?
+
+ PostgreSQL'in son s�r�m� 7.3.3't�r.
+
+ Her 4 ayda major release ��kar�lmas� planlanmaktad�r.
+
+ 1.8) Hangi belgelere ulasabilirim?
+
+ Da��t�m�n icinde, kitapciklar, kitapcik sayfalari ve bazi k���k �rnekler verilmektedir.
+ /doc dizinine bak�n�z. Ayrica, bu el kitap��klar�n� online olarak
+ http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz.
+
+ http://www.PostgreSQL.org/docs/awbook.html ve http://www.commandprompt.com/ppbook
+ adreslerinde PostgreSQL kitaplar� bulunmaktad�r. PostgreSQL kitablar�n�n listesine,
+ http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz. Ayr�ca, PostgreSQL
+ konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden
+ ula�abilirsiniz.
+
+ psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregateler,vb. ile
+ ilgili g�zel komutlar� vard�r.
+
+ Web sitemiz daha fazla belgeyi i�ermektedir.
+
+ 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
+
+ PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da �zellikleri
+ bulunmaktad�r. Bilinen hatalar, eksik �zellikler ve gelecek ile ilgili planlar i�in
+ TODO listesine bak�n�z.
+
+ 1.10) Nas�l SQL �grenebilirim?
+
+ http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL �gretecektir.
+ http://www.commandprompt.com/ppbook adresinde de bir baska PostgreSQL kitab� bulunmaktad�r.
+
http://www.intermedia.net/support/sql/sqltut.shtm,
- www.intermedia.net/support/sql/sqltut.shtm> at
- http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
- ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM> and at
- http://sqlcourse.com. sqlcourse.com/> Another one is "Teach Yourself
- SQL in 21 Days, Second Edition" at
- http://members.tripod.com/er4ebus/sql/index.htm Many of our users like
- /The Practical SQL Handbook/, Bowman, Judith S., et al.,
- Addison-Wesley. Others like /The Complete Reference SQL/, Groff et
- al., McGraw-Hill. 1.11) Is PostgreSQL Y2K compliant? Yes, we easily
- handle dates past the year 2000 AD, and before 2000 BC. 1.12) How do I
- join the development team? First, download the latest source and read
- the PostgreSQL Developers documentation on our web site, or in the
- distribution. Second, subscribe to the /pgsql-hackers/ and
- /pgsql-patches/ mailing lists. Third, submit high quality patches to
- pgsql-patches. There are about a dozen people who have commit
- privileges to the PostgreSQL CVS archive. They each have submitted so
- many high-quality patches that it was impossible for the existing
- committers to keep up, and we had confidence that patches they
- committed were of high quality. 1.13) How do I submit a bug report?
- Please visit the PostgreSQL BugTool page at
- http://www.PostgreSQL.org/bugs/bugs.php, which gives guidelines and
- directions on how to submit a bug report. Also check out our ftp site
- ftp://ftp.PostgreSQL.org/pub to see if there is a more recent
- PostgreSQL version or patches. 1.14) How does PostgreSQL compare to
- other DBMSs? There are several ways of measuring software: features,
- performance, reliability, support, and price. *Features* PostgreSQL
- has most features present in large commercial DBMSs, like
- transactions, subselects, triggers, views, foreign key referential
- integrity, and sophisticated locking. We have some features they do
- not have, like user-defined types, inheritance, rules, and
- multi-version concurrency control to reduce lock contention.
- *Performance* PostgreSQL has performance similar to other commercial
- and open source databases. it is faster for some things, slower for
- others. In comparison to MySQL or leaner database systems, we are
- slower on inserts/updates because of transaction overhead. Of course,
- MySQL does not have any of the features mentioned in the /Features/
- section above. We are built for reliability and features, though we
- continue to improve performance in every release. There is an
- interesting Web page comparing PostgreSQL to MySQL at
- http://openacs.org/philosophy/why-not-mysql.html
- openacs.org/philosophy/why-not-mysql.html> *Reliability* We realize
- that a DBMS must be reliable, or it is worthless. We strive to release
- well-tested, stable code that has a minimum of bugs. Each release has
- at least one month of beta testing, and our release history shows that
- we can provide stable, solid releases that are ready for production
- use. We believe we compare favorably to other database software in
- this area. *Support* Our mailing lists provide contact with a large
- group of developers and users to help resolve any problems
- encountered. While we cannot guarantee a fix, commercial DBMSs do not
- always supply a fix either. Direct access to developers, the user
- community, manuals, and the source code often make PostgreSQL support
- superior to other DBMSs. There is commercial per-incident support
- available for those who need it. (See FAQ section 1.6 <#1.6>.) *Price*
- We are free for all use, both commercial and non-commercial. You can
- add our code to your product with no limitations, except those
- outlined in our BSD-style license stated above. 1.15) How can I
- financially assist PostgreSQL? PostgreSQL has had a first-class
- infrastructure since we started in 1996. This is all thanks to Marc
- Fournier, who has created and managed this infrastructure over the
- years. Quality infrastructure is very important to an open-source
- project. It prevents disruptions that can greatly delay forward
- movement of the project. Of course, this infrastructure is not cheap.
- There are a variety of monthly and one-time expenses that are required
- to keep it going. If you or your company has money it can donate to
- help fund this effort, please go to http://store.pgsql.com/shopping/
- and make a donation. Although the web page mentions PostgreSQL, Inc,
- the "contributions" item is solely to support the PostgreSQL project
- and does not fund any specific company. If you prefer, you can also
- send a check to the contact address.
- ----------------------------------------------------------------------
- -- User Client Questions 2.1) Are there ODBC drivers for PostgreSQL?
- There are two ODBC drivers available, PsqlODBC and OpenLink ODBC. You
- can download PsqlODBC from
- http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
- gborg.postgresql.org/project/psqlodbc/projdisplay.php>. OpenLink ODBC
- can be gotten from http://www.openlinksw.com www.openlinksw.com/>. It
- works with their standard ODBC client software so you'll have
- PostgreSQL ODBC available on every client platform they support (Win,
- Mac, Unix, VMS). They will probably be selling this product to people
- who need commercial-quality support, but a freeware version will
- always be available. Please send questions to
- [email protected] . 2.2) What tools are available for using
- PostgreSQL with Web pages? A nice introduction to Database-backed Web
- pages can be seen at: http://www.webreview.com For Web integration,
- PHP is an excellent interface. It is at http://www.php.net. For
- complex cases, many use the Perl interface and CGI.pm or mod_perl.
- 2.3) Does PostgreSQL have a graphical user interface? Yes, there are
- several graphical interfaces to PostgreSQL available. These include
- PgAccess http://www.pgaccess.org www.pgaccess.org>), PgAdmin II
- (http://www.pgadmin.org, Win32-only), RHDB Admin
- (http://sources.redhat.com/rhdb/ ) and Rekall (
- http://www.thekompany.com/products/rekall/
- www.thekompany.com/products/rekall/>, proprietary). There is also
- PHPPgAdmin ( http://phppgadmin.sourceforge.net/
- phppgadmin.sourceforge.net/>), a web-based interface to PostgreSQL.
- See http://techdocs.postgresql.org/guides/GUITools for a more detailed
- list. 2.4) What languages are able to communicate with PostgreSQL?
- Most popular programming languages contain an interface to PostgreSQL.
- Check your programming language's list of extension modules. The
- following interfaces are included in the PostgreSQL distribution: * C
- (libpq) * Embedded C (ecpg) * Java (jdbc) * Python (PyGreSQL) * TCL
- (libpgtcl) Additional interfaces are available at
- http://gborg.postgresql.org in the /Drivers/Interfaces/ section.
- ----------------------------------------------------------------------
- -- Administrative Questions 3.1) How do I install PostgreSQL somewhere
- other than //usr/local/pgsql/? Specify the /--prefix/ option when
- running /configure/. 3.2) When I start /postmaster/, I get a /Bad
- System Call/ or core dumped message. Why? It could be a variety of
- problems, but first check to see that you have System V extensions
- installed in your kernel. PostgreSQL requires kernel support for
- shared memory and semaphores. 3.3) When I try to start /postmaster/, I
- get /IpcMemoryCreate/ errors. Why? You either do not have shared
- memory configured properly in your kernel or you need to enlarge the
- shared memory available in the kernel. The exact amount you need
- depends on your architecture and how many buffers and backend
- processes you configure for /postmaster/. For most systems, with
- default numbers of buffers and processes, you need a minimum of ~1 MB.
- See the PostgreSQL Administrator's Guide
- www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-re
- sources.html> for more detailed information about shared memory and
- semaphores. 3.4) When I try to start /postmaster/, I get
- /IpcSemaphoreCreate/ errors. Why? If the error message is
- /IpcSemaphoreCreate: semget failed (No space left on device)/ then
- your kernel is not configured with enough semaphores. Postgres needs
- one semaphore per potential backend process. A temporary solution is
- to start /postmaster/ with a smaller limit on the number of backend
- processes. Use /-N/ with a parameter less than the default of 32. A
- more permanent solution is to increase your kernel's SEMMNS and SEMMNI
- parameters. Inoperative semaphores can also cause crashes during heavy
- database access. If the error message is something else, you might not
- have semaphore support configured in your kernel at all. See the
- PostgreSQL Administrator's Guide for more detailed information about
- shared memory and semaphores. 3.5) How do I control connections from
- other hosts? By default, PostgreSQL only allows connections from the
- local machine using Unix domain sockets. Other machines will not be
- able to connect unless you add the /-i/ flag to /postmaster/, *and*
- enable host-based authentication by modifying the file
- /$PGDATA/pg_hba.conf/ accordingly. This will allow TCP/IP connections.
- 3.6) How do I tune the database engine for better performance?
- Certainly, indexes can speed up queries. The EXPLAIN command allows
- you to see how PostgreSQL is interpreting your query, and which
- indexes are being used. If you are doing many INSERTs, consider doing
- them in a large batch using the COPY command. This is much faster than
- individual INSERTS. Second, statements not in a BEGIN WORK/COMMIT
- transaction block are considered to be in their own transaction.
- Consider performing several statements in a single transaction block.
- This reduces the transaction overhead. Also, consider dropping and
- recreating indexes when making large data changes. There are several
- tuning options. You can disable /fsync()/ by starting /postmaster/
- with a /-o -F/ option. This will prevent /fsync()/s from flushing to
- disk after every transaction. You can also use the /postmaster/ /-B/
- option to increase the number of shared memory buffers used by the
- backend processes. If you make this parameter too high, the
- /postmaster/ may not start because you have exceeded your kernel's
- limit on shared memory space. Each buffer is 8K and the default is 64
- buffers. You can also use the backend /-S/ option to increase the
- maximum amount of memory used by the backend process for temporary
- sorts. The /-S/ value is measured in kilobytes, and the default is 512
- (i.e. 512K). You can also use the CLUSTER command to group data in
- tables to match an index. See the CLUSTER manual page for more
- details. 3.7) What debugging features are available? PostgreSQL has
- several features that report status information that can be valuable
- for debugging purposes. First, by running /configure/ with the
- --enable-cassert option, many /assert()/s monitor the progress of the
- backend and halt the program when something unexpected occurs. Both
- /postmaster/ and /postgres/ have several debug options available.
- First, whenever you start /postmaster/, make sure you send the
- standard output and error to a log file, like: cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 & This will put a server.log file in
- the top-level PostgreSQL directory. This file contains useful
- information about problems or errors encountered by the server.
- /Postmaster/ has a /-d/ option that allows even more detailed
- information to be reported. The /-d/ option takes a number that
- specifies the debug level. Be warned that high debug level values
- generate large log files. If /postmaster/ is not running, you can
- actually run the /postgres/ backend from the command line, and type
- your SQL statement directly. This is recommended *only* for debugging
- purposes. Note that a newline terminates the query, not a semicolon.
- If you have compiled with debugging symbols, you can use a debugger to
- see what is happening. Because the backend was not started from
- /postmaster/, it is not running in an identical environment and
- locking/backend interaction problems may not be duplicated. If
- /postmaster/ is running, start /psql/ in one window, then find the PID
- of the /postgres/ process used by /psql/. Use a debugger to attach to
- the /postgres/ PID. You can set breakpoints in the debugger and issue
- queries from /psql/. If you are debugging /postgres/ startup, you can
- set PGOPTIONS="-W n", then start /psql/. This will cause startup to
- delay for /n/ seconds so you can attach to the process with the
- debugger, set any breakpoints, and continue through the startup
- sequence. The /postgres/ program has /-s, -A/, and /-t/ options that
- can be very useful for debugging and performance measurements. You can
- also compile with profiling to see what functions are taking execution
- time. The backend profile files will be deposited in the
- /pgsql/data/base/dbname/ directory. The client profile file will be
- put in the client's current directory. Linux requires a compile with
- /-DLINUX_PROFILE/ for proper profiling. 3.8) Why do I get /"Sorry, too
- many clients"/ when trying to connect? You need to increase
- /postmaster/'s limit on how many concurrent backend processes it can
- start. The default limit is 32 processes. You can increase it by
- restarting /postmaster/ with a suitable /-N/ value or modifying
- /postgresql.conf/. Note that if you make /-N/ larger than 32, you must
- also increase /-B/ beyond its default of 64; /-B/ must be at least
- twice /-N/, and probably should be more than that for best
- performance. For large numbers of backend processes, you are also
- likely to find that you need to increase various Unix kernel
- configuration parameters. Things to check include the maximum size of
- shared memory blocks, SHMMAX; the maximum number of semaphores, SEMMNS
- and SEMMNI; the maximum number of processes, NPROC; the maximum number
- of processes per user, MAXUPRC; and the maximum number of open files,
- NFILE and NINODE. The reason that PostgreSQL has a limit on the number
- of allowed backend processes is so your system won't run out of
- resources. 3.9) What is in the /pgsql_tmp/ directory? This directory
- contains temporary files generated by the query executor. For example,
- if a sort needs to be done to satisfy an ORDER BY and the sort
- requires more space than the backend's /-S/ parameter allows, then
- temporary files are created here to hold the extra data. The temporary
- files are usually deleted automatically, but might remain if a backend
- crashes during a sort. A stop and restart of the /postmaster/ will
- remove files from those directories. 3.10) Why do I need to do a dump
- and restore to upgrade between major PostgreSQL releases? The
- PostgreSQL team makes only small changes between minor releases, so
- upgrading from 7.2 to 7.2.1 does not require a dump and restore.
- However, major releases (e.g. from 7.2 to 7.3) often change the
- internal format of system tables and data files. These changes are
- often complex, so we don't maintain backward compatability for data
- files. A dump outputs data in a generic format that can then be loaded
- in using the new internal format. In releases where the on-disk format
- does not change, the /pg_upgrade/ script can be used to upgrade
- without a dump/restore. The release notes mention whether /pg_upgrade/
- is available for the release.
- ----------------------------------------------------------------------
- -- Operational Questions 4.1) What is the difference between binary
- cursors and normal cursors? See the DECLARE manual page for a
- description. 4.2) How do I SELECT only the first few rows of a query?
- See the FETCH manual page, or use SELECT ... LIMIT.... The entire
- query may have to be evaluated, even if you only want the first few
- rows. Consider using a query that has an ORDER BY. If there is an
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+ http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de g�zel belgeler bulunmaktad�r.
+
+ Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan
+ "Teach Yourself SQL in 21 Days, Second Edition" kitab�d�r.
+
+ Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler:
+ The Practical SQL Handbook, Bowman, Judith S., et al.,Addison-Wesley. Others
+ like The Complete Reference SQL, Groff et al., McGraw-Hill.
+
+ 1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
+
+ Evet.
+
+ 1.12) Gelistirme tak�m�na nas�l kat�labilirim?
+
+ �ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da dag�t�m�n i�indeki
+ PostgreSQL Developer belgesini okuyun. Ardindan, pgsql-hackers ve pgsql-patches
+ listelerine �ye olun. ���nc� olarak da, pgsql-pacthes listesine y�ksek kalitede
+ yamalar g�nderin.
+
+ PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici bulunmaktadir.
+ Hepsi defalarca, diger kisilerin yaptigindan cok daha y�ksek-kaliteli patchler
+ gondermislerdir. Ayrica biz de bu gelistiricilerin ekledikleri yamalarin y�ksek
+ kalitede olduguna g�veniyoruz.
+
+ 1.13) Bir hata raporunu nas�l g�nderebilirim?
+
+ PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin neleri
+ yapman�z gerektigi anlatilmistir.
+
+ Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL s�r�m�
+ ya da yamasi olup olmadigini kontrol ediniz.
+
+ 1.14) PostgreSQL, diger DBMS'lerle nas�l karsilast�r�labilir?
+
+ Bir yazilimin g�c�n� �l�mek i�in �esitli yollar vardir: Yazilimin �zellikleri,
+ basar�m�, g�venilirligi, destegi ve �creti.
+
+ �zellikler
+
+ PostgreSQL mevcut b�y�k ticari veritabanlarinin, transaction, subselect,
+ trigger, view, foreign key referential integrity ve sophisticated locking gibi
+ t�m �zelliklerine sahiptir. Onlarin sahip olmadiklari, kullanici-tanimli tipler
+ (user-defined types), rules, inheritance ve lock cak�smalarini d�s�rmek icin
+ multi-version uyumluluk �zellikleri bulunmaktadir.
+
+ Performans (Ba�ar�m)
+
+ PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n ba�ar�m� sa�lar.
+ Baz� a��lardan daha h�zl�d�r, di�er a��lardan da yava�t�r. MySQL ya da daha zay�f
+ veritabanlar� ile kar��la�t�r�ld���nda,insert/update islemlerinde, transaction bazl�
+ �al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler" k�sm�nda belirtilenlerden
+ hi� birine sahip de�ildir. Biz, ba�ar�m�m�z� her s�r�mde artt�rsak da, esneklik ve
+ geli�mi� �zellikler i�in yap�lanm�s durumday�z . PostgreSQL'i MySQL ile kar��la�t�ran
+ �u web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
+
+ G�venilirlik
+ DBMSlerin g�venilir olmas� gerketigi, yoksa degerleri olmayacagini d�s�n�yoruz
+ �ok iyi test edilmis, dengeli �al�san minimum say�da hata i�eren kod sunmaya �al�s�yoruz.
+ Her bir s�r�m en az 1 ayl�k beta testlerinden ge�irilmektedir. S�r�m ge�mi�ine bakarsan�z,
+ �retime haz�r, dengeli ve kararl� kodlar sundugumuzu g�rebilirsiniz. Bu alanda, diger
+ veritaban� yaZ�l�mlar�na �st�nl�g�m�z olduguna inanmaktay�z
+
+ Destek
+ E-posta listemiz, olusan herhangi bir sorunu ��zebilecek b�y�k say�da kullan�c�
+ ve gelistirici grubunu i�erir. Sorununuz i�in, en az bir ticari veritaban� kadar
+ rahat ��z�m bulabilirsiniz. Gelistiricilere, kullan�c� grubuna, belgelere ve
+ kaynak koda direk olarak erisebilme, PostgreSQL destegini, diger DBMSlere g�re daha
+ �nemli k�lar. Gereksinimi olanlara, ticari destek verilebilir. (Destek i�in 1.6 b�l�m�ne bak�n�z.)
+
+ Fiyat
+ Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL �cretsizdir. Kodumuzu, yukar�da belirtilen
+ BSD-stili lisanstaki s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz.
+
+ 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+
+ PostgreSQL, 1996 y�l�ndan beri 1.s�n�f altyap�ya ashiptir. Bunun i�in, y�llar boyu �al�s�p bu altyap�y�
+ olusturup y�neten Marc Fournier'e tesekk�rler.
+
+ Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu altyap�, projenin
+ kesilmesini �nler ve projenin ilerlemesini h�zland�r�r.
+
+ Tabii ki bu altyap� ucuz degildir. �slerin y�r�mesi i�in �e�itli y�l�k ve anl�k
+ harcamalar�m�z olmaktad�r. Eger siz ya da sirketinizin bu �abam�za bag�sta
+ bulunabilecek paras� varsa, l�tfen http://www.pgsql.com/pg_goodies adresine
+ gidiniz ve bag�sta, hibede bulununuz.
+
+ Web sayfas�n�n PostgreSQL, �nc.' den bahsetmesine ragmen, "katk�da bulunanlar"
+ (contributors) maddesi sadece PostgreSQL projesini desteklemek i�indir ve belirli bir
+ sirketin para kaynag� degildir. isterseniz, baglant� adresine bir �ek g�nderebilirsiniz.
+
+ ____________________________________________________________________________
+
+ Kullan�c�/istemci Sorular�
+
+ 2.1) PostgreSQL icin ODBC s�r�c�leri var m�?
+
+ iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC.
+
+ PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden
+ indirebilirsiniz.
+
+ OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu s�r�c�,
+ kendi standart ODBC istemci yaz�l�m� ile �al�st���ndan, destekledikleri
+ her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
+
+ �cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir.
+ Sorular�n�z� l�tfen [email protected] adresine g�nderiniz.
+
+ 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r?
+
+ http://www.webreview.com adresinde, arka planda veritaban� �al�st�ran Web sayfalar�
+ i�in giris seviyesinde bilgi bulunmaktad�r.
+
+ Web ile b�t�nlesme i�in, PHP m�kemmel bir arabirim sunar. http://www.php.net .
+
+ Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da mod_perl kullan�r.
+
+
+ 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+
+ �e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda, PgAccess (http://www.pgaccess.org),
+ PgAdmin II (http://www.pgadmin.org, sadece Win32 i�in), RHDB Admin (http://sources.redhat.com/rhdb/ )
+ ve Rekall (http://www.thekompany.com/products/rekall/) bulunmaktad�r. Ayr�ca, PostgreSQL i�in web
+ tabanl� bir arabirim olan PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ) bulunmaktad�r.
+
+ Daha ayr�nt�l� liste i�in http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.
+
+ 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim?
+
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ Di�erleri i�in, http://gborg.postgresql.org adresindeki Drivers/Interfaces b�l�m�ne
+ bakabilirsiniz.
+ _________________________________________________________________
+
+ Y�netimsel Sorular
+
+ 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere nas�l kurabilirim?
+
+ configure betigini �al�st�r�rken, --prefix se�enegini veriniz.
+
+ 3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core dumped mesaj�
+ al�yorum. Neden?
+
+ Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, �ekirdeginize
+ System V uzant�lar�n�n kurulu olup olmad�g�n� kontrol etmek olabilir. PostgreSQL
+ shared memory ve semaphores i�in �ekirdek destegine gereksinim duyar.
+
+ 3.3) postmaster'i baslatt�g�mda, a �pcMemoryCreate hatas� al�yorum. Neden?
+
+ Ya �ekirdeginizde shared memory desteginiz d�zg�nce yap�land�r�lmam�st�r, ya da
+ �ekirdeginizdeki mevcut shared memory miktar�n� b�y�tmeniz gerekecektir. Gereksinim
+ duyacag�n�z miktar, mimarinize ve postmaster i�in ayarlad�g�n�z tampon ile backend
+ islemi say�s�na bagl�d�r. T�m sistemler i�in, tamponlar ve islemlerde �ntan�ml� say�larla,
+ ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL Administrator's Guide' a, shared memory
+ ve semaphorelar hakk�ndaki ayr�nt�l� bilgi i�in bakabilirsiniz.
+
+ 3.4) postmaster'i baslatt�g�mda, a �pcSemaphoreCreate hatas� al�yorum. Neden?
+
+ Eger hata, "�pcSemaphoreCreate: semget failed (No space left on device)" ise,
+ �ekirdeginiz yeterli semaphore ile yap�land�r�lmam�s demektir. Postgres, her
+ bir potansiyel backend i�in bir semaphore gereksinmesi duyar. Ge�ici bir ��z�m,
+ postmaster� backend islemleri i�in daha az miktarda s�n�rla baslatmak olabilir.
+ -N i varsa�lan deger olan 32'den k���k bir degerle baslat�n�z. Daha kal�c� bir
+ ��z�m, �ekirde�inizin SEMMNS ve SEMMNI parametrelerini y�kseltmek olacakt�r.
+
+ �al��mayan semaphorelar a��r veritaban� islemlerinde ��kme yaratabilirler.
+
+ Eger hata mesaj�n�z baska birsey ise, �ekirdeginizde semaphore destegini
+ yap�land�rmam�s olabilirsiniz. Shared memory ve semaphorelar hakk�ndaki daha
+ ayr�nt�l� bilgi i�in PostgreSQL Administrator's Guide'a bakabilirsiniz.
+
+ 3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma baglant�lar�n�
+ nas�l kontrol edebilirim?
+
+ �n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak
+ baglan�lmas�na izin verir. Diger makineler, postmaster'a -i etiketini ge�irmezseniz
+ ve $PGDATA_pg_hba.conf dosyas�n� d�zenleyerek host-based authentication'a
+ olanak vermezseniz, baglant� yapamayacaklard�r.
+
+ 3.6) Veritabani motorunu daha iyi basarim icin nasil ayarlayabilirim?
+
+ Indexler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nas�l
+ yorumlad���n� ve hangi indexleri kullandigini g�rmenize izin verir.
+
+ E�er cok fazla INSERT islemi yapiyorsaniz, bunlar� b�y�k bir toplu islem dosyasi kullan�p
+ COPY komutu ile veritabanina girmeyi deneyiniz. Bu, tekil �NSERTlerden daha h�zl�d�r.
+ ikinci olarak, BEG�N WORK/COMM�T transaction blogu i�inde olmayan ifadeler kendi
+ transactionlarindaymis gibi d�s�n�l�r. �oklu ifadeleri tek bir transaction blo�u i�inde
+ yapabilirsiniz. Bu, transaction overheadini d���recektir. Tek bir
+ transaction blo�u i�inde birden �ok ifadeyi �al��t�rmay�
+ deneyebilirsiniz. Bu, transaction overhead ini d���r�r.
+
+ �e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'� -o -F se�ene�i ile
+ ba�latarak devre d��� b�rakabilirsiniz. Bu i�lem, fsync()'lerin her transactiondan sonra
+ diske flush etmesini engelleyecektir.
+
+ Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri taraf�ndan kullan�lan
+ shared memorf buffers say�lar�n� artt�rabilirsiniz. Eger bu parametreyi �ok y�ksek tutarsan�z,
+ �ekirde�inizin shared memory b�lgesindeki limiti a�ma olas�l���n�z y�z�nden postmaster
+ ba�layamayabilir. Her bir tampon (buffer) 8K'd�r. �ntan�ml� say� ise 64 tampondur.
+
+ Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend s�re�leri taraf�ndan
+ kullan�lacak haf�zay� artt�rmak amac�yla kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r
+ ve �n tan�ml� de�eri 512'dir (512 K)
+
+ Tablolardaki veriyi bir indekse e�lemek amac�yla gruplama i�in CLUSTER komutunu kullanabilirsiniz.
+ Ayr�nt�l� bilgi i�in CLUSTER komutunun yard�m sayfas�na bakabilirsiniz.
+
+ 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+
+ PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi rapor eden �e�itli
+ �zeliklere sahiptir.
+
+ �ncelikle, configure beti�ini --enable-cassert se�ene�iyle �al��t�r�rsan�z, bir �ok assert() backend cal��mas�n�
+ g�zlemler ve beklenmeyen bir durumda program� durdurur.
+
+ Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir. �ncelikle,
+ postmaster'i ba�latt���n�zda, standart ��kt�y� ve hatalar� bir log dosyas�na
+ y�nlendirdi�inize emin olun:
+
+ cd /usr/local/pgsql
+ ./bin/postmaster >server.log 2>&1 &
+
+ Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir. Bu dosya sunucunun
+ ya�ad��� sorunlar ya da hatalar hakk�nda yararl� bilgiler i�erir. -d se�ene�i, hata
+ ay�klama seviyesini belirten bir rakam ile kullan�l�r. Y�ksek hata ay�klama
+ seviyelerinin b�y�k log dosyalar� olu�turaca��n� unutmay�n�z.
+
+ E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan �al��t�rabilir ve SQL ifadenizi
+ direk olarak yazabilirsiniz. Bu sadece hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de
+ yeni bir sat�r�n sorguyu sonland�rd���n� unutmay�n�z. E�er hata ay�klama sembolleri ile derlediyseniz,
+ ne oldu�unu g�rmek i�in bir hata ay�klay�c� kullanabilirsiniz. backend postmasterdan ba�lat�lmad���ndan,
+ e�de�er bir ortamda �al��mamaktad�r ve locking/backend etkile�im sorunlar� artabilir.
+
+ E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql taraf�ndan kullan�lan postgres s�recinin s�re�
+ numaras�n� (PID) bulun. Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n. Sorgular� psql
+ arac�l��� ile �al��t�rabilirsiniz. E�er postgres ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n"
+ se�ene�ini ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n saniye kadar gecikmesini
+ sa�layacakt�r; b�ylece hata ay�klay�c�y� s�rece ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini
+ sa�layabilirsiniz.
+
+ postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t se�eneklerine sahiptir.
+
+ 3.8) Baglanmaya �al�s�ken, neden "Sorry, too many clients" hatas�n� al�yorum?
+
+ Postmaster'in e�zamanl� olarak ba�latabilece�i backend s�re�leri s�n�rlar�n�
+ artt�rman�z gerekmektedir.
+
+ �n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'i uygun -N de�eri ile ya da
+ postgresql.conf dosyas�n� d�zenleyerek yeniden ba�latmakla artt�rabilirsiniz.
+
+ E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini de de�i�tirmeniz
+ gerekti�ini unutmay�n. -B -N'nin en az 2 kat� kadar olmal�d�r; daha iyi ba�ar�m i�in
+ bu say�y� daha da artt�rmal�s�n�z. Y�ksek say�daki backend s�re�leri i�in, �e�itli �ekirdek yap�land�rma
+ parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler, SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve
+ a��labilecek dosyalar�n maksimum say�s� olan NFILE ve NINODE de�erlerini kar��t�rmakt�r. Bunun nedeni, PostgreSQL'in
+ izin verilen backend s�re�lerinin say�s� �zerinde bir s�n�r� olmas�d�r. B�ylelikle sistem kaynaklar�n�n d���na
+ ��k�lmayacakt�r.
+
+ PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve bunu de�i�tirmek i�in
+ include/storage/sinvaladt.h dosyas� i�indeki MaxBAckendid sabitini de�i�tirdek sonra
+ yaz�l�m� yeniden derlemek gerekiyordu.
+
+ 3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir?
+
+ Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici dosyalard�r. �rnegin,
+ bir s�ralama ORDER BY ile yapilacaksa ve s�ralama backend'in -s parametresinin izin
+ verdiginden daha fazla alana gereksinim duyuyorsa, ekstra veriyi tutmak i�in ge�ici
+ dosyalar yarat�l�r.
+
+ Ge�ici dosyalar, eger s�ralama s�ras�nda backend g��mezse otomatik olarak silinecektir.
+ Eger �al�san durumda bir backendiniz yoksa, pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir..
+
+ 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek zorunday�m?
+
+ PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler yapmaktad�r; bu y�zden 7.2
+ s�r�m�nden 7.2.1'e y�kseltmek dump/restore i�lemi gerekmemektedir. Ancak, esas s�r�mlerde
+ (�rnek: 7.2'den 7.3'e) �o�unlukla sistem tablolar�n�n ve veri dosyalar�n�n i� yap�s�
+ de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla veri dosyalar�n�n
+ geriye d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump i�lemi, veriyi genel bi�imde
+ alaca��ndan yeniden y�kleme esnas�nda veri, yeni i� bi�ime uygun �ekilde
+ yerle�tirilecektir.
+
+ Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin bir dump/restore
+ gerektirmeden yap�lmas�n� sa�layacakt�r. pg_upgrade beti�inin o s�r�m i�in bulunup
+ bulunmad���n� s�r�m notlar� i�inde bulabilirsiniz.
+
+ _________________________________________________________________
+
+ ��letimsel Sorular
+
+
+ 4.1) Binary cursor ve normal cursor arasindaki fark nedir?
+
+ DECLARE yard�m sayfasina bakiniz.
+
+ 4.2) Sorgunun sadece ilk birka� sat�r�n� nasil SELECT edebilirim?
+
+ FETCH yard�m sayfasina bakiniz, aya da SELECT ... LIMIT.... kullan�n�z.
+
+ The entire query may have to be evaluated, even if you only want the
+ first few rows. Consider a query that has an ORDER BY. �f there is an
index that matches the ORDER BY, PostgreSQL may be able to evaluate
only the first few records requested, or the entire query may have to
- be evaluated until the desired rows have been generated. 4.3) How do I
- get a list of tables or other things I can see in /psql/? You can read
- the source code for /psql/ in file /pgsql/src/bin/psql/describe.c/. It
- contains SQL commands that generate the output for psql's backslash
- commands. You can also start /psql/ with the /-E/ option so it will
- print out the queries it uses to execute the commands you give. 4.4)
- How do you remove a column from a table? This functionality was added
- in release 7.3 with ALTER TABLE DROP COLUMN. In earlier versions, you
- can do this: BEGIN; LOCK TABLE old_table; SELECT ... -- select all
- columns but the one you want to remove INTO TABLE new_table FROM
- old_table; DROP TABLE old_table; ALTER TABLE new_table RENAME TO
- old_table; COMMIT; 4.5) What is the maximum size for a row, a table,
- and a database? These are the limits: Maximum size for a database?
- unlimited (4 TB databases exist) Maximum size for a table? 16 TB
- Maximum size for a row? 1.6TB Maximum size for a field? 1 GB Maximum
- number of rows in a table? unlimited Maximum number of columns in a
- table? 250-1600 depending on column types Maximum number of indexes on
- a table? unlimited Of course, these are not actually unlimited, but
- limited to available disk space and memory/swap space. Performance may
- suffer when these values get unusually large. The maximum table size
- of 16 TB does not require large file support from the operating
- system. Large tables are stored as multiple 1 GB files so file system
- size limits are not important. The maximum table size and maximum
- number of columns can be increased if the default block size is
- increased to 32k. 4.6) How much database disk space is required to
- store data from a typical text file? A PostgreSQL database may require
- up to five times the disk space to store data from a text file. As an
- example, consider a file of 100,000 lines with an integer and text
- description on each line. Suppose the text string avergages twenty
- bytes in length. The flat file would be 2.8 MB. The size of the
- PostgreSQL database file containing this data can be estimated as 6.4
- MB: 36 bytes: each row header (approximate) 24 bytes: one int field
- and one text field + 4 bytes: pointer on page to tuple
- ---------------------------------------- 64 bytes per row The data
- page size in PostgreSQL is 8192 bytes (8 KB), so: 8192 bytes per page
- ------------------- = 128 rows per database page (rounded down) 64
- bytes per row 100000 data rows -------------------- = 782 database
- pages (rounded up) 128 rows per page 782 database pages * 8192 bytes
- per page = 6,406,144 bytes (6.4 MB) Indexes do not require as much
- overhead, but do contain the data that is being indexed, so they can
- be large also. NULLs are stored in bitmaps, so they use very little
- space. 4.7) How do I find out what tables, indexes, databases, and
- users are defined? /psql/ has a variety of backslash commands to show
- such information. Use \? to see them. There are also system tables
- beginning with /pg_/ that describe these too. Also, /psql -l/ will
- list all databases. Also try the file
- /pgsql/src/tutorial/syscat.source/. It illustrates many of the SELECTs
- needed to get information from the database system tables. 4.8) My
- queries are slow or don't make use of the indexes. Why? Indexes are
- not automatically used by every query. Indexes are only used if the
- table is larger than a minimum size, and the query selects only a
- small percentage of the rows in the table. This is because the random
- disk access caused by an index scan can be slower than a straight read
- through the table, or sequential scan. To determine if an index should
- be used, PostgreSQL must have statistics about the table. These
- statistics are collected using VACUUM ANALYZE, or simply ANALYZE.
- Using statistics, the optimizer knows how many rows are in the table,
- and can better determine if indexes should be used. Statistics are
- also valuable in determining optimal join order and join methods.
- Statistics collection should be performed periodically as the contents
- of the table change. Indexes are normally not used for ORDER BY or to
- perform joins. A sequential scan followed by an explicit sort is
- usually faster than an index scan of a large table. However, LIMIT
- combined with ORDER BY often will use an index because only a small
- portion of the table is returned. In fact, though MAX() and MIN()
- don't use indexes, it is possible to retrieve such values using an
- index with ORDER BY and LIMIT: SELECT col FROM tab ORDER BY col [ DESC
- ] LIMIT 1; If you believe the optimizer is incorrect in choosing a
- sequential scan, use |SET enable_seqscan TO 'off'| and run tests to
- see if an index scan is indeed faster. When using wild-card operators
- such as LIKE or /~/, indexes can only be used in certain
- circumstances: * The beginning of the search string must be anchored
- to the start of the string, i.e. o LIKE patterns must not start with
- /%/. o /~/ (regular expression) patterns must start with /^/. * The
- search string can not start with a character class, e.g. [a-e]. *
- Case-insensitive searches such as ILIKE and /~*/ do not utilise
- indexes. Instead, use functional indexes, which are described in
- section 4.12 <#4.12>. * The default /C/ locale must be used during
- /initdb/. 4.9) How do I see how the query optimizer is evaluating my
- query? See the EXPLAIN manual page. 4.10) What is an R-tree index? An
- R-tree index is used for indexing spatial data. A hash index can't
- handle range searches. A B-tree index only handles range searches in a
- single dimension. R-trees can handle multi-dimensional data. For
- example, if an R-tree index can be built on an attribute of type
- /point/, the system can more efficiently answer queries such as
- "select all points within a bounding rectangle." The canonical paper
- that describes the original R-tree design is: 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. You can also find
- this paper in Stonebraker's "Readings in Database Systems". Built-in
- R-trees can handle polygons and boxes. In theory, R-trees can be
- extended to handle higher number of dimensions. In practice, extending
- R-trees requires a bit of work and we don't currently have any
- documentation on how to do it. 4.11) What is the Genetic Query
- Optimizer? The GEQO module speeds query optimization when joining many
- tables by means of a Genetic Algorithm (GA). It allows the handling of
- large join queries through nonexhaustive search. 4.12) How do I
- perform regular expression searches and case-insensitive regular
- expression searches? How do I use an index for case-insensitive
- searches? The /~/ operator does regular expression matching, and /~*/
- does case-insensitive regular expression matching. The
- case-insensitive variant of LIKE is called ILIKE. Case-insensitive
- equality comparisons are normally expressed as: SELECT * FROM tab
- WHERE lower(col) = 'abc'; This will not use an standard index.
- However, if you create a functional index, it will be used: CREATE
- INDEX tabindex ON tab (lower(col)); 4.13) In a query, how do I detect
- if a field is NULL? You test the column with IS NULL and IS NOT NULL.
- 4.14) What is the difference between the various character types? Type
- Internal Name Notes --------------------------------------------------
- VARCHAR(n) varchar size specifies maximum length, no padding CHAR(n)
- bpchar blank padded to the specified fixed length TEXT text no
- specific upper limit on length BYTEA bytea variable-length byte array
- (null-byte safe) "char" char one character You will see the internal
- name when examining system catalogs and in some error messages. The
- first four types above are "varlena" types (i.e., the first four bytes
- on disk are the length, followed by the data). Thus the actual space
- used is slightly greater than the declared size. However, these data
- types are also subject to compression or being stored out-of-line by
- TOAST, so the space on disk might also be less than expected.
- VARCHAR(n) is best when storing variable-length strings and it limits
- how long a string can be. TEXT is for strings of unlimited length,
- with a maximum of one gigabyte. CHAR(n) is for storing strings that
- are all the same length. CHAR(n) pads with blanks to the specified
- length, while VARCHAR(n) only stores the characters supplied. BYTEA is
- for storing binary data, particularly values that include NULL bytes.
- All the types described here have similar performance characteristics.
- 4.15.1) How do I create a serial/auto-incrementing field? PostgreSQL
- supports a SERIAL data type. It auto-creates a sequence and index on
- the column. For example, this: CREATE TABLE person ( id SERIAL, name
- TEXT ); is automatically translated into this: 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 ); See the /create_sequence/ manual page
- for more information about sequences. You can also use each row's
- /OID/ field as a unique value. However, if you need to dump and reload
- the database, you need to use /pg_dump/'s /-o/ option or COPY WITH
- OIDS option to preserve the OIDs. 4.15.2) How do I get the value of a
- SERIAL insert? One approach is to retrieve the next SERIAL value from
- the sequence object with the /nextval()/ function /before/ inserting
- and then insert it explicitly. Using the example table in 4.15.1
- <#4.15.1>, an example in a pseudo-language would look like this:
- new_id = execute("SELECT nextval('person_id_seq')"); execute("INSERT
- INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); You would
- then also have the new value stored in |new_id| for use in other
- queries (e.g., as a foreign key to the |person| table). Note that the
- name of the automatically created SEQUENCE object will be named
- __/seq/, where /table/ and /serialcolumn/ are the names of your table
- and your SERIAL column, respectively. Alternatively, you could
- retrieve the assigned SERIAL value with the /currval()/ function
- /after/ it was inserted by default, e.g., execute("INSERT INTO person
- (name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT
- currval('person_id_seq')"); Finally, you could use the OID <#4.16>
- returned from the INSERT statement to look up the default value,
- though this is probably the least portable approach. In Perl, using
- DBI with Edmund Mergl's DBD::Pg module, the oid value is made
- available via /$sth->{pg_oid_status}/ after /$sth->execute()/. 4.15.3)
- Don't /currval()/ and /nextval()/ lead to a race condition with other
- users? No. /currval()/ returns the current value assigned by your
- backend, not by all users. 4.15.4) Why aren't my sequence numbers
- reused on transaction abort? Why are there gaps in the numbering of my
- sequence/SERIAL column? To improve concurrency, sequence values are
- given out to running transactions as needed and are not locked until
- the transaction completes. This causes gaps in numbering from aborted
- transactions. 4.16) What is an OID? What is a TID? OIDs are
- PostgreSQL's answer to unique row ids. Every row that is created in
- PostgreSQL gets a unique OID. All OIDs generated during /initdb/ are
- less than 16384 (from /include/access/transam.h/). All user-created
- OIDs are equal to or greater than this. By default, all these OIDs are
- unique not only within a table or database, but unique within the
- entire PostgreSQL installation. PostgreSQL uses OIDs in its internal
- system tables to link rows between tables. These OIDs can be used to
- identify specific user rows and used in joins. It is recommended you
- use column type OID to store OID values. You can create an index on
- the OID field for faster access. OIDs are assigned to all new rows
- from a central area that is used by all databases. If you want to
- change the OID to something else, or if you want to make a copy of the
- table, with the original OIDs, there is no reason you can't do it:
- 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'; OIDs are stored as 4-byte integers,
- and will overflow at 4 billion. No one has reported this ever
- happening, and we plan to have the limit removed before anyone does.
+ be evaluated until the desired rows have been generated.
+
+ 4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin listesini nasil alabilirim?
+
+ pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu okuyabilirsiniz. Bu kod,
+ psql'in \ ile baslayan komutlar�n�n ��kt�s�n� olusturan SQL komutlarini i�erir. Ayn�
+ zamanda, psql'i -E se�ene�i ile ba�lat�p, verdi�iniz komutlar� �al��t�rmak i�in yapt���
+ sorgular�n ��kt�lar�n� g�rebilirsiniz.
+
+ 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
+
+ Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski s�r�mlerde
+ a�a��dakileri uygulamal�s�n�z:
+
+ BEGIN;
+ LOCK TABLE old_table;
+ SELECT ... -- select all columns but the one you want to remove
+ INTO TABLE new_table
+ FROM old_table;
+ DROP TABLE old_table;
+ ALTER TABLE new_table RENAME TO old_table;
+ COMMIT;
+
+ 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir?
+
+ S�n�rlar:
+
+ Veritabani icin en fazla b�y�kl�k nedir? S�n�rs�z (4 TB'l�k veritaban� bulunmaktad�r)
+ Bir tablo icin en fazla b�y�kl�k nedir? 16 TB
+ Bir sat�r i�in en fazla b�y�kl�k nedir? 1.6 TB
+ Bir alan i�in en fazla b�y�kl�k nedir? 1 GB
+ Tabloda en fazla sat�r say�s� ka�t�r? S�n�rs�z
+ Bir tabloda olabilecek en fazla kolon say�s� ka�t�r? Kolon tiplerine ba�l� olarak 250-1600
+ Bir tabloda olabilecek en fazla index say�s� ka�t�r? s�n�rs�z
+
+ Tabii ki bunlar aslinda s�n�rs�z degildir. Burada belirtilen s�n�rlar, fiziksel
+ s�n�rlar�n haricindeki s�n�rlard�r. Bo� disk alan�, haf�za/takas alan� na ba�l�
+ s�n�rlamalar vard�r. Ba�ar�m, s�n�r de�erlere yaklast�k�a, ya da de�erler cok b�y�k
+ oldu�unda d��ebilir.
+
+ Bir tablo i�in b�y�kl�k s�n�r� olan 16 TB, i�letim sisteminin b�y�k dosya deste�i olup
+ olmamas�ndan ba��ms�zd�r. B�y�k tablolar, 1 GB'lik dosyalarda sakland��� i�in, dosya
+ sistemi s�n�rlar�nin bir �nemi yoktur.
+
+ Tablo ve kolon say�s� b�y�kl�kleri, �n tan�ml� blok b�y�kl��� 32k ya ��kar�larak
+ artt�r�labilir.
+
+ 4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir?
+
+ Bir PostgreSQL veritaban�, veriyi "flat" metin dosyas�nda saklamak i�in gereken
+ alan�n 5 kat fazla disk alan�na gereksinim duyabilir.
+
+ Her sat�r�nda bir tamsay� ve metin (text) i�eren, 100.000 sat�rl�k bir dosya d���n�n.
+ Her sat�r�n ortalama 20 byte oldu�unu farzedelim. Metin dosyas� 2.8 MB olacakt�r. Bu veriyi
+ tutan PostgreSQL veritaban� yakla��k 6.4 MB yer kaplayacakt�r.
+
+ 36 byte: Her bir sat�r basl�g� (yaklasik)
+ + 24 byte: Bir tamsay� (int) alani ve bir metin (text) alan�
+ + 4 byte: Sayfada tuple a pointer
+ ----------------------------------------
+ 64 byte -> kay�t bas�na
+
+ PostgreSQL'de data page b�y�kl��� 8192 byte (8k)dir, dolay�s�yla:
+
+ 8192 byte -> page bas�na
+ ------------------------- = Her bir veritabani page i ba��na 128 sat�r (yakla��k)
+ Sat�r bas�na 64 byte
+
+ 100000 veri sat�r�
+ -------------------- = 782 veritaban� sayfas�
+ 128 sat�r
+
+ 782 veritaban� sayfas� * sayfa ba��na 8192 byte = 6,406,144 bytes (6.4 MB)
+
+ Indexler cok fazla yere gereksinim duymazlar, ama indexlenmis veriyi tutacaklar�ndan
+ b�y�k olabilirler.
+
+ NULL de�erler bitmapler i�inde tutulur; dolay�s�yla �ok az yer kaplarlar.
+
+ 4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nasil g�rebilirim?
+
+ psql, bu t�r bilgileri g�stermek i�in, \ ile ba�layan bir �ok komut sunmaktad�r.
+ \? komutu ile bu komutlar� g�rebilirsiniz. Ayr�ca, bunlar� a��klayan ve pg_ ile ba�layan
+ �ok say�da sistem tablosu bulunmaktad�r. Ayn� zamanda, psql -l ile t�m veritabanlar�n�
+ listeyelebirsiniz.
+
+ Ayr�ca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritaban�
+ sistem dosyalarindan bilgiyi almak i�in gereksinim duyulan bir �ok SELECTleri g�sterir.
+
+ 4.8) Sorgular�m cok yava�, ya da indexlerimi kullanm�yorlar. Neden?
+
+ Indexes are not automatically used by every query. Indexes are only used if the table is larger than a minimum size,
+and the query selects only a small percentage of the rows in the table. This is because the random disk access caused
+by an index scan can be slower than a straight read through the table, or sequential scan.
+
+To determine if an index should be used, PostgreSQL must have statistics about the table. These statistics are
+collected using VACUUM ANALYZE, or simply ANALYZE. Using statistics, the optimizer knows how many rows are in the
+table, and can better determine if indexes should be used. Statistics are also valuable in determining optimal join
+order and join methods. Statistics collection should be performed periodically as the contents of the table change.
+
+Indexes are normally not used for ORDER BY or to perform joins. A sequential scan followed by an explicit sort is
+usually faster than an index scan of a large table.
+However, LIMIT combined with ORDER BY often will use an index because only a small portion of the table is returned.
+In fact, though MAX() and MIN() don't use indexes, it is possible to retrieve such values using an index with ORDER
+BY and LIMIT:
+
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1;
+
+ E�er optimizer'in sequential scan i�leminde hata yapt���n� d���n�yorsan�z, SET enable_seqscan TO 'off' 'u kullan�n�z
+ ve index scan'in hala h�zl� olup olmad���n� g�rmek i�in testler yap�n�z.
+
+ LIKE ya da ~ gibi operatorler kullaniyorsan�z, indeksler sadece a�a��daki ko�ullarda kullan�labilir:
+
+ * Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani,
+ o LIKE sorgular� % ile ba�lamamal�d�r.
+ o D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r.
+ * Arama metni bir karakter s�n�f� ile ba�layamaz. �rnek: [a-e]
+ * ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar indekslerden yararlanmazlar. Onun yerine, b�l�m 4.12'de
+anlat�lan fonksiyonel indeksleri kullanabilirsiniz.
+ * initdb s�ras�nda �ntan�ml� C localei kullan�lmal�d�r.
+
+ 4.9) query-optimizer in sorgular�m� nas�l de�erlendirdi�ini, i�leme soktu�unu nas�l g�rebilirim?
+
+ EXPLAIN yard�m sayfas�na bak�n�z.
+
+ 4.10) R-tree index nedir?
+
+ An R-tree index is used for indexing spatial data. A hash index can't handle range searches. A B-tree index only
+handles range searches in a single dimension. R-trees can handle multi-dimensional data. For example, if an R-tree
+index can be built on an attribute of type point, the system can more efficiently answer queries such as "select all
+points within a bounding rectangle."
+
+The canonical paper that describes the original R-tree design is:
+
+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.
+
+Bu paperi, Stonebraker'�n "Readings in Database Systems" kitab�nda bulabilirsiniz.
+
+Built-in R-trees can handle polygons and boxes. In theory, R-trees can be extended to handle higher number of
+dimensions. In practice, extending R-trees requires a bit of work and we don't currently have any documentation on
+how to do it.
+
+ 4.11) Genetic Query Optimizer nedir?
+
+ GEQO mod�l�, Genetic Algorith(GA) kullan�larak tablolar birle�tirildi�inde sorgu optimizasyonunu h�zland�r�r.
+ It allows the handling of large join queries through nonexhaustive search.
+
+ 4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim?
+ Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim?
+
+ ~ operat�r� d�zenli ifade e�le�mesi ve ~* b�y�k/k���k harfe duyars�z d�zenli ifade e�le�mesi yapar.
+ B�y�k/k���k harfe duyarl� olan LIKE'in b�y�k/k���k harfe duyars�z olan bi�ini ILIKE't�r ve PostgreSQL
+ 7.1 s�r�m� ile birlikte gelmi�tir.
+
+ B�y�k-k���k harfe duyars�z e�itlik kar��la�t�rmalar� a�a��daki gibi ifade edilir:
+
+ SELECT *
+ FROM tab
+ WHERE lower(col) = 'abc'
+
+ Bu standart bir indeks yaratmayacakt�r. Ancak e�er fonksiyonel bir indeks yarat�rsan�z; o kullan�lacakt�r:
+
+ CREATE INDEX tabindex on tab (lower(col));
+
+ 4.13) Bir sorguda, bir alanin "NULL" oldugunu nasil ortaya ��karabilirim?
+
+ Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
+
+ 4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
+
+Veri Tipi �� Ad� Not
+--------------------------------------------------
+VARCHAR(n) varchar boyut en b�y�k uzunlu�u verir; sadece verilen kadar veri tutulur.
+CHAR(n) bpchar belirtilen uzunlupa kadar sonuna bo�luk eklenir.
+TEXT text uzunlukta herhangi bir �st s�n�r yoktur.
+BYTEA bytea variable-length byte array (null-byte safe)
+"char" char bir karakter
+
+�� adlar� (internal name) sistem kataloglar�n� ve baz� hata meajlar�n� incelerken g�receksiniz.
+
+ �lk d�rt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devam� da veridir.) Dolay�s�yla,
+ B�ylece, kullan�lan ger�ek alan, belirtilen alandan biraz daha b�y�kt�r. Ancak, bu veri tipleri, s�k��t�r�lmaya tabi
+ tutulabilir; dolay�s�yla disk alan� beklenilenden k�c�k olabilir. VARCHAR(n) b�y�kl��� artabilen ama en b�y�k
+ uzunlu�u s�n�rl� oan verileri saklamak i�in en uygun y�ntemdir. TEXT, 1 GB b�y�kl��e kadar olan verileri tutmak i�in
+ kullan�l�r.
+
+ CHAR(n), ayn� uzunluktaki dizilerin saklanmas� i�in kullan�m�r. CHAR(n) belirtilen uzunlu�a kadar bo�luk ile
+ doldurur; ancak VARCHAR(n) sadece verilen karakterleri saklar.BYTEA binary veri saklamak i�indir; ayr�ca "NULL" bayt
+ i�eren de�erleri de saklar. Burada anlat�lan �� veri tipi de benzer ba�ar�m karakteristiklere sahiptir.
+
+ 4.15.1) Nasil serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
+
+ PostgreSQL'de SERIAL veri tipi vard�r. Bu veri tipi bir sequence ve kolon �zerinde bir indeks yarat�r.
+
+ �rnek, a�a��daki sorgu:
+
+ CREATE TABLE person (
+ id SER�AL,
+ name TEXT
+ );
+
+ buna �evrilir:
+
+ CREATE SEQUENCE person_id_seq;
+ CREATE TABLE person (
+ id �NT4 NOT NULL DEFAULT nextval('person_id_seq'),
+ name TEXT
+ );
+ CREATE UNIQUE �NDEX person_id_key ON person ( id );
+
+ Sequenceler hakk�nda daha fazla bilgi i�in create_sequence yard�m sayfas�na bakabilirsiniz. Her sat�r�n OID alan�n�
+ tekil bir say� olarak alabilirsiniz. Ancak, veritaban�n�z�n dump'�n� al�p yeniden y�klerseniz, OID de�erlerini
+ koruyabilmek i�in pg_dump'�n -o parametresini ya da "COPY WITH OIDS" se�ene�ini kullanman�z gerekecektir.
+
+ 4.15.2) SERIAL giri�inin degerini nasil alabilirim?
+
+One approach is to retrieve the next SERIAL value from the sequence object with the nextval() function before
+inserting and then insert it explicitly. Using the example table in 4.15.1, an example in a pseudo-language would
+look like this:
+
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+
+You would then also have the new value stored in new_id for use in other queries (e.g., as a foreign key to the
+person table). Note that the name of the automatically created SEQUENCE object will be named
+<table>_<serialcolumn>_seq, where table and serialcolumn are the names of your table and your SERIAL column,
+respectively.
+
+ Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra currval() fonksiyonu ile alabilirsiniz:
+
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+
+ Son olarak, �n tan�ml� de�eri bulmak i�in INSERT ifadesinden d�nen OID de�erini kullanabilirsiniz; ancak bu
+ en az ta��nabilir ��z�m olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI kullanarak, oid de�eri
+ $sth->execute() �al��t�r�ld�ktan sonra $sth->(pg_oid_status) ile al�nabilir.
+
+ 4.15.3) currval() ve nextval() diger kullanicilara sorun yaratmaz m�?
+
+ Hay�r. curval(), t�m kullan�c�lar degil, backend taraf�ndan atanan ge�erli
+ degeri d�nd�r�r.
+
+ 4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL
+ kolonumdaki say�larda atlamalar oluyor?
+
+ Uyumlulu�u artt�rmak i�in, sequence de�erleri �al��an transactionlara gerekti�i �ekilde aktar�l�r ve transaction
+ bitene kadar o de�er kilitlenmez. Bu, iptal edilen transaction i�lemleri nedeniyle bo�luklara neden olur.
+
+ 4.16) OID nedir? TID nedir?
+
+ O�Ds are PostgreSQL's answer to unique row ids. Every row that is
+ created in PostgreSQL gets a unique O�D. All O�Ds generated during
+ initdb are less than 16384 (from backend/access/transam.h). All
+ user-created O�Ds are equal to or greater than this. By default, all
+ these O�Ds are unique not only within a table or database, but unique
+ within the entire PostgreSQL installation.
+
+ PostgreSQL uses O�Ds in its internal system tables to link rows
+ between tables. These O�Ds can be used to identify specific user rows
+ and used in joins. �t is recommended you use column type O�D to store
+ O�D values. You can create an index on the O�D field for faster
+ access.
+
+ O�Ds are assigned to all new rows from a central area that is used by
+ all databases. �f you want to change the O�D to something else, or if
+ you want to make a copy of the table, with the original O�Ds, there is
+ no reason you can't do it:
+ CREATE TABLE new_table(old_oid oid, mycol int);
+ SELECT old_oid, mycol �NTO new FROM old;
+ COPY new TO '/tmp/pgtable';
+ DELETE FROM new;
+ COPY new W�TH O�DS FROM '/tmp/pgtable';
+
+ O�Ds are stored as 4-byte integers, and will overflow at 4 billion. No
+ one has reported this ever happening, and we plan to have the limit
+ removed before anyone does.
+
TIDs are used to identify specific physical rows with block and offset
- values. TIDs change after rows are modified or reloaded. They are used
- by index entries to point to physical rows. 4.17) What is the meaning
- of some of the terms used in PostgreSQL? Some of the source code and
- older documentation use terms that have more common usage. Here are
- some: * table, relation, class * row, record, tuple * column, field,
- attribute * retrieve, select * replace, update * append, insert * OID,
- serial value * portal, cursor * range variable, table name, table
- alias A list of general database terms can be found at:
- http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
- /glossary.html 4.18) Why do I get the error /"ERROR: Memory exhausted
- in AllocSetAlloc()"/? You probably have run out of virtual memory on
- your system, or your kernel has a low limit for certain resources. Try
- this before starting /postmaster/: ulimit -d 262144 limit datasize
- 256m Depending on your shell, only one of these may succeed, but it
- will set your process data segment limit much higher and perhaps allow
- the query to complete. This command applies to the current process,
- and all subprocesses created after the command is run. If you are
- having a problem with the SQL client because the backend is returning
- too much data, try it before starting the client. 4.19) How do I tell
- what PostgreSQL version I am running? From /psql/, type |SELECT
- version();| 4.20) Why does my large-object operations get /"invalid
- large obj descriptor"/? You need to put |BEGIN WORK| and |COMMIT|
- around any use of a large object handle, that is, surrounding
- |lo_open| ... |lo_close.| Currently PostgreSQL enforces the rule by
- closing large object handles at transaction commit. So the first
- attempt to do anything with the handle will draw /invalid large obj
- descriptor/. So code that used to work (at least most of the time)
- will now generate that error message if you fail to use a transaction.
- If you are using a client interface like ODBC you may need to set
- |auto-commit off.| 4.21) How do I create a column that will default to
- the current time? Use /CURRENT_TIMESTAMP/: |CREATE TABLE test (x int,
- modtime timestamp DEFAULT CURRENT_TIMESTAMP ); | 4.22) Why are my
- subqueries using |IN| so slow? Currently, we join subqueries to outer
- queries by sequentially scanning the result of the subquery for each
- row of the outer query. If the subquery returns only a few rows and
- the outer query returns many rows, |IN| is fastest. To speed up other
- queries, replace |IN| with |EXISTS|: SELECT * FROM tab WHERE col IN
- (SELECT subcol FROM subtab); to: SELECT * FROM tab WHERE EXISTS
- (SELECT subcol FROM subtab WHERE subcol = col); For this to be fast,
- |subcol| should be an indexed column. This preformance problem will be
- fixed in 7.4. 4.23) How do I perform an outer join? PostgreSQL
- supports outer joins using the SQL standard syntax. Here are two
- examples: SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); or
- SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col); These identical
- queries join t1.col to t2.col, and also return any unjoined rows in t1
- (those with no match in t2). A RIGHT join would add unjoined rows of
- t2. A FULL join would return the matched rows plus all unjoined rows
- from t1 and t2. The word OUTER is optional and is assumed in LEFT,
- RIGHT, and FULL joins. Ordinary joins are called INNER joins. In
- previous releases, outer joins can be simulated using UNION and NOT
- IN. For example, when joining /tab1/ and /tab2/, the following query
- does an /outer/ join of the two tables: SELECT tab1.col1, tab2.col2
- FROM tab1, tab2 WHERE tab1.col1 = tab2.col1 UNION ALL SELECT
- tab1.col1, NULL FROM tab1 WHERE tab1.col1 NOT IN (SELECT tab2.col1
- FROM tab2) ORDER BY col1 4.24) How do I perform queries using multiple
- databases? There is no way to query a database other than the current
- one. Because PostgreSQL loads database-specific system catalogs, it is
- uncertain how a cross-database query should even behave.
- /contrib/dblink/ allows cross-database queries using function calls.
- Of course, a client can make simultaneous connections to different
- databases and merge the results on the client side. 4.25) How do I
- return multiple rows or columns from a function? In 7.3, you can
- easily return multiple rows or columns from a function,
- http://techdocs.postgresql.org/guides/SetReturningFunctions
- techdocs.postgresql.org/guides/SetReturningFunctions>. 4.26) Why can't
- I reliably create/drop temporary tables in PL/PgSQL functions?
- PL/PgSQL caches function contents, and an unfortunate side effect is
- that if a PL/PgSQL function accesses a temporary table, and that table
- is later dropped and recreated, and the function called again, the
- function will fail because the cached function contents still point to
- the old temporary table. The solution is to use EXECUTE for temporary
- table access in PL/PgSQL. This will cause the query to be reparsed
- every time. 4.27) What replication options are available? There are
- several master/slave replication options available. These allow only
- the master to make database changes and the slave can only do database
- reads. The bottom of
- http://gborg.PostgreSQL.org/genpage?replication_research
- gborg.PostgreSQL.org/genpage?replication_research> lists them. A
- multi-master replication solution is being worked on at
- http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
- 4.28) What encryption options are available? * /contrib/pgcrypto/
- contains many encryption functions for use in SQL queries. * The only
- way to encrypt transmission from the client to the server is by using
- /hostssl/ in /pg_hba.conf/. * Database user passwords are
- automatically encrypted when stored in version 7.3. In previous
- versions, you must enable the option /PASSWORD_ENCRYPTION/ in
- /postgresql.conf/. * The server can run using an encrypted file
- system.
- ----------------------------------------------------------------------
- -- Extending PostgreSQL 5.1) I wrote a user-defined function. When I
- run it in /psql/, why does it dump core? The problem could be a number
- of things. Try testing your user-defined function in a stand-alone
- test program first. 5.2) How can I contribute some nifty new types and
- functions to PostgreSQL? Send your extensions to the /pgsql-hackers/
- mailing list, and they will eventually end up in the /contrib//
- subdirectory. 5.3) How do I write a C function to return a tuple? In
- versions of PostgreSQL beginning with 7.3, table-returning functions
- are fully supported in C, PL/PgSQL, and SQL. See the Programmer's
- Guide for more information. An example of a table-returning function
- defined in C can be found in /contrib/tablefunc/. 5.4) I have changed
- a source file. Why does the recompile not see the change? The
- /Makefiles/ do not have the proper dependencies for include files. You
- have to do a /make clean/ and then another /make/. If you are using
- GCC you can use the /--enable-depend/ option of /configure/ to have
- the compiler compute the dependencies automatically.
+ values. T�Ds change after rows are modified or reloaded. They are used
+ by index entries to point to physical rows.
+
+ 4.17) PostgreSQL'de kullan�lan baz� terimlerin anlamlar� nelerdir?
+
+ Kaynak kodun bir k�sm� ve eski belgeler, daha genis kullan�m alan� olan terimleri
+ kullan�rlar. Bunlar�n baz�lar�:
+
+ * table, relation, class
+ * row, record, tuple
+ * column, field, attribute
+ * retrieve, select
+ * replace, update
+ * append, insert
+ * OID, serial value
+ * portal, cursor
+ * range variable, table name, table alias
+
+ Genel veritaban� terimleri,
+
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
+ adresinde bulunabilir.
+
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatas�n� al�yorum?
+
+ Sisteminizde sanal belleginizi t�ketmis olabilirsiniz, ya da �ekirdeginiz
+ belli kaynaklar icin d���k bir s�n�ra sahip olabilir. postmasteri baslatmadan �nce
+ asagidakileri deneyebilirsiniz:
+
+ ulimit -d 262144
+ limit datasize 256m
+
+ Kabu�unuza ba�l� olarak, bunlardan sadece biri olumlu sonu� verecektir, ama
+ bu i�lem veri segment s�n�r�n�z� artt�racak, ve belki de sorgunuzun tamamlanmas�n�
+ saglayacakt�r. Bu komut, varolan isleme (current process) ve komut �al�st�r�ld�ktan
+ sonraki t�m alt islemlere uygulanir. Eger SQL istemcinizle, backendin �ok fazla veri
+ d�nd�rmesi nedeniyle bir sorun yas�yorsan�z, bunu istemciyi baslatmadan �nce deneyiniz.
+
+ 4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd�g�m� nasil g�rebilirim?
+
+ psql arabiriminde, select version(); yaz�n�z.
+
+ 4.20) Neden large-object islemlerim, "invalid large obj descriptor"? hatas�n� veriyor?
+
+ Large object islemlerinizin uclarina, yani lo_open ... lo_close komutlar�n�n �evresine,
+ BEGIN WORK ve COMMIT koyman�z gerekmektedir;
+
+ Eger ODBC gibi bir istemci arabirimi kullan�yorsan�z, auto-commit'i kapatman�z gerekebilir.
+
+ 4.21) Su andaki zaman� �ntan�ml� deger olarak kabul eden How do � create a column that will default to the current time?
+
+ Alttakini kullanabilirsiniz:
+
+ CURRENT_TIMESTAMP:
+ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
+
+ 4.22) Neden IN kullanan subquerylerim �ok yavas?
+
+ Currently, we join subqueries to outer queries by sequentially scanning the result of the subquery for
+ each row of the outer query. IN' i EXISTS ile de�i�tirerek bir ��z�me ula��labilir.
+
+SELECT *
+ FROM tab
+ WHERE col1 �N (SELECT col2 FROM TAB2)
+
+ to:
+SELECT *
+ FROM tab
+ WHERE EX�STS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+
+ Bu s�n�rlamay� ilerdeki s�r�mlerimizde d�zeltmeyi planlamaktay�z.
+
+ 4.23) Outer join islemini nasil yapabilirim?
+
+ PostgreSQL outer joins islemlerini SQL standartlar�n� kullanarak ger�eklestirmektedir.
+ Asagida 2 �rnek bulunmaktad�r:
+
+ SELECT *
+ FROM t1 LEFT OUTER JO�N t2 ON (t1.col = t2.col);
+
+ ya da
+
+ SELECT *
+ FROM t1 LEFT OUTER JO�N t2 US�NG (col);
+
+ Bu �zdes sorgular t1.col ' i t2.col'ye join ederler ve ayn� zamanda t1'deki unjoined sat�rlar�
+ (t2'de eslenmenis olanlarla) d�nd�r�rler. R�GHT JO�N t2'nin unjoined sat�rlar�n� ekleyecektir.
+ Bir FULL join, e�le�mi� bt�n sat�rlar� ve t1 ile t2'den t�m ba�lanmam�� (unjoined) sat�rlar� al�r.
+ OUTER s�zc��� se�imseldir ve LEFT, RIGHT ve FULL join i�lemlerinde oldu�u kabul edilir. S�radan
+ join i�lemleri INNER join olarak adland�r�l�r.
+
+ �nceki s�r�mlerde, OUTER JOINler UNION ve NOT IN kullan�larak sim�le edilebiliyordu. �rne�in, tab1
+ ve tab2'yi birle�tirirken, a�a��daki sorgu iki tablonun d��tan ba�lanmas�n� sa�lar:
+
+ SELECT tab1.col1, tab2.col2
+ FROM tab1, tab2
+ WHERE tab1.col1 = tab2.col1
+ UNION ALL
+ SELECT tab1.col1, NULL
+ FROM tab1
+ WHERE tab1.col1 NOT �N (SELECT tab2.col1 FROM tab2)
+ ORDER BY col1
+
+ 4.24) Ayni andan birden fazla veritabaninda nasil islem yapabilirim?
+
+ Mevcut veritaban�n�z d�s�ndaki baska bir veritaban�n�z� sorgulaman�z�n bir yolu bulunmamaktad�r.
+ bunun nedeni, PostgreSQL'in veritaban�na �zel sistem kataloglar� y�klemesidir. Bu nedenle,
+ cross-database bir sorgunun nasil davranacag�n� kestirmek zordur.
+
+ contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database sorgulara izin verid. Tabii ki,
+ bir istemci degisik veritabanlar�na ayn� anda erisim saglayabilir ve bilgiyi bu sekilde
+ birlestirebilir.
+
+ 4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
+
+ 7.3 s�r�m�nde, bir fonksiyondan kolayl�kla �oklu sat�r ya da s�tun d�nd�rebilirsiniz.
+
+ http://techdocs.postgresql.org/guides/SetReturningFunctions.
+
+ 4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
+
+ PL/PgSQL fonksiyon i�erikleri cacheler. Bunun istenmeyen bir taraf�, e�er bir PL/PgSQL fonksiyonu ge�ici bir
+ tabloya eri�iyorsa ve bu tablo ileride kald�r�l�p yeniden olu�turulduktan sonra fonksiyon yeniden �a�r�l�rsa,
+ fonksiyon �al��mayacakt�r; ��nk� cachelenmi� fonksiyon hala eski ge�ici tabloyu g�steriyor olacakt�r. ��z�m,
+ ge�ici tablo eri�imleri i�in PL/PgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her seferinde yeniden i�lenmesini
+ sa�layacakt�r.
+
+ 4.27) Hangi replikasyon se�enekleri bulunmaktad�r?
+
+ �e�itli master/slave replikasyon se�enekleri bulunmaktad�r. Bunlar master veritaban�n�n veritaban� de�i�ikliklerini
+ yaparken, slave sunucunun sadece veritaban�nda okuma yapmas�na izin verir.
+ http://gborg.PostgreSQL.org/genpage?replication_research sayfas�n�n alt�nda bunlar�n listesini bulabilirsiniz.
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php adresinde, �oklu-master replikasyon ��z�m�
+ �zerinde �al���l�yor.
+
+ 4.28) Hangi �ifreleme se�enekleri bulunmaktad�r?
+
+ * contrib/pgcrypto SQL sorgular�nda kullan�labilmesi i�in �ifreleme fonksiyonlar� i�ermektedir.
+ * �stemciden sunucuya ileti�imi �ifrelemenin tek yolu, pg_hba.conf i�inde hostssl kullanmakt�r.
+ * Veritaban� kullan�c� ad� ve �ifreleri 7.3 s�r�m� ile birlikte otomatik olarak �ifrelenirler. �nceki
+ s�r�mlerde, postgresql.conf i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz gerekmektedir.
+ * Sunucunun kendisini �ifreli dosya sistemi �zerinde �al��t�rabilirsiniz.
+
+ _________________________________________________________________
+
+ PostgreSQL �zelliklerini Geni�letmek
+
+ 5.1) Kullanici-tanimli bir fonksiyon yazdim. psql'de �alistirdigim zaman neden core dump ediyor?
+
+ Sorunun nedeni birden fazla sey olabilir. Kullanici-tanimli fonksiyonunuzu stand-alone bir programda
+ calistirmayi deneyiniz.
+
+ 5.2) PostgreSQL'e nasil yeni tipler/fonksiyonlar ekleyeiblirim?
+
+ �al�smalar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz incelendikten sonra
+ /contrib dizinine konacakt�r.
+
+ 5.3) Bir tuple dond�rmek icin bir C fonksiyonunu nasil yazar�m?
+
+ PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak tablo-d�nd�ren
+ fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi i�in "Programmer's Guide" a
+ bakabilrisiniz. Bir �rne�i contrib/tablefunc i�inde bulabilirsiniz.
+
+ 5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men de�i�iklik
+ge�erli olmuyor. Neden?
+
+ Makefile'lar include dosyalar� i�in tam bir ba��ml�l�k i�ermezler.
+ �ncelikle make clean, ard�ndan da baska bir make i�lemi yapman�z gerekir.
+ GCC kullan�yorsaniz, configure beti�inin --enable-depend se�ene�ini, derleyicinin
+ ba��ml�l�klar� otomatik olarak hesaplamas� i�in kullanabilirsiniz.
+
diff --git a/doc/src/FAQ/FAQ_turkish.html b/doc/src/FAQ/FAQ_turkish.html
index 38944666bb8..9e700dac678 100644
--- a/doc/src/FAQ/FAQ_turkish.html
+++ b/doc/src/FAQ/FAQ_turkish.html
@@ -1,1255 +1,1289 @@
-
- PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
-
-Son g�ncelleme : 19 May�s 2003 Pazartesi - 03:05:21
-
-Current maintainer: Bruce Momjian ([email protected]
-<mailto:[email protected]>)
-
-�eviren : Devrim G�ND�Z ([email protected] <mailto:[email protected]>)
-Nicolai Tufar ([email protected] <mailto:[email protected]>)
-
-Bu belgenin en g�ncel hali,
-http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
-http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir.
-
-Platforma �zel sorular�n�z,http://www.PostgreSQL.org/docs/index.html
-adresinde yan�tlan�r..
-
-------------------------------------------------------------------------
-
-
- Genel Sorular
-
-1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur?
-1.2 <#1.2>) PostgreSQL' in haklar� nedir?
-1.3 <#1.3>) PostgreSQL, hangi Unix platformlar�nda �al�s�r?
-1.4 <#1.4>) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
-1.5 <#1.5>) PostgreSQL'i nereden indirebilirim?
-1.6 <#1.6>) Deste�i nereden alabilirim?
-1.7 <#1.7>) En son s�r�m� nedir?
-1.8 <#1.8>) Hangi belgelere ulasabilirim?
-1.9 <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
-1.10 <#1.10>) Nas�l SQL ��renebilirim?
-1.11 <#1.11>) PostgreSQL 2000 y�l�na uyumlu mudur?
-1.12 <#1.12>) Geli�tirme tak�m�na nas�l kat�labilirim??
-1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim?
-1.14 <#1.14>) PostgreSQL, diger VTYS(DBMS lerle nas�l kar��la�t�r�labilir?
-1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
-
-
- Kullan�c�/istemci Sorular�
-
-2.1 <#2.1>) Are there ODBC drivers for PostgreSQL?
-2.2 <#2.2>) What tools are available for using PostgreSQL with Web pages?
-2.3 <#2.3>) Does PostgreSQL have a graphical user interface?
-2.4 <#2.4>) What languages are available to communicate with PostgreSQL?
-
-
- Administrative Questions
-
-3.1 <#3.1>) How do I install PostgreSQL somewhere other than
-//usr/local/pgsql/?
-3.2 <#3.2>) When I start /postmaster/, I get a /Bad System Call/ or core
-dumped message. Why?
-3.3 <#3.3>) When I try to start /postmaster/, I get /IpcMemoryCreate/
-errors. Why?
-3.4 <#3.4>) When I try to start /postmaster/, I get /IpcSemaphoreCreate/
-errors. Why?
-3.5 <#3.5>) How do I control connections from other hosts?
-3.6 <#3.6>) How do I tune the database engine for better performance?
-3.7 <#3.7>) What debugging features are available?
-3.8 <#3.8>) Why do I get /"Sorry, too many clients"/ when trying to connect?
-3.9 <#3.9>) What is in the /pgsql_tmp/ directory?
-3.10 <#3.10>) Why do I need to do a dump and restore to upgrade
-PostgreSQL releases?
-
-
- Operational Questions
-
-4.1 <#4.1>) What is the difference between binary cursors and normal
-cursors?
-4.2 <#4.2>) How do I SELECT only the first few rows of a query?
-4.3 <#4.3>) How do I get a list of tables or other things I can see in
-/psql/?
-4.4 <#4.4>) How do you remove a column from a table?
-4.5 <#4.5>) What is the maximum size for a row, a table, and a database?
-4.6 <#4.6>) How much database disk space is required to store data from
-a typical text file?
-4.7 <#4.7>) How do I find out what tables, indexes, databases, and users
-are defined?
-4.8 <#4.8>) My queries are slow or don't make use of the indexes. Why?
-4.9 <#4.9>) How do I see how the query optimizer is evaluating my query?
-4.10 <#4.10>) What is an R-tree index?
-4.11 <#4.11>) What is the Genetic Query Optimizer?
-4.12 <#4.12>) How do I perform regular expression searches and
-case-insensitive regular expression searches? How do I use an index for
-case-insensitive searches?
-4.13 <#4.13>) In a query, how do I detect if a field is NULL?
-4.14 <#4.14>) What is the difference between the various character types?
-4.15.1 <#4.15.1>) How do I create a serial/auto-incrementing field?
-4.15.2 <#4.15.2>) How do I get the value of a SERIAL insert?
-4.15.3 <#4.15.3>) Don't /currval()/ and /nextval()/ lead to a race
-condition with other users?
-4.15.4 <#4.15.4>) Why aren't my sequence numbers reused on transaction
-abort? Why are there gaps in the numbering of my sequence/SERIAL column?
-4.16 <#4.16>) What is an OID? What is a TID?
-4.17 <#4.17>) What is the meaning of some of the terms used in PostgreSQL?
-4.18 <#4.18>) Why do I get the error /"ERROR: Memory exhausted in
-AllocSetAlloc()"/?
-4.19 <#4.19>) How do I tell what PostgreSQL version I am running?
-4.20 <#4.20>) Why does my large-object operations get /"invalid large
-obj descriptor"/?
-4.21 <#4.21>) How do I create a column that will default to the current
-time?
-4.22 <#4.22>) Why are my subqueries using |IN| so slow?
-4.23 <#4.23>) How do I perform an outer join?
-4.24 <#4.24>) How do I perform queries using multiple databases?
-4.25 <#4.25>) How do I return multiple rows or columns from a function?
-4.26 <#4.26>) Why can't I reliably create/drop temporary tables in
-PL/PgSQL functions?
-4.27 <#4.27>) What replication options are available?
-4.28 <#4.28>) What encryption options are available?
-
-
- Extending PostgreSQL
-
-5.1 <#5.1>) I wrote a user-defined function. When I run it in /psql/,
-why does it dump core?
-5.2 <#5.2>) How can I contribute some nifty new types and functions to
-PostgreSQL?
-5.3 <#5.3>) How do I write a C function to return a tuple?
-5.4 <#5.4>) I have changed a source file. Why does the recompile not see
-the change?
-------------------------------------------------------------------------
-
-
- General Questions
-
-
- 1.1) What is PostgreSQL? How is it pronounced?
-
-PostgreSQL is pronounced /Post-Gres-Q-L/.
-
-PostgreSQL is an enhancement of the POSTGRES database management system,
-a next-generation DBMS research prototype. While PostgreSQL retains the
-powerful data model and rich data types of POSTGRES, it replaces the
-PostQuel query language with an extended subset of SQL. PostgreSQL is
-free and the complete source is available.
-
-PostgreSQL development is performed by a team of developers who all
-subscribe to the PostgreSQL development mailing list. The current
-coordinator is Marc G. Fournier ([email protected]
-<mailto:[email protected]>). (See section 1.6 <#1.6> on how to
-join). This team is now responsible for all development of PostgreSQL.
-
-The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many
-others have contributed to the porting, testing, debugging, and
-enhancement of the code. The original Postgres code, from which
-PostgreSQL is derived, was the effort of many graduate students,
-undergraduate students, and staff programmers working under the
-direction of Professor Michael Stonebraker at the University of
-California, Berkeley.
-
-The original name of the software at Berkeley was Postgres. When SQL
-functionality was added in 1995, its name was changed to Postgres95. The
-name was changed at the end of 1996 to PostgreSQL.
-
-
- 1.2) What is the copyright on PostgreSQL?
-
-PostgreSQL is subject to the following COPYRIGHT:
-
-PostgreSQL Data Base Management System
-
-Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
-Portions Copyright (c) 1994-6 Regents of the University of California
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written
-agreement is hereby granted, provided that the above copyright notice
-and this paragraph and the following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
-INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
-DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS
-TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
-The above is the BSD license, the classic open-source license. It has no
-restrictions on how the source code may be used. We like it and have no
-intention of changing it.
-
-
- 1.3) What Unix platforms does PostgreSQL run on?
-
-In general, a modern Unix-compatible platform should be able to run
-PostgreSQL. The platforms that had received explicit testing at the time
-of release are listed in the installation instructions.
-
-
- 1.4) What non-Unix ports are available?
-
-*Client*
-
-It is possible to compile the /libpq/ C library, psql, and other
-interfaces and client applications to run on MS Windows platforms. In
-this case, the client is running on MS Windows, and communicates via
-TCP/IP to a server running on one of our supported Unix platforms. A
-file /win32.mak/ is included in the distribution for making a Win32
-/libpq/ library and /psql/. PostgreSQL also communicates with ODBC clients.
-
-*Server*
-
-The database server can run on Windows NT and Win2k using Cygwin, the
-Cygnus Unix/NT porting library. See /pgsql/doc/FAQ_MSWIN/ in the
-distribution or the MS Windows FAQ at
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
-<http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN>.
-
-A native port to MS Win NT/2000/XP is currently being worked on. For
-more details on the current status of PostgreSQL on Windows see
-http://techdocs.postgresql.org/guides/Windows
-<http://techdocs.postgresql.org/guides/Windows>.
-
-There is also a Novell Netware 6 port at http://forge.novell.com.
-
-
- 1.5) Where can I get PostgreSQL?
-
-The primary anonymous ftp site for PostgreSQL is
-ftp://ftp.PostgreSQL.org/pub. For mirror sites, see our main web site.
-
-
- 1.6) Where can I get support?
-
-The main mailing list is: [email protected]
-<mailto:[email protected]>. It is available for discussion of
-matters pertaining to PostgreSQL. To subscribe, send mail with the
-following lines in the body (not the subject line):
-
- subscribe
- end
-
-<mailto:[email protected]>.
-
-There is also a digest list available. To subscribe to this list, send
-email to: [email protected]
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-Digests are sent out to members of this list whenever the main list has
-received around 30k of messages.
-
-The bugs mailing list is available. To subscribe to this list, send
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-There is also a developers discussion mailing list available. To
-subscribe to this list, send email to
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-Additional mailing lists and information about PostgreSQL can be found
-via the PostgreSQL WWW home page at:
-
- http://www.PostgreSQL.org
-
-There is also an IRC channel on EFNet and OpenProjects, channel
-/#PostgreSQL/. I use the Unix command |irc -c '#PostgreSQL' "$USER"
-irc.phoenix.net.|
-
-A list of commercial support companies is available at
-http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html.
-
-
- 1.7) What is the latest release?
-
-The latest release of PostgreSQL is version 7.3.3.
-
-We plan to have major releases every four months.
-
-
- 1.8) What documentation is available?
-
-Several manuals, manual pages, and some small test examples are included
-in the distribution. See the //doc/ directory. You can also browse the
-manuals online at http://www.PostgreSQL.org/docs.
-
-There are two PostgreSQL books available online at
-http://www.PostgreSQL.org/docs/awbook.html and
-http://www.commandprompt.com/ppbook/. There is a list of PostgreSQL
-books available for purchase at http://www.ca.PostgreSQL.org/books/.
-There is also a collection of PostgreSQL technical articles at
-http://techdocs.PostgreSQL.org/.
-
-/psql/ has some nice \d commands to show information about types,
-operators, functions, aggregates, etc.
-
-Our web site contains even more documentation.
-
-
- 1.9) How do I find out about known bugs or missing features?
-
-PostgreSQL supports an extended subset of SQL-92. See our TODO
-<http://developer.PostgreSQL.org/todo.php> list for known bugs, missing
-features, and future plans.
-
-
- 1.10) How can I learn SQL?
-
-The PostgreSQL book at http://www.PostgreSQL.org/docs/awbook.html
-teaches SQL. There is another PostgreSQL book at
-http://www.commandprompt.com/ppbook.
-<http://www.commandprompt.com/ppbook/> There is a nice tutorial at
-http://www.intermedia.net/support/sql/sqltut.shtm,
-<http://www.intermedia.net/support/sql/sqltut.shtm> at
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
-<http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM>
-and at http://sqlcourse.com. <http://sqlcourse.com/>
-
-Another one is "Teach Yourself SQL in 21 Days, Second Edition" at
-http://members.tripod.com/er4ebus/sql/index.htm
-
-Many of our users like /The Practical SQL Handbook/, Bowman, Judith S.,
-et al., Addison-Wesley. Others like /The Complete Reference SQL/, Groff
-et al., McGraw-Hill.
-
-
- 1.11) Is PostgreSQL Y2K compliant?
-
-Yes, we easily handle dates past the year 2000 AD, and before 2000 BC.
-
-
- 1.12) How do I join the development team?
-
-First, download the latest source and read the PostgreSQL Developers
-documentation on our web site, or in the distribution. Second, subscribe
-to the /pgsql-hackers/ and /pgsql-patches/ mailing lists. Third, submit
-high quality patches to pgsql-patches.
-
-There are about a dozen people who have commit privileges to the
-PostgreSQL CVS archive. They each have submitted so many high-quality
-patches that it was impossible for the existing committers to keep up,
-and we had confidence that patches they committed were of high quality.
-
-
- 1.13) How do I submit a bug report?
-
-Please visit the PostgreSQL BugTool page at
-http://www.PostgreSQL.org/bugs/bugs.php, which gives guidelines and
-directions on how to submit a bug report.
-
-Also check out our ftp site ftp://ftp.PostgreSQL.org/pub to see if there
-is a more recent PostgreSQL version or patches.
-
-
- 1.14) How does PostgreSQL compare to other DBMSs?
-
-There are several ways of measuring software: features, performance,
-reliability, support, and price.
-
-*Features*
- PostgreSQL has most features present in large commercial DBMSs, like
- transactions, subselects, triggers, views, foreign key referential
- integrity, and sophisticated locking. We have some features they do
- not have, like user-defined types, inheritance, rules, and
- multi-version concurrency control to reduce lock contention.
-
-*Performance*
- PostgreSQL has performance similar to other commercial and open
- source databases. it is faster for some things, slower for others.
- In comparison to MySQL or leaner database systems, we are slower on
- inserts/updates because of transaction overhead. Of course, MySQL
- does not have any of the features mentioned in the /Features/
- section above. We are built for reliability and features, though we
- continue to improve performance in every release. There is an
- interesting Web page comparing PostgreSQL to MySQL at
- http://openacs.org/philosophy/why-not-mysql.html
- <http://openacs.org/philosophy/why-not-mysql.html>
-
-*Reliability*
- We realize that a DBMS must be reliable, or it is worthless. We
- strive to release well-tested, stable code that has a minimum of
- bugs. Each release has at least one month of beta testing, and our
- release history shows that we can provide stable, solid releases
- that are ready for production use. We believe we compare favorably
- to other database software in this area.
-
-*Support*
- Our mailing lists provide contact with a large group of developers
- and users to help resolve any problems encountered. While we cannot
- guarantee a fix, commercial DBMSs do not always supply a fix either.
- Direct access to developers, the user community, manuals, and the
- source code often make PostgreSQL support superior to other DBMSs.
- There is commercial per-incident support available for those who
- need it. (See FAQ section 1.6 <#1.6>.)
-
-*Price*
- We are free for all use, both commercial and non-commercial. You can
- add our code to your product with no limitations, except those
- outlined in our BSD-style license stated above.
-
-
- 1.15) How can I financially assist PostgreSQL?
-
-PostgreSQL has had a first-class infrastructure since we started in
-1996. This is all thanks to Marc Fournier, who has created and managed
-this infrastructure over the years.
-
-Quality infrastructure is very important to an open-source project. It
-prevents disruptions that can greatly delay forward movement of the project.
-
-Of course, this infrastructure is not cheap. There are a variety of
-monthly and one-time expenses that are required to keep it going. If you
-or your company has money it can donate to help fund this effort, please
-go to http://store.pgsql.com/shopping/ and make a donation.
-
-Although the web page mentions PostgreSQL, Inc, the "contributions" item
-is solely to support the PostgreSQL project and does not fund any
-specific company. If you prefer, you can also send a check to the
-contact address.
-
-------------------------------------------------------------------------
-
-
- User Client Questions
-
-
- 2.1) Are there ODBC drivers for PostgreSQL?
-
-There are two ODBC drivers available, PsqlODBC and OpenLink ODBC.
-
-You can download PsqlODBC from
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
-<http://gborg.postgresql.org/project/psqlodbc/projdisplay.php>.
-
-OpenLink ODBC can be gotten from http://www.openlinksw.com
-<http://www.openlinksw.com/>. It works with their standard ODBC client
-software so you'll have PostgreSQL ODBC available on every client
-platform they support (Win, Mac, Unix, VMS).
-
-They will probably be selling this product to people who need
-commercial-quality support, but a freeware version will always be
-available. Please send questions to [email protected]
-<mailto:[email protected]>.
-
-
- 2.2) What tools are available for using PostgreSQL with Web pages?
-
-A nice introduction to Database-backed Web pages can be seen at:
-http://www.webreview.com
-
-For Web integration, PHP is an excellent interface. It is at
-http://www.php.net.
-
-For complex cases, many use the Perl interface and CGI.pm or mod_perl.
-
-
- 2.3) Does PostgreSQL have a graphical user interface?
-
-Yes, there are several graphical interfaces to PostgreSQL available.
-These include PgAccess http://www.pgaccess.org
-<http://www.pgaccess.org>), PgAdmin II (http://www.pgadmin.org,
-Win32-only), RHDB Admin (http://sources.redhat.com/rhdb/ ) and Rekall (
-http://www.thekompany.com/products/rekall/
-<http://www.thekompany.com/products/rekall/>, proprietary). There is
-also PHPPgAdmin ( http://phppgadmin.sourceforge.net/
-<http://phppgadmin.sourceforge.net/>), a web-based interface to PostgreSQL.
-
-See http://techdocs.postgresql.org/guides/GUITools for a more detailed list.
-
-
- 2.4) What languages are able to communicate with PostgreSQL?
-
-Most popular programming languages contain an interface to PostgreSQL.
-Check your programming language's list of extension modules.
-
-The following interfaces are included in the PostgreSQL distribution:
-
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
-Additional interfaces are available at http://gborg.postgresql.org in
-the /Drivers/Interfaces/ section.
-
-------------------------------------------------------------------------
-
-
- Administrative Questions
-
-
- 3.1) How do I install PostgreSQL somewhere other than
- //usr/local/pgsql/?
-
-Specify the /--prefix/ option when running /configure/.
-
-
- 3.2) When I start /postmaster/, I get a /Bad System Call/ or
- core dumped message. Why?
-
-It could be a variety of problems, but first check to see that you have
-System V extensions installed in your kernel. PostgreSQL requires kernel
-support for shared memory and semaphores.
-
-
- 3.3) When I try to start /postmaster/, I get /IpcMemoryCreate/
- errors. Why?
-
-You either do not have shared memory configured properly in your kernel
-or you need to enlarge the shared memory available in the kernel. The
-exact amount you need depends on your architecture and how many buffers
-and backend processes you configure for /postmaster/. For most systems,
-with default numbers of buffers and processes, you need a minimum of ~1
-MB. See the PostgreSQL Administrator's Guide
-<http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html>
-for more detailed information about shared memory and semaphores.
-
-
- 3.4) When I try to start /postmaster/, I get
- /IpcSemaphoreCreate/ errors. Why?
-
-If the error message is /IpcSemaphoreCreate: semget failed (No space
-left on device)/ then your kernel is not configured with enough
-semaphores. Postgres needs one semaphore per potential backend process.
-A temporary solution is to start /postmaster/ with a smaller limit on
-the number of backend processes. Use /-N/ with a parameter less than the
-default of 32. A more permanent solution is to increase your kernel's
-SEMMNS and SEMMNI parameters.
-
-Inoperative semaphores can also cause crashes during heavy database access.
-
-If the error message is something else, you might not have semaphore
-support configured in your kernel at all. See the PostgreSQL
-Administrator's Guide for more detailed information about shared memory
-and semaphores.
-
-
- 3.5) How do I control connections from other hosts?
-
-By default, PostgreSQL only allows connections from the local machine
-using Unix domain sockets. Other machines will not be able to connect
-unless you add the /-i/ flag to /postmaster/, *and* enable host-based
-authentication by modifying the file /$PGDATA/pg_hba.conf/ accordingly.
-This will allow TCP/IP connections.
-
-
- 3.6) How do I tune the database engine for better performance?
-
-Certainly, indexes can speed up queries. The EXPLAIN command allows you
-to see how PostgreSQL is interpreting your query, and which indexes are
-being used.
-
-If you are doing many INSERTs, consider doing them in a large batch
-using the COPY command. This is much faster than individual INSERTS.
-Second, statements not in a BEGIN WORK/COMMIT transaction block are
-considered to be in their own transaction. Consider performing several
-statements in a single transaction block. This reduces the transaction
-overhead. Also, consider dropping and recreating indexes when making
-large data changes.
-
-There are several tuning options. You can disable /fsync()/ by starting
-/postmaster/ with a /-o -F/ option. This will prevent /fsync()/s from
-flushing to disk after every transaction.
-
-You can also use the /postmaster/ /-B/ option to increase the number of
-shared memory buffers used by the backend processes. If you make this
-parameter too high, the /postmaster/ may not start because you have
-exceeded your kernel's limit on shared memory space. Each buffer is 8K
-and the default is 64 buffers.
-
-You can also use the backend /-S/ option to increase the maximum amount
-of memory used by the backend process for temporary sorts. The /-S/
-value is measured in kilobytes, and the default is 512 (i.e. 512K).
-
-You can also use the CLUSTER command to group data in tables to match an
-index. See the CLUSTER manual page for more details.
-
-
- 3.7) What debugging features are available?
-
-PostgreSQL has several features that report status information that can
-be valuable for debugging purposes.
-
-First, by running /configure/ with the --enable-cassert option, many
-/assert()/s monitor the progress of the backend and halt the program
-when something unexpected occurs.
-
-Both /postmaster/ and /postgres/ have several debug options available.
-First, whenever you start /postmaster/, make sure you send the standard
-output and error to a log file, like:
-
- cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
-
-This will put a server.log file in the top-level PostgreSQL directory.
-This file contains useful information about problems or errors
-encountered by the server. /Postmaster/ has a /-d/ option that allows
-even more detailed information to be reported. The /-d/ option takes a
-number that specifies the debug level. Be warned that high debug level
-values generate large log files.
-
-If /postmaster/ is not running, you can actually run the /postgres/
-backend from the command line, and type your SQL statement directly.
-This is recommended *only* for debugging purposes. Note that a newline
-terminates the query, not a semicolon. If you have compiled with
-debugging symbols, you can use a debugger to see what is happening.
-Because the backend was not started from /postmaster/, it is not running
-in an identical environment and locking/backend interaction problems may
-not be duplicated.
-
-If /postmaster/ is running, start /psql/ in one window, then find the
-PID of the /postgres/ process used by /psql/. Use a debugger to attach
-to the /postgres/ PID. You can set breakpoints in the debugger and issue
-queries from /psql/. If you are debugging /postgres/ startup, you can
-set PGOPTIONS="-W n", then start /psql/. This will cause startup to
-delay for /n/ seconds so you can attach to the process with the
-debugger, set any breakpoints, and continue through the startup sequence.
-
-The /postgres/ program has /-s, -A/, and /-t/ options that can be very
-useful for debugging and performance measurements.
-
-You can also compile with profiling to see what functions are taking
-execution time. The backend profile files will be deposited in the
-/pgsql/data/base/dbname/ directory. The client profile file will be put
-in the client's current directory. Linux requires a compile with
-/-DLINUX_PROFILE/ for proper profiling.
-
-
- 3.8) Why do I get /"Sorry, too many clients"/ when trying to
- connect?
-
-You need to increase /postmaster/'s limit on how many concurrent backend
-processes it can start.
-
-The default limit is 32 processes. You can increase it by restarting
-/postmaster/ with a suitable /-N/ value or modifying /postgresql.conf/.
-
-Note that if you make /-N/ larger than 32, you must also increase /-B/
-beyond its default of 64; /-B/ must be at least twice /-N/, and probably
-should be more than that for best performance. For large numbers of
-backend processes, you are also likely to find that you need to increase
-various Unix kernel configuration parameters. Things to check include
-the maximum size of shared memory blocks, SHMMAX; the maximum number of
-semaphores, SEMMNS and SEMMNI; the maximum number of processes, NPROC;
-the maximum number of processes per user, MAXUPRC; and the maximum
-number of open files, NFILE and NINODE. The reason that PostgreSQL has a
-limit on the number of allowed backend processes is so your system won't
-run out of resources.
-
-
- 3.9) What is in the /pgsql_tmp/ directory?
-
-This directory contains temporary files generated by the query executor.
-For example, if a sort needs to be done to satisfy an ORDER BY and the
-sort requires more space than the backend's /-S/ parameter allows, then
-temporary files are created here to hold the extra data.
-
-The temporary files are usually deleted automatically, but might remain
-if a backend crashes during a sort. A stop and restart of the
-/postmaster/ will remove files from those directories.
-
-
- 3.10) Why do I need to do a dump and restore to upgrade between
- major PostgreSQL releases?
-
-The PostgreSQL team makes only small changes between minor releases, so
-upgrading from 7.2 to 7.2.1 does not require a dump and restore.
-However, major releases (e.g. from 7.2 to 7.3) often change the internal
-format of system tables and data files. These changes are often complex,
-so we don't maintain backward compatability for data files. A dump
-outputs data in a generic format that can then be loaded in using the
-new internal format.
-
-In releases where the on-disk format does not change, the /pg_upgrade/
-script can be used to upgrade without a dump/restore. The release notes
-mention whether /pg_upgrade/ is available for the release.
-
-------------------------------------------------------------------------
-
-
- Operational Questions
-
-
- 4.1) What is the difference between binary cursors and normal
- cursors?
-
-See the DECLARE manual page for a description.
-
-
- 4.2) How do I SELECT only the first few rows of a query?
-
-See the FETCH manual page, or use SELECT ... LIMIT....
-
-The entire query may have to be evaluated, even if you only want the
-first few rows. Consider using a query that has an ORDER BY. If there is
-an index that matches the ORDER BY, PostgreSQL may be able to evaluate
-only the first few records requested, or the entire query may have to be
-evaluated until the desired rows have been generated.
-
-
- 4.3) How do I get a list of tables or other things I can see in
- /psql/?
-
-You can read the source code for /psql/ in file
-/pgsql/src/bin/psql/describe.c/. It contains SQL commands that generate
-the output for psql's backslash commands. You can also start /psql/ with
-the /-E/ option so it will print out the queries it uses to execute the
-commands you give.
-
-
- 4.4) How do you remove a column from a table?
-
-This functionality was added in release 7.3 with ALTER TABLE DROP
-COLUMN. In earlier versions, you can do this:
-
- BEGIN;
- LOCK TABLE old_table;
- SELECT ... -- select all columns but the one you want to remove
- INTO TABLE new_table
- FROM old_table;
- DROP TABLE old_table;
- ALTER TABLE new_table RENAME TO old_table;
- COMMIT;
-
-
- 4.5) What is the maximum size for a row, a table, and a database?
-
-These are the limits:
-
- Maximum size for a database? unlimited (4 TB databases exist)
- Maximum size for a table? 16 TB
- Maximum size for a row? 1.6TB
- Maximum size for a field? 1 GB
- Maximum number of rows in a table? unlimited
- Maximum number of columns in a table? 250-1600 depending on column types
- Maximum number of indexes on a table? unlimited
-
-Of course, these are not actually unlimited, but limited to available
-disk space and memory/swap space. Performance may suffer when these
-values get unusually large.
-
-The maximum table size of 16 TB does not require large file support from
-the operating system. Large tables are stored as multiple 1 GB files so
-file system size limits are not important.
-
-The maximum table size and maximum number of columns can be increased if
-the default block size is increased to 32k.
-
-
- 4.6) How much database disk space is required to store data from
- a typical text file?
-
-A PostgreSQL database may require up to five times the disk space to
-store data from a text file.
-
-As an example, consider a file of 100,000 lines with an integer and text
-description on each line. Suppose the text string avergages twenty bytes
-in length. The flat file would be 2.8 MB. The size of the PostgreSQL
-database file containing this data can be estimated as 6.4 MB:
-
- 36 bytes: each row header (approximate)
- 24 bytes: one int field and one text field
- + 4 bytes: pointer on page to tuple
- ----------------------------------------
- 64 bytes per row
-
- The data page size in PostgreSQL is 8192 bytes (8 KB), so:
-
- 8192 bytes per page
- ------------------- = 128 rows per database page (rounded down)
- 64 bytes per row
-
- 100000 data rows
- -------------------- = 782 database pages (rounded up)
- 128 rows per page
-
-782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB)
-
-Indexes do not require as much overhead, but do contain the data that is
-being indexed, so they can be large also.
-
-NULLs are stored in bitmaps, so they use very little space.
-
-
- 4.7) How do I find out what tables, indexes, databases, and
- users are defined?
-
-/psql/ has a variety of backslash commands to show such information. Use
-\? to see them. There are also system tables beginning with /pg_/ that
-describe these too. Also, /psql -l/ will list all databases.
-
-Also try the file /pgsql/src/tutorial/syscat.source/. It illustrates
-many of the SELECTs needed to get information from the database system
-tables.
-
-
- 4.8) My queries are slow or don't make use of the indexes. Why?
-
-Indexes are not automatically used by every query. Indexes are only used
-if the table is larger than a minimum size, and the query selects only a
-small percentage of the rows in the table. This is because the random
-disk access caused by an index scan can be slower than a straight read
-through the table, or sequential scan.
-
-To determine if an index should be used, PostgreSQL must have statistics
-about the table. These statistics are collected using VACUUM ANALYZE, or
-simply ANALYZE. Using statistics, the optimizer knows how many rows are
-in the table, and can better determine if indexes should be used.
-Statistics are also valuable in determining optimal join order and join
-methods. Statistics collection should be performed periodically as the
-contents of the table change.
-
-Indexes are normally not used for ORDER BY or to perform joins. A
-sequential scan followed by an explicit sort is usually faster than an
-index scan of a large table.
-
-However, LIMIT combined with ORDER BY often will use an index because
-only a small portion of the table is returned. In fact, though MAX() and
-MIN() don't use indexes, it is possible to retrieve such values using an
-index with ORDER BY and LIMIT:
-
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-
-If you believe the optimizer is incorrect in choosing a sequential scan,
-use |SET enable_seqscan TO 'off'| and run tests to see if an index scan
-is indeed faster.
-
-When using wild-card operators such as LIKE or /~/, indexes can only be
-used in certain circumstances:
-
- * The beginning of the search string must be anchored to the start
- of the string, i.e.
- o LIKE patterns must not start with /%/.
- o /~/ (regular expression) patterns must start with /^/.
- * The search string can not start with a character class, e.g. [a-e].
- * Case-insensitive searches such as ILIKE and /~*/ do not utilise
- indexes. Instead, use functional indexes, which are described in
- section 4.12 <#4.12>.
- * The default /C/ locale must be used during /initdb/.
-
-
- 4.9) How do I see how the query optimizer is evaluating my query?
-
-See the EXPLAIN manual page.
-
-
- 4.10) What is an R-tree index?
-
-An R-tree index is used for indexing spatial data. A hash index can't
-handle range searches. A B-tree index only handles range searches in a
-single dimension. R-trees can handle multi-dimensional data. For
-example, if an R-tree index can be built on an attribute of type
-/point/, the system can more efficiently answer queries such as "select
-all points within a bounding rectangle."
-
-The canonical paper that describes the original R-tree design is:
-
-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.
-
-You can also find this paper in Stonebraker's "Readings in Database
-Systems".
-
-Built-in R-trees can handle polygons and boxes. In theory, R-trees can
-be extended to handle higher number of dimensions. In practice,
-extending R-trees requires a bit of work and we don't currently have any
-documentation on how to do it.
-
-
- 4.11) What is the Genetic Query Optimizer?
-
-The GEQO module speeds query optimization when joining many tables by
-means of a Genetic Algorithm (GA). It allows the handling of large join
-queries through nonexhaustive search.
-
-
- 4.12) How do I perform regular expression searches and
- case-insensitive regular expression searches? How do I use an
- index for case-insensitive searches?
-
-The /~/ operator does regular expression matching, and /~*/ does
-case-insensitive regular expression matching. The case-insensitive
-variant of LIKE is called ILIKE.
-
-Case-insensitive equality comparisons are normally expressed as:
-
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
-This will not use an standard index. However, if you create a functional
-index, it will be used:
-
- CREATE INDEX tabindex ON tab (lower(col));
-
-
- 4.13) In a query, how do I detect if a field is NULL?
-
-You test the column with IS NULL and IS NOT NULL.
-
-
- 4.14) What is the difference between the various character types?
-
-Type Internal Name Notes
---------------------------------------------------
-VARCHAR(n) varchar size specifies maximum length, no padding
-CHAR(n) bpchar blank padded to the specified fixed length
-TEXT text no specific upper limit on length
-BYTEA bytea variable-length byte array (null-byte safe)
-"char" char one character
-
-You will see the internal name when examining system catalogs and in
-some error messages.
-
-The first four types above are "varlena" types (i.e., the first four
-bytes on disk are the length, followed by the data). Thus the actual
-space used is slightly greater than the declared size. However, these
-data types are also subject to compression or being stored out-of-line
-by TOAST, so the space on disk might also be less than expected.
-
-VARCHAR(n) is best when storing variable-length strings and it limits
-how long a string can be. TEXT is for strings of unlimited length, with
-a maximum of one gigabyte.
-
-CHAR(n) is for storing strings that are all the same length. CHAR(n)
-pads with blanks to the specified length, while VARCHAR(n) only stores
-the characters supplied. BYTEA is for storing binary data, particularly
-values that include NULL bytes. All the types described here have
-similar performance characteristics.
-
-
- 4.15.1) How do I create a serial/auto-incrementing field?
-
-PostgreSQL supports a SERIAL data type. It auto-creates a sequence and
-index on the column. For example, this:
-
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
-is automatically translated into this:
-
- 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 );
-
-See the /create_sequence/ manual page for more information about
-sequences. You can also use each row's /OID/ field as a unique value.
-However, if you need to dump and reload the database, you need to use
-/pg_dump/'s /-o/ option or COPY WITH OIDS option to preserve the OIDs.
-
-
- 4.15.2) How do I get the value of a SERIAL insert?
-
-One approach is to retrieve the next SERIAL value from the sequence
-object with the /nextval()/ function /before/ inserting and then insert
-it explicitly. Using the example table in 4.15.1 <#4.15.1>, an example
-in a pseudo-language would look like this:
-
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-You would then also have the new value stored in |new_id| for use in
-other queries (e.g., as a foreign key to the |person| table). Note that
-the name of the automatically created SEQUENCE object will be named
-</table/>_</serialcolumn/>_/seq/, where /table/ and /serialcolumn/ are
-the names of your table and your SERIAL column, respectively.
-
-Alternatively, you could retrieve the assigned SERIAL value with the
-/currval()/ function /after/ it was inserted by default, e.g.,
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
-Finally, you could use the OID <#4.16> returned from the INSERT
-statement to look up the default value, though this is probably the
-least portable approach. In Perl, using DBI with Edmund Mergl's DBD::Pg
-module, the oid value is made available via /$sth->{pg_oid_status}/
-after /$sth->execute()/.
-
-
- 4.15.3) Don't /currval()/ and /nextval()/ lead to a race
- condition with other users?
-
-No. /currval()/ returns the current value assigned by your backend, not
-by all users.
-
-
- 4.15.4) Why aren't my sequence numbers reused on transaction
- abort? Why are there gaps in the numbering of my sequence/SERIAL
- column?
-
-To improve concurrency, sequence values are given out to running
-transactions as needed and are not locked until the transaction
-completes. This causes gaps in numbering from aborted transactions.
-
-
- 4.16) What is an OID? What is a TID?
-
-OIDs are PostgreSQL's answer to unique row ids. Every row that is
-created in PostgreSQL gets a unique OID. All OIDs generated during
-/initdb/ are less than 16384 (from /include/access/transam.h/). All
-user-created OIDs are equal to or greater than this. By default, all
-these OIDs are unique not only within a table or database, but unique
-within the entire PostgreSQL installation.
-
-PostgreSQL uses OIDs in its internal system tables to link rows between
-tables. These OIDs can be used to identify specific user rows and used
-in joins. It is recommended you use column type OID to store OID values.
-You can create an index on the OID field for faster access.
-
-OIDs are assigned to all new rows from a central area that is used by
-all databases. If you want to change the OID to something else, or if
-you want to make a copy of the table, with the original OIDs, there is
-no reason you can't do it:
-
- 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';
-
-OIDs are stored as 4-byte integers, and will overflow at 4 billion. No
-one has reported this ever happening, and we plan to have the limit
-removed before anyone does.
-
-TIDs are used to identify specific physical rows with block and offset
-values. TIDs change after rows are modified or reloaded. They are used
-by index entries to point to physical rows.
-
-
- 4.17) What is the meaning of some of the terms used in PostgreSQL?
-
-Some of the source code and older documentation use terms that have more
-common usage. Here are some:
-
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
-A list of general database terms can be found at:
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-
-
- 4.18) Why do I get the error /"ERROR: Memory exhausted in
- AllocSetAlloc()"/?
-
-You probably have run out of virtual memory on your system, or your
-kernel has a low limit for certain resources. Try this before starting
-/postmaster/:
-
- ulimit -d 262144
- limit datasize 256m
-
-Depending on your shell, only one of these may succeed, but it will set
-your process data segment limit much higher and perhaps allow the query
-to complete. This command applies to the current process, and all
-subprocesses created after the command is run. If you are having a
-problem with the SQL client because the backend is returning too much
-data, try it before starting the client.
-
-
- 4.19) How do I tell what PostgreSQL version I am running?
-
-From /psql/, type |SELECT version();|
-
-
- 4.20) Why does my large-object operations get /"invalid large
- obj descriptor"/?
-
-You need to put |BEGIN WORK| and |COMMIT| around any use of a large
-object handle, that is, surrounding |lo_open| ... |lo_close.|
-
-Currently PostgreSQL enforces the rule by closing large object handles
-at transaction commit. So the first attempt to do anything with the
-handle will draw /invalid large obj descriptor/. So code that used to
-work (at least most of the time) will now generate that error message if
-you fail to use a transaction.
-
-If you are using a client interface like ODBC you may need to set
-|auto-commit off.|
-
-
- 4.21) How do I create a column that will default to the current
- time?
-
-Use /CURRENT_TIMESTAMP/:
-
-|CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-|
-
-
- 4.22) Why are my subqueries using |IN| so slow?
-
-Currently, we join subqueries to outer queries by sequentially scanning
-the result of the subquery for each row of the outer query. If the
-subquery returns only a few rows and the outer query returns many rows,
-|IN| is fastest. To speed up other queries, replace |IN| with |EXISTS|:
-
- SELECT *
- FROM tab
- WHERE col IN (SELECT subcol FROM subtab);
-
-to:
-
- SELECT *
- FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-
-For this to be fast, |subcol| should be an indexed column. This
-preformance problem will be fixed in 7.4.
-
-
- 4.23) How do I perform an outer join?
-
-PostgreSQL supports outer joins using the SQL standard syntax. Here are
-two examples:
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-or
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-These identical queries join t1.col to t2.col, and also return any
-unjoined rows in t1 (those with no match in t2). A RIGHT join would add
-unjoined rows of t2. A FULL join would return the matched rows plus all
-unjoined rows from t1 and t2. The word OUTER is optional and is assumed
-in LEFT, RIGHT, and FULL joins. Ordinary joins are called INNER joins.
-
-In previous releases, outer joins can be simulated using UNION and NOT
-IN. For example, when joining /tab1/ and /tab2/, the following query
-does an /outer/ join of the two tables:
-
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-
-
- 4.24) How do I perform queries using multiple databases?
-
-There is no way to query a database other than the current one. Because
-PostgreSQL loads database-specific system catalogs, it is uncertain how
-a cross-database query should even behave.
-
-/contrib/dblink/ allows cross-database queries using function calls. Of
-course, a client can make simultaneous connections to different
-databases and merge the results on the client side.
-
-
- 4.25) How do I return multiple rows or columns from a function?
-
-In 7.3, you can easily return multiple rows or columns from a function,
-http://techdocs.postgresql.org/guides/SetReturningFunctions
-<http://techdocs.postgresql.org/guides/SetReturningFunctions>.
-
-
- 4.26) Why can't I reliably create/drop temporary tables in
- PL/PgSQL functions?
-
-PL/PgSQL caches function contents, and an unfortunate side effect is
-that if a PL/PgSQL function accesses a temporary table, and that table
-is later dropped and recreated, and the function called again, the
-function will fail because the cached function contents still point to
-the old temporary table. The solution is to use EXECUTE for temporary
-table access in PL/PgSQL. This will cause the query to be reparsed every
-time.
-
-
- 4.27) What replication options are available?
-
-There are several master/slave replication options available. These
-allow only the master to make database changes and the slave can only do
-database reads. The bottom of
-http://gborg.PostgreSQL.org/genpage?replication_research
-<http://gborg.PostgreSQL.org/genpage?replication_research> lists them. A
-multi-master replication solution is being worked on at
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
-
- 4.28) What encryption options are available?
-
- * /contrib/pgcrypto/ contains many encryption functions for use in
- SQL queries.
- * The only way to encrypt transmission from the client to the server
- is by using /hostssl/ in /pg_hba.conf/.
- * Database user passwords are automatically encrypted when stored in
- version 7.3. In previous versions, you must enable the option
- /PASSWORD_ENCRYPTION/ in /postgresql.conf/.
- * The server can run using an encrypted file system.
-
-------------------------------------------------------------------------
-
-
- Extending PostgreSQL
-
-
- 5.1) I wrote a user-defined function. When I run it in /psql/,
- why does it dump core?
-
-The problem could be a number of things. Try testing your user-defined
-function in a stand-alone test program first.
-
-
- 5.2) How can I contribute some nifty new types and functions to
- PostgreSQL?
-
-Send your extensions to the /pgsql-hackers/ mailing list, and they will
-eventually end up in the /contrib// subdirectory.
-
-
- 5.3) How do I write a C function to return a tuple?
-
-In versions of PostgreSQL beginning with 7.3, table-returning functions
-are fully supported in C, PL/PgSQL, and SQL. See the Programmer's Guide
-for more information. An example of a table-returning function defined
-in C can be found in /contrib/tablefunc/.
-
-
- 5.4) I have changed a source file. Why does the recompile not
- see the change?
-
-The /Makefiles/ do not have the proper dependencies for include files.
-You have to do a /make clean/ and then another /make/. If you are using
-GCC you can use the /--enable-depend/ option of /configure/ to have the
-compiler compute the dependencies automatically.
-
+
+ PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
+
+Son g�ncelleme : 26 Temmuz 2003 Cumartesi - 18:32:11
+
+Current maintainer: Bruce Momjian ([email protected]
+
+�evirenler : Devrim G�nd�z ([email protected] <mailto:[email protected]>)
+Nicholas Morris Tufar ([email protected] <mailto:[email protected]>)
+Volkan Yaz�c� ([email protected] <mailto:[email protected]>)
+
+Bu belgenin en g�ncel hali,
+http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html
+<http://www.postgresql.org/docs/faqs/FAQ_turkish.html> ve
+http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir.
+
+Platforma �zel sorular�n�z, http://www.PostgreSQL.org/docs/index.html
+<http://www.postgresql.org/docs/index.html> adresinde yan�tlan�r.
+
+------------------------------------------------------------------------
+
+
+ Genel Sorular
+
+1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur?
+1.2 <#1.2>) PostgreSQL' in haklar� nedir?
+1.3 <#1.3>) PostgreSQL, hangi Unix platformlar�nda �al�s�r?
+1.4 <#1.4>) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+1.5 <#1.5>) PostgreSQL'i nereden indirebilirim?
+1.6 <#1.6>) Deste�i nereden alabilirim?
+1.7 <#1.7>) En son s�r�m� nedir?
+1.8 <#1.8>) Hangi belgelere ula�abilirim?
+1.9 <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
+1.10 <#1.10>) Nas�l SQL ��renebilirim?
+1.11 <#1.11>) PostgreSQL 2000 y�l�na uyumlu mudur?
+1.12 <#1.12>) Geli�tirme tak�m�na nas�l kat�labilirim??
+1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim?
+1.14 <#1.14>) PostgreSQL, di�er VTYS(DBMS) lerle nas�l kar��la�t�r�labilir?
+1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+
+
+ Kullan�c�/istemci Sorular�
+
+2.1 <#2.1>) PostgreSQL i�in ODBC s�r�c�leri var m� ?
+2.2 <#2.2>) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi
+ara�lar bulunmaktad�r ?
+2.3 <#2.3>) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+2.4 <#2.4>) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri
+kullanabilirim?
+
+
+ Y�netimsel Sorular
+
+3.1 <#3.1>) PostgreSQL'i //usr/local/pgsql/ dizininden ba�ka dizinlere
+nas�l kurabilirim??
+3.2 <#3.2>) /Postmaster/'� ba�latt���mda /Bad System Call/ ya da core
+dumped mesaj� al�yorum. Neden?
+3.3 <#3.3>) /Postmaster/'� ba�latt���mda, /IpcMemoryCreate/ hatas�
+al�yorum. Neden?
+3.4 <#3.4>) /Postmaster/, ba�latt���mda, /IpcSemaphoreCreate hatas�/
+al�yorum. Neden?
+3.5 <#3.5>) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma
+ba�lant�lar�n� nas�l kontrol edebilirim?
+3.6 <#3.6>) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim?
+3.7 <#3.7>) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+3.8 <#3.8>) Ba�lanmaya �al���rken, neden "/Sorry, too many clients/"
+hatas�n� al�yorum?
+3.9 <#3.9>) /pgsql_tmp/dizinin i�indeki dosyalar nelerdir?
+3.10 <#3.10>) PostgreSQL s�r�mlerini y�kselmek i�in neden bir
+dump/reload i�lemi ger�ekle�tirmek zorunday�m?
+
+
+ ��letimsel Sorular
+
+4.1 <#4.1>) Binary cursor ve normal cursor aras�ndaki fark ned�r?
+4.2 <#4.2>)Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
+4.3 <#4.3>) /psql/'in i�inde g�rd�g�m tablolarin ya da di�er �eylerin
+listesini nas�l alabilirim?
+4.4 <#4.4>)Bir tablodan bir kolonu nas�l kald�rabilirim?
+4.5 <#4.5>)Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir?
+4.6 <#4.6>) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar
+disk alan� gereklidir?
+4.7 <#4.7>) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n�
+nasil g�rebilirim?
+4.8 <#4.8>) Sorgular�m cok yavas, ya da indexlerimi kullanmiyorlar. Neden?
+4.9 <#4.9>) Query-optimizer in sorgular�m� nas�l de�erlendirdigini,
+i�leme soktu�unu nas�l g�rebilirim?
+4.10 <#4.10>) R-tree index nedir?
+4.11 <#4.11>) Genetic Query Optimizer nedir?
+4.12 <#4.12>) D�zenli ifade (Regular Expression) aramalar�n� ve
+b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim? Bu b�y�k(k���k
+harfe duyarl� aramalar i�in indeksi nasil kullanabilirim?
+4.13 <#4.13>) Bir sorguda, bir alan�n NULL oldu�unu nas�l ortaya
+��karabilirim?
+4.14 <#4.14>) �esitli karakter tipleri aras�ndaki farklar nelerdir?
+4.15.1 <#4.15.1>) Nas�l serial/otomatik artan(auto-incrementing) bir
+alan yaratabilirim?
+4.15.2 <#4.15.2>) Serial giri�inin de�erini nas�l alabilirim?
+4.15.3 <#4.15.3>) /currval()/ ve /nextval()/ di�er kullan�c�lara sorun
+yaratmaz m�?>
+4.15.4 <#4.15.4>) Neden sequence say�lar�n transaction i�leminin
+iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL kolonumdaki
+say�larda atlamalar oluyor?
+4.16 <#4.16>) OID nedir? TID nedir?
+4.17 <#4.17>) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdi?
+4.18 <#4.18>) Neden /"ERROR: Memory exhausted in AllocSetAlloc()"/
+hatas�n� al�yorum?
+4.19 <#4.19>) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim??
+4.20 <#4.20>) Neden large-object i�lemlerim, /"invalid large obj
+descriptor"/ hatas�n� veriyor?
+4.21 <#4.21>) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu
+nas�l yarat�r�m?
+4.22 <#4.22>) Neden |IN| kullanan subquerylerim �ok yava�?
+4.23 <#4.23>) Outer join i�lemini nas�l yapabilirim?
+4.24 <#4.24>) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
+4.25 <#4.25>) Bir fonksiyondan nas�l �oklu sat�r ya da kolon
+d�nd�rebilirim??
+4.26 <#4.26>) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde
+tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
+4.27 <#4.27>) Hangi replikasyon se�enekleri bulunmaktad�r?
+4.28"D <#4.28>) Hangi �ifreleme se�enekleri bulunmaktad�r?
+
+
+ PostgreSQL �zelliklerini Geni�letmek
+
+5.1 <#5.1>) Kullan�c�-tan�ml� bir fonksiyon yazd�m. /psql/'de
+�al��t�rd���m zaman neden core dump ediyor?
+5.2 <#5.2>) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim?
+5.3 <#5.3>) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m?
+5.4 <#5.4>) Bir kaynak dosyas�nda de�isiklik yapt�m. Yeniden derlememe
+ra�men de�i�iklik ge�erli olmuyor. Neden??
+------------------------------------------------------------------------
+
+
+ Genel Sorular
+
+
+ 1.1) PostgreSQL nedir? Nas�l okunur?
+
+PostgreSQL, /Post-Gres-Q-L/. olarak okunur
+
+PostgreSQL, yeni-nesil VTYS ara�t�rma prototipi olan POSTGRES veritaban�
+y�netim sisteminin geli�tirilmesidir. POSTGRES' in zengin veri tiplerini
+ve g��l� veri modelini tutarken, SQL'in geli�tirilmis alt k�mesi olan
+PostQuel dilini kullan�r. PostgreSQL �cretsizdir ve kaynak kodu a��k
+da��t�l�r.
+
+PostgreSQL, PostgreSQL geli�tirme listesine �ye olan bir Internet
+geli�tirici tak�m� taraf�ndan geli�tirilir. �u andaki koordinat�r, Marc
+G. Fournier ([email protected] <mailto:[email protected]>).
+(Bu tak�ma nas�l kat�lacag�n�z� ��renmek i�in 1.6 <#1.6> numaral�
+maddeyi okuyunuz.) Bu tak�m, t�m PostgreSQL geli�iminden sorumludur.
+
+PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi.
+Bunlar�n d���nda bir ka� kisi de uyarlama, hata ay�klama ve kodun
+geli�tirilmesi i�in �al�sm��t�. PostgreSQL'in t�redigi orijinal Postgres
+kodu, lisans, lisans�st� ve akademisyenler taraf�ndan, Professor Michael
+Stonebraker ) University of California, Berkeley) koordinat�rl�g�nde
+yaz�lm�st�r.
+
+Berkley'deki yaz�l�m�n ad� Postgres idi. SQL uyumlulu�u 1995'te
+eklenince, ad� Postgres 95 oldu. 1996 y�l�n�n sonlar�nda ad� PostgreSQL
+olarak de�i�tirildi.
+
+
+ 1.2) PostgreSQL'in haklar� nedir?
+
+PostgreSQL Data Base Management System
+
+Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
+Portions Copyright (c) 1994-6 Regents of the University of California
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose, without fee, and without a written
+agreement is hereby granted, provided that the above copyright notice
+and this paragraph and the following two paragraphs appear in all copies.
+
+IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
+DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS
+TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+�stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak kodun
+nas�l kullan�labilece�ine dair s�n�rlamalar� yoktur. Bu lisans�
+seviyoruz. De�i�tirme niyetimiz bulunmamaktad�r.
+
+
+ 1.3) PostgreSQL, hangi Unix platforlar�nda �al�s�r?
+
+Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
+�al��t�racakt�r. Ayr�nt�l� bilgi i�in kurulum belgelerine bakabilirsiniz.
+
+
+ 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
+
+*�stemci*
+
+libpq C k�t�phanesini, psql ve diger arabirimleri ve binary dosyalar�,
+MS Windows ortamlar�nda �al�smas� i�in derlemeniz m�mk�nd�r. Bu �rnekte
+istemcide MS Windows �al�s�yor ve desteklenen Unix platformlar�ndan
+birinde �al�san PostgreSQL sunucuna TCP/IP ile baglanmaktad�r. Da��t�m
+i�indeki win31.mak dosyas� ile, Win32 libpg k�t�phanesi ve psql
+yaratabilirsiniz. PostgreSQL ayn� zamanda ODBC istemcileri ile
+haberlesebilmektedir.
+
+*Sunucu*
+
+Veritaban� sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde
+calistirilabilir. Dag�t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da
+web sitemizdeki MS Windows FAQ'u inceleyebilirsiniz.
+
+Do�al Windows NT/2000/XP portu i�in �u anda �al��malar devam etmektedir.
+Windows s�r�m� hakk�nda g�ncel bilgi i�in,
+http://techdocs.postgresql.org/guides/Windows adresini ziyaret
+edebilirsiniz.
+
+Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu
+bulunmaktad�r.
+
+
+ 1.5) PostgreSQL'i nereden indirebilirim?
+
+PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub' dur.
+Yans�lar i�in, ana web sayfam�za bakabilirsiniz.
+
+
+ 1.6) Nereden destek alabilirim?
+
+Ana e-posta listesi : [email protected]. PostgreSQL
+konusundaki tart�smalara a��kt�r. �ye olmak i�in, asag�daki sat�rlar�
+e-postanizin body k�sm�na (konu k�sm�na degil) yaz�p,
[email protected] adresine g�nderin:
+
+subscribe
+end
+
+Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak
+i�in, [email protected] adresine, body k�sm�nda
+
+subscribe
+end
+
+yazan bir e-posta atman�z yeterli olacakt�r.
+
+Digest postalar, ana liste 30k civar�nda e-postaya ulastiginda �yelere
+g�nderilmektedir.
+
+Buglar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak
+i�in, email to [email protected] adresine, body k�sm�nda
+
+subscribe
+end
+
+yazan bir e-posta atman�z yeterli olacakt�r.
+
+Ayn� zamanda, gelistiriciler i�in tart�sma listesi bulunmaktad�r. Bu
+listeye �ye olmak i�in, [email protected] adresine,
+body k�sm�nda
+
+subscribe
+end
+
+yazan bir e-posta atman�z yeterli olacakt�r.
+
+Bunun d�s�ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye,
+PostgreSQL WWW ana sayfas�ndan ulasabilirsiniz:
+
+http://www.PostgreSQL.org
+
+Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir �RC kanal�
+bulunmaktad�r. Bunun i�in, irc -c '#PostgreSQL' "$USER" irc.phoenix.net
+Unix komutunu kullanabilirsiniz.
+
+Ticari destek veren firmalar�n listesine
+
+http://www.postgresql.org/users-lounge/commercial-support.html
+
+adresinden ulasabilirsiniz.
+
+
+ 1.7) En son s�r�m nedir?
+
+PostgreSQL'in son s�r�m� 7.3.3't�r.
+
+Her 4 ayda major release ��kar�lmas� planlanmaktad�r.
+
+
+ 1.8) Hangi belgelere ulasabilirim?
+
+Da��t�m�n icinde, kitapciklar, kitapcik sayfalari ve bazi k���k �rnekler
+verilmektedir. /doc dizinine bak�n�z. Ayrica, bu el kitap��klar�n�
+online olarak http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz.
+
+http://www.PostgreSQL.org/docs/awbook.html ve
+http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplar�
+bulunmaktad�r. PostgreSQL kitablar�n�n listesine,
+http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz. Ayr�ca,
+PostgreSQL konusundaki teknik makalelere de
+http://techdocs.PostgreSQL.org/ adresinden ula�abilirsiniz.
+
+psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
+aggregateler, vb. ile ilgili g�zel komutlar� vard�r.
+
+Web sitemiz daha fazla belgeyi i�ermektedir.
+
+
+ 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
+
+PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da
+�zellikleri bulunmaktad�r. Bilinen hatalar, eksik �zellikler ve gelecek
+ile ilgili planlar i�in TODO listesine bak�n�z.
+
+
+ 1.10) Nas�l SQL ��renebilirim?
+
+http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL
+�gretecektir. http://www.commandprompt.com/ppbook adresinde de bir baska
+PostgreSQL kitab� bulunmaktad�r.
+
+http://www.intermedia.net/support/sql/sqltut.shtm,
+http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de g�zel
+belgeler bulunmaktad�r.
+
+Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm
+adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition" kitab�d�r.
+
+Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler: The Practical SQL
+Handbook, Bowman, Judith S., et al.,Addison-Wesley. Others like The
+Complete Reference SQL, Groff et al., McGraw-Hill.
+
+
+ 1.11) PostgreSQL 2000 y�l�na uyumlu mudur?
+
+Evet.
+
+
+ 1.12) Gelistirme tak�m�na nas�l kat�labilirim?
+
+�ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
+dag�t�m�n i�indeki PostgreSQL Developer belgesini okuyun. Ardindan,
+pgsql-hackers ve pgsql-patches listelerine �ye olun. ���nc� olarak da,
+pgsql-pacthes listesine y�ksek kalitede yamalar g�nderin.
+
+PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici
+bulunmaktadir. Hepsi defalarca, diger kisilerin yaptigindan cok daha
+y�ksek-kaliteli patchler gondermislerdir. Ayrica biz de bu
+gelistiricilerin ekledikleri yamalarin y�ksek kalitede olduguna g�veniyoruz.
+
+
+ 1.13) Bir hata raporunu nas�l g�nderebilirim?
+
+PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin
+neleri yapman�z gerektigi anlatilmistir.
+
+Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
+PostgreSQL s�r�m� ya da yamasi olup olmadigini kontrol ediniz.
+
+
+ 1.14) PostgreSQL, diger DBMS'lerle nas�l karsilast�r�labilir?
+
+Bir yazilimin g�c�n� �l�mek i�in �esitli yollar vardir: Yazilimin
+�zellikleri, basar�m�, g�venilirligi, destegi ve �creti.
+
+�zellikler:
+
+PostgreSQL mevcut b�y�k ticari veritabanlarinin, transaction, subselect,
+trigger, view, foreign key referential integrity ve sophisticated
+locking gibi (user-defined types), rules, inheritance ve lock
+cak�smalarini d�s�rmek icin multi-version uyumluluk �zellikleri
+bulunmaktadir.
+
+Performans (Ba�ar�m):
+
+PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n
+ba�ar�m� sa�lar. Baz� a��lardan daha h�zl�d�r, di�er a��lardan da
+yava�t�r. MySQL ya da daha zay�f veritabanlar� ile
+kar��la�t�r�ld���nda,insert/update islemlerinde, transaction bazl�
+�al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler" k�sm�nda
+belirtilenlerden hi� birine sahip de�ildir. Biz, ba�ar�m�m�z� her
+s�r�mde artt�rsak da, esneklik ve geli�mi� �zellikler i�in yap�lanm�s
+durumday�z . PostgreSQL'i MySQL ile kar��la�t�ran �u web sitesine
+bakabilirsiniz: http://openacs.org/why-not-mysql.html
+
+G�venilirlik:
+
+DBMSlerin g�venilir olmas� gerketigi, yoksa degerleri olmayacagini
+d�s�n�yoruz �ok iyi test edilmis, dengeli �al�san minimum say�da hata
+i�eren kod sunmaya �al�s�yoruz. Her bir s�r�m en az 1 ayl�k beta
+testlerinden ge�irilmektedir. S�r�m ge�mi�ine bakarsan�z, �retime haz�r,
+dengeli ve kararl� kodlar sundugumuzu g�rebilirsiniz. Bu alanda, diger
+veritaban� yaZ�l�mlar�na �st�nl�g�m�z olduguna inanmaktay�z
+
+Destek:
+
+E-posta listemiz, olusan herhangi bir sorunu ��zebilecek b�y�k say�da
+kullan�c� ve gelistirici grubunu i�erir. Sorununuz i�in, en az bir
+ticari veritaban� kadar rahat ��z�m bulabilirsiniz. Gelistiricilere,
+kullan�c� grubuna, belgelere ve kaynak koda direk olarak erisebilme,
+PostgreSQL destegini, diger DBMSlere g�re daha �nemli k�lar. Gereksinimi
+olanlara, ticari destek verilebilir. (Destek i�in 1.6 b�l�m�ne bak�n�z.)
+
+Fiyat:
+
+Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL
+�cretsizdir. Kodumuzu, yukar�da belirtilen BSD-stili lisanstaki
+s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz.
+
+
+ 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
+
+PostgreSQL, 1996 y�l�ndan beri 1.s�n�f altyap�ya ashiptir. Bunun i�in,
+y�llar boyu �al�s�p bu altyap�y� olusturup y�neten Marc Fournier'e
+tesekk�rler.
+
+Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu
+altyap�, projenin kesilmesini �nler ve projenin ilerlemesini h�zland�r�r.
+
+Tabii ki bu altyap� ucuz degildir. �slerin y�r�mesi i�in �e�itli y�l�k
+ve anl�k harcamalar�m�z olmaktad�r. Eger siz ya da sirketinizin bu
+�abam�za bag�sta bulunabilecek paras� varsa, l�tfen
+http://www.pgsql.com/pg_goodies adresine gidiniz ve bag�sta, hibede
+bulununuz.
+
+Web sayfas�n�n PostgreSQL, �nc.' den bahsetmesine ragmen, "katk�da
+bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
+desteklemek i�indir ve belirli bir sirketin para kaynag� degildir.
+isterseniz, baglant� adresine bir �ek g�nderebilirsiniz.
+
+------------------------------------------------------------------------
+
+
+ Kullan�c�/istemci Sorular�
+
+
+ 2.1) PostgreSQL icin ODBC s�r�c�leri var m�?
+
+iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC.
+
+PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+adresinden indirebilirsiniz.
+
+OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu s�r�c�,
+kendi standart ODBC istemci yaz�l�m� ile �al�st���ndan, destekledikleri
+her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
+
+�cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak
+isteyenlere satmak isteyeceklerdir. Sorular�n�z� l�tfen
[email protected] adresine g�nderiniz.
+
+
+ 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi
+ ara�lar bulunmaktad�r?
+
+http://www.webreview.com adresinde, arka planda veritaban� �al�st�ran
+Web sayfalar� i�in giris seviyesinde bilgi bulunmaktad�r.
+
+Web ile b�t�nlesme i�in, PHP m�kemmel bir arabirim sunar. http://www.php.net
+
+Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da
+mod_perl kullan�r.
+
+
+ 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r?
+
+�e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda,
+PgAccess (http://www.pgaccess.org), PgAdmin II (http://www.pgadmin.org,
+sadece Win32 i�in), RHDB Admin (http://sources.redhat.com/rhdb/ ) ve
+Rekall (http://www.thekompany.com/products/rekall/) bulunmaktad�r.
+Ayr�ca, PostgreSQL i�in web tabanl� bir arabirim olan PHPPgAdmin (
+http://phppgadmin.sourceforge.net/ ) bulunmaktad�r.
+
+Daha ayr�nt�l� liste i�in http://techdocs.postgresql.org/guides/GUITools
+adresine bakabilirsiniz.
+
+
+ 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri
+ kullanabilirim?
+
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+Di�erleri i�in, http://gborg.postgresql.org adresindeki
+Drivers/Interfaces b�l�m�ne bakabilirsiniz.
+
+------------------------------------------------------------------------
+
+
+ Y�netimsel Sorular
+
+
+ 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere
+ nas�l kurabilirim?
+
+configure betigini �al�st�r�rken, --prefix se�enegini veriniz.
+
+
+ 3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core
+ dumped mesaj� al�yorum. Neden?
+
+Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey,
+�ekirdeginize System V uzant�lar�n�n kurulu olup olmad�g�n� kontrol
+etmek olabilir. PostgreSQL shared memory ve semaphores i�in �ekirdek
+destegine gereksinim duyar.
+
+
+ 3.3) postmaster'i baslatt�g�mda, a �pcMemoryCreate hatas�
+ al�yorum. Neden?
+
+Ya �ekirdeginizde shared memory desteginiz d�zg�nce
+yap�land�r�lmam�st�r, ya da �ekirdeginizdeki mevcut shared memory
+miktar�n� b�y�tmeniz gerekecektir. Gereksinim duyacag�n�z miktar,
+mimarinize ve postmaster i�in ayarlad�g�n�z tampon ile backend islemi
+say�s�na bagl�d�r. T�m sistemler i�in, tamponlar ve islemlerde �ntan�ml�
+say�larla, ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL
+Administrator's Guide' a, shared memory ve semaphorelar hakk�ndaki
+ayr�nt�l� bilgi i�in bakabilirsiniz.
+
+
+ 3.4) postmaster'i baslatt�g�mda, a �pcSemaphoreCreate hatas�
+ al�yorum. Neden?
+
+Eger hata, "�pcSemaphoreCreate: semget failed (No space left on device)"
+ise, �ekirdeginiz yeterli semaphore ile yap�land�r�lmam�s demektir.
+Postgres, her bir potansiyel backend i�in bir semaphore gereksinmesi
+duyar. Ge�ici bir ��z�m, postmaster� backend islemleri i�in daha az
+miktarda s�n�rla baslatmak olabilir. -N i varsa�lan deger olan 32'den
+k���k bir degerle baslat�n�z. Daha kal�c� bir ��z�m, �ekirde�inizin
+SEMMNS ve SEMMNI parametrelerini y�kseltmek olacakt�r.
+
+�al��mayan semaphorelar a��r veritaban� islemlerinde ��kme yaratabilirler.
+
+Eger hata mesaj�n�z baska birsey ise, �ekirdeginizde semaphore destegini
+yap�land�rmam�s olabilirsiniz. Shared memory ve semaphorelar hakk�ndaki
+daha ayr�nt�l� bilgi i�in PostgreSQL Administrator's Guide'a bakabilirsiniz.
+
+
+ 3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma
+ baglant�lar�n� nas�l kontrol edebilirim?
+
+�n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain sockets
+kullanarak baglan�lmas�na izin verir. Diger makineler, postmaster'a -i
+etiketini ge�irmezseniz ve $PGDATA_pg_hba.conf dosyas�n� d�zenleyerek
+host-based authentication'a olanak vermezseniz, baglant� yapamayacaklard�r.
+
+
+ 3.6) Veritabani motorunu daha iyi basarim icin nasil
+ ayarlayabilirim?
+
+Indexler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in
+sorgunuzu nas�l yorumlad���n� ve hangi indexleri kullandigini g�rmenize
+izin verir.
+
+E�er cok fazla INSERT islemi yapiyorsaniz, bunlar� b�y�k bir toplu islem
+dosyasi kullan�p COPY komutu ile veritabanina girmeyi deneyiniz. Bu,
+tekil �NSERTlerden daha h�zl�d�r. ikinci olarak, BEG�N WORK/COMM�T
+transaction blogu i�inde olmayan ifadeler kendi transactionlarindaymis
+gibi d�s�n�l�r. �oklu ifadeleri tek bir transaction blo�u i�inde
+yapabilirsiniz. Bu, transaction overheadini d���recektir. Tek bir
+transaction blo�u i�inde birden �ok ifadeyi �al��t�rmay�
+deneyebilirsiniz. Bu, transaction overhead ini d���r�r.
+
+�e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'�
+-o -F se�ene�i ile ba�latarak devre d��� b�rakabilirsiniz. Bu i�lem,
+fsync()'lerin her transactiondan sonra diske flush etmesini engelleyecektir.
+
+Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri
+taraf�ndan kullan�lan shared memorf buffers say�lar�n�
+artt�rabilirsiniz. Eger bu parametreyi �ok y�ksek tutarsan�z,
+�ekirde�inizin shared memory b�lgesindeki limiti a�ma olas�l���n�z
+y�z�nden postmaster ba�layamayabilir. Her bir tampon (buffer) 8K'd�r.
+�ntan�ml� say� ise 64 tampondur.
+
+Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend
+s�re�leri taraf�ndan kullan�lacak haf�zay� artt�rmak amac�yla
+kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r ve �n
+tan�ml� de�eri 512'dir (512 K)
+
+Tablolardaki veriyi bir indekse e�lemek amac�yla gruplama i�in CLUSTER
+komutunu kullanabilirsiniz. Ayr�nt�l� bilgi i�in CLUSTER komutunun
+yard�m sayfas�na bakabilirsiniz.
+
+
+ 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r?
+
+PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi rapor
+eden �e�itli �zeliklere sahiptir.
+
+�ncelikle, configure beti�ini --enable-cassert se�ene�iyle
+�al��t�r�rsan�z, bir �ok assert() backend cal��mas�n� g�zlemler ve
+beklenmeyen bir durumda program� durdurur.
+
+Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir.
+�ncelikle, postmaster'i ba�latt���n�zda, standart ��kt�y� ve hatalar�
+bir log dosyas�na y�nlendirdi�inize emin olun:
+
+cd /usr/local/pgsql
+./bin/postmaster >server.log 2>&1 &
+
+Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir. Bu
+dosya sunucunun ya�ad��� sorunlar ya da hatalar hakk�nda yararl�
+bilgiler i�erir. -d se�ene�i, hata ay�klama seviyesini belirten bir
+rakam ile kullan�l�r. Y�ksek hata ay�klama seviyelerinin b�y�k log
+dosyalar� olu�turaca��n� unutmay�n�z.
+
+E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan
+�al��t�rabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece
+hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de yeni
+bir sat�r�n sorguyu sonland�rd���n� unutmay�n�z. E�er hata ay�klama
+sembolleri ile derlediyseniz, ne oldu�unu g�rmek i�in bir hata
+ay�klay�c� kullanabilirsiniz. backend postmasterdan ba�lat�lmad���ndan,
+e�de�er bir ortamda �al��mamaktad�r ve locking/backend etkile�im
+sorunlar� artabilir.
+
+E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql
+taraf�ndan kullan�lan postgres s�recinin s�re� numaras�n� (PID) bulun.
+Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n.
+Sorgular� psql arac�l��� ile �al��t�rabilirsiniz. E�er postgres
+ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n" se�ene�ini
+ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n
+saniye kadar gecikmesini sa�layacakt�r; b�ylece hata ay�klay�c�y� s�rece
+ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini
+sa�layabilirsiniz.
+
+postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t
+se�eneklerine sahiptir.
+
+
+ 3.8) Baglanmaya �al�s�ken, neden "Sorry, too many clients"
+ hatas�n� al�yorum?
+
+Postmaster'in e�zamanl� olarak ba�latabilece�i backend s�re�leri
+s�n�rlar�n� artt�rman�z gerekmektedir.
+
+�n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'i uygun -N de�eri ile ya
+da postgresql.conf dosyas�n� d�zenleyerek yeniden ba�latmakla
+artt�rabilirsiniz.
+
+E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini de
+de�i�tirmeniz gerekti�ini unutmay�n. -B -N'nin en az 2 kat� kadar
+olmal�d�r; daha iyi ba�ar�m i�in bu say�y� daha da artt�rmal�s�n�z.
+Y�ksek say�daki backend s�re�leri i�in, �e�itli �ekirdek yap�land�rma
+parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler, SHMMAX,
+SEMMNS, SEMMNI, NPROC, MAXUPRC ve a��labilecek dosyalar�n maksimum
+say�s� olan NFILE ve NINODE de�erlerini kar��t�rmakt�r. Bunun nedeni,
+PostgreSQL'in izin verilen backend s�re�lerinin say�s� �zerinde bir
+s�n�r� olmas�d�r. B�ylelikle sistem kaynaklar�n�n d���na ��k�lmayacakt�r.
+
+PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve bunu
+de�i�tirmek i�in include/storage/sinvaladt.h dosyas� i�indeki
+MaxBAckendid sabitini de�i�tirdek sonra yaz�l�m� yeniden derlemek
+gerekiyordu.
+
+
+ 3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir?
+
+Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici
+dosyalard�r. �rnegin, bir s�ralama ORDER BY ile yapilacaksa ve s�ralama
+backend'in -s parametresinin izin verdiginden daha fazla alana
+gereksinim duyuyorsa, ekstra veriyi tutmak i�in ge�ici dosyalar yarat�l�r.
+
+Ge�ici dosyalar, eger s�ralama s�ras�nda backend g��mezse otomatik
+olarak silinecektir. Eger �al�san durumda bir backendiniz yoksa,
+pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir..
+
+
+ 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir
+ dump/reload i�lemi ger�ekle�tirmek zorunday�m?
+
+PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler yapmaktad�r;
+bu y�zden 7.2 s�r�m�nden 7.2.1'e y�kseltmek dump/restore i�lemi
+gerekmemektedir. Ancak, esas s�r�mlerde (�rnek: 7.2'den 7.3'e)
+�o�unlukla sistem tablolar�n�n ve veri dosyalar�n�n i� yap�s�
+de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla veri
+dosyalar�n�n geriye d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump
+i�lemi, veriyi genel bi�imde alaca��ndan yeniden y�kleme esnas�nda veri,
+yeni i� bi�ime uygun �ekilde yerle�tirilecektir.
+
+Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin
+bir dump/restore gerektirmeden yap�lmas�n� sa�layacakt�r. pg_upgrade
+beti�inin o s�r�m i�in bulunup bulunmad���n� s�r�m notlar� i�inde
+bulabilirsiniz.
+
+------------------------------------------------------------------------
+
+
+ ��letimsel Sorular
+
+
+ 4.1) Binary cursor ve normal cursor arasindaki fark nedir?
+
+DECLARE yard�m sayfasina bakiniz.
+
+
+ 4.2) Sorgunun sadece ilk birka� sat�r�n� nasil SELECT edebilirim?
+
+FETCH yard�m sayfasina bakiniz, aya da SELECT ... LIMIT.... kullan�n�z.
+
+The entire query may have to be evaluated, even if you only want the
+first few rows. Consider a query that has an ORDER BY. �f there is an
+index that matches the ORDER BY, PostgreSQL may be able to evaluate only
+the first few records requested, or the entire query may have to be
+evaluated until the desired rows have been generated.
+
+
+ 4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin
+ listesini nasil alabilirim?
+
+pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu
+okuyabilirsiniz. Bu kod, psql'in \ ile baslayan komutlar�n�n ��kt�s�n�
+olusturan SQL komutlarini i�erir. Ayn� zamanda, psql'i -E se�ene�i ile
+ba�lat�p, verdi�iniz komutlar� �al��t�rmak i�in yapt��� sorgular�n
+��kt�lar�n� g�rebilirsiniz.
+
+
+ 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
+
+Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski
+s�r�mlerde a�a��dakileri uygulamal�s�n�z:
+
+BEGIN;
+LOCK TABLE old_table;
+SELECT ... -- select all columns but the one you want to remove
+INTO TABLE new_table
+FROM old_table;
+DROP TABLE old_table;
+ALTER TABLE new_table RENAME TO old_table;
+COMMIT;
+
+
+
+ 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir?
+
+S�n�rlar:
+
+Veritabani icin en fazla b�y�kl�k nedir?
+S�n�rs�z (4 TB'l�k veritaban� bulunmaktad�r)
+
+Bir tablo icin en fazla b�y�kl�k nedir?
+16 TB
+
+Bir sat�r i�in en fazla b�y�kl�k nedir?
+1.6 TB
+
+Bir alan i�in en fazla b�y�kl�k nedir?
+1 GB
+
+Tabloda en fazla sat�r say�s� ka�t�r?
+S�n�rs�z
+
+Bir tabloda olabilecek en fazla kolon say�s� ka�t�r?
+Kolon tiplerine ba�l� olarak 250-1600
+
+Bir tabloda olabilecek en fazla index say�s� ka�t�r?
+s�n�rs�z
+
+These are the limits:
+
+ Maximum size for a database? unlimited (4 TB databases exist)
+ Maximum size for a table? 16 TB
+ Maximum size for a row? 1.6TB
+ Maximum size for a field? 1 GB
+ Maximum number of rows in a table? unlimited
+ Maximum number of columns in a table? 250-1600 depending on column types
+ Maximum number of indexes on a table? unlimited
+
+Of course, these are not actually unlimited, but limited to available
+disk space and memory/swap space. Performance may suffer when these
+values get unusually large.
+
+The maximum table size of 16 TB does not require large file support from
+the operating system. Large tables are stored as multiple 1 GB files so
+file system size limits are not important.
+
+The maximum table size and maximum number of columns can be increased if
+the default block size is increased to 32k.
+
+
+ 4.6) How much database disk space is required to store data from
+ a typical text file?
+
+A PostgreSQL database may require up to five times the disk space to
+store data from a text file.
+
+As an example, consider a file of 100,000 lines with an integer and text
+description on each line. Suppose the text string avergages twenty bytes
+in length. The flat file would be 2.8 MB. The size of the PostgreSQL
+database file containing this data can be estimated as 6.4 MB:
+
+ 36 bytes: each row header (approximate)
+ 24 bytes: one int field and one text field
+ + 4 bytes: pointer on page to tuple
+ ----------------------------------------
+ 64 bytes per row
+
+ The data page size in PostgreSQL is 8192 bytes (8 KB), so:
+
+ 8192 bytes per page
+ ------------------- = 128 rows per database page (rounded down)
+ 64 bytes per row
+
+ 100000 data rows
+ -------------------- = 782 database pages (rounded up)
+ 128 rows per page
+
+782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB)
+
+Indexes do not require as much overhead, but do contain the data that is
+being indexed, so they can be large also.
+
+NULLs are stored in bitmaps, so they use very little space.
+
+
+ 4.7) How do I find out what tables, indexes, databases, and
+ users are defined?
+
+/psql/ has a variety of backslash commands to show such information. Use
+\? to see them. There are also system tables beginning with /pg_/ that
+describe these too. Also, /psql -l/ will list all databases.
+
+Also try the file /pgsql/src/tutorial/syscat.source/. It illustrates
+many of the SELECTs needed to get information from the database system
+tables.
+
+
+ 4.8) My queries are slow or don't make use of the indexes. Why?
+
+Indexes are not automatically used by every query. Indexes are only used
+if the table is larger than a minimum size, and the query selects only a
+small percentage of the rows in the table. This is because the random
+disk access caused by an index scan can be slower than a straight read
+through the table, or sequential scan.
+
+To determine if an index should be used, PostgreSQL must have statistics
+about the table. These statistics are collected using VACUUM ANALYZE, or
+simply ANALYZE. Using statistics, the optimizer knows how many rows are
+in the table, and can better determine if indexes should be used.
+Statistics are also valuable in determining optimal join order and join
+methods. Statistics collection should be performed periodically as the
+contents of the table change.
+
+Indexes are normally not used for ORDER BY or to perform joins. A
+sequential scan followed by an explicit sort is usually faster than an
+index scan of a large table.
+
+However, LIMIT combined with ORDER BY often will use an index because
+only a small portion of the table is returned. In fact, though MAX() and
+MIN() don't use indexes, it is possible to retrieve such values using an
+index with ORDER BY and LIMIT:
+
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1;
+
+If you believe the optimizer is incorrect in choosing a sequential scan,
+use |SET enable_seqscan TO 'off'| and run tests to see if an index scan
+is indeed faster.
+
+When using wild-card operators such as LIKE or /~/, indexes can only be
+used in certain circumstances:
+
+ * The beginning of the search string must be anchored to the start
+ of the string, i.e.
+ o LIKE patterns must not start with /%/.
+ o /~/ (regular expression) patterns must start with /^/.
+ * The search string can not start with a character class, e.g. [a-e].
+ * Case-insensitive searches such as ILIKE and /~*/ do not utilise
+ indexes. Instead, use functional indexes, which are described in
+ section 4.12 <#4.12>.
+ * The default /C/ locale must be used during /initdb/.
+
+
+ 4.9) How do I see how the query optimizer is evaluating my query?
+
+See the EXPLAIN manual page.
+
+
+ 4.10) What is an R-tree index?
+
+An R-tree index is used for indexing spatial data. A hash index can't
+handle range searches. A B-tree index only handles range searches in a
+single dimension. R-trees can handle multi-dimensional data. For
+example, if an R-tree index can be built on an attribute of type
+/point/, the system can more efficiently answer queries such as "select
+all points within a bounding rectangle."
+
+The canonical paper that describes the original R-tree design is:
+
+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.
+
+You can also find this paper in Stonebraker's "Readings in Database
+Systems".
+
+Built-in R-trees can handle polygons and boxes. In theory, R-trees can
+be extended to handle higher number of dimensions. In practice,
+extending R-trees requires a bit of work and we don't currently have any
+documentation on how to do it.
+
+
+ 4.11) What is the Genetic Query Optimizer?
+
+The GEQO module speeds query optimization when joining many tables by
+means of a Genetic Algorithm (GA). It allows the handling of large join
+queries through nonexhaustive search.
+
+
+ 4.12) How do I perform regular expression searches and
+ case-insensitive regular expression searches? How do I use an
+ index for case-insensitive searches?
+
+The /~/ operator does regular expression matching, and /~*/ does
+case-insensitive regular expression matching. The case-insensitive
+variant of LIKE is called ILIKE.
+
+Case-insensitive equality comparisons are normally expressed as:
+
+ SELECT *
+ FROM tab
+ WHERE lower(col) = 'abc';
+
+This will not use an standard index. However, if you create a functional
+index, it will be used:
+
+ CREATE INDEX tabindex ON tab (lower(col));
+
+
+ 4.13) In a query, how do I detect if a field is NULL?
+
+You test the column with IS NULL and IS NOT NULL.
+
+
+ 4.14) What is the difference between the various character types?
+
+Type Internal Name Notes
+--------------------------------------------------
+VARCHAR(n) varchar size specifies maximum length, no padding
+CHAR(n) bpchar blank padded to the specified fixed length
+TEXT text no specific upper limit on length
+BYTEA bytea variable-length byte array (null-byte safe)
+"char" char one character
+
+You will see the internal name when examining system catalogs and in
+some error messages.
+
+The first four types above are "varlena" types (i.e., the first four
+bytes on disk are the length, followed by the data). Thus the actual
+space used is slightly greater than the declared size. However, these
+data types are also subject to compression or being stored out-of-line
+by TOAST, so the space on disk might also be less than expected.
+
+VARCHAR(n) is best when storing variable-length strings and it limits
+how long a string can be. TEXT is for strings of unlimited length, with
+a maximum of one gigabyte.
+
+CHAR(n) is for storing strings that are all the same length. CHAR(n)
+pads with blanks to the specified length, while VARCHAR(n) only stores
+the characters supplied. BYTEA is for storing binary data, particularly
+values that include NULL bytes. All the types described here have
+similar performance characteristics.
+
+
+ 4.15.1) How do I create a serial/auto-incrementing field?
+
+PostgreSQL supports a SERIAL data type. It auto-creates a sequence and
+index on the column. For example, this:
+
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
+ );
+
+is automatically translated into this:
+
+ 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 );
+
+See the /create_sequence/ manual page for more information about
+sequences. You can also use each row's /OID/ field as a unique value.
+However, if you need to dump and reload the database, you need to use
+/pg_dump/'s /-o/ option or COPY WITH OIDS option to preserve the OIDs.
+
+
+ 4.15.2) How do I get the value of a SERIAL insert?
+
+One approach is to retrieve the next SERIAL value from the sequence
+object with the /nextval()/ function /before/ inserting and then insert
+it explicitly. Using the example table in 4.15.1 <#4.15.1>, an example
+in a pseudo-language would look like this:
+
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+
+You would then also have the new value stored in |new_id| for use in
+other queries (e.g., as a foreign key to the |person| table). Note that
+the name of the automatically created SEQUENCE object will be named
+</table/>_</serialcolumn/>_/seq/, where /table/ and /serialcolumn/ are
+the names of your table and your SERIAL column, respectively.
+
+Alternatively, you could retrieve the assigned SERIAL value with the
+/currval()/ function /after/ it was inserted by default, e.g.,
+
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+
+Finally, you could use the OID <#4.16> returned from the INSERT
+statement to look up the default value, though this is probably the
+least portable approach. In Perl, using DBI with Edmund Mergl's DBD::Pg
+module, the oid value is made available via /$sth->{pg_oid_status}/
+after /$sth->execute()/.
+
+
+ 4.15.3) Don't /currval()/ and /nextval()/ lead to a race
+ condition with other users?
+
+No. /currval()/ returns the current value assigned by your backend, not
+by all users.
+
+
+ 4.15.4) Why aren't my sequence numbers reused on transaction
+ abort? Why are there gaps in the numbering of my sequence/SERIAL
+ column?
+
+To improve concurrency, sequence values are given out to running
+transactions as needed and are not locked until the transaction
+completes. This causes gaps in numbering from aborted transactions.
+
+
+ 4.16) What is an OID? What is a TID?
+
+OIDs are PostgreSQL's answer to unique row ids. Every row that is
+created in PostgreSQL gets a unique OID. All OIDs generated during
+/initdb/ are less than 16384 (from /include/access/transam.h/). All
+user-created OIDs are equal to or greater than this. By default, all
+these OIDs are unique not only within a table or database, but unique
+within the entire PostgreSQL installation.
+
+PostgreSQL uses OIDs in its internal system tables to link rows between
+tables. These OIDs can be used to identify specific user rows and used
+in joins. It is recommended you use column type OID to store OID values.
+You can create an index on the OID field for faster access.
+
+OIDs are assigned to all new rows from a central area that is used by
+all databases. If you want to change the OID to something else, or if
+you want to make a copy of the table, with the original OIDs, there is
+no reason you can't do it:
+
+ 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';
+
+OIDs are stored as 4-byte integers, and will overflow at 4 billion. No
+one has reported this ever happening, and we plan to have the limit
+removed before anyone does.
+
+TIDs are used to identify specific physical rows with block and offset
+values. TIDs change after rows are modified or reloaded. They are used
+by index entries to point to physical rows.
+
+
+ 4.17) What is the meaning of some of the terms used in PostgreSQL?
+
+Some of the source code and older documentation use terms that have more
+common usage. Here are some:
+
+ * table, relation, class
+ * row, record, tuple
+ * column, field, attribute
+ * retrieve, select
+ * replace, update
+ * append, insert
+ * OID, serial value
+ * portal, cursor
+ * range variable, table name, table alias
+
+A list of general database terms can be found at:
+http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
+
+
+ 4.18) Why do I get the error /"ERROR: Memory exhausted in
+ AllocSetAlloc()"/?
+
+You probably have run out of virtual memory on your system, or your
+kernel has a low limit for certain resources. Try this before starting
+/postmaster/:
+
+ ulimit -d 262144
+ limit datasize 256m
+
+Depending on your shell, only one of these may succeed, but it will set
+your process data segment limit much higher and perhaps allow the query
+to complete. This command applies to the current process, and all
+subprocesses created after the command is run. If you are having a
+problem with the SQL client because the backend is returning too much
+data, try it before starting the client.
+
+
+ 4.19) How do I tell what PostgreSQL version I am running?
+
+From /psql/, type |SELECT version();|
+
+
+ 4.20) Why does my large-object operations get /"invalid large
+ obj descriptor"/?
+
+You need to put |BEGIN WORK| and |COMMIT| around any use of a large
+object handle, that is, surrounding |lo_open| ... |lo_close.|
+
+Currently PostgreSQL enforces the rule by closing large object handles
+at transaction commit. So the first attempt to do anything with the
+handle will draw /invalid large obj descriptor/. So code that used to
+work (at least most of the time) will now generate that error message if
+you fail to use a transaction.
+
+If you are using a client interface like ODBC you may need to set
+|auto-commit off.|
+
+
+ 4.21) How do I create a column that will default to the current
+ time?
+
+Use /CURRENT_TIMESTAMP/:
+
+|CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
+|
+
+
+ 4.22) Why are my subqueries using |IN| so slow?
+
+Currently, we join subqueries to outer queries by sequentially scanning
+the result of the subquery for each row of the outer query. If the
+subquery returns only a few rows and the outer query returns many rows,
+|IN| is fastest. To speed up other queries, replace |IN| with |EXISTS|:
+
+ SELECT *
+ FROM tab
+ WHERE col IN (SELECT subcol FROM subtab);
+
+to:
+
+ SELECT *
+ FROM tab
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
+
+For this to be fast, |subcol| should be an indexed column. This
+preformance problem will be fixed in 7.4.
+
+
+ 4.23) How do I perform an outer join?
+
+PostgreSQL supports outer joins using the SQL standard syntax. Here are
+two examples:
+
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+or
+
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+
+These identical queries join t1.col to t2.col, and also return any
+unjoined rows in t1 (those with no match in t2). A RIGHT join would add
+unjoined rows of t2. A FULL join would return the matched rows plus all
+unjoined rows from t1 and t2. The word OUTER is optional and is assumed
+in LEFT, RIGHT, and FULL joins. Ordinary joins are called INNER joins.
+
+In previous releases, outer joins can be simulated using UNION and NOT
+IN. For example, when joining /tab1/ and /tab2/, the following query
+does an /outer/ join of the two tables:
+
+ SELECT tab1.col1, tab2.col2
+ FROM tab1, tab2
+ WHERE tab1.col1 = tab2.col1
+ UNION ALL
+ SELECT tab1.col1, NULL
+ FROM tab1
+ WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
+ ORDER BY col1
+
+
+ 4.24) How do I perform queries using multiple databases?
+
+There is no way to query a database other than the current one. Because
+PostgreSQL loads database-specific system catalogs, it is uncertain how
+a cross-database query should even behave.
+
+/contrib/dblink/ allows cross-database queries using function calls. Of
+course, a client can make simultaneous connections to different
+databases and merge the results on the client side.
+
+
+ 4.25) How do I return multiple rows or columns from a function?
+
+In 7.3, you can easily return multiple rows or columns from a function,
+http://techdocs.postgresql.org/guides/SetReturningFunctions
+<http://techdocs.postgresql.org/guides/SetReturningFunctions>.
+
+
+ 4.26) Why can't I reliably create/drop temporary tables in
+ PL/PgSQL functions?
+
+PL/PgSQL caches function contents, and an unfortunate side effect is
+that if a PL/PgSQL function accesses a temporary table, and that table
+is later dropped and recreated, and the function called again, the
+function will fail because the cached function contents still point to
+the old temporary table. The solution is to use EXECUTE for temporary
+table access in PL/PgSQL. This will cause the query to be reparsed every
+time.
+
+
+ 4.27) What replication options are available?
+
+There are several master/slave replication options available. These
+allow only the master to make database changes and the slave can only do
+database reads. The bottom of
+http://gborg.PostgreSQL.org/genpage?replication_research
+<http://gborg.postgresql.org/genpage?replication_research> lists them. A
+multi-master replication solution is being worked on at
+http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php
+<http://gborg.postgresql.org/project/pgreplication/projdisplay.php>.
+
+
+ 4.28) What encryption options are available?
+
+ * /contrib/pgcrypto/ contains many encryption functions for use in
+ SQL queries.
+ * The only way to encrypt transmission from the client to the server
+ is by using /hostssl/ in /pg_hba.conf/.
+ * Database user passwords are automatically encrypted when stored in
+ version 7.3. In previous versions, you must enable the option
+ /PASSWORD_ENCRYPTION/ in /postgresql.conf/.
+ * The server can run using an encrypted file system.
+
+------------------------------------------------------------------------
+
+
+ Extending PostgreSQL
+
+
+ 5.1) I wrote a user-defined function. When I run it in /psql/,
+ why does it dump core?
+
+The problem could be a number of things. Try testing your user-defined
+function in a stand-alone test program first.
+
+
+ 5.2) How can I contribute some nifty new types and functions to
+ PostgreSQL?
+
+Send your extensions to the /pgsql-hackers/ mailing list, and they will
+eventually end up in the /contrib// subdirectory.
+
+
+ 5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m?
+
+PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak
+tablo-d�nd�ren fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi
+i�in "Programmer's Guide" a bakabilrisiniz. Bir �rne�i
+/contrib/tablefunc/ i�inde bulabilirsiniz.
+
+
+ 5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe
+ ra�men de�i�iklik ge�erli olmuyor. Neden?
+
+/Makefile'lar/ include dosyalar� i�in tam bir ba��ml�l�k i�ermezler.
+�ncelikle /make clean/, ard�ndan da baska bir /make/ i�lemi yapman�z
+gerekir. GCC kullan�yorsaniz, /configure/ beti�inin /--enable-depend/
+se�ene�ini, derleyicinin ba��ml�l�klar� otomatik olarak hesaplamas� i�in
+kullanabilirsiniz.
+