Commit 6b8f6a65 authored by Bruce Momjian's avatar Bruce Momjian

Update Turkish FAQ, Devrim GUNDUZ

parent f766b376
PostgreSQL iin Ska Sorulan Sorular (SSS)
Son gncelleme : 19.05.2003 Cuma 05:03
PostgreSQL için Sýkça Sorulan Sorular (SSS) Son güncelleme : 19 Mayýs Bruce Momjian (pgman@candle.pha.pa.us)
2003 Pazartesi - 03:05:21 Current maintainer: Bruce Momjian eviren : Devrim GNDZ (devrim@gunduz.org), Nicolai Tufar (ntufar@yahoo.com), Volkan Yazc (volkany@celiknet.com)
(pgman@candle.pha.pa.us ) Çeviren : Devrim GÜNDÜZ (devrim@gunduz.org )
Nicolai Tufar (ntufar@yahoo.com ) Bu belgenin en güncel hali, Bu belgenin en gncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish ve
http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve http://www.PostgreSQL.org/docs/faq-turkish.html
http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde görülebilir. adreslerinde gorlebilir.
Platforma özel sorularýnýz,http://www.PostgreSQL.org/docs/index.html
adresinde yanýtlanýr.. Platforma zel sorularnz,
---------------------------------------------------------------------- http://www.PostgreSQL.org/users-lounge/docs/faq.html adresinde yantlanr.
-- 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 Genel Sorular
uyarlamalarý bulunmaktadýr? 1.5 <#1.5>) PostgreSQL'i nereden
indirebilirim? 1.6 <#1.6>) Desteði nereden alabilirim? 1.7 <#1.7>) En 1.1) PostgreSQL nedir? Nasl okunur?
son sürümü nedir? 1.8 <#1.8>) Hangi belgelere ulasabilirim? 1.9 1.2) PostgreSQL' in haklar nedir?
<#1.9>) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim? 1.3) PostgreSQL, hangi Unix platformlarnda alsr?
1.10 <#1.10>) Nasýl SQL öðrenebilirim? 1.11 <#1.11>) PostgreSQL 2000 1.4) Hangi Unix olmayan uyarlamalar bulunmaktadr?
yýlýna uyumlu mudur? 1.12 <#1.12>) Geliþtirme takýmýna nasýl 1.5) PostgreSQL'i nereden indirebilirim?
katýlabilirim?? 1.13 <#1.13>) Bir hata raporunu nasýl gönderebilirim? 1.6) Destei nereden alabilirim?
1.14 <#1.14>) PostgreSQL, diger VTYS(DBMS lerle nasýl 1.7) En son srm nedir?
karþýlaþtýrýlabilir? 1.15 <#1.15>) PostgreSQL'e maddi açýdan nasýl 1.8) Hangi belgelere ulasabilirim?
destek olabilirim? Kullanýcý/istemci Sorularý 2.1 <#2.1>) Are there 1.9) Bilinen hatalar ya da eksik zelliklere nereden ulasabilirim?
ODBC drivers for PostgreSQL? 2.2 <#2.2>) What tools are available for 1.10) Nasl SQL grenebilirim?
using PostgreSQL with Web pages? 2.3 <#2.3>) Does PostgreSQL have a 1.11) PostgreSQL 2000 ylna uyumlu mudur?
graphical user interface? 2.4 <#2.4>) What languages are available to 1.12) Gelitirme takmna nasl katlabilirim?
communicate with PostgreSQL? Administrative Questions 3.1 <#3.1>) How 1.13) Bir hata raporunu nasl gnderebilirim?
do I install PostgreSQL somewhere other than //usr/local/pgsql/? 3.2 1.14) PostgreSQL, diger DBMS'lerle nasl karlatrlabilir?
<#3.2>) When I start /postmaster/, I get a /Bad System Call/ or core 1.15) PostgreSQL'e maddi adan nasl destek olabilirim?
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 Kullanc/istemci Sorular
/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 2.1) PostgreSQL icin ODBC srcleri var m?
the database engine for better performance? 3.7 <#3.7>) What debugging 2.2) PostgreSQL'i web sayfalarnda kullanabilmek iin hangi aralar bulunmaktadr?
features are available? 3.8 <#3.8>) Why do I get /"Sorry, too many 2.3) PostgreSQL'in grafik kullanc arabirimi var mdr?
clients"/ when trying to connect? 3.9 <#3.9>) What is in the Report generator var mdr? Gml sorgu dili arabirimi var mdr?
/pgsql_tmp/ directory? 3.10 <#3.10>) Why do I need to do a dump and 2.4) PostgreSQL ile iletiimi kurabilmek iin hangi dilleri kullanabilirim?
restore to upgrade PostgreSQL releases? Operational Questions 4.1
<#4.1>) What is the difference between binary cursors and normal Ynetimsel Sorular
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? 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baka dizinlere nasl kurabilirim?
4.5 <#4.5>) What is the maximum size for a row, a table, and a 3.2) Postmaster'i baslattgmda, Bad System Call ya da core dumped mesaj
database? 4.6 <#4.6>) How much database disk space is required to alyorum. Neden?
store data from a typical text file? 4.7 <#4.7>) How do I find out 3.3) Postmaster'i balattmda, IpcMemoryCreate hatas alyorum. Neden?
what tables, indexes, databases, and users are defined? 4.8 <#4.8>) My 3.4) Postmaster'i balattmda, IpcSemaphoreCreate hatas alyorum. Neden?
queries are slow or don't make use of the indexes. Why? 4.9 <#4.9>) 3.5) Dier bilgisayarlarn benim PostgreSQL veritaban sunucuma balantlarn nasl
How do I see how the query optimizer is evaluating my query? 4.10 kontrol edebilirim?
<#4.10>) What is an R-tree index? 4.11 <#4.11>) What is the Genetic 3.6) Veritaban motorunu daha iyi baarm icin nasl ayarlayabilirim?
Query Optimizer? 4.12 <#4.12>) How do I perform regular expression 3.7) Hangi hata ayklama zellikleri bulunmaktadr?
searches and case-insensitive regular expression searches? How do I 3.8) Balanmaya alrken, neden "Sorry, too many clients" hatasn alyorum?
use an index for case-insensitive searches? 4.13 <#4.13>) In a query, 3.9) pgsql_tmp dizininin iindeki dosyalar nelerdir?
how do I detect if a field is NULL? 4.14 <#4.14>) What is the 3.10) PostgreSQL srmlerini ykselmek iin neden bir dump/reload ilemi gerekletirmek
difference between the various character types? 4.15.1 <#4.15.1>) How zorundaym?
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 letimsel Sorular
/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 4.1) Binary cursor ve normal cursor arasndaki fark nedir?
abort? Why are there gaps in the numbering of my sequence/SERIAL 4.2) Sorgunun sadece ilk birka satrn nasl SELECT edebilirim?
column? 4.16 <#4.16>) What is an OID? What is a TID? 4.17 <#4.17>) 4.3) psql'in iinde grdm tablolarn ya da dier eylerin listesini nasil alabilirim?
What is the meaning of some of the terms used in PostgreSQL? 4.18 4.4) Bir tablodan bir kolonu nasl kaldrabilirim?
<#4.18>) Why do I get the error /"ERROR: Memory exhausted in 4.5) Bir satr, tablo ve veritaban icin en fazla byklk nedir?
AllocSetAlloc()"/? 4.19 <#4.19>) How do I tell what PostgreSQL version 4.6) Tipik bir metin dosyasndaki veriyi saklamak iin ne kadar disk alan gereklidir?
I am running? 4.20 <#4.20>) Why does my large-object operations get 4.7) Veritabannda hangi tablo ya da indexlerin tanmlandgn nasl grebilirim?
/"invalid large obj descriptor"/? 4.21 <#4.21>) How do I create a 4.8) Sorgularm cok yava, ya da indexlerimi kullanmyorlar. Neden?
column that will default to the current time? 4.22 <#4.22>) Why are my 4.9) Query-optimizer in sorgularm nasl deerlendirdigini, ileme soktuunu nasl grebilirim?
subqueries using |IN| so slow? 4.23 <#4.23>) How do I perform an outer 4.10) R-tree index nedir?
join? 4.24 <#4.24>) How do I perform queries using multiple databases? 4.11) Genetic Query Optimizer nedir?
4.25 <#4.25>) How do I return multiple rows or columns from a 4.12) Dzenli ifade (Regular Expression) aramalarn ve byk/kk harfe duyarsz aramalar nasil yapabilirim?
function? 4.26 <#4.26>) Why can't I reliably create/drop temporary Bu byk(kk harfe duyarl aramalar iin indeksi nasil kullanabilirim?
tables in PL/PgSQL functions? 4.27 <#4.27>) What replication options
are available? 4.28 <#4.28>) What encryption options are available? 4.13) Bir sorguda, bir alann "NULL" olduunu nasl ortaya karabilirim?
Extending PostgreSQL 5.1 <#5.1>) I wrote a user-defined function. When 4.14) esitli karakter tipleri arasndaki farklar nelerdir?
I run it in /psql/, why does it dump core? 5.2 <#5.2>) How can I 4.15.1) Nasl serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
contribute some nifty new types and functions to PostgreSQL? 5.3 4.15.2) SERIAL giriinin deerini nasl alabilirim?
<#5.3>) How do I write a C function to return a tuple? 5.4 <#5.4>) I 4.15.3) currval() ve nextval() dier kullanclara sorun yaratmaz m?
have changed a source file. Why does the recompile not see the change? 4.15.4) Neden sequence saylarn transaction ileminin iptalinden sonra yeniden kullanlyor? Neden sequence/SERIAL
---------------------------------------------------------------------- kolonumdaki saylarda atlamalar oluyor?
-- General Questions 1.1) What is PostgreSQL? How is it pronounced? 4.16) OID nedir? TID nedir?
PostgreSQL is pronounced /Post-Gres-Q-L/. PostgreSQL is an enhancement 4.17) PostgreSQL' de kullanlan baz terimlerin anlamlar nelerdir?
of the POSTGRES database management system, a next-generation DBMS 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatasn alyorum?
research prototype. While PostgreSQL retains the powerful data model 4.19) Hangi PostgreSQL srmn alstrdm nasl grebilirim?
and rich data types of POSTGRES, it replaces the PostQuel query 4.20) Neden large-object ilemlerim, "invalid large obj descriptor"? hatasn veriyor?
language with an extended subset of SQL. PostgreSQL is free and the 4.21) u andaki zaman ntanml deer olarak kabul eden kolonu nasl yaratrm?
complete source is available. PostgreSQL development is performed by a 4.22) Neden IN kullanan subquerylerim ok yava?
team of developers who all subscribe to the PostgreSQL development 4.23) Outer join ilemini nasl yapabilirim?
mailing list. The current coordinator is Marc G. Fournier 4.24) Ayn anda birden fazla veritabannda nasl ilem yapabilirim?
(scrappy@PostgreSQL.org ). (See section 1.6 <#1.6> on how to join). 4.25) Bir fonksiyondan nasl oklu satr ya da kolon dndrebilirim?
This team is now responsible for all development of PostgreSQL. The 4.26) Neden Pl/PgSQL fonksiyonlar iinden gvenli bir ekilde tablo yaratma/kaldrma ilemlerini yapamyoruz?
authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many others 4.27) Hangi replikasyon seenekleri bulunmaktadr?
have contributed to the porting, testing, debugging, and enhancement 4.28) Hangi ifreleme seenekleri bulunmaktadr?
of the code. The original Postgres code, from which PostgreSQL is
derived, was the effort of many graduate students, undergraduate PostgreSQL zelliklerini Geniletmek
students, and staff programmers working under the direction of
Professor Michael Stonebraker at the University of California, 5.1) Kullanc-tanml bir fonksiyon yazdm. psql'de altrdm zaman neden
Berkeley. The original name of the software at Berkeley was Postgres. core dump ediyor?
When SQL functionality was added in 1995, its name was changed to 5.2) PostgreSQL'e nasl yeni veri tipleri/fonksiyonlar ekleyebilirim?
Postgres95. The name was changed at the end of 1996 to PostgreSQL. 5.3) Bir tuple dndrmek iin bir C fonksiyonunu nasl yazarm?
1.2) What is the copyright on PostgreSQL? PostgreSQL is subject to the 5.4) Bir kaynak dosyasnda deisiklik yaptm. Yeniden derlememe ramen
following COPYRIGHT: PostgreSQL Data Base Management System Portions deiiklik geerli olmuyor. Neden?
copyright (c) 1996-2002, PostgreSQL Global Development Group Portions _________________________________________________________________
Copyright (c) 1994-6 Regents of the University of California
Genel sorular
1.1) PostgreSQL nedir?
PostgreSQL, Post-Gres-Q-L olarak okunur.
PostgreSQL, yeni-nesil VTYS arastrma prototipi olan POSTGRES veritaban
ynetim sisteminin gelitirilmesidir. POSTGRES' in zengin veri
tiplerini ve gl veri modelini tutarken, SQL'in gelitirilmis alt kmesi
olan PostQuel dilini kullanr. PostgreSQL cretsizdir ve kaynak kodu ak datlr.
PostgreSQL, PostgreSQL gelistirme listesine ye olan bir nternet gelistirici
takm tarafndan gelitirilir. u andaki koordinatr, Marc G. Fournier
(scrappy@PostgreSQL.org). (Bu takma nasl katlacagnz grenmek iin
1.6 numaral maddeyi okuyunuz.) Bu takm, tm PostgreSQL geliiminden sorumludur.
PostgreSQL 1.01 srmnn yazarlar Andrew Yu ve Jolly Chen idi. Bunlarn dsnda bir ka kisi de uyarlama,
hata ayklama ve kodun gelistirilmesi iin alsmst. PostgreSQL'in tredigi orijinal Postgres kodu,
lisans, lisansst ve akademisyenler tarafindan, Professor Michael Stonebraker ) University of
California, Berkeley) koordinatrlgnde yazlmstr.
Berkley'deki yazlmm ad Postgres idi. SQL uyumlulugu 1995'te eklenince, ad Postgres 95
oldu. 1996 ylnn sonlarnda 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 Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written documentation for any purpose, without fee, and without a written
agreement is hereby granted, provided that the above copyright notice agreement is hereby granted, provided that the above copyright notice
and this paragraph and the following two paragraphs appear in all and this paragraph and the following two paragraphs appear in all
copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO copies.
ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. The INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
above is the BSD license, the classic open-source license. It has no MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
restrictions on how the source code may be used. We like it and have PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
no intention of changing it. 1.3) What Unix platforms does PostgreSQL CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
run on? In general, a modern Unix-compatible platform should be able UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
to run PostgreSQL. The platforms that had received explicit testing at
the time of release are listed in the installation instructions. 1.4) stteki metin klasik ak-kod lisans olan BSD lisansdr. Kaynak kodun nasl
What non-Unix ports are available? *Client* It is possible to compile kullanlabileceine dair snrlamalar yoktur. Bu lisansi seviyoruz ve deitirme
the /libpq/ C library, psql, and other interfaces and client niyetimiz bulunmamaktadr.
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 1.3) PostgreSQL, hangi Unix platforlarnda alsr?
running on one of our supported Unix platforms. A file /win32.mak/ is
included in the distribution for making a Win32 /libpq/ library and Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i alstracaktr.
/psql/. PostgreSQL also communicates with ODBC clients. *Server* The Ayrntl bilgi iin kurulum belgelerine bakabilirsiniz
database server can run on Windows NT and Win2k using Cygwin, the
Cygnus Unix/NT porting library. See /pgsql/doc/FAQ_MSWIN/ in the 1.4) Hangi Unix olmayan uyarlamalar bulunmaktadr?
distribution or the MS Windows FAQ at
http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN stemci
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 libpq C ktphanesini, psql ve diger arabirimleri ve binary dosyalar, MS
current status of PostgreSQL on Windows see Windows ortamlarnda alsmas iin derlemeniz mmkndr. Bu rnekte istemcide
http://techdocs.postgresql.org/guides/Windows MS Windows alsyor ve desteklenen Unix platformlarndan birinde alsan PostgreSQL
techdocs.postgresql.org/guides/Windows>. There is also a Novell sunucuna TCP/IP ile baglanmaktadr. Datm iindeki win31.mak dosyas ile,
Netware 6 port at http://forge.novell.com. 1.5) Where can I get Win32 libpg ktphanesi ve psql yaratabilirsiniz. PostgreSQL ayn zamanda ODBC
PostgreSQL? The primary anonymous ftp site for PostgreSQL is istemcileri ile haberlesebilmektedir.
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: Sunucu
pgsql-general@PostgreSQL.org . It is available for discussion of
matters pertaining to PostgreSQL. To subscribe, send mail with the Veritaban sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP zerinde calistirilabilir.
following lines in the body (not the subject line): subscribe end to Dagtm iindeki pgsql/doc/FAQ_MSWN dosyasn ya da web sitemizdeki MS Windows FAQ'u
pgsql-general-request@PostgreSQL.org . There is also a digest list inceleyebilirsiniz.
available. To subscribe to this list, send email to:
pgsql-general-digest-request@PostgreSQL.org with a body of: subscribe Doal Windows NT/2000/XP portu iin u anda almalar devam etmektedir. Windows srm
end Digests are sent out to members of this list whenever the main hakknda gncel bilgi iin, http://techdocs.postgresql.org/guides/Windows adresini
list has received around 30k of messages. The bugs mailing list is ziyaret edebilirsiniz.
available. To subscribe to this list, send email to
pgsql-bugs-request@PostgreSQL.org with a body of: subscribe end There Ayrca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadr.
is also a developers discussion mailing list available. To subscribe
to this list, send email to pgsql-hackers-request@PostgreSQL.org with 1.5) PostgreSQL'in nereden indirebilirim?
a body of: subscribe end Additional mailing lists and information
about PostgreSQL can be found via the PostgreSQL WWW home page at: PostgreSQL iin ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub ' dur.
http://www.PostgreSQL.org There is also an IRC channel on EFNet and Yanslar iin, ana web sayfamza bakabilirsiniz.
OpenProjects, channel /#PostgreSQL/. I use the Unix command |irc -c
'#PostgreSQL' "$USER" irc.phoenix.net.| A list of commercial support 1.6) Destei nereden alabilirim?
companies is available at
http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html. Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tartsmalara
1.7) What is the latest release? The latest release of PostgreSQL is aktr. ye olmak iin, asagdaki satrlar e-postanizin body ksmna (konu ksmna degil)
version 7.3.3. We plan to have major releases every four months. 1.8) yazp, pgsql-general-request@PostgreSQL.org adresine gnderin:
What documentation is available? Several manuals, manual pages, and
some small test examples are included in the distribution. See the subscribe
//doc/ directory. You can also browse the manuals online at end
http://www.PostgreSQL.org/docs. There are two PostgreSQL books
available online at http://www.PostgreSQL.org/docs/awbook.html and Ayn zamanda, bir digest listesi bulunmaktadr. Bu listeye ye olmak iin,
http://www.commandprompt.com/ppbook/. There is a list of PostgreSQL pgsql-general-digest-request@PostgreSQL.org adresine, body ksmnda
books available for purchase at http://www.ca.PostgreSQL.org/books/.
There is also a collection of PostgreSQL technical articles at subscribe
http://techdocs.PostgreSQL.org/. /psql/ has some nice \d commands to end
show information about types, operators, functions, aggregates, etc.
Our web site contains even more documentation. 1.9) How do I find out yazan bir e-posta atmanz yeterli olacaktr.
about known bugs or missing features? PostgreSQL supports an extended
subset of SQL-92. See our TODO developer.PostgreSQL.org/todo.php> list Digest postalar, ana liste 30k civarnda e-postaya ulastiginda yelere gnderilmektedir.
for known bugs, missing features, and future plans. 1.10) How can I
learn SQL? The PostgreSQL book at Buglar iin bir e-posta listesi bulunmaktadr. Bu listeye ye olmak iin,
http://www.PostgreSQL.org/docs/awbook.html teaches SQL. There is email to pgsql-bugs-request@PostgreSQL.org adresine, body ksmnda
another PostgreSQL book at http://www.commandprompt.com/ppbook.
www.commandprompt.com/ppbook/> There is a nice tutorial at subscribe
end
yazan bir e-posta atmanz yeterli olacaktr.
Ayn zamanda, gelistiriciler iin tartsma listesi bulunmaktadr. Bu listeye ye olmak
iin, pgsql-hackers-request@PostgreSQL.org adresine, body ksmnda
subscribe
end
yazan bir e-posta atmanz yeterli olacaktr.
Bunun dsndaki e-posta listelerine ve PostgreSQL hakknda bilgiye, PostgreSQL WWW
ana sayfasndan ulasabilirsiniz:
http://www.PostgreSQL.org
Ayn zamanda, EFNet zerinde, #PostgreSQL adl bir RC kanal bulunmaktadr. Bunun iin,
irc -c '#PostgreSQL' "$USER" irc.phoenix.net Unix komutunu kullanabilirsiniz.
Ticari destek veren firmalarn listesine,
http://www.postgresql.org/users-lounge/commercial-support.html
adresinden ulasabilirsiniz.
1.7) En son srm nedir?
PostgreSQL'in son srm 7.3.3'tr.
Her 4 ayda major release karlmas planlanmaktadr.
1.8) Hangi belgelere ulasabilirim?
Datmn icinde, kitapciklar, kitapcik sayfalari ve bazi kk rnekler verilmektedir.
/doc dizinine baknz. Ayrica, bu el kitapklarn 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 bulunmaktadr. PostgreSQL kitablarnn listesine,
http://www.ca.PostgreSQL.org/books/ adresinden ulaaiblirsiniz. Ayrca, PostgreSQL
konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden
ulaabilirsiniz.
psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregateler,vb. ile
ilgili gzel komutlar vardr.
Web sitemiz daha fazla belgeyi iermektedir.
1.9) Bilinen hatalar ya da eksik zelliklere nereden ulasabilirim?
PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da zellikleri
bulunmaktadr. Bilinen hatalar, eksik zellikler ve gelecek ile ilgili planlar iin
TODO listesine baknz.
1.10) Nasl SQL grenebilirim?
http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL gretecektir.
http://www.commandprompt.com/ppbook adresinde de bir baska PostgreSQL kitab bulunmaktadr.
http://www.intermedia.net/support/sql/sqltut.shtm, 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
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de gzel belgeler bulunmaktadr.
ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM> and at
http://sqlcourse.com. sqlcourse.com/> Another one is "Teach Yourself Bir bakas da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan
SQL in 21 Days, Second Edition" at "Teach Yourself SQL in 21 Days, Second Edition" kitabdr.
http://members.tripod.com/er4ebus/sql/index.htm Many of our users like
/The Practical SQL Handbook/, Bowman, Judith S., et al., Baz kullanclarmz da u kitab nermektedirler:
Addison-Wesley. Others like /The Complete Reference SQL/, Groff et The Practical SQL Handbook, Bowman, Judith S., et al.,Addison-Wesley. Others
al., McGraw-Hill. 1.11) Is PostgreSQL Y2K compliant? Yes, we easily like The Complete Reference SQL, Groff et al., McGraw-Hill.
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 1.11) PostgreSQL 2000 ylna uyumlu mudur?
the PostgreSQL Developers documentation on our web site, or in the
distribution. Second, subscribe to the /pgsql-hackers/ and Evet.
/pgsql-patches/ mailing lists. Third, submit high quality patches to
pgsql-patches. There are about a dozen people who have commit 1.12) Gelistirme takmna nasl katlabilirim?
privileges to the PostgreSQL CVS archive. They each have submitted so
many high-quality patches that it was impossible for the existing ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da dagtmn iindeki
committers to keep up, and we had confidence that patches they PostgreSQL Developer belgesini okuyun. Ardindan, pgsql-hackers ve pgsql-patches
committed were of high quality. 1.13) How do I submit a bug report? listelerine ye olun. nc olarak da, pgsql-pacthes listesine yksek kalitede
Please visit the PostgreSQL BugTool page at yamalar gnderin.
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 PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici bulunmaktadir.
ftp://ftp.PostgreSQL.org/pub to see if there is a more recent Hepsi defalarca, diger kisilerin yaptigindan cok daha yksek-kaliteli patchler
PostgreSQL version or patches. 1.14) How does PostgreSQL compare to gondermislerdir. Ayrica biz de bu gelistiricilerin ekledikleri yamalarin yksek
other DBMSs? There are several ways of measuring software: features, kalitede olduguna gveniyoruz.
performance, reliability, support, and price. *Features* PostgreSQL
has most features present in large commercial DBMSs, like 1.13) Bir hata raporunu nasl gnderebilirim?
transactions, subselects, triggers, views, foreign key referential
integrity, and sophisticated locking. We have some features they do PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin neleri
not have, like user-defined types, inheritance, rules, and yapmanz gerektigi anlatilmistir.
multi-version concurrency control to reduce lock contention.
*Performance* PostgreSQL has performance similar to other commercial Ayrca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL srm
and open source databases. it is faster for some things, slower for ya da yamasi olup olmadigini kontrol ediniz.
others. In comparison to MySQL or leaner database systems, we are
slower on inserts/updates because of transaction overhead. Of course, 1.14) PostgreSQL, diger DBMS'lerle nasl karsilastrlabilir?
MySQL does not have any of the features mentioned in the /Features/
section above. We are built for reliability and features, though we Bir yazilimin gcn lmek iin esitli yollar vardir: Yazilimin zellikleri,
continue to improve performance in every release. There is an basarm, gvenilirligi, destegi ve creti.
interesting Web page comparing PostgreSQL to MySQL at
http://openacs.org/philosophy/why-not-mysql.html zellikler
openacs.org/philosophy/why-not-mysql.html> *Reliability* We realize
that a DBMS must be reliable, or it is worthless. We strive to release PostgreSQL mevcut byk ticari veritabanlarinin, transaction, subselect,
well-tested, stable code that has a minimum of bugs. Each release has trigger, view, foreign key referential integrity ve sophisticated locking gibi
at least one month of beta testing, and our release history shows that tm zelliklerine sahiptir. Onlarin sahip olmadiklari, kullanici-tanimli tipler
we can provide stable, solid releases that are ready for production (user-defined types), rules, inheritance ve lock caksmalarini dsrmek icin
use. We believe we compare favorably to other database software in multi-version uyumluluk zellikleri bulunmaktadir.
this area. *Support* Our mailing lists provide contact with a large
group of developers and users to help resolve any problems Performans (Baarm)
encountered. While we cannot guarantee a fix, commercial DBMSs do not
always supply a fix either. Direct access to developers, the user PostgreSQL, dier ticari ve ak kaynak kodlu veritabanlaryla yakn baarm salar.
community, manuals, and the source code often make PostgreSQL support Baz alardan daha hzldr, dier alardan da yavatr. MySQL ya da daha zayf
superior to other DBMSs. There is commercial per-incident support veritabanlar ile karlatrldnda,insert/update islemlerinde, transaction bazl
available for those who need it. (See FAQ section 1.6 <#1.6>.) *Price* alstmz iin daha yavaz. MySQL, yukardaki "zellikler" ksmnda belirtilenlerden
We are free for all use, both commercial and non-commercial. You can hi birine sahip deildir. Biz, baarmmz her srmde arttrsak da, esneklik ve
add our code to your product with no limitations, except those gelimi zellikler iin yaplanms durumdayz . PostgreSQL'i MySQL ile karlatran
outlined in our BSD-style license stated above. 1.15) How can I u web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
financially assist PostgreSQL? PostgreSQL has had a first-class
infrastructure since we started in 1996. This is all thanks to Marc Gvenilirlik
Fournier, who has created and managed this infrastructure over the DBMSlerin gvenilir olmas gerketigi, yoksa degerleri olmayacagini dsnyoruz
years. Quality infrastructure is very important to an open-source ok iyi test edilmis, dengeli alsan minimum sayda hata ieren kod sunmaya alsyoruz.
project. It prevents disruptions that can greatly delay forward Her bir srm en az 1 aylk beta testlerinden geirilmektedir. Srm gemiine bakarsanz,
movement of the project. Of course, this infrastructure is not cheap. retime hazr, dengeli ve kararl kodlar sundugumuzu grebilirsiniz. Bu alanda, diger
There are a variety of monthly and one-time expenses that are required veritaban yaZlmlarna stnlgmz olduguna inanmaktayz
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/ Destek
and make a donation. Although the web page mentions PostgreSQL, Inc, E-posta listemiz, olusan herhangi bir sorunu zebilecek byk sayda kullanc
the "contributions" item is solely to support the PostgreSQL project ve gelistirici grubunu ierir. Sorununuz iin, en az bir ticari veritaban kadar
and does not fund any specific company. If you prefer, you can also rahat zm bulabilirsiniz. Gelistiricilere, kullanc grubuna, belgelere ve
send a check to the contact address. kaynak koda direk olarak erisebilme, PostgreSQL destegini, diger DBMSlere gre daha
---------------------------------------------------------------------- nemli klar. Gereksinimi olanlara, ticari destek verilebilir. (Destek iin 1.6 blmne baknz.)
-- User Client Questions 2.1) Are there ODBC drivers for PostgreSQL?
There are two ODBC drivers available, PsqlODBC and OpenLink ODBC. You Fiyat
can download PsqlODBC from Ticari ve ticari olmayan tm kullanmlarnz iin PostgreSQL cretsizdir. Kodumuzu, yukarda belirtilen
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php BSD-stili lisanstaki snrlamalar hari, rnnzn iine ekleyebilirsiniz.
gborg.postgresql.org/project/psqlodbc/projdisplay.php>. OpenLink ODBC
can be gotten from http://www.openlinksw.com www.openlinksw.com/>. It 1.15) PostgreSQL'e maddi adan nasl destek olabilirim?
works with their standard ODBC client software so you'll have
PostgreSQL ODBC available on every client platform they support (Win, PostgreSQL, 1996 ylndan beri 1.snf altyapya ashiptir. Bunun iin, yllar boyu alsp bu altyapy
Mac, Unix, VMS). They will probably be selling this product to people olusturup yneten Marc Fournier'e tesekkrler.
who need commercial-quality support, but a freeware version will
always be available. Please send questions to Bir ak kaynak kodlu proje iin, kaliteli altyap ok nemlidir. Bu altyap, projenin
postgres95@openlink.co.uk . 2.2) What tools are available for using kesilmesini nler ve projenin ilerlemesini hzlandrr.
PostgreSQL with Web pages? A nice introduction to Database-backed Web
pages can be seen at: http://www.webreview.com For Web integration, Tabii ki bu altyap ucuz degildir. slerin yrmesi iin eitli ylk ve anlk
PHP is an excellent interface. It is at http://www.php.net. For harcamalarmz olmaktadr. Eger siz ya da sirketinizin bu abamza bagsta
complex cases, many use the Perl interface and CGI.pm or mod_perl. bulunabilecek paras varsa, ltfen http://www.pgsql.com/pg_goodies adresine
2.3) Does PostgreSQL have a graphical user interface? Yes, there are gidiniz ve bagsta, hibede bulununuz.
several graphical interfaces to PostgreSQL available. These include
PgAccess http://www.pgaccess.org www.pgaccess.org>), PgAdmin II Web sayfasnn PostgreSQL, nc.' den bahsetmesine ragmen, "katkda bulunanlar"
(http://www.pgadmin.org, Win32-only), RHDB Admin (contributors) maddesi sadece PostgreSQL projesini desteklemek iindir ve belirli bir
(http://sources.redhat.com/rhdb/ ) and Rekall ( sirketin para kaynag degildir. isterseniz, baglant adresine bir ek gnderebilirsiniz.
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. Kullanc/istemci Sorular
See http://techdocs.postgresql.org/guides/GUITools for a more detailed
list. 2.4) What languages are able to communicate with PostgreSQL? 2.1) PostgreSQL icin ODBC srcleri var m?
Most popular programming languages contain an interface to PostgreSQL.
Check your programming language's list of extension modules. The iki tane ODBC srcs bulunmaktadr: PsqlODBC ve OpenLink ODBC.
following interfaces are included in the PostgreSQL distribution: * C
(libpq) * Embedded C (ecpg) * Java (jdbc) * Python (PyGreSQL) * TCL PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden
(libpgtcl) Additional interfaces are available at indirebilirsiniz.
http://gborg.postgresql.org in the /Drivers/Interfaces/ section.
---------------------------------------------------------------------- OpenLink ODBC http://www.openlinksw.com adresinden alnabilir.Bu src,
-- Administrative Questions 3.1) How do I install PostgreSQL somewhere kendi standart ODBC istemci yazlm ile alstndan, destekledikleri
other than //usr/local/pgsql/? Specify the /--prefix/ option when her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
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 cretsiz srm olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir.
problems, but first check to see that you have System V extensions Sorularnz ltfen postgres95@openlink.co.uk adresine gnderiniz.
installed in your kernel. PostgreSQL requires kernel support for
shared memory and semaphores. 3.3) When I try to start /postmaster/, I 2.2) PostgreSQL'i web sayfalarnda kullanabilmek iin hangi aralar bulunmaktadr?
get /IpcMemoryCreate/ errors. Why? You either do not have shared
memory configured properly in your kernel or you need to enlarge the http://www.webreview.com adresinde, arka planda veritaban alstran Web sayfalar
shared memory available in the kernel. The exact amount you need iin giris seviyesinde bilgi bulunmaktadr.
depends on your architecture and how many buffers and backend
processes you configure for /postmaster/. For most systems, with Web ile btnlesme iin, PHP mkemmel bir arabirim sunar. http://www.php.net .
default numbers of buffers and processes, you need a minimum of ~1 MB.
See the PostgreSQL Administrator's Guide Karmak sorunlar iin, ou kisi Perl arabirimini ve CGI.pm ya da mod_perl kullanr.
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 2.3) PostgreSQL'in grafik kullanc arabirimi var mdr?
/IpcSemaphoreCreate/ errors. Why? If the error message is
/IpcSemaphoreCreate: semget failed (No space left on device)/ then eitli grafik arabirimlerimiz bulunmaktadr. Bunlarn arasnda, PgAccess (http://www.pgaccess.org),
your kernel is not configured with enough semaphores. Postgres needs PgAdmin II (http://www.pgadmin.org, sadece Win32 iin), RHDB Admin (http://sources.redhat.com/rhdb/ )
one semaphore per potential backend process. A temporary solution is ve Rekall (http://www.thekompany.com/products/rekall/) bulunmaktadr. Ayrca, PostgreSQL iin web
to start /postmaster/ with a smaller limit on the number of backend tabanl bir arabirim olan PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ) bulunmaktadr.
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 Daha ayrntl liste iin http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.
parameters. Inoperative semaphores can also cause crashes during heavy
database access. If the error message is something else, you might not 2.4) PostgreSQL ile iletiimi kurabilmek iin hangi dilleri kullanabilirim?
have semaphore support configured in your kernel at all. See the
PostgreSQL Administrator's Guide for more detailed information about * C (libpq)
shared memory and semaphores. 3.5) How do I control connections from * Embedded C (ecpg)
other hosts? By default, PostgreSQL only allows connections from the * Java (jdbc)
local machine using Unix domain sockets. Other machines will not be * Python (PyGreSQL)
able to connect unless you add the /-i/ flag to /postmaster/, *and* * TCL (libpgtcl)
enable host-based authentication by modifying the file
/$PGDATA/pg_hba.conf/ accordingly. This will allow TCP/IP connections. Dierleri iin, http://gborg.postgresql.org adresindeki Drivers/Interfaces blmne
3.6) How do I tune the database engine for better performance? bakabilirsiniz.
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 Ynetimsel Sorular
them in a large batch using the COPY command. This is much faster than
individual INSERTS. Second, statements not in a BEGIN WORK/COMMIT 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere nasl kurabilirim?
transaction block are considered to be in their own transaction.
Consider performing several statements in a single transaction block. configure betigini alstrrken, --prefix seenegini veriniz.
This reduces the transaction overhead. Also, consider dropping and
recreating indexes when making large data changes. There are several 3.2) postmaster'i baslattgmda, a Bad System Call ya da core dumped mesaj
tuning options. You can disable /fsync()/ by starting /postmaster/ alyorum. Neden?
with a /-o -F/ option. This will prevent /fsync()/s from flushing to
disk after every transaction. You can also use the /postmaster/ /-B/ Bunun birok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, ekirdeginize
option to increase the number of shared memory buffers used by the System V uzantlarnn kurulu olup olmadgn kontrol etmek olabilir. PostgreSQL
backend processes. If you make this parameter too high, the shared memory ve semaphores iin ekirdek destegine gereksinim duyar.
/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 3.3) postmaster'i baslattgmda, a pcMemoryCreate hatas alyorum. Neden?
buffers. You can also use the backend /-S/ option to increase the
maximum amount of memory used by the backend process for temporary Ya ekirdeginizde shared memory desteginiz dzgnce yaplandrlmamstr, ya da
sorts. The /-S/ value is measured in kilobytes, and the default is 512 ekirdeginizdeki mevcut shared memory miktarn bytmeniz gerekecektir. Gereksinim
(i.e. 512K). You can also use the CLUSTER command to group data in duyacagnz miktar, mimarinize ve postmaster iin ayarladgnz tampon ile backend
tables to match an index. See the CLUSTER manual page for more islemi saysna bagldr. Tm sistemler iin, tamponlar ve islemlerde ntanml saylarla,
details. 3.7) What debugging features are available? PostgreSQL has ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL Administrator's Guide' a, shared memory
several features that report status information that can be valuable ve semaphorelar hakkndaki ayrntl bilgi iin bakabilirsiniz.
for debugging purposes. First, by running /configure/ with the
--enable-cassert option, many /assert()/s monitor the progress of the 3.4) postmaster'i baslattgmda, a pcSemaphoreCreate hatas alyorum. Neden?
backend and halt the program when something unexpected occurs. Both
/postmaster/ and /postgres/ have several debug options available. Eger hata, "pcSemaphoreCreate: semget failed (No space left on device)" ise,
First, whenever you start /postmaster/, make sure you send the ekirdeginiz yeterli semaphore ile yaplandrlmams demektir. Postgres, her
standard output and error to a log file, like: cd /usr/local/pgsql bir potansiyel backend iin bir semaphore gereksinmesi duyar. Geici bir zm,
./bin/postmaster >server.log 2>&1 & This will put a server.log file in postmaster backend islemleri iin daha az miktarda snrla baslatmak olabilir.
the top-level PostgreSQL directory. This file contains useful -N i varsalan deger olan 32'den kk bir degerle baslatnz. Daha kalc bir
information about problems or errors encountered by the server. zm, ekirdeinizin SEMMNS ve SEMMNI parametrelerini ykseltmek olacaktr.
/Postmaster/ has a /-d/ option that allows even more detailed
information to be reported. The /-d/ option takes a number that almayan semaphorelar ar veritaban islemlerinde kme yaratabilirler.
specifies the debug level. Be warned that high debug level values
generate large log files. If /postmaster/ is not running, you can Eger hata mesajnz baska birsey ise, ekirdeginizde semaphore destegini
actually run the /postgres/ backend from the command line, and type yaplandrmams olabilirsiniz. Shared memory ve semaphorelar hakkndaki daha
your SQL statement directly. This is recommended *only* for debugging ayrntl bilgi iin PostgreSQL Administrator's Guide'a bakabilirsiniz.
purposes. Note that a newline terminates the query, not a semicolon.
If you have compiled with debugging symbols, you can use a debugger to 3.5) Diger bilgisayarlarn benim PostgreSQL veritaban sunucuma baglantlarn
see what is happening. Because the backend was not started from nasl kontrol edebilirim?
/postmaster/, it is not running in an identical environment and
locking/backend interaction problems may not be duplicated. If n tanml olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak
/postmaster/ is running, start /psql/ in one window, then find the PID baglanlmasna izin verir. Diger makineler, postmaster'a -i etiketini geirmezseniz
of the /postgres/ process used by /psql/. Use a debugger to attach to ve $PGDATA_pg_hba.conf dosyasn dzenleyerek host-based authentication'a
the /postgres/ PID. You can set breakpoints in the debugger and issue olanak vermezseniz, baglant yapamayacaklardr.
queries from /psql/. If you are debugging /postgres/ startup, you can
set PGOPTIONS="-W n", then start /psql/. This will cause startup to 3.6) Veritabani motorunu daha iyi basarim icin nasil ayarlayabilirim?
delay for /n/ seconds so you can attach to the process with the
debugger, set any breakpoints, and continue through the startup Indexler sorgular hzlandrabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nasl
sequence. The /postgres/ program has /-s, -A/, and /-t/ options that yorumladn ve hangi indexleri kullandigini grmenize izin verir.
can be very useful for debugging and performance measurements. You can
also compile with profiling to see what functions are taking execution Eer cok fazla INSERT islemi yapiyorsaniz, bunlar byk bir toplu islem dosyasi kullanp
time. The backend profile files will be deposited in the COPY komutu ile veritabanina girmeyi deneyiniz. Bu, tekil NSERTlerden daha hzldr.
/pgsql/data/base/dbname/ directory. The client profile file will be ikinci olarak, BEGN WORK/COMMT transaction blogu iinde olmayan ifadeler kendi
put in the client's current directory. Linux requires a compile with transactionlarindaymis gibi dsnlr. oklu ifadeleri tek bir transaction blou iinde
/-DLINUX_PROFILE/ for proper profiling. 3.8) Why do I get /"Sorry, too yapabilirsiniz. Bu, transaction overheadini drecektir. Tek bir
many clients"/ when trying to connect? You need to increase transaction blou iinde birden ok ifadeyi altrmay
/postmaster/'s limit on how many concurrent backend processes it can deneyebilirsiniz. Bu, transaction overhead ini drr.
start. The default limit is 32 processes. You can increase it by
restarting /postmaster/ with a suitable /-N/ value or modifying eitli ayarlama seenekleri mevcuttur. fsync() ilemini, postmaster' -o -F seenei ile
/postgresql.conf/. Note that if you make /-N/ larger than 32, you must balatarak devre d brakabilirsiniz. Bu ilem, fsync()'lerin her transactiondan sonra
also increase /-B/ beyond its default of 64; /-B/ must be at least diske flush etmesini engelleyecektir.
twice /-N/, and probably should be more than that for best
performance. For large numbers of backend processes, you are also Ayn zamanda, postmaster'i -B seenei ile balatp, backend ilemleri tarafndan kullanlan
likely to find that you need to increase various Unix kernel shared memorf buffers saylarn arttrabilirsiniz. Eger bu parametreyi ok yksek tutarsanz,
configuration parameters. Things to check include the maximum size of ekirdeinizin shared memory blgesindeki limiti ama olaslnz yznden postmaster
shared memory blocks, SHMMAX; the maximum number of semaphores, SEMMNS balayamayabilir. Her bir tampon (buffer) 8K'dr. ntanml say ise 64 tampondur.
and SEMMNI; the maximum number of processes, NPROC; the maximum number
of processes per user, MAXUPRC; and the maximum number of open files, Ayn ekilde, backend'in -S seeneini geici sralamalar iin backend sreleri tarafndan
NFILE and NINODE. The reason that PostgreSQL has a limit on the number kullanlacak hafzay arttrmak amacyla kullanabilirsiniz. -S seenei kilobayt cinsinden deer alr
of allowed backend processes is so your system won't run out of ve n tanml deeri 512'dir (512 K)
resources. 3.9) What is in the /pgsql_tmp/ directory? This directory
contains temporary files generated by the query executor. For example, Tablolardaki veriyi bir indekse elemek amacyla gruplama iin CLUSTER komutunu kullanabilirsiniz.
if a sort needs to be done to satisfy an ORDER BY and the sort Ayrntl bilgi iin CLUSTER komutunun yardm sayfasna bakabilirsiniz.
requires more space than the backend's /-S/ parameter allows, then
temporary files are created here to hold the extra data. The temporary 3.7) Hangi hata ayklama zellikleri bulunmaktadr?
files are usually deleted automatically, but might remain if a backend
crashes during a sort. A stop and restart of the /postmaster/ will PostgreSQL, hata ayklama amacyla kullanlabilecek durum bilgisi rapor eden eitli
remove files from those directories. 3.10) Why do I need to do a dump zeliklere sahiptir.
and restore to upgrade between major PostgreSQL releases? The
PostgreSQL team makes only small changes between minor releases, so ncelikle, configure betiini --enable-cassert seeneiyle altrrsanz, bir ok assert() backend calmasn
upgrading from 7.2 to 7.2.1 does not require a dump and restore. gzlemler ve beklenmeyen bir durumda program durdurur.
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 Postmaster ve postgres eitli hata ayklama seeneklerine sahiptir. ncelikle,
often complex, so we don't maintain backward compatability for data postmaster'i balattnzda, standart kty ve hatalar bir log dosyasna
files. A dump outputs data in a generic format that can then be loaded ynlendirdiinize emin olun:
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 cd /usr/local/pgsql
without a dump/restore. The release notes mention whether /pg_upgrade/ ./bin/postmaster >server.log 2>&1 &
is available for the release.
---------------------------------------------------------------------- Bu ilem PostgreSQL ana dizinine server.log dosyas yerletirecektir. Bu dosya sunucunun
-- Operational Questions 4.1) What is the difference between binary yaad sorunlar ya da hatalar hakknda yararl bilgiler ierir. -d seenei, hata
cursors and normal cursors? See the DECLARE manual page for a ayklama seviyesini belirten bir rakam ile kullanlr. Yksek hata ayklama
description. 4.2) How do I SELECT only the first few rows of a query? seviyelerinin byk log dosyalar oluturacan unutmaynz.
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 Eer postmaster almyorsa, postgres backend'ini komut satrndan altrabilir ve SQL ifadenizi
rows. Consider using a query that has an ORDER BY. If there is an direk olarak yazabilirsiniz. Bu sadece hata ayklama amacyla nerilir. Burada, noktal virgln deil de
yeni bir satrn sorguyu sonlandrdn unutmaynz. Eer hata ayklama sembolleri ile derlediyseniz,
ne olduunu grmek iin bir hata ayklayc kullanabilirsiniz. backend postmasterdan balatlmadndan,
edeer bir ortamda almamaktadr ve locking/backend etkileim sorunlar artabilir.
Eer postmaster alyorsa, bir pencerede psql'i altrn ve psql tarafndan kullanlan postgres srecinin sre
numarasn (PID) bulun. Postgres sreci ile ilikilendirmek iin bir hata ayklarc kullann. Sorgular psql
aracl ile altrabilirsiniz. Eer postgres balangcnda hata ayklamak istiyorsanz, PGOPTIONS="-W n"
seeneini ayarlayabilir ve psql'i balatabilirsiniz. Bu ilem, balangcn n saniye kadar gecikmesini
salayacaktr; bylece hata ayklaycy srece ilikilendirdikten sonra balang srecinin devam etmesini
salayabilirsiniz.
postgres program hata ayklama ve baarm lmleri iin -s, -A ve -t seeneklerine sahiptir.
3.8) Baglanmaya alsken, neden "Sorry, too many clients" hatasn alyorum?
Postmaster'in ezamanl olarak balatabilecei backend sreleri snrlarn
arttrmanz gerekmektedir.
n tanml deer 32 sretir. Bunu, postmaster'i uygun -N deeri ile ya da
postgresql.conf dosyasn dzenleyerek yeniden balatmakla arttrabilirsiniz.
Eer -N deerini 32'den byk yapacaksanz, ayn zamanda -B deerini de deitirmeniz
gerektiini unutmayn. -B -N'nin en az 2 kat kadar olmaldr; daha iyi baarm iin
bu sayy daha da arttrmalsnz. Yksek saydaki backend sreleri iin, eitli ekirdek yaplandrma
parametrelerini arttrmanz gerekecektir. Yaplmas gerekenler, SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve
alabilecek dosyalarn maksimum says olan NFILE ve NINODE deerlerini kartrmaktr. Bunun nedeni, PostgreSQL'in
izin verilen backend srelerinin says zerinde bir snr olmasdr. Bylelikle sistem kaynaklarnn dna
klmayacaktr.
PostgreSQL'in 6.5 srmne kadar, en fazla backend says 64 idi ve bunu deitirmek iin
include/storage/sinvaladt.h dosyas iindeki MaxBAckendid sabitini deitirdek sonra
yazlm yeniden derlemek gerekiyordu.
3.9) pgsql_tmp dizinin iindeki dosyalar nelerdir?
Sorgu alstrc (query executer) tarafndan yaratlan geici dosyalardr. rnegin,
bir sralama ORDER BY ile yapilacaksa ve sralama backend'in -s parametresinin izin
verdiginden daha fazla alana gereksinim duyuyorsa, ekstra veriyi tutmak iin geici
dosyalar yaratlr.
Geici dosyalar, eger sralama srasnda backend gmezse otomatik olarak silinecektir.
Eger alsan durumda bir backendiniz yoksa, pg_tempNNN.NN dosyalarn silmeniz gvenlidir..
3.10) PostgreSQL srmlerini ykselmek iin neden bir dump/reload ilemi gerekletirmek zorundaym?
PostgreSQL takm ara srmlerde sadece kk deiiklikler yapmaktadr; bu yzden 7.2
srmnden 7.2.1'e ykseltmek dump/restore ilemi gerekmemektedir. Ancak, esas srmlerde
(rnek: 7.2'den 7.3'e) ounlukla sistem tablolarnn ve veri dosyalarnn i yaps
deitirilir. Bu deiiklikler ounlukla karmaktr; dolaysyla veri dosyalarnn
geriye dnk uyumluluu ilemlerini yapmyoruz. Dump ilemi, veriyi genel biimde
alacandan yeniden ykleme esnasnda veri, yeni i biime uygun ekilde
yerletirilecektir.
Disk biiminin deimedii srmlerde, pg_upgrade betii gncellemenin bir dump/restore
gerektirmeden yaplmasn salayacaktr. pg_upgrade betiinin o srm iin bulunup
bulunmadn srm notlar iinde bulabilirsiniz.
_________________________________________________________________
letimsel Sorular
4.1) Binary cursor ve normal cursor arasindaki fark nedir?
DECLARE yardm sayfasina bakiniz.
4.2) Sorgunun sadece ilk birka satrn nasil SELECT edebilirim?
FETCH yardm sayfasina bakiniz, aya da SELECT ... LIMIT.... kullannz.
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 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 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 be evaluated until the desired rows have been generated.
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 4.3) psql'in iinde grdgm tablolarin ya da diger seylerin listesini nasil alabilirim?
contains SQL commands that generate the output for psql's backslash
commands. You can also start /psql/ with the /-E/ option so it will pgsql/src/bin/psql/describe.c iindeki psql kaynak kodunu okuyabilirsiniz. Bu kod,
print out the queries it uses to execute the commands you give. 4.4) psql'in \ ile baslayan komutlarnn ktsn olusturan SQL komutlarini ierir. Ayn
How do you remove a column from a table? This functionality was added zamanda, psql'i -E seenei ile balatp, verdiiniz komutlar altrmak iin yapt
in release 7.3 with ALTER TABLE DROP COLUMN. In earlier versions, you sorgularn ktlarn grebilirsiniz.
can do this: BEGIN; LOCK TABLE old_table; SELECT ... -- select all
columns but the one you want to remove INTO TABLE new_table FROM 4.4) Bir tablodan bir kolonu nasl kaldrabilirim?
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, Bu zellik (ALTER TABLE DROP COLUMN) 7.3 srm ile gelmitir. Eski srmlerde
and a database? These are the limits: Maximum size for a database? aadakileri uygulamalsnz:
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 BEGIN;
number of rows in a table? unlimited Maximum number of columns in a LOCK TABLE old_table;
table? 250-1600 depending on column types Maximum number of indexes on SELECT ... -- select all columns but the one you want to remove
a table? unlimited Of course, these are not actually unlimited, but INTO TABLE new_table
limited to available disk space and memory/swap space. Performance may FROM old_table;
suffer when these values get unusually large. The maximum table size DROP TABLE old_table;
of 16 TB does not require large file support from the operating ALTER TABLE new_table RENAME TO old_table;
system. Large tables are stored as multiple 1 GB files so file system COMMIT;
size limits are not important. The maximum table size and maximum
number of columns can be increased if the default block size is 4.5) Bir satr, tablo ve veritaban icin en fazla byklk nedir?
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 Snrlar:
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 Veritabani icin en fazla byklk nedir? Snrsz (4 TB'lk veritaban bulunmaktadr)
description on each line. Suppose the text string avergages twenty Bir tablo icin en fazla byklk nedir? 16 TB
bytes in length. The flat file would be 2.8 MB. The size of the Bir satr iin en fazla byklk nedir? 1.6 TB
PostgreSQL database file containing this data can be estimated as 6.4 Bir alan iin en fazla byklk nedir? 1 GB
MB: 36 bytes: each row header (approximate) 24 bytes: one int field Tabloda en fazla satr says katr? Snrsz
and one text field + 4 bytes: pointer on page to tuple Bir tabloda olabilecek en fazla kolon says katr? Kolon tiplerine bal olarak 250-1600
---------------------------------------- 64 bytes per row The data Bir tabloda olabilecek en fazla index says katr? snrsz
page size in PostgreSQL is 8192 bytes (8 KB), so: 8192 bytes per page
------------------- = 128 rows per database page (rounded down) 64 Tabii ki bunlar aslinda snrsz degildir. Burada belirtilen snrlar, fiziksel
bytes per row 100000 data rows -------------------- = 782 database snrlarn haricindeki snrlardr. Bo disk alan, hafza/takas alan na bal
pages (rounded up) 128 rows per page 782 database pages * 8192 bytes snrlamalar vardr. Baarm, snr deerlere yaklastka, ya da deerler cok byk
per page = 6,406,144 bytes (6.4 MB) Indexes do not require as much olduunda debilir.
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 Bir tablo iin byklk snr olan 16 TB, iletim sisteminin byk dosya destei olup
space. 4.7) How do I find out what tables, indexes, databases, and olmamasndan bamszdr. Byk tablolar, 1 GB'lik dosyalarda sakland iin, dosya
users are defined? /psql/ has a variety of backslash commands to show sistemi snrlarnin bir nemi yoktur.
such information. Use \? to see them. There are also system tables
beginning with /pg_/ that describe these too. Also, /psql -l/ will Tablo ve kolon says byklkleri, n tanml blok bykl 32k ya karlarak
list all databases. Also try the file arttrlabilir.
/pgsql/src/tutorial/syscat.source/. It illustrates many of the SELECTs
needed to get information from the database system tables. 4.8) My 4.6) Tipik bir metin dosyasndaki veriyi saklamak iin ne kadar disk alan gereklidir?
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 Bir PostgreSQL veritaban, veriyi "flat" metin dosyasnda saklamak iin gereken
table is larger than a minimum size, and the query selects only a alann 5 kat fazla disk alanna gereksinim duyabilir.
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 Her satrnda bir tamsay ve metin (text) ieren, 100.000 satrlk bir dosya dnn.
through the table, or sequential scan. To determine if an index should Her satrn ortalama 20 byte olduunu farzedelim. Metin dosyas 2.8 MB olacaktr. Bu veriyi
be used, PostgreSQL must have statistics about the table. These tutan PostgreSQL veritaban yaklak 6.4 MB yer kaplayacaktr.
statistics are collected using VACUUM ANALYZE, or simply ANALYZE.
Using statistics, the optimizer knows how many rows are in the table, 36 byte: Her bir satr baslg (yaklasik)
and can better determine if indexes should be used. Statistics are + 24 byte: Bir tamsay (int) alani ve bir metin (text) alan
also valuable in determining optimal join order and join methods. + 4 byte: Sayfada tuple a pointer
Statistics collection should be performed periodically as the contents ----------------------------------------
of the table change. Indexes are normally not used for ORDER BY or to 64 byte -> kayt basna
perform joins. A sequential scan followed by an explicit sort is
usually faster than an index scan of a large table. However, LIMIT PostgreSQL'de data page bykl 8192 byte (8k)dir, dolaysyla:
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() 8192 byte -> page basna
don't use indexes, it is possible to retrieve such values using an ------------------------- = Her bir veritabani page i bana 128 satr (yaklak)
index with ORDER BY and LIMIT: SELECT col FROM tab ORDER BY col [ DESC Satr basna 64 byte
] LIMIT 1; If you believe the optimizer is incorrect in choosing a
sequential scan, use |SET enable_seqscan TO 'off'| and run tests to 100000 veri satr
see if an index scan is indeed faster. When using wild-card operators -------------------- = 782 veritaban sayfas
such as LIKE or /~/, indexes can only be used in certain 128 satr
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 782 veritaban sayfas * sayfa bana 8192 byte = 6,406,144 bytes (6.4 MB)
/%/. o /~/ (regular expression) patterns must start with /^/. * The
search string can not start with a character class, e.g. [a-e]. * Indexler cok fazla yere gereksinim duymazlar, ama indexlenmis veriyi tutacaklarndan
Case-insensitive searches such as ILIKE and /~*/ do not utilise byk olabilirler.
indexes. Instead, use functional indexes, which are described in
section 4.12 <#4.12>. * The default /C/ locale must be used during NULL deerler bitmapler iinde tutulur; dolaysyla ok az yer kaplarlar.
/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 4.7) Veritabannda hangi tablo ya da indexlerin tanmlandgn nasil grebilirim?
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 psql, bu tr bilgileri gstermek iin, \ ile balayan bir ok komut sunmaktadr.
single dimension. R-trees can handle multi-dimensional data. For \? komutu ile bu komutlar grebilirsiniz. Ayrca, bunlar aklayan ve pg_ ile balayan
example, if an R-tree index can be built on an attribute of type ok sayda sistem tablosu bulunmaktadr. Ayn zamanda, psql -l ile tm veritabanlarn
/point/, the system can more efficiently answer queries such as listeyelebirsiniz.
"select all points within a bounding rectangle." The canonical paper
that describes the original R-tree design is: Guttman, A. "R-trees: A Ayrca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritaban
Dynamic Index Structure for Spatial Searching." Proceedings of the sistem dosyalarindan bilgiyi almak iin gereksinim duyulan bir ok SELECTleri gsterir.
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 4.8) Sorgularm cok yava, ya da indexlerimi kullanmyorlar. Neden?
R-trees can handle polygons and boxes. In theory, R-trees can be
extended to handle higher number of dimensions. In practice, extending Indexes are not automatically used by every query. Indexes are only used if the table is larger than a minimum size,
R-trees requires a bit of work and we don't currently have any and the query selects only a small percentage of the rows in the table. This is because the random disk access caused
documentation on how to do it. 4.11) What is the Genetic Query by an index scan can be slower than a straight read through the table, or sequential scan.
Optimizer? The GEQO module speeds query optimization when joining many
tables by means of a Genetic Algorithm (GA). It allows the handling of To determine if an index should be used, PostgreSQL must have statistics about the table. These statistics are
large join queries through nonexhaustive search. 4.12) How do I collected using VACUUM ANALYZE, or simply ANALYZE. Using statistics, the optimizer knows how many rows are in the
perform regular expression searches and case-insensitive regular table, and can better determine if indexes should be used. Statistics are also valuable in determining optimal join
expression searches? How do I use an index for case-insensitive order and join methods. Statistics collection should be performed periodically as the contents of the table change.
searches? The /~/ operator does regular expression matching, and /~*/
does case-insensitive regular expression matching. The Indexes are normally not used for ORDER BY or to perform joins. A sequential scan followed by an explicit sort is
case-insensitive variant of LIKE is called ILIKE. Case-insensitive usually faster than an index scan of a large table.
equality comparisons are normally expressed as: SELECT * FROM tab However, LIMIT combined with ORDER BY often will use an index because only a small portion of the table is returned.
WHERE lower(col) = 'abc'; This will not use an standard index. In fact, though MAX() and MIN() don't use indexes, it is possible to retrieve such values using an index with ORDER
However, if you create a functional index, it will be used: CREATE BY and LIMIT:
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. SELECT col
4.14) What is the difference between the various character types? Type FROM tab
Internal Name Notes -------------------------------------------------- ORDER BY col [ DESC ]
VARCHAR(n) varchar size specifies maximum length, no padding CHAR(n) LIMIT 1;
bpchar blank padded to the specified fixed length TEXT text no
specific upper limit on length BYTEA bytea variable-length byte array Eer optimizer'in sequential scan ileminde hata yaptn dnyorsanz, SET enable_seqscan TO 'off' 'u kullannz
(null-byte safe) "char" char one character You will see the internal ve index scan'in hala hzl olup olmadn grmek iin testler yapnz.
name when examining system catalogs and in some error messages. The
first four types above are "varlena" types (i.e., the first four bytes LIKE ya da ~ gibi operatorler kullaniyorsanz, indeksler sadece aadaki koullarda kullanlabilir:
on disk are the length, followed by the data). Thus the actual space
used is slightly greater than the declared size. However, these data * Arama dizininin ba, dizinin ba ile balanmaldr. Yani,
types are also subject to compression or being stored out-of-line by o LIKE sorgular % ile balamamaldr.
TOAST, so the space on disk might also be less than expected. o Dzenli ifade sorgular ^ ie balamamaldr.
VARCHAR(n) is best when storing variable-length strings and it limits * Arama metni bir karakter snf ile balayamaz. rnek: [a-e]
how long a string can be. TEXT is for strings of unlimited length, * ILIKE ve ~* gibi byk/kk harfe duyarsz aramalar indekslerden yararlanmazlar. Onun yerine, blm 4.12'de
with a maximum of one gigabyte. CHAR(n) is for storing strings that anlatlan fonksiyonel indeksleri kullanabilirsiniz.
are all the same length. CHAR(n) pads with blanks to the specified * initdb srasnda ntanml C localei kullanlmaldr.
length, while VARCHAR(n) only stores the characters supplied. BYTEA is
for storing binary data, particularly values that include NULL bytes. 4.9) query-optimizer in sorgularm nasl deerlendirdiini, ileme soktuunu nasl grebilirim?
All the types described here have similar performance characteristics.
4.15.1) How do I create a serial/auto-incrementing field? PostgreSQL EXPLAIN yardm sayfasna baknz.
supports a SERIAL data type. It auto-creates a sequence and index on
the column. For example, this: CREATE TABLE person ( id SERIAL, name 4.10) R-tree index nedir?
TEXT ); is automatically translated into this: CREATE SEQUENCE
person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT An R-tree index is used for indexing spatial data. A hash index can't handle range searches. A B-tree index only
nextval('person_id_seq'), name TEXT ); CREATE UNIQUE INDEX handles range searches in a single dimension. R-trees can handle multi-dimensional data. For example, if an R-tree
person_id_key ON person ( id ); See the /create_sequence/ manual page index can be built on an attribute of type point, the system can more efficiently answer queries such as "select all
for more information about sequences. You can also use each row's points within a bounding rectangle."
/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 The canonical paper that describes the original R-tree design is:
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 Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf
the sequence object with the /nextval()/ function /before/ inserting on Mgmt of Data, 45-57.
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: Bu paperi, Stonebraker'n "Readings in Database Systems" kitabnda bulabilirsiniz.
new_id = execute("SELECT nextval('person_id_seq')"); execute("INSERT
INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); You would Built-in R-trees can handle polygons and boxes. In theory, R-trees can be extended to handle higher number of
then also have the new value stored in |new_id| for use in other dimensions. In practice, extending R-trees requires a bit of work and we don't currently have any documentation on
queries (e.g., as a foreign key to the |person| table). Note that the how to do it.
name of the automatically created SEQUENCE object will be named
__/seq/, where /table/ and /serialcolumn/ are the names of your table 4.11) Genetic Query Optimizer nedir?
and your SERIAL column, respectively. Alternatively, you could
retrieve the assigned SERIAL value with the /currval()/ function GEQO modl, Genetic Algorith(GA) kullanlarak tablolar birletirildiinde sorgu optimizasyonunu hzlandrr.
/after/ it was inserted by default, e.g., execute("INSERT INTO person It allows the handling of large join queries through nonexhaustive search.
(name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT
currval('person_id_seq')"); Finally, you could use the OID <#4.16> 4.12) Dzenli ifade (Regular Expression) aramalarn ve byk/kk harfe duyarsz aramalar nasil yapabilirim?
returned from the INSERT statement to look up the default value, Bu byk(kk harfe duyarl aramalar iin indeksi nasil kullanabilirim?
though this is probably the least portable approach. In Perl, using
DBI with Edmund Mergl's DBD::Pg module, the oid value is made ~ operatr dzenli ifade elemesi ve ~* byk/kk harfe duyarsz dzenli ifade elemesi yapar.
available via /$sth->{pg_oid_status}/ after /$sth->execute()/. 4.15.3) Byk/kk harfe duyarl olan LIKE'in byk/kk harfe duyarsz olan biini ILIKE'tr ve PostgreSQL
Don't /currval()/ and /nextval()/ lead to a race condition with other 7.1 srm ile birlikte gelmitir.
users? No. /currval()/ returns the current value assigned by your
backend, not by all users. 4.15.4) Why aren't my sequence numbers Byk-kk harfe duyarsz eitlik karlatrmalar aadaki gibi ifade edilir:
reused on transaction abort? Why are there gaps in the numbering of my
sequence/SERIAL column? To improve concurrency, sequence values are SELECT *
given out to running transactions as needed and are not locked until FROM tab
the transaction completes. This causes gaps in numbering from aborted WHERE lower(col) = 'abc'
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 Bu standart bir indeks yaratmayacaktr. Ancak eer fonksiyonel bir indeks yaratrsanz; o kullanlacaktr:
PostgreSQL gets a unique OID. All OIDs generated during /initdb/ are
less than 16384 (from /include/access/transam.h/). All user-created CREATE INDEX tabindex on tab (lower(col));
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 4.13) Bir sorguda, bir alanin "NULL" oldugunu nasil ortaya karabilirim?
entire PostgreSQL installation. PostgreSQL uses OIDs in its internal
system tables to link rows between tables. These OIDs can be used to Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
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 4.14) esitli karakter tipleri arasndaki farklar nelerdir?
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 Veri Tipi Ad Not
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: VARCHAR(n) varchar boyut en byk uzunluu verir; sadece verilen kadar veri tutulur.
CREATE TABLE new_table(old_oid oid, mycol int); SELECT old_oid, mycol CHAR(n) bpchar belirtilen uzunlupa kadar sonuna boluk eklenir.
INTO new FROM old; COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY TEXT text uzunlukta herhangi bir st snr yoktur.
new WITH OIDS FROM '/tmp/pgtable'; OIDs are stored as 4-byte integers, BYTEA bytea variable-length byte array (null-byte safe)
and will overflow at 4 billion. No one has reported this ever "char" char bir karakter
happening, and we plan to have the limit removed before anyone does.
adlar (internal name) sistem kataloglarn ve baz hata meajlarn incelerken greceksiniz.
lk drt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devam da veridir.) Dolaysyla,
Bylece, kullanlan gerek alan, belirtilen alandan biraz daha byktr. Ancak, bu veri tipleri, sktrlmaya tabi
tutulabilir; dolaysyla disk alan beklenilenden kck olabilir. VARCHAR(n) bykl artabilen ama en byk
uzunluu snrl oan verileri saklamak iin en uygun yntemdir. TEXT, 1 GB bykle kadar olan verileri tutmak iin
kullanlr.
CHAR(n), ayn uzunluktaki dizilerin saklanmas iin kullanmr. CHAR(n) belirtilen uzunlua kadar boluk ile
doldurur; ancak VARCHAR(n) sadece verilen karakterleri saklar.BYTEA binary veri saklamak iindir; ayrca "NULL" bayt
ieren deerleri de saklar. Burada anlatlan veri tipi de benzer baarm karakteristiklere sahiptir.
4.15.1) Nasil serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
PostgreSQL'de SERIAL veri tipi vardr. Bu veri tipi bir sequence ve kolon zerinde bir indeks yaratr.
rnek, aadaki sorgu:
CREATE TABLE person (
id SERAL,
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 hakknda daha fazla bilgi iin create_sequence yardm sayfasna bakabilirsiniz. Her satrn OID alann
tekil bir say olarak alabilirsiniz. Ancak, veritabannzn dump'n alp yeniden yklerseniz, OID deerlerini
koruyabilmek iin pg_dump'n -o parametresini ya da "COPY WITH OIDS" seeneini kullanmanz gerekecektir.
4.15.2) SERIAL giriinin 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 deerini, deer 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 tanml deeri bulmak iin INSERT ifadesinden dnen OID deerini kullanabilirsiniz; ancak bu
en az tanabilir zm olacaktr. Perl'de, Edmund Mergl'in DBD:Pg mdl ile birlikte DBI kullanarak, oid deeri
$sth->execute() altrldktan sonra $sth->(pg_oid_status) ile alnabilir.
4.15.3) currval() ve nextval() diger kullanicilara sorun yaratmaz m?
Hayr. curval(), tm kullanclar degil, backend tarafndan atanan geerli
degeri dndrr.
4.15.4) Neden sequence saylarn transaction ileminin iptalinden sonra yeniden kullanlyor? Neden sequence/SERIAL
kolonumdaki saylarda atlamalar oluyor?
Uyumluluu arttrmak iin, sequence deerleri alan transactionlara gerektii ekilde aktarlr ve transaction
bitene kadar o deer kilitlenmez. Bu, iptal edilen transaction ilemleri nedeniyle boluklara neden olur.
4.16) OID nedir? TID nedir?
ODs are PostgreSQL's answer to unique row ids. Every row that is
created in PostgreSQL gets a unique OD. All ODs generated during
initdb are less than 16384 (from backend/access/transam.h). All
user-created ODs are equal to or greater than this. By default, all
these ODs are unique not only within a table or database, but unique
within the entire PostgreSQL installation.
PostgreSQL uses ODs in its internal system tables to link rows
between tables. These ODs can be used to identify specific user rows
and used in joins. t is recommended you use column type OD to store
OD values. You can create an index on the OD field for faster
access.
ODs are assigned to all new rows from a central area that is used by
all databases. f you want to change the OD to something else, or if
you want to make a copy of the table, with the original ODs, 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 WTH ODS FROM '/tmp/pgtable';
ODs 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 TIDs are used to identify specific physical rows with block and offset
values. TIDs change after rows are modified or reloaded. They are used values. TDs change after rows are modified or reloaded. They are used
by index entries to point to physical rows. 4.17) What is the meaning by index entries to point to physical rows.
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 4.17) PostgreSQL'de kullanlan baz terimlerin anlamlar nelerdir?
some: * table, relation, class * row, record, tuple * column, field,
attribute * retrieve, select * replace, update * append, insert * OID, Kaynak kodun bir ksm ve eski belgeler, daha genis kullanm alan olan terimleri
serial value * portal, cursor * range variable, table name, table kullanrlar. Bunlarn bazlar:
alias A list of general database terms can be found at:
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary * table, relation, class
/glossary.html 4.18) Why do I get the error /"ERROR: Memory exhausted * row, record, tuple
in AllocSetAlloc()"/? You probably have run out of virtual memory on * column, field, attribute
your system, or your kernel has a low limit for certain resources. Try * retrieve, select
this before starting /postmaster/: ulimit -d 262144 limit datasize * replace, update
256m Depending on your shell, only one of these may succeed, but it * append, insert
will set your process data segment limit much higher and perhaps allow * OID, serial value
the query to complete. This command applies to the current process, * portal, cursor
and all subprocesses created after the command is run. If you are * range variable, table name, table alias
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 Genel veritaban terimleri,
what PostgreSQL version I am running? From /psql/, type |SELECT
version();| 4.20) Why does my large-object operations get /"invalid http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
large obj descriptor"/? You need to put |BEGIN WORK| and |COMMIT| adresinde bulunabilir.
around any use of a large object handle, that is, surrounding
|lo_open| ... |lo_close.| Currently PostgreSQL enforces the rule by 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatasn alyorum?
closing large object handles at transaction commit. So the first
attempt to do anything with the handle will draw /invalid large obj Sisteminizde sanal belleginizi tketmis olabilirsiniz, ya da ekirdeginiz
descriptor/. So code that used to work (at least most of the time) belli kaynaklar icin dk bir snra sahip olabilir. postmasteri baslatmadan nce
will now generate that error message if you fail to use a transaction. asagidakileri deneyebilirsiniz:
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 ulimit -d 262144
the current time? Use /CURRENT_TIMESTAMP/: |CREATE TABLE test (x int, limit datasize 256m
modtime timestamp DEFAULT CURRENT_TIMESTAMP ); | 4.22) Why are my
subqueries using |IN| so slow? Currently, we join subqueries to outer Kabuunuza bal olarak, bunlardan sadece biri olumlu sonu verecektir, ama
queries by sequentially scanning the result of the subquery for each bu ilem veri segment snrnz arttracak, ve belki de sorgunuzun tamamlanmasn
row of the outer query. If the subquery returns only a few rows and saglayacaktr. Bu komut, varolan isleme (current process) ve komut alstrldktan
the outer query returns many rows, |IN| is fastest. To speed up other sonraki tm alt islemlere uygulanir. Eger SQL istemcinizle, backendin ok fazla veri
queries, replace |IN| with |EXISTS|: SELECT * FROM tab WHERE col IN dndrmesi nedeniyle bir sorun yasyorsanz, bunu istemciyi baslatmadan nce deneyiniz.
(SELECT subcol FROM subtab); to: SELECT * FROM tab WHERE EXISTS
(SELECT subcol FROM subtab WHERE subcol = col); For this to be fast, 4.19) Hangi PostgreSQL srmn alstrdgm nasil grebilirim?
|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 psql arabiriminde, select version(); yaznz.
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 4.20) Neden large-object islemlerim, "invalid large obj descriptor"? hatasn veriyor?
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 Large object islemlerinizin uclarina, yani lo_open ... lo_close komutlarnn evresine,
(those with no match in t2). A RIGHT join would add unjoined rows of BEGIN WORK ve COMMIT koymanz gerekmektedir;
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, Eger ODBC gibi bir istemci arabirimi kullanyorsanz, auto-commit'i kapatmanz gerekebilir.
RIGHT, and FULL joins. Ordinary joins are called INNER joins. In
previous releases, outer joins can be simulated using UNION and NOT 4.21) Su andaki zaman ntanml deger olarak kabul eden How do create a column that will default to the current time?
IN. For example, when joining /tab1/ and /tab2/, the following query
does an /outer/ join of the two tables: SELECT tab1.col1, tab2.col2 Alttakini kullanabilirsiniz:
FROM tab1, tab2 WHERE tab1.col1 = tab2.col1 UNION ALL SELECT
tab1.col1, NULL FROM tab1 WHERE tab1.col1 NOT IN (SELECT tab2.col1 CURRENT_TIMESTAMP:
FROM tab2) ORDER BY col1 4.24) How do I perform queries using multiple CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
databases? There is no way to query a database other than the current
one. Because PostgreSQL loads database-specific system catalogs, it is 4.22) Neden IN kullanan subquerylerim ok yavas?
uncertain how a cross-database query should even behave.
/contrib/dblink/ allows cross-database queries using function calls. Currently, we join subqueries to outer queries by sequentially scanning the result of the subquery for
Of course, a client can make simultaneous connections to different each row of the outer query. IN' i EXISTS ile deitirerek bir zme ulalabilir.
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 SELECT *
easily return multiple rows or columns from a function, FROM tab
http://techdocs.postgresql.org/guides/SetReturningFunctions WHERE col1 N (SELECT col2 FROM TAB2)
techdocs.postgresql.org/guides/SetReturningFunctions>. 4.26) Why can't
I reliably create/drop temporary tables in PL/PgSQL functions? to:
PL/PgSQL caches function contents, and an unfortunate side effect is SELECT *
that if a PL/PgSQL function accesses a temporary table, and that table FROM tab
is later dropped and recreated, and the function called again, the WHERE EXSTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
function will fail because the cached function contents still point to
the old temporary table. The solution is to use EXECUTE for temporary Bu snrlamay ilerdeki srmlerimizde dzeltmeyi planlamaktayz.
table access in PL/PgSQL. This will cause the query to be reparsed
every time. 4.27) What replication options are available? There are 4.23) Outer join islemini nasil yapabilirim?
several master/slave replication options available. These allow only
the master to make database changes and the slave can only do database PostgreSQL outer joins islemlerini SQL standartlarn kullanarak gereklestirmektedir.
reads. The bottom of Asagida 2 rnek bulunmaktadr:
http://gborg.PostgreSQL.org/genpage?replication_research
gborg.PostgreSQL.org/genpage?replication_research> lists them. A SELECT *
multi-master replication solution is being worked on at FROM t1 LEFT OUTER JON t2 ON (t1.col = t2.col);
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) What encryption options are available? * /contrib/pgcrypto/ ya da
contains many encryption functions for use in SQL queries. * The only
way to encrypt transmission from the client to the server is by using SELECT *
/hostssl/ in /pg_hba.conf/. * Database user passwords are FROM t1 LEFT OUTER JON t2 USNG (col);
automatically encrypted when stored in version 7.3. In previous
versions, you must enable the option /PASSWORD_ENCRYPTION/ in Bu zdes sorgular t1.col ' i t2.col'ye join ederler ve ayn zamanda t1'deki unjoined satrlar
/postgresql.conf/. * The server can run using an encrypted file (t2'de eslenmenis olanlarla) dndrrler. RGHT JON t2'nin unjoined satrlarn ekleyecektir.
system. Bir FULL join, elemi btn satrlar ve t1 ile t2'den tm balanmam (unjoined) satrlar alr.
---------------------------------------------------------------------- OUTER szc seimseldir ve LEFT, RIGHT ve FULL join ilemlerinde olduu kabul edilir. Sradan
-- Extending PostgreSQL 5.1) I wrote a user-defined function. When I join ilemleri INNER join olarak adlandrlr.
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 nceki srmlerde, OUTER JOINler UNION ve NOT IN kullanlarak simle edilebiliyordu. rnein, tab1
test program first. 5.2) How can I contribute some nifty new types and ve tab2'yi birletirirken, aadaki sorgu iki tablonun dtan balanmasn salar:
functions to PostgreSQL? Send your extensions to the /pgsql-hackers/
mailing list, and they will eventually end up in the /contrib// SELECT tab1.col1, tab2.col2
subdirectory. 5.3) How do I write a C function to return a tuple? In FROM tab1, tab2
versions of PostgreSQL beginning with 7.3, table-returning functions WHERE tab1.col1 = tab2.col1
are fully supported in C, PL/PgSQL, and SQL. See the Programmer's UNION ALL
Guide for more information. An example of a table-returning function SELECT tab1.col1, NULL
defined in C can be found in /contrib/tablefunc/. 5.4) I have changed FROM tab1
a source file. Why does the recompile not see the change? The WHERE tab1.col1 NOT N (SELECT tab2.col1 FROM tab2)
/Makefiles/ do not have the proper dependencies for include files. You ORDER BY col1
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 4.24) Ayni andan birden fazla veritabaninda nasil islem yapabilirim?
the compiler compute the dependencies automatically.
Mevcut veritabannz dsndaki baska bir veritabannz sorgulamanzn bir yolu bulunmamaktadr.
bunun nedeni, PostgreSQL'in veritabanna zel sistem kataloglar yklemesidir. Bu nedenle,
cross-database bir sorgunun nasil davranacagn kestirmek zordur.
contrib/dblink fonksiyon arlarn kullanarak cross-database sorgulara izin verid. Tabii ki,
bir istemci degisik veritabanlarna ayn anda erisim saglayabilir ve bilgiyi bu sekilde
birlestirebilir.
4.25) Bir fonksiyondan nasl oklu satr ya da kolon dndrebilirim?
7.3 srmnde, bir fonksiyondan kolaylkla oklu satr ya da stun dndrebilirsiniz.
http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Neden Pl/PgSQL fonksiyonlar iinden gvenli bir ekilde tablo yaratma/kaldrma ilemlerini yapamyoruz?
PL/PgSQL fonksiyon ierikleri cacheler. Bunun istenmeyen bir taraf, eer bir PL/PgSQL fonksiyonu geici bir
tabloya eriiyorsa ve bu tablo ileride kaldrlp yeniden oluturulduktan sonra fonksiyon yeniden arlrsa,
fonksiyon almayacaktr; nk cachelenmi fonksiyon hala eski geici tabloyu gsteriyor olacaktr. zm,
geici tablo eriimleri iin PL/PgSQL'de EXECUTE kullanmaktr. Bu, sorgunun her seferinde yeniden ilenmesini
salayacaktr.
4.27) Hangi replikasyon seenekleri bulunmaktadr?
eitli master/slave replikasyon seenekleri bulunmaktadr. Bunlar master veritabannn veritaban deiikliklerini
yaparken, slave sunucunun sadece veritabannda okuma yapmasna izin verir.
http://gborg.PostgreSQL.org/genpage?replication_research sayfasnn altnda bunlarn listesini bulabilirsiniz.
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php adresinde, oklu-master replikasyon zm
zerinde allyor.
4.28) Hangi ifreleme seenekleri bulunmaktadr?
* contrib/pgcrypto SQL sorgularnda kullanlabilmesi iin ifreleme fonksiyonlar iermektedir.
* stemciden sunucuya iletiimi ifrelemenin tek yolu, pg_hba.conf iinde hostssl kullanmaktr.
* Veritaban kullanc ad ve ifreleri 7.3 srm ile birlikte otomatik olarak ifrelenirler. nceki
srmlerde, postgresql.conf iindeki PASSWORD_ENCRYPTION seeneini aktif hale getirmeniz gerekmektedir.
* Sunucunun kendisini ifreli dosya sistemi zerinde altrabilirsiniz.
_________________________________________________________________
PostgreSQL zelliklerini Geniletmek
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?
alsmalarnz pgsql-hackers e-posta listesine gnderiniz. Kodunuz incelendikten sonra
/contrib dizinine konacaktr.
5.3) Bir tuple dondrmek icin bir C fonksiyonunu nasil yazarm?
PostgreSQL 7.3 srm ile birlikte, C, PL/PgSQL ve SQL kullanlarak tablo-dndren
fonksiyonlar tamamen desteklenmektedir. Ayrntl bilgi iin "Programmer's Guide" a
bakabilrisiniz. Bir rnei contrib/tablefunc iinde bulabilirsiniz.
5.4) Bir kaynak dosyasnda deiiklik yaptm. Yeniden derlememe ramen deiiklik
geerli olmuyor. Neden?
Makefile'lar include dosyalar iin tam bir bamllk iermezler.
ncelikle make clean, ardndan da baska bir make ilemi yapmanz gerekir.
GCC kullanyorsaniz, configure betiinin --enable-depend seeneini, derleyicinin
bamllklar otomatik olarak hesaplamas iin kullanabilirsiniz.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment