Remove translated FAQs
authorPeter Eisentraut <peter_e@gmx.net>
Tue, 21 Jul 2009 19:20:33 +0000 (19:20 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 21 Jul 2009 19:20:33 +0000 (19:20 +0000)
The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.

The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).

applied to both 8.4 and 8.5

26 files changed:
doc/FAQ_brazilian [deleted file]
doc/FAQ_chinese_simp [deleted file]
doc/FAQ_chinese_trad [deleted file]
doc/FAQ_czech [deleted file]
doc/FAQ_farsi [deleted file]
doc/FAQ_french [deleted file]
doc/FAQ_german [deleted file]
doc/FAQ_hungarian [deleted file]
doc/FAQ_japanese [deleted file]
doc/FAQ_polish [deleted file]
doc/FAQ_russian [deleted file]
doc/FAQ_turkish [deleted file]
doc/src/FAQ/FAQ_MINGW.html [deleted file]
doc/src/FAQ/FAQ_brazilian.html [deleted file]
doc/src/FAQ/FAQ_chinese_simp.html [deleted file]
doc/src/FAQ/FAQ_chinese_trad.html [deleted file]
doc/src/FAQ/FAQ_czech.html [deleted file]
doc/src/FAQ/FAQ_farsi.html [deleted file]
doc/src/FAQ/FAQ_french.html [deleted file]
doc/src/FAQ/FAQ_german.html [deleted file]
doc/src/FAQ/FAQ_hungarian.html [deleted file]
doc/src/FAQ/FAQ_japanese.html [deleted file]
doc/src/FAQ/FAQ_polish.html [deleted file]
doc/src/FAQ/FAQ_russian.html [deleted file]
doc/src/FAQ/FAQ_turkish.html [deleted file]
doc/src/FAQ/README [deleted file]

diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian
deleted file mode 100644 (file)
index 16d4742..0000000
+++ /dev/null
@@ -1,922 +0,0 @@
-
-                  Perguntas Frequentes (FAQ) sobre PostgreSQL
-                                       
-   Última atualização: Sex Nov 16 10:53:50 EST 2007
-   
-   Mantenedor atual: Bruce Momjian (bruce@momjian.us)
-   
-   Traduzido por: Euler Taveira de Oliveira (euler@timbira.com)
-   
-   A versão mais recente desse documento pode ser vista em
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html (EN).
-   http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html
-   (pt_BR).
-   
-   Perguntas sobre plataformas específicas são respondidas em
-   http://www.postgresql.org/docs/faq/.
-     _________________________________________________________________
-   
-                              Perguntas Gerais
-                                      
-   1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
-   1.2) Quem controla o PostgreSQL?
-   1.3) Qual é a licença do PostgreSQL?
-   1.4) Quais plataformas o PostgreSQL pode ser executado?
-   1.5) Onde eu posso conseguir o PostgreSQL?
-   1.6) Qual é a última versão?
-   1.7) Onde eu posso conseguir suporte?
-   1.8) Como eu posso submeter um relato de um bug?
-   1.9) Como eu posso saber quais são os bugs conhecidos ou
-   características ausentes?
-   1.10) Que documentação está disponível?
-   1.11) Como eu posso aprender SQL?
-   1.12) Como posso submeter uma correção (patch) ou me juntar a equipe
-   de desenvolvimento?
-   1.13) Como é o PostgreSQL comparado a outros SGBDs?
-   1.14) O PostgreSQL gerenciará as mudanças de horário devido ao horário
-   de verão em vários países?
-   
-                          Perguntas sobre Clientes
-                                      
-   2.1) Quais interfaces estão disponíveis para PostgreSQL?
-   2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL
-   com páginas Web?
-   2.3) O PostgreSQL tem interfaces gráficas para interagir com usuário?
-   
-                         Perguntas Administrativas
-                                      
-   3.1) Como eu instalo o PostgreSQL em um local diferente de
-   /usr/local/pgsql?
-   3.2) Como eu controlo conexões de outras máquinas?
-   3.3) Como eu ajusto o servidor de banco de dados para obter uma
-   performance melhor?
-   3.4) Quais características de depuração estão disponíveis?
-   3.5) Por que eu recebo "Sorry, too many clients" quando eu tento
-   conectar?
-   3.6) Qual é o processo de atualização do PostgreSQL?
-   3.7) Que tipo de hardware eu devo usar?
-   
-                           Perguntas Operacionais
-                                      
-   4.1) Como eu faço um SELECT somente dos primeiros registros de uma
-   consulta? Um registro randômico?
-   4.2) Como eu descubro quais tabelas, índices, bancos de dados e
-   usuários estão definidos? Como eu vejo as consultas utilizadas pelo
-   psql para mostrá-los?
-   4.3) Como você muda o tipo de dado de uma coluna?
-   4.4) Qual é o tamanho máximo de um registro, uma tabela e um banco de
-   dados?
-   4.5) Quanto espaço em disco é necessário para armazenar dados de um
-   arquivo texto?
-   4.6) Por que minhas consultas estão lentas? Por que elas não estão
-   utilizando meus índices?
-   4.7) Como eu vejo como o otimizador de consultas está avaliando minha
-   consulta?
-   4.8) Como eu faço buscas com expressões regulares e buscas com
-   expressões regulares sem diferenciar mauúsculas de minúsculas? Como eu
-   utilizo um índice para buscas sem distinguir maiúsculas de minúsculas?
-   4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu
-   posso concatenar possíveis NULLs? Como eu posso ordenar por um campo
-   que é NULL ou não?
-   4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
-   4.11.1) Como eu crio um campo serial/auto incremento?
-   4.11.2) Como eu consigo o valor de um campo SERIAL?
-   4.11.3) currval() não lida com condição de corrida com outros
-   usuários?
-   4.11.4) Por que os números da minha sequência não são reutilizados
-   quando uma transação é abortada? Por que há intervalos nos números da
-   minha sequência/coluna SERIAL?
-   4.12) O que é um OID? O que é um CTID?
-   4.13) Por que eu recebo o erro "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.14) Como eu informo qual versão do PostgreSQL eu estou utilizando?
-   4.15) Como eu crio uma coluna que conterá por padrão a hora atual?
-   4.16) Como eu faço uma junção externa (outer join)?
-   4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
-   4.18) Como eu retorno múltiplos registros ou colunas de uma função?
-   4.19) Por que eu obtenho erros "relation with OID ###### does not
-   exist" ao acessar tabelas temporárias em funções PL/PgSQL?
-   4.20) Quais soluções de replicação estão disponíveis?
-   4.21) Por que os nomes de minhas tabelas e colunas não são
-   reconhecidos em minha consulta? Por que as maiúsculas não são
-   preservadas?
-     _________________________________________________________________
-   
-                              Perguntas Gerais
-                                      
-  1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?
-  
-   PostgreSQL é pronunciado Post-Gres-Q-L. (Para os curiosos que querem
-   saber como se diz "PostgreSQL", um arquivo de áudio está disponível).
-   
-   O PostgreSQL é um sistema de banco de dados objeto-relacional que tem
-   as características de sistemas de bancos de dados comerciais
-   tradicionais com melhoramentos encontrados nos sistemas SGBDs de
-   próxima geração. PostgreSQL é livre e o código-fonte completo está
-   disponível.
-   
-   O desenvolvimento do PostgreSQL é feito por um grupo de
-   desenvolvedores voluntários (na sua maioria) espalhados pelo mundo e
-   que se comunicam via Internet. É um projeto da comunidade e não é
-   controlado por nenhuma empresa. Para se envolver, veja a FAQ do
-   desenvolvedor em http://www.postgresql.org/docs/faqs.FAQ_DEV.html
-   
-   Postgres é um apelido para o PostgreSQL amplamente utilizado. Era o
-   nome original do projeto em Berkeley e dentre os outros apelidos é o
-   preferido. Se você acha 'PostgreSQL' difícil de pronunciar, diga
-   apenas 'Postgres'.
-   
-  1.2) Quem controla o PostgreSQL?
-  
-   Se você está procurando por um mantenedor, comitê central ou empresa
-   controladora do PostgreSQL, desista --- não há um(a). Nós temos um
-   comitê core e committers CVS, mas estes grupos são mais para questões
-   administrativas do que controle. O projeto é direcionado pela
-   comunidade de desenvolvedores e usuários, que qualquer um pode se
-   juntar. Tudo o que você precisa é se inscrever nas listas de discussão
-   e participar das discussões. Veja a FAQ do desenvolvedor para obter
-   informações como se envolver com o desenvolvimento do PostgreSQL.
-   
-  1.3) Qual é a licença do PostgreSQL?
-  
-   O PostgreSQL é distribuído sob a licença BSD clássica. Basicamente,
-   ela permite que usuários façam qualquer coisa com o código, incluindo
-   revender os binários sem o código-fonte. A única restrição é que você
-   não nos responsabilize legalmente por problemas com o programa de
-   computador. Há também a exigência de que esta licença apareça em todas
-   as cópias do programa de computador. Aqui está a licença BSD que
-   usamos atualmente:
-   
-   PostgreSQL está sujeito a seguinte licença:
-   
-   PostgreSQL Data Base Management System
-   
-   Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
-   Portions Copyright (c) 1994-1996 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.
-   
-  1.4) Quais plataformas o PostgreSQL pode ser executado?
-  
-   Em geral, qualquer plataforma moderna compatível com Unix deve ser
-   capaz de executar o PostgreSQL. As plataformas que foram testadas
-   antes do lançamento de uma versão são listadas nas instruções de
-   instalação.
-   
-   O PostgreSQL também executa nativamente nos sistemas operacionais
-   Microsoft Windows baseados no NT tais como Win200 SP4, WinXP e
-   Win2003. Um instalador pré-empacotado está disponível em
-   http://pgfoundry.org/projects/pginstaller. Versões do Windows baseadas
-   no MS-DOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando
-   o Cygwin.
-   
-   Há também uma versão para o Novell Netware 6 em
-   http://forge.novell.com e uma versão para OS/2 (eComStation) em
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F.
-   
-  1.5) Onde eu posso conseguir o PostgreSQL?
-  
-   Via navegador web, utilize http://www.postgresql.org/ftp/ e via ftp,
-   utilize ftp://ftp.postgresql.org/pub/.
-   
-  1.6) Qual é a última versão?
-  
-   A última versão do PostgreSQL é a versão 8.2.5.
-   
-   Nós planejamos lançar versões novas a cada ano com versões corretivas
-   em alguns meses.
-   
-  1.7) Onde eu posso conseguir suporte?
-  
-   A comunidade do PostgreSQL fornece assistência a muitos de seus
-   usuários via e-mail. O principal sítio web para inscrição nas listas
-   de e-mail é http://www.postgresql.org/community/lists/. As listas
-   general e bugs são um bom lugar para início.
-   
-   O principal canal de IRC é o #postgresql na Freenode
-   (irc.freenode.net). Para se conectar você pode utilizar o comando Unix
-   irc -c '#postgresql' "$USER" irc.freenode.net ou utilizar qualquer
-   outro cliente de IRC. Um canal hispânico (#postgresql-es) e um francês
-   (#postgresqlfr) também existem na mesma rede. Há também um canal
-   PostgreSQL na EFNet.
-   
-   Uma lista de empresas que prestam suporte comercial está disponível em
-   http://www.postgresql.org/support/professional_support.
-   
-  1.8) Como eu informo a existência de um bug?
-  
-   Visite o formulário que reporta bugs do PostgreSQL em
-   http://www.postgresql.org/support/submitbug.
-   
-   Verifique também o nosso ftp ftp://ftp.postgresql.org/pub para ver se
-   há uma versão mais recente do PostgreSQL.
-   
-   Bugs submetidos utilizando o formulário ou informado a qualquer lista
-   de discussão do PostgreSQL tipicamente gera uma das seguintes
-   respostas:
-     * Não é um bug e o porquê
-     * É um bug conhecido e já está na lista de AFAZERES
-     * O bug foi corrigido na versão atual
-     * O bug foi corrigido mas não foi empacotado em um versão oficial
-     * Um pedido foi feito para obter informações detalhadas:
-          + Sistema Operacional
-          + Versão do PostgreSQL
-          + Exemplo de teste que reproduz o bug
-          + Informações sobre depuração
-          + Saída reconstituidora de vestígios (backtrace) do depurador
-     * O bug é novo. O seguinte pode ocorrer:
-          + Uma correção é criada e será incluída na próxima versão
-          + O bug não pode ser corrigido imediatamente e é adicionado a
-            lista de AFAZERES
-       
-  1.9) Como eu posso saber quais são os bugs conhecidos ou funcionalidades
-  ausentes?
-  
-   O PostgreSQL suporta um subconjunto extendido do SQL:2003. Veja nossa
-   lista de AFAZERES que contém bugs conhecidos, funcionalidades ausentes
-   e planos futuros.
-   
-   Uma solicitação de funcionalidade geralmente resulta em uma das
-   seguintes respostas:
-     * A funcionalidade já está na lista de AFAZERES
-     * A funcionalidade não é desejável porque:
-          + Ela duplica uma funcionalidade existente que já segue o
-            padrão SQL
-          + A funcionalidade aumentará a complexidade do código mas
-            adicionará pouco benefício
-          + A funcionalidade será insegura ou não-confiável
-     * A nova funcionalidade é adicionada a lista de AFAZERES
-       
-   O PostgreSQL não utiliza sistema de acompanhamento de bugs porque nós
-   achamos mais eficiente responder diretamente o e-mail e manter a lista
-   de AFAZERES atualizada. Na prática, bugs não duram muito no programa;
-   e bugs que afetam uma grande quantidade de usuários são corrigidos
-   rapidamente. O único lugar para encontrar todas as mudanças, melhorias
-   e correções em uma versão do PostgreSQL é ler as mensagens de log do
-   CVS. Até mesmo as notas de lançamento não listam todas as mudanças
-   feitas no programa.
-   
-  1.10) Que documentação está disponível?
-  
-   O PostgreSQL inclui vasta documentação, incluindo um manual extenso,
-   páginas de manuais (man pages) e alguns exemplos teste. Veja o
-   diretório /doc. Você também pode pesquisar os manuais online em
-   http://www.postgresql.org/docs.
-   
-   Há dois livros sobre PostgreSQL disponíveis online em
-   http://www.postgresql.org/docs/books/awbook.html e
-   http://www.commandprompt.com/ppbook/. Há uma lista de livros sobre
-   PostgreSQL disponíveis para compra. Um dos mais populares é o do Korry
-   Douglas. Uma lista de análise sobre os livros pode ser encontrada em
-   http://www.postgresql.org/docs/books/. Há também uma coleção de
-   artigos técnicos sbore PostgreSQL em
-   http://www.postgresql.org/docs/techdocs/.
-   
-   O programa cliente de linha de comando psql tem alguns comandos \d
-   para mostrar informações sobre tipos, operadores, funções, agregações,
-   etc. - utilize \? para mostrar os comandos disponíveis.
-   
-   Nosso sítio web contém ainda mais documentação.
-   
-  1.11) Como eu posso aprender SQL?
-  
-   Primeiro, considere os livros específicos sobre PostgreSQL mencionados
-   acima. Muitos de nossos usuários gostam do The Practical SQL Handbook,
-   Bowman, Judith S., et al., Addison-Wesley. Outros do The Complete
-   Reference SQL, Groff et al., McGraw-Hill.
-   
-   Há também bons tutoriais disponíveis online:
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12) Como posso submeter uma correção (patch) ou me juntar a equipe de
-  desenvolvimento?
-  
-   Veja a FAQ do Desenvolvedor.
-   
-  1.13) Como é o PostgreSQL comparado a outros SGBDs?
-  
-   Há várias maneiras de se medir um software: funcionalidades,
-   performance, confiabilidade, suporte e preço.
-   
-   Funcionalidades
-          PostgreSQL tem muitas características presentes em muitos SGBDs
-          comerciais como transações, subconsultas, gatilhos, visões,
-          integridade referencial de chave estrangeira e bloqueio (lock)
-          sofisticado. Nós temos algumas funcionalidades que eles não
-          tem, como tipos definidos pelo usuário, herança, regras e
-          controle de concorrência de múltiplas versões para reduzir
-          bloqueios (locks).
-          
-   Performance
-          A performance do PostgreSQL é comparável a outros bancos de
-          dados comerciais e de código livre. Ele é mais rápido em
-          algumas coisas, mais lento em outras. Nossa performance é
-          geralmente +/- 10% comparada a de outros bancos de dados.
-          
-   Confiabilidade
-          Nós sabemos que um SGBD deve ser confiável ou ele é inútil. Nós
-          empenhamos em lançar versões bem testadas, de código estável e
-          que tenha o mínimo de bugs. Cada versão tem no mínimo um mês de
-          teste em versão beta, e nosso histórico de versões mostra que
-          nós podemos fornecer versões estáveis e sólidas que estão
-          prontas para uso em produção. Nós acreditamos que somos
-          comparados a nosso favor com outros sistemas de bancos de dados
-          nessa área.
-          
-   Suporte
-          Nossas listas de discussão fornecem contato com um grupo de
-          desenvolvedores e usuários para ajudar a resolver muitos
-          problemas encontrados. Enquanto nós não podemos garantir o
-          conserto, SGBDs comerciais nem sempre fornecem também. Com
-          acesso direto aos desenvolvedores, a comunidade de usuários,
-          manuais e o código fonte faz com que o suporte do PostgreSQL
-          seja superior ao de outros SGBDs. Há suporte comercial por
-          incidente disponíveis para aqueles que precisam de um. (Veja
-          seção 1.7 da FAQ).
-          
-   Preço
-          Nós somos livres para uso dele tanto comercial quanto não
-          comercial. Você pode adicionar nosso código ao seu produto sem
-          limitações, exceto aquelas descritas na nossa licença BSD
-          mencionada acima.
-          
-  1.14) O PostgreSQL gerenciará mudanças no horário devido ao horário de verão
-  em vários países?
-  
-   Mudanças no horário de verão dos USA foram incluídas nas versões 8.0
-   .[4+] do PostgreSQL e em todas as versões grandes, i.e. 8.1. Mudanças
-   no Canadá e Austrália Oeste foram incluídas na 8.0.[10+], 8.1.[6+] e
-   em todas as versões grandes subsequentes. Versões do PostgreSQL
-   anteriores a 8.0 utilizam o banco de dados de zona horária do sistema
-   operacional para informações sobre horário de verão.
-     _________________________________________________________________
-   
-                          Perguntas sobre Clientes
-                                      
-  2.1) Quais interfaces estão disponíveis para PostgreSQL?
-  
-   A instalação do PostgreSQL inclui somente as interfaces C e C
-   embutida. Todas as outras interfaces são projetos independentes que
-   podem ser obtidos separadamente; sendo separados permitem que eles
-   tenham suas próprias datas de lançamento e time de desenvolvedores.
-   
-   Algumas linguagens de programação como PHP incluem uma interface para
-   PostgreSQL. Interfaces para linguagens como Perl, TCL, Python e muitas
-   outras estão disponíveis em http://www.pgfoundry.org.
-   
-  2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com
-  páginas Web?
-  
-   Uma boa introdução para páginas web que utilizam bancos de dados pode
-   ser vista em: http://www.webreview.com
-   
-   Para integração na Web, PHP (http://www.php.net) é uma excelente
-   interface.
-   
-   Para casos complexos, muitos usam a Interface Perl e DBD::Pg com
-   CGI.pm ou mod_perl.
-   
-  2.3) O PostgreSQL tem interfaces gráficas para iteragir com o usuário?
-  
-   Há um vasto número de Ferramentas Gráficas (GUI), que estão
-   disponíveis para o PostgreSQL, comerciais e de desenvolvedores de
-   código aberto. Uma lista detalhada pode ser encontrada em Documentação
-   da Comunidade PostgreSQL
-     _________________________________________________________________
-   
-                         Perguntas Administrativas
-                                      
-  3.1) Como eu instalo o PostgreSQL em um local diferente de /usr/local/pgsql?
-  
-   Especifique a opção --prefix quando executar o configure.
-   
-  3.2) Como eu controlo conexões de outras máquinas?
-  
-   Por padrão, o PostgreSQL só permite conexões da máquina local
-   utilizando soquetes de domínio Unix ou conexões TCP/IP. Outras
-   máquinas não poderão conectar-se a menos que você modifique
-   listen_addresses no postgresql.conf, habilite a autenticação por
-   máquina modificando o arquivo $PGDATA/pg_hba.conf e reinicie o
-   servidor PostgreSQL.
-   
-  3.3) Como eu ajusto o servidor de banco de dados para obter uma performance
-  melhor?
-  
-   Há três grandes áreas para melhorar a performance em potencial:
-   
-   Mudança de Consultas
-          Isto involve modificar consultas para obter melhor performance:
-          
-          + Criação de índices, incluir expressões e índices parciais
-          + Utilização o COPY ao invés de múltiplos comandos INSERTs
-          + Agrupamento de múltiplos comandos em uma única transação para
-            diminuir a despesa com efetivações (commit)
-          + Utilização do CLUSTER quando recuperar vários registros de um
-            índice
-          + Utilização do LIMIT para retornar um subconjunto da saída da
-            consulta
-          + Utilização de Consultas preparadas
-          + Utilização de ANALYZE para manter as estatísticas do
-            otimizador corretas
-          + Utilização regular do VACUUM ou pg_autovacuum
-          + Remoção de índices durante grande mudança de dados
-            
-   Configuração do Servidor
-          Um grande número de configurações que afetam a performance.
-          Para obter detalhes adicionais, veja Administration
-          Guide/Server Run-time Environment/Run-time Configuration para
-          listagem completa, e para comentários veja
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
-          nf_e.html e
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-          
-   Seleção do Hardware
-          O efeito do hardware na performance é detalhado em
-          http://www.powerpostgresql.com/PerfList/ e
-          http://momjian.us/main/writings/pgsql/hw_performance/index.html
-          .
-          
-  3.4) Quais características de depuração estão disponíveis?
-  
-   Há muitas variáveis de configuração do servidor log_* que habilitam a
-   exibição de consultas e estatísticas que podem ser muito úteis para
-   depuração e medidas de performance.
-   
-  3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
-  
-   Você atingiu o limite padrão de 100 sessões. Você precisa aumentar o
-   limite do servidor PostgreSQL, que diz quantos processos servidor
-   concorrentes ele pode iniciar, alterando o valor max_connections no
-   postgresql.conf e reiniciando o postmaster.
-   
-  3.6) Qual é o processo de atualização do PostgreSQL?
-  
-   Veja http://www.postgresql.org/support/versioning para discussão geral
-   sobre atualizações e
-   http://www.postgresql.org/docs/current/static/install-upgrading.html
-   para instruções específicas.
-   
-  3.7) Que tipo de hardware eu devo usar?
-  
-   Por causa do hardware de PC ser em sua maioria compatível, pessoas
-   tendem a acreditar que todos os hardwares de PC são de mesma
-   qualidade. Não é verdade. ECC RAM, SCSI e placas mãe de qualidade são
-   mais confiáveis e têm uma melhor performance do que hardwares mais
-   baratos. O PostgreSQL executará em quase todo hardware, mas se a
-   confiabilidade e a performance forem importantes é prudente pesquisar
-   sobre as opções de hardware. Nossas listas de discussão podem ser
-   usadas para discutir opções de hardware e dilemas.
-     _________________________________________________________________
-   
-                           Perguntas Operacionais
-                                      
-  4.1) Como eu faço um SELECT somente dos primeiros registros de uma consulta?
-  Um registro randômico?
-  
-   Para obter somente alguns registros, se você sabe o número de
-   registros necessários ao executar o SELECT utilize o LIMIT. Se um
-   índice corresponde no ORDER BY é possível que a consulta toda não
-   tenha que ser executada. Se você não sabe o número de registros ao
-   executar o SELECT, utilize um cursor e o FETCH.
-   
-   Para obter um registro randômico, utilize:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-
-  4.2) Como eu descubro quais tabelas, índices, bancos de dados e usuários
-  estão definidos? Como eu vejo as consultas utilizadas pelo psql para
-  mostrá-los?
-  
-   Utilize o comando \dt para ver tabelas no psql. Para obter uma lista
-   completa dos comandos no psql você pode utilizar \?. Alternativamente,
-   você pode ler o código-fonte do psql no arquivo
-   pgsql/src/bin/psql/describe.c, ele contém os comandos SQL que geram a
-   saída para os comandos de contrabarra do psql. Você também pode
-   iniciar o psql com a opção -E para que as consultas utilizadas para
-   executar os comandos que você informou seja exibida. O PostgreSQL
-   também fornece uma inteface compatível com SQL do INFORMATION SCHEMA
-   que você pode consultar para obter informação sobre o banco de dados.
-   
-   Há também tabelas do sistema que começam com pg_ que os descrevem
-   também.
-   
-   Utilizando o psql -l listará todos os bancos de dados.
-   
-   Veja também o arquivo pgsql/src/tutorial/syscat.source. Ele ilustra
-   muitos dos comandos SELECTs necessários para obter informação das
-   tabelas de sistema do banco de dados.
-   
-  4.3) Como você muda o tipo de dado de uma coluna?
-  
-   Mudar o tipo de dado de uma coluna pode ser feito facilmente na versão
-   8.0 ou superior com ALTER TABLE ALTER COLUMN TYPE.
-   
-   Em versões anteriores, faça isso:
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN col_nova novo_tipo_dado;
-    UPDATE tab SET col_nova = CAST(col_antiga AS novo_tipo_dado);
-    ALTER TABLE tab DROP COLUMN col_antiga;
-    COMMIT;
-
-   Você pode então querer fazer um VACUUM FULL tab para recuperar o
-   espaço em disco utilizado pelos registros expirados.
-   
-  4.4) Qual é o tamanho máximo de um registro, uma tabela e um banco de dados?
-  
-   Estes são os limites:
-   
-   Tamanho máximo de um banco de dados? ilimitado (existem bancos de
-   dados de 32 TB)
-   Tamanho máximo de uma tabela? 32 TB
-   Tamanho máximo de um registro? 400 GB
-   Tamanho máximo de um campo? 1 GB
-   Número máximo de registros em uma tabela? ilimitado
-   Número máximo de colunas em uma tabela? 250-1600 dependendo dos tipos
-   das colunas
-   Número máximo de índices em uma tabela? ilimitado
-   
-   É claro, que eles não são ilimitados, mas limitados ao espaço em disco
-   disponível e espaço em memória/swap. A Performance será penalizada
-   quando estes valores se tornarem grandes.
-   
-   O tamanho máximo de uma tabela com 32 TB não requer suporte a arquivos
-   grandes do sistema operacional. Tabelas grandes são armazenadas como
-   múltiplos arquivos de 1 GB então o limite do sistema de arquivos não é
-   importante.
-   
-   O tamanho máximo de uma tabela, o tamanho de um registro e o número
-   máximo de colunas podem ser quadruplicados aumentando-se o tamanho
-   padrão do bloco para 32k. O tamanho máximo de uma tabela pode também
-   ser aumentado utilizando particionamento de tabela.
-   
-   Uma limitação é que índices não podem ser criados em colunas maiores
-   do que 2.000 caracteres. Felizmente, tais índices são raramente
-   necessários. Unicidade é melhor garantida por um índice de uma função
-   de um hash MD5 de uma coluna longa, e indexação de texto longo permite
-   a busca de palavras dentro da coluna.
-   
-  4.5) Quanto espaço em disco é necessário para armazenar dados de um arquivo
-  texto?
-  
-   Um banco de dados PostgreSQL irá requerer até cinco vezes a quantidade
-   de espaço requerida para armazenar dados em um arquivo texto.
-   
-   Como um exemplo, considere um arquivo com 100.000 linhas contendo um
-   inteiro e uma descrição em cada linha. Suponha que o tamanho médio da
-   descrição é de vinte bytes. O arquivo terá 2,8 MB. O tamanho do
-   arquivo do banco de dados PostgreSQL que contém esses dados pode ser
-   estimado em 5,2 MB:
-    24 bytes: cada cabeçalho de registro (aproximadamente)
-    24 bytes: um campo int e um campo texto
-   + 4 bytes: ponteiro na página para a tupla
-   -------------------------------------------
-    52 bytes por registro
-
-   O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
-
-   8192 bytes por página
-   ------------------------   =  158 registros por página do banco de dados (arredondado para baixo)
-     52 bytes por registro
-
-   100000 registros de dados
-   ----------------------------  =  633 páginas do banco de dados (arredondadopara cima)
-      158 registros por página
-
-633 páginas do banco de dados * 8192 bytes por página  =  5.185.536 bytes (5,2MB)
-
-   Índices não requerem muito espaço, mas contém dados que foram
-   indexados, então eles podem ocupar algum espaço.
-   
-   NULLs são armazenados como bitmaps, então eles utilizam muito pouco
-   espaço.
-   
-  4.6) Por que minhas consultas estão lentas? Por que elas não estão utilizando
-  meus índices?
-  
-   Índices não são utilizados por toda consulta. Índices são utilizados
-   somente se a tabela é maior do que um tamanho mínimo, e a consulta
-   seleciona somente uma pequena porcentagem dos registros da tabela.
-   Isto porque o acesso randômico ao disco causado pela busca indexada
-   pode ser mais lento do que uma leitura ao longo da tabela ou busca
-   sequencial.
-   
-   Para determinar se um índice deveria ser utilizado, o PostgreSQL deve
-   ter estatísticas sobre a tabela. Estas estatísticas são coletadas
-   utilizando o VACUUM ANALYZE ou simplesmente o ANALYZE. Utilizando
-   estatísticas, o otimizador sbae quantos registros estão na tabela, e
-   pode melhor determinar se índices deveriam ser utilizados.
-   Estatísticas também são úteis para determinar a ordem de junção ótima
-   e métodos de junção. Coleção de estatísticas deveriam ser feitas
-   periodicamente a medida que o conteúdo da tabela muda.
-   
-   Índices não são normalmente utilizados para ORDER BY ou para fazer
-   junções. Uma busca sequencial seguido por uma ordenação explícita é
-   geralmente mais rápida do que uma busca indexada em uma tabela grande.
-   Contudo, LIMIT combinado com ORDER BY frequentemente utilizará índice
-   porque somente uma pequena porção da tabela será retornada.
-   
-   Se você acredita que o otimizador está incorreto ao escolher uma busca
-   sequencial, utilize SET enable_seqscan TO 'off' e execute a consulta
-   novamente para ver se uma busca indexada é realmente mais rápida.
-   
-   Ao utilizar operadores curinga tais como LIKE ou ~, índices podem ser
-   utilizados somente em algumas condições:
-     * O início da cadeia de caracteres da busca deve ser iniciar com uma
-       cadeia de caracteres, i.e.
-          + modelos LIKE não devem iniciar com %.
-          + modelos ~ (expressões regulares) devem iniciar com ^.
-     * A cadeia de caracteres utilizada na busca não pode iniciar com a
-       classe de caracteres e.g. [a-e].
-     * Busca que não diferenciam maiúsculas de minúsculas tais como ILIKE
-       e ~* não utilizam índices. Em vez disso, utilize índice de
-       expressão, que é descrito na seção 4.8.
-     * O idioma padrão C deve ser usando durante o initdb porque não é
-       possível saber o próximo caracter em idiomas que não sejam o C.
-       Você pode criar um índice especial text_pattern_ops para tais
-       casos que funcionam somente para indexação com LIKE. Também é
-       possível utilizar indexação de busca textual para buscas por
-       palavras.
-       
-   Em versões anteriores a 8.0, índices frequentemente não podem ser
-   utilizados a menos que os tipos de dados correspondam aos tipos de
-   coluna do índice. Isto era particularmente verdadeiro para índices de
-   coluna int2, int8 e numeric.
-   
-  4.7) Como eu vejo como o otimizador de consulta está avaliando a minha
-  consulta?
-  
-   Veja o comando EXPLAIN no manual.
-   
-  4.8) Como eu faço buscas com expressões regulares e buscas com expressões
-  regulares sem diferenciar maiúsculas de minúsculas? Como eu utilizo um índice
-  para buscas que não diferenciam maiúsculas de minúsculas?
-  
-   O operador ~ faz avaliação de expressões regulares, e ~* faz avaliação
-   não sensível a maiúsculas de expressões regulares. A variante não
-   sensível a maiúsculas do LIKE é chamada de ILIKE.
-   
-   Comparações de igualdade não sensíveis a maiúsculas são normalmente
-   expressadas como:
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-   Isso não irá utilizar o índice padrão. Contudo, se você criar um
-   índice de expressão, ele será utilizado:
-    CREATE INDEX tabindex ON tab (lower(col));
-
-   Se o índice acima é criado como UNIQUE, embora a coluna possa
-   armazenar caracteres maiúsculos e minúsculos, ele não pode ter valores
-   idênticos que diferem apenas em letras maiúsculas e minúsculas. Para
-   forçar uma letra maiúscula ou minúscula a ser armazenada na coluna,
-   utilize uma restrição CHECK ou um gatilho.
-   
-  4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso
-  concatenar possíveis NULLs? Como eu posso ordenar por um campo que é NULL ou
-  não?
-  
-   Você testa a coluna com IS NULL e IS NOT NULL, como a seguir:
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   Para concatenar com possíveis NULLs, utilize COALESCE(), assim:
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-
-   Para ordenar pelo status NULL, utilize os modificadores IS NULL e IS
-   NOT NULL na sua cláusula ORDER BY. Coisas que são verdadeiro serão
-   ordenadas acima das coisas que são falso, então a consulta a seguir
-   irá colocar entradas NULL no início da lista de resultados:
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-  4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
-  
-   Tipo Nome Interno Observação
-   VARCHAR(n) varchar tamanho especifica o tamanho máximo, sem
-   preenchimento
-   CHAR(n) bpchar preenchimento em branco para comprimento fixo
-   específico
-   TEXT text nenhum limite superior específico no comprimento
-   BYTEA bytea vetor de bytes de comprimento variável (seguro a byte
-   nulo)
-   "char" char um caracter
-   
-   Você verá o nome interno quando examinar o catálogo do sistema e em
-   algumas mensagens de erro.
-   
-   Os primeiros quatro tipos acima são do tipo "varlena" (i.e., os
-   primeiros quatro bytes no disco são o comprimento seguido pelos
-   dados). Consequentemente o espaço atual utilizado é ligeiramente maior
-   do que o tamanho declarado. Contudo, valores longos são também
-   sujeitos a compressão, então o espaço em disco pode também ser bem
-   menor do que o esperado.
-   VARCHAR(n) é melhor quando está armazenando cadeias de caracteres de
-   comprimento variável e há um limite de tamanho desta cadeia. TEXT é
-   para cadeias de caracteres de comprimento ilimitado, com o máximo de
-   um gigabyte.
-   
-   CHAR(n) é para armazenar cadeias de caracteres que são todas do mesmo
-   tamanho. CHAR(n) preenche com espaços em branco até o tamanho
-   especificado, enquanto o VARCHAR(n) armazena somente os caracteres
-   fornecidos. BYTEA é para armazenar dados binários, particularmente
-   valores que incluem bytes NULL. Todos os tipos descritos aqui tem
-   características de performance similares.
-   
-  4.11.1) Como eu crio um campo serial/auto incremento?
-  
-   PostgreSQL suporta o tipo de dados SERIAL. Ele cria automaticamente
-   uma sequência. Por exemplo:
-    CREATE TABLE pessoa (
-        id   SERIAL,
-        nome TEXT
-    );
-
-   é automaticamente traduzido em:
-    CREATE SEQUENCE pessoa_id_seq;
-    CREATE TABLE pessoa (
-        id   INT4 NOT NULL DEFAULT nextval('pessoa_id_seq'),
-        nome TEXT
-    );
-
-   Sequências automaticamente criadas são nomeadas como
-   <tabela>_<colunaserial>_seq, onde tabela e colunaserial são os nomes
-   da tabela e da coluna serial, respectivamente. Veja a página sobre
-   create_sequence no manual para obter informações adicionais sobre
-   sequências.
-   
-  4.11.2) Como eu consigo o valor de um campo SERIAL?
-  
-   A maneira mais simples de obter o próximo valor SERIAL de uma
-   sequência é com RETURNING. Utilizando o exemplo da tabela em 4.11.1,
-   ele ficaria assim:
-    INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id;
-
-   Você também pode chamar nextval() e utilizar o valor no INSERT ou
-   chamar currval() após o INSERT.
-   
-  4.11.3) currval() não lida com condição de corrida com outros usuários?
-  
-   Não. currval() retorna o valor atual atribuido pela sua sessão, e não
-   por todas as sessões.
-   
-  4.11.4) Por que os números da minha sequência não são reutilizados quando uma
-  transação é abortada? Por que há intervalos nos números da minha
-  sequência/coluna SERIAL?
-  
-   Para melhorar a concorrência, valores da sequência são atribuídos a
-   transações correntes e não são travados até que a transação seja
-   finalizada. Isso causa intervalos na numeração por causa de transações
-   abortadas.
-   
-  4.12) O que é um OID? O que é um CTID?
-  
-   Se uma tabela é criada com WITH OIDS, cada registro recebe um OID
-   único. OIDs são automaticamente atribuídos como inteiros de 4 bytes
-   que são únicos ao longo de toda instalação. Contudo, eles são
-   limitados em 4 bilhões e, então, os OIDs começam a ser duplicados. O
-   PostgreSQL utiliza OIDs para ligar as tabelas do sistema.
-   
-   Para numerar registros nas tabelas do usuários, é melhor utilizar
-   SERIAL ao invés de OIDs porque sequências SERIAL são únicas somente em
-   uma tabela; e são menos propícias a atingir o limite. SERIAL8 está
-   disponível para armazenar valores de sequências com oito bytes.
-   
-   CTIDs são utilizados para identificar registros físicos específicos
-   com valores de block e deslocamento. CTIDs mudam após registros serem
-   modificados ou recarregados. Eles são utilizados por índices para
-   apontar registros físicos.
-   
-  4.13) Por que eu recebo o erro "ERROR: Memory exhausted in AllocSetAlloc()"?
-  
-   Você provavelmente está sem memória virtual no seu sistema, ou o seu
-   núcleo (kernel) tem um limite baixo para certos recursos. Tente isto
-   antes de iniciar o servidor PostgreSQL:
-    ulimit -d 262144
-    limit datasize 256m
-
-   Dependendo da sua shell, somente um desses comando terá sucesso, mas
-   ele definirá o segmento de dados do seu processo com um limite maior e
-   talvez permita que a consulta seja feita. Este comando é aplicado ao
-   processo atual e todos os subprocessos criados depois do comando ser
-   executado. Se você tiver problemas com o cliente SQL porque o processo
-   servidor retornou muitos dados, tente-o antes de iniciar o cliente.
-   
-  4.14) Como eu informo qual versão do PostgreSQL eu estou utilizando?
-  
-   No psql, digite SELECT version();
-   
-  4.15) Como eu crio uma coluna que conterá por padrão a hora atual?
-  
-   Utilize CURRENT_TIMESTAMP:
-        CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP);
-
-  4.16) Como eu faço uma junção externa (outer join)?
-  
-   PostgreSQL suporta junções externas utilizando a sintaxe padrão do
-   SQL. Aqui temos dois exemplos:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   or
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   Essas duas consultas indênticas juntam t1.col com t2.col, e também
-   retornam qualquer registro que não foi juntado em t1 (aqueles que não
-   combinaram com t2). Uma junção a direita RIGHT adicionaria registros
-   que não foram juntados da tabela t2. Uma junção completa (FULL)
-   retornaria os registros combinados mais todos os registros não
-   combinados de t1 e t2. A palavra OUTER é opcional e é assumida nas
-   junções LEFT, RIGHT e FULL. Junções ordinárias são chamadas junções
-   internas (INNER).
-   
-  4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
-  
-   Não há outra maneira de consultar um banco de dados caso ele não seja
-   o atual. Porque o PostgreSQL carrega catálogos do sistema específicos
-   do banco de dados, é incerto como uma consulta em banco de dados
-   distintos pode se comportar.
-   
-   contrib/dblink permite consultas em bancos de dados distintos
-   utilizando chamadas de funções. É claro, que um cliente pode fazer
-   conexões simultâneas em bancos de dados diferentes e juntar os
-   resultados no cliente.
-   
-  4.18) Como eu retorno múltiplos registros ou colunas de uma função?
-  
-   É fácil utilizando funções que retornam conjunto,
-   http://www.postgresql.org/docs/techdocs.17.
-   
-  4.19) Por que eu obtenho erros "relation with OID ###### does not exist" ao
-  acessar tabelas temporárias em funções PL/PgSQL?
-  
-   Em versões do PostgreSQL < 8.3, PL/PgSQL armazena o conteúdo da
-   função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
-   tabela temporária, e aquela tabela é removida e criada novamente, e a
-   função é chamada novamente, a função irá falhar porque o conteúdo
-   armazenado da função ainda apontará para a tabela temporária antiga. A
-   solução é utilizar o EXECUTE para acesso a tabelas temporárias no
-   PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.
-   
-   Este problema não ocorre no PostgreSQL 8.3 ou superior.
-   
-  4.20) Quais soluções de replicação estão disponíveis?
-  
-   Embora "replicação" seja um termo simples, há várias tecnologias para
-   fazer replicação, com vantagens e desvantagens para cada um.
-   
-   Replicação mestre/escravo permite que um mestre receba consultas de
-   leitura e escrita, enquanto os escravos só podem aceitar
-   leitura/consultas SELECT. A solução mais popular de replicação
-   mestre-escravo para PostgreSQL disponível livremente é Slony-I.
-   
-   Replicação com múltiplos mestres permite que consultas leitura/escrita
-   sejam enviadas para múltiplos computadores replicadores. Esta
-   capacidade também tem um sério impacto na performance por causa da
-   necessidade de sincronizar as mudanças entre os servidores. PGCluster
-   é a solução mais popular disponível livremente para PostgreSQL.
-   
-   Há também soluções de replicação comerciais e baseadas em hardware
-   disponíveis que suportam uma variedade de modelos de replicação.
-   
-  4.21) Por que os nomes de minhas tabelas e colunas não são reconhecidos em
-  minha consulta? Por que as maiúsculas não são preservadas?
-  
-   A causa mais comum de nomes desconhecidos é o uso de aspas ao redor
-   dos nomes da tabela ou coluna durante a criação da tabela. Ao utilizar
-   aspas, nomes de tabela e coluna (chamados de identificadores) são
-   armazenados como especificado, significando que você deve utilizar
-   aspas quando se referir aos nomes na consulta. Algumas interfaces,
-   como pgAdmin, automaticamente colocam aspas nos identificadores
-   durante a criação da tabela. Então, para identificadores serem
-   reconhecidos, você deve:
-     * Evitar colocar aspas no identificador ao criar tabelas
-     * Utilizar somente caracteres minúsculos em identificadores
-     * Colocar aspas em identificadores ao referenciá-los nas consultas
diff --git a/doc/FAQ_chinese_simp b/doc/FAQ_chinese_simp
deleted file mode 100644 (file)
index fde161f..0000000
+++ /dev/null
@@ -1,801 +0,0 @@
-
-                          PostgreSQL å¸¸è§é®é¢ï¼FAQï¼
-                                       
-   æè¿æ´æ°ï¼2007 å¹´ 1 æ 30 æ¥ ææäº 17:37:01 EST
-   ä¸æçæè¿æ´æ°ï¼2007 å¹´ 2 æ 1 æ¥ ææå 12:55:04 CST
-   
-   ç®åç»´æ¤äººåï¼Bruce Momjian (pgman@candle.pha.pa.us)
-   ä¸æçç»´æ¤äººåï¼Daojing.Zhouï¼doudou586@gmail.comï¼
-   
-   æ¬ææ¡£çææ°çæ¬å¯ä»¥å¨
-   http://www.postgresql.org/files/documentation/faqs/FAQ.htmlæ¥çã
-   
-   ä¸æä½ç³»ç»å¹³å°ç¸å³çé®é¢å¯å¨http://www.postgresql.org/docs/faq/éæ¾å°ç­
-   æ¡ã
-     _________________________________________________________________
-   
-常è§é®é¢
-
-   1.1)PostgreSQL æ¯ä»ä¹ï¼è¯¥æä¹åé³ï¼
-   1.2)è°æ§å¶å管çPostgreSQL ï¼
-   1.3)PostgreSQLççææ¯ä»ä¹ï¼
-   1.4)PostgreSQLå¯ä»¥è¿è¡å¨åªäºæä½ç³»ç»å¹³å°ä¸ï¼
-   1.5)æä»åªéè½å¾å°PostgreSQLï¼
-   1.6)ææ°ççPostgreSQL æ¯ä»ä¹ï¼
-   1.7)æä»åªéè½å¾å°å¯¹PostgreSQL çæ¯æï¼
-   1.8)æå¦ä½æäº¤ä¸ä¸ªBUGæ¥åï¼
-   1.9)æå¦ä½äºè§£å·²ç¥ç BUG ææç¼ºçåè½ï¼
-   1.10)è½å¤è·åçææ°ææ¡£æåªäºï¼
-   1.11)æåºè¯¥ææ ·å¦ä¹  SQL ï¼
-   1.12)å¦ä½æäº¤è¡¥ä¸ææ¯å å¥å¼åéä¼ï¼
-   1.13)PostgreSQL åå¶ä»æ°æ®åºç³»ç»æ¯èµ·æ¥å¦ä½ï¼
-   1.14)PostgreSQL å¯ä»¥å¤çæè¿å个å½å®¶å¤æ¶å¶çåååï¼
-   
-ç¨æ·å®¢æ·ç«¯é®é¢
-
-   2.1)æä»¬å¯ä»¥ç¨ä»ä¹è¯è¨åPostgreSQL æäº¤éï¼
-   2.2)æä»ä¹å·¥å·å¯ä»¥æPostgreSQL ç¨äº Web é¡µé¢ï¼
-   2.3)PostgreSQL æ¥æå¾å½¢ç¨æ·çé¢åï¼
-   
-ç³»ç»ç®¡çé®é¢
-
-   3.1)æææ ·æè½æPostgreSQL è£å¨ /usr/local/pgsql ä»¥å¤çå°æ¹ï¼
-   3.2)æå¦ä½æ§å¶æ¥èªå¶ä»çµèçè¿æ¥ï¼
-   3.3)æææ ·è°æ´æ°æ®åºæå¡å¨ä»¥è·å¾æ´å¥½çæ§è½ï¼
-   3.4)PostgreSQL éå¯ä»¥è·å¾ä»ä¹æ ·çè°è¯ç¹æ§ï¼
-   3.5)为ä»ä¹å¨è¯å¾è¿æ¥ç»å½æ¶æ¶å°âSorry, too many clientsâ æ¶æ¯ï¼
-   3.6)PostgreSQLçå级è¿ç¨æåªäºå容ï¼
-   3.7)(使ç¨PostgreSQL)æéè¦ä½¿ç¨ä»ä¹è®¡ç®æºç¡¬ä»¶ ï¼
-   
-æä½é®é¢
-
-   4.1) å¦ä½åªéæ©ä¸ä¸ªæ¥è¯¢ç»æç头å è¡ï¼ææ¯éæºçä¸è¡ï¼
-   4.2)
-   å¦ä½æ¥ç表ãç´¢å¼ãæ°æ®åºä»¥åç¨æ·çå®ä¹ï¼å¦ä½æ¥çpsqléç¨å°çæ¥è¯¢æä»¤å¹¶æ¾ç
-   ¤ºå®ä»¬ï¼
-   4.3) å¦ä½æ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åï¼
-   4.4) åæ¡è®°å½ï¼å个表ï¼ä¸ä¸ªæ°æ®åºçæå¤§éå¶æ¯å¤å°ï¼
-   4.5) åå¨ä¸ä¸ªå¸åçææ¬æä»¶éçæ°æ®éè¦å¤å°ç£ç空é´ï¼
-   4.6) ä¸ºä»ä¹æçæ¥è¯¢å¾æ¢ï¼ä¸ºä»ä¹è¿äºæ¥è¯¢æ²¡æå©ç¨ç´¢å¼ï¼
-   4.7) æå¦ä½æè½çå°æ¥è¯¢ä¼å卿¯ææ ·è¯ä¼°å¤çæçæ¥è¯¢çï¼
-   4.8) æææ ·åæ£åè¡¨è¾¾å¼æç´¢å大å°åæ å³çæ­
-   £åè¡¨è¾¾å¼æ¥æ¾ï¼ææ ·å©ç¨ç´¢å¼è¿è¡å¤§å°åæ å³æ¥æ¾ï¼
-   4.9) å¨ä¸ä¸ªæ¥è¯¢éï¼æææ ·æ£æµä¸ä¸ªå段æ¯å¦ä¸º
-   NULLï¼æå¦ä½æè½åç¡®æåºèä¸è®ºæå段æ¯å¦å«NULLå¼ï¼
-   4.10) åç§å符类åä¹é´æä»ä¹ä¸åï¼
-   4.11.1) æææ ·å建ä¸ä¸ªåºåå·åææ¯èªå¨éå¢çåæ®µï¼
-   4.11.2) æå¦ä½è·å¾ä¸ä¸ªæå¥çåºåå·çå¼ï¼
-   4.11.3) åæ¶ä½¿ç¨ currval() ä¼å¯¼è´åå¶ä»ç¨æ·çå²çªæåµåï¼
-   4.11.4) ä¸ºä»ä¹ä¸å¨äºå¡å¼å¸¸ä¸æ¢åéç¨åºåå·å¢ï¼ä¸ºä»ä¹å¨åºåå·å段çåå¼ä¸­
-   åå¨é´æå¢ï¼
-   4.12) ä»ä¹æ¯ OIDï¼ä»ä¹æ¯ CTID ï¼
-   4.13) ä¸ºä»ä¹ææ¶å°é误信æ¯âERROR: Memory exhausted in
-   AllocSetAlloc()âï¼
-   4.14) æå¦ä½æè½ç¥éæè¿è¡ç PostgreSQL ççæ¬ï¼
-   4.15) æå¦ä½å建ä¸ä¸ªç¼ºç弿¯å½åæ¶é´çåæ®µï¼
-   4.16) å¦ä½æ§è¡å¤è¿æ¥ï¼outer joinï¼æ¥è¯¢ï¼
-   4.17) å¦ä½æ§è¡æ¶åå¤ä¸ªæ°æ®åºçæ¥è¯¢ï¼
-   4.18) å¦ä½è®©å½æ°è¿åå¤è¡æå¤åæ°æ®ï¼
-   4.19) ä¸ºä»ä¹æå¨ä½¿ç¨PL/PgSQL彿°åå临æ¶è¡¨æ¶ä¼æ¶å°é误信æ¯ârelation
-   with OID ##### does not existâï¼
-   4.20) ç®åæåªäºæ°æ®å¤å¶æ¹æ¡å¯ç¨ï¼
-   4.21) ä¸ºä½æ¥è¯¢ç»ææ¾ç¤ºç表åæååä¸æçæ¥è¯¢è¯å¥ä¸­
-   çä¸åï¼ä¸ºä½å¤§åç¶æä¸è½ä¿çï¼
-     _________________________________________________________________
-   
-常è§é®é¢
-
-  1.1)PostgreSQL æ¯ä»ä¹ï¼è¯¥æä¹åé³ï¼
-  
-   PostgreSQL è¯»ä½ Post-Gres-Q-Lï¼ææ¶åä¹ç®ç§°ä¸ºPostgres
-   ãæ³å¬ä¸ä¸å¶åé³ç人åå¯ä»è¿éä¸è½½å£°é³æä»¶ï¼ MP3 æ ¼å¼ ã
-   
-   PostgreSQL
-   æ¯é¢åç®æ çå³ç³»æ°æ®åºç³»ç»ï¼å®å·æä¼ ç»å䏿°æ®åºç³»ç»çææåè½ï¼åæ¶å嫿å°å
-   ¨ä¸ä¸ä»£ DBMS ç³»ç»ç使ç¨çå¢å¼ºç¹æ§ãPostgreSQL
-   æ¯èªç±åè´¹çï¼å¹¶ä¸æææºä»£ç é½å¯ä»¥è·å¾ã
-   
-   PostgreSQL
-   çå¼åéä¼ä¸»è¦ä¸ºå¿æ¿èï¼ä»ä»¬éå¸ä¸çåå°å¹¶éè¿äºèç½è¿è¡èç³»ï¼è¿æ¯ä¸ä¸ªç¤¾å
-   ºå¼å项ç®ï¼å®ä¸è¢«ä»»ä½å¬å¸æ§å¶ã
-   å¦æ³å å¥å¼åéä¼ï¼è¯·åè§å¼å人å常è§é®é¢ï¼FAQï¼
-   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
-   
-  1.2) è°æ§å¶PostgreSQL ï¼
-  
-   å¦æä½ å¨å¯»æ¾PostgreSQLçæé¨äººï¼ææ¯ä»ä¹ä¸­
-   å¤®å§åä¼ï¼ææ¯ä»ä¹æå±å¬å¸ï¼ä½ åªè½æ¾å¼äº---å ä¸ºä¸ä¸ªä¹ä¸å­
-   å¨ï¼ä½æä»¬çç¡®æä¸ä¸ª
-   æ ¸å¿å§åä¼åCVS管çç»ï¼ä½è¿äºå·¥ä½ç»ç设ç«ä¸»è¦æ¯ä¸ºäºè¿è¡ç®¡çå·¥ä½è䏿
-   ¯å¯¹PostgreSQLè¿è¡ç¬å å¼æ§å¶ï¼PostgreSQLé¡¹ç®æ¯ç±ä»»ä½äººå
-   å¯åå çå¼å人å社åºåææç¨æ·æ§å¶çï¼ä½ æéè¦åçå°±æ¯è®¢éé®ä»¶å表ï¼åä¸è®¨è®º
-   å³å¯ï¼è¦åä¸PostgreSQLçå¼å详觠å¼å人å常é®é¢ (Developer's FAQ)
-   è·åä¿¡æ¯ï¼ã
-   
-  1.3)PostgreSQLççææ¯ä»ä¹?
-  
-   PostgreSQLçåå¸éµä»ç»å¸çBSDçæãå®åè®¸ç¨æ·ä¸éç®çå°ä½¿ç¨PostgreSQLï¼çè³ä½
-   å¯ä»¥éå®PostgreSQLèä¸å«æºä»£ç ä¹å¯ä»¥ï¼å¯ä¸çéå¶å°±æ¯ä½ ä¸è½å è½¯ä»¶èªè
-   º«é®é¢èåæä»¬è¿½è¯æ³å¾è´£ä»»ï¼å¦å¤å°±æ¯è¦æ±ææç软件æ·è´ä¸­
-   é¡»åæ¬ä»¥ä¸çæå£°æãä¸é¢å°±æ¯æä»¬æä½¿ç¨çBSDçæå£°æå容ï¼
-   
-   PostgreSQLæ°æ®åºç®¡çç³»ç»
-   
-   é¨åçæï¼cï¼1996-2005ï¼PostgreSQL å¨çå¼åå°ç»ï¼é¨åçæï¼cï¼1994-1996
-   å å·å¤§å¦è£äº
-   
-   ï¼Portions copyright (c) 1996-2005,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.ï¼
-   
-  1.4)PostgreSQL å¯ä»¥è¿è¡å¨åªäºæä½ç³»ç»å¹³å°ä¸ï¼
-  
-   ä¸è¬è¯´æ¥ï¼ä»»ä½ç°å¨å¯¹ UNIX å¼å®¹çæä½ç³»ç»ä¹ä¸é½è½è¿è¡PostgreSQL
-   ãå¨å®è£æåéååºäºå叿¶ç»è¿æç¡®æµè¯çå¹³å°ã
-   
-   PostgreSQlä¹å¯ä»¥ç´æ¥è¿è¡å¨åºäºå¾®è½¯Windows-NTçæä½ç³»ç»ï¼å¦Win2000
-   SP4ï¼WinXP å Win2003ï¼å·²å¶ä½å®æçå®è£åå¯ä»
-   http://pgfoundry.org/projects/pginstallerä¸è½½ï¼åºäºMSDOSçWindowsæä½ç³
-   »ç» ï¼Win95ï¼Win98ï¼WinMeï¼éè¦éè¿Cygwin模æç¯å¢è¿è¡PostgreSQLã
-   
-   åæ¶ä¹æä¸ä¸ªä¸ºNovell Netware 6å¼åççæ¬å¯ä»
-   http://forge.novell.comè·åï¼ä¸ºOS/2(eComStation)å¼åççæ¬å¯ä»
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F ä¸è½½ã
-   
-  1.5) æä»åªéè½å¾å°PostgreSQLï¼
-  
-   éè¿æµè§å¨å¯ä»http://www.postgresql.org/ftp/ä¸è½½ï¼ä¹å¯éè¿FTPï¼ä»
-   ftp://ftp.PostgreSQL.org/pub/ç«ç¹ä¸è½½ã
-   
-  1.6) ææ°ççPostgreSQLæ¯ä»ä¹ï¼
-  
-   PostgreSQL ææ°ççæ¬æ¯ç欠8.2.1 ã
-   
-   æä»¬è®¡åæ¯å¹´åå¸ä¸ä¸ªä¸»è¦åçº§çæ¬ï¼æ¯å ä¸ªæåå¸ä¸ä¸ªå°çæ¬ã
-   
-  1.7) æä»åªéè½å¾å°å¯¹PostgreSQLçæ¯æï¼
-  
-   PostgreSQL社åºéè¿é®ä»¶å表为å¶å¤§å¤æ°ç¨æ·æä¾å¸®å©ï¼è®¢éé®ä»¶å表ç主
-   ç«ç¹æ¯
-   http://www.postgresql.org/community/lists/ï¼ä¸è¬æåµä¸ï¼åå å¥General æ
-   Bugé®ä»¶å表æ¯ä¸ä¸ªè¾å¥½çå¼å§ã
-   
-   ä¸»è¦çIRCé¢éæ¯å¨FreeNode(irc.freenode.net)ç#postgresqlï¼ä¸ºäºè¿ä¸æ­
-   ¤é¢éï¼å¯ä»¥ä½¿ç¨UNIXç¨åºircï¼å¶æä»¤æ ¼å¼ï¼ irc -c '#postgresql'
-   "$USER" irc.freenode.net ï¼æè使ç¨å¶ä»IRC客æ·ç«¯ç¨åºã卿¤ç½ç»ä¸è¿å­
-   å¨ä¸ä¸ªPostgreSQLç西ççé¢é(#postgersql-es)åæ³è¯é¢é
-   (#postgresql-fr)ãåæ ·å°ï¼å¨EFNETä¸ä¹æä¸ä¸ªPostgreSQLç交æµé¢éã
-   
-   å¯æä¾å䏿¯æçå¬å¸å表å¯å¨http://techdocs.postgresql.org/companies.phpæµ
-   è§ã
-   
-  1.8) æå¦ä½æäº¤ä¸ä¸ªBUGæ¥åï¼
-  
-   å¯è®¿é®
-   http://www.postgresql.org/support/submitbugï¼å¡«åBug䏿¥è¡¨æ ¼å³å¯ï¼åæ
-    ·ä¹å¯è®¿é®ftpç«ç¹ftp://ftp.PostgreSQL.org/pub/
-   æ£æ¥ææ æ´æ°çPostgreSQLçæ¬æè¡¥ä¸ã
-   
-   éè¿ä½¿ç¨Bugæäº¤è¡¨æ ¼ææ¯åå¾PostgreSQLé®ä»¶å表çBugé叏伿以ä¸ä¹ä¸åå¤ï
-   ¼
-     * ææäº¤å容䏿¯ä¸ä¸ªBugåå¶ä¸æ¯Bugçåå ã
-     * ææäº¤å容æ¯ä¸ä¸ªå·²ç¥çBugå¹¶ä¸å·²ç»å å¥TODOå¾å¤çä»»å¡å表ã
-     * ææäº¤çBugå·²å¨å½åçæ¬ä¸è¢«ä¿®æ£ã
-     * ææäº¤çBug已修æ£ä½å°æªå°è¡¥ä¸å å¥ç°å¨çåå¸è½¯ä»¶åã
-     * è¯·æ±æäº¤èæä¾æ´è¯¦ç»çä¿¡æ¯ï¼
-          + æä½ç³»ç»
-          + PostgreSQLçæ¬
-          + å¯éç°Bugçæµè¯æ¡ä¾
-          + è°è¯ä¿¡æ¯
-          + è°è¯è·è¸ªè¾åº
-     * ææäº¤å容æ¯ä¸ä¸ªæ°Bugï¼å°æ§è¡ä»¥ä¸å·¥ä½ï¼
-          + å建ä¸ä¸ªæ°è¡¥ä¸å¹¶å°å¶å å¥ä¸ä¸ä¸ªä¸»è¦çæ¬ææ¯å°çæ¹è¿çæ¬ä¸ã
-          + æ¤Bugææ¶ä¸è½ä¿®æ£ï¼å°è¢«å è³TODOå¾å¤çä»»å¡å表ã
-       
-  1.9) æå¦ä½äºè§£å·²ç¥ç BUG ææç¼ºçåè½ï¼
-  
-   PostgreSQL æ¯æä¸ä¸ªæ©å±ç SQL:2003 çåéãåéæä»¬çTODO
-   å表ï¼äºè§£å·²ç¥Bugå表ãæç¼ºçåè½åå°æ¥çå¼å计åã
-   
-   è¦æ±å¢å æ°åè½çç³è¯·é叏伿¶å°ä»¥ä¸ä¹ä¸çåå¤ï¼
-     * è¯¥åè½å·²å å¥TODOå¾å¤çä»»å¡å表ã
-     * è¯¥åè½ä¸æ¯å¿é¡»çï¼å ä¸ºï¼
-          + å®æ¯ç°æçä¸ç¬¦åSQLæ åçæåè½çéå¤ã
-          + è¯¥åè½æ§ä¼å¤§å¤§å¢å ä»£ç ç夿ç¨åºï¼è带æ¥ç好夿¯å¾®ä¸è¶³éçã
-          + è¯¥åè½æ¯ä¸å®å¨ææ¯ä¸å¯é çã
-     * è¯¥åè½å°è¢«å å¥TODOå¾å¤çä»»å¡å表ã
-       
-   PostgreSQLä¸ä½¿ç¨Bugè·è¸ªç³»ç»ï¼å ä¸ºæä»¬åç°å¨é®ä»¶å表中
-   ç´æ¥åå¤ä»¥åä¿è¯TODOä»»å¡åè¡¨æ»æ¯å¤äºææ°ç¶æçæ¹å¼å·¥ä½æç伿´é«ä¸äºãäºå®ä
-   ¸ï¼Bugä¸ä¼å¨æä»¬ç软件ä¸åå¨å¾é¿æ¶é´ï¼
-   å¯¹å½±åå¾å¤ç¨æ·çBug乿»æ¯å¾å¿«ä¼è¢«ä¿®æ£ãå¯ä¸è½æ¾å°æææ¹è¿ãæé«åä¿®æ­
-   £çå°æ¹æ¯CVSçæ¥å¿ä¿¡æ¯ï¼å³ä½¿æ¯å¨è½¯ä»¶æ°çæ¬çåå¸ä¿¡æ¯ä¸­
-   ä¹ä¸ä¼ååºæ¯ä¸å¤çè½¯ä»¶æ´æ°ã
-   
-  1.10) è½å¤è·åçææ°ææ¡£æåªäºï¼
-  
-   PostgreSQLåå«å¤§éçææ¡£ï¼ä¸»è¦æè¯¦ç»çåèæåï¼æå页åä¸äºçæµè¯ä¾åãåè§ /doc
-   ç®å½ï¼è¯æ³¨ï¼åºä¸º $PGHOME/docï¼ã
-   ä½ è¿å¯ä»¥å¨çº¿æµè§PostgreSQLçæåï¼å¶ç½åæ¯ï¼http://www.PostgreSQL.org/d
-   ocsã
-   
-   æä¸¤æ¬å³äºPostgreSQLç书å¨çº¿æä¾ï¼å¨
-   http://www.PostgreSQL.org/docs/awbook.html å
-   http://www.commandprompt.com/ppbook/ ã ä¹æå¤§éçPostgreSQL书ç±å¯ä¾è´­
-   ä¹°ï¼å¶ä¸æä¸ºæµè¡ç䏿¬æ¯ç±Korry Douglasç¼åçãå¨
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.phpä¸
-   ä¸æå¤§éæå³PostgreSQL书ç±çç®ä»ã å¨
-   http://techdocs.PostgreSQL.org/䏿¶éäºæå³PostgreSQLç大鿿¯æç« ã
-   
-   å®¢æ·ç«¯çå½ä»¤è¡ç¨åºpsqlæä¸äºä»¥ \d
-   å¼å¤´çå½ä»¤ï¼å¯æ¾ç¤ºå³äºç±»åï¼æä½ç¬¦ï¼å½æ°ï¼èåçä¿¡æ¯ï¼ä½¿ç¨ \?
-   å¯ä»¥æ¾ç¤ºææå¯ç¨çå½ä»¤ã
-   
-   æä»¬ç web ç«ç¹å嫿´å¤çææ¡£ã
-   
-  1.11) æåºè¯¥ææ ·å¦ä¹  SQL ï¼
-  
-   é¦åèèä¸è¿°æå°çä¸PostgreSQLç¸å³ç书ç±ï¼å¦å¤ä¸æ¬æ¯Teach Yourself SQL in
-   21 Days, Second Editionï¼å¶è¯¦ç»ä»ç»çç½åæ¯
-   http://members.tripod.com/er4ebus/sql/index.htmï¼
-   æä»¬ç许å¤ç¨æ·å欢The Practical SQL Handbookï¼ Bowman, Judith S.
-   ç¼åï¼Addison-Wesleyå¬å¸åºçï¼å¶ä»çå忬¢ The Complete Reference SQL,
-   Groff ç¼åï¼McGraw-Hillå¬å¸åºçã
-   
-   å¨ä¸åç½åä¸ä¹æå¾å¥½çæç¨ï¼ä»ä»¬æ¯
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com.
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12)å¦ä½æäº¤è¡¥ä¸ææ¯å å¥å¼åéä¼ï¼
-  
-   è¯¦è§ å¼å人å常è§é®é¢ (Developer's FAQ) ã
-   
-  1.13)PostgreSQLåå¶ä»æ°æ®åºç³»ç»æ¯èµ·æ¥å¦ä½ï¼
-  
-   è¯ä»·è½¯ä»¶æå¥½å ç§æ¹æ³ï¼åè½ï¼æ§è½ï¼å¯é æ§ï¼æ¯æåä»·æ ¼ã
-   
-   åè½
-          PostgreSQL æ¥æå¤§ååç¨æ°æ®åºæå¤çåè½ï¼ä¾å¦ï¼äºå¡ï¼å­
-          æ¥è¯¢ï¼è§¦åå¨ï¼è§å¾ï¼å¤é®åè宿´æ§å夿çéå®çã
-          æä»¬è¿æä¸äºå®ä»¬æ²¡æçç¹æ§ï¼å¦ç¨æ·å®ä¹ç±»åï¼ç»§æ¿ï¼è§ååå¤çæ¬å¹¶è
-          ¡æ§å¶ä»¥åå°éçäºç¨çã
-          
-   æ§è½
-          PostgreSQLåå¶ä»åç¨å弿ºçæ°æ®åºå·æç±»ä¼¼çæ§è½ã对æäºå¤ç宿¯è¾å¿«
-          ï¼å¯¹å¶ä»ä¸äºå¤ç宿¯è¾æ¢ã ä¸å¶ä»æ°æ®åºç¸æ¯ï¼æä»¬çæ§è½ä¼å£é常å¨
-          +/- 10%ä¹é´ã
-          
-   å¯é æ§
-          æä»¬é½ç¥éæ°æ®åºå¿é¡»æ¯å¯é çï¼å¦åå®å°±ä¸ç¹ç¨é½æ²¡æãæä»¬åªååå°åå¸
-          ç»è¿è®¤çæµè¯çï¼ç¼ºé·æå°ç稳å®ä»£ç ãæ¯ä¸ªçæ¬è³å°æä¸ä¸ªæç beta
-          æµè¯æ¶é´ï¼å¹¶ä¸æä»¬çåå¸å岿¾ç¤ºæä»¬å¯ä»¥æä¾ç¨³å®çï¼ç¢åºçï¼å¯ç¨ä
-          ºç产使ç¨ççæ¬ãæä»¬ç¸ä¿¡å¨è¿æ¹é¢æä»¬ä¸å¶ä»çæ°æ®åºè½¯ä»¶æ¯ç¸å½çã
-          
-   æ¯æ
-          æä»¬çé®ä»¶å表æä¾ä¸ä¸ªé常大çå¼å人ååç¨æ·çç»ä»¥å¸®å©è§£å³æç¢°å
-          °çä»»ä½é®é¢ãæä»¬ä¸è½ä¿è¯æ»æ¯è½è§£å³é®é¢ï¼ç¸æ¯ä¹ä¸ï¼åç¨æ°æ®åºè½¯
-          ä»¶ä¹å¹¶ä¸æ¯æ»è½å¤æä¾è§£å³æ¹æ³ã
-          ç´æ¥ä¸å¼å人åï¼ç¨æ·ç¾¤ï¼æååæºç¨åºæ¥è§¦ä½¿PostgreSQLçæ¯ææ¯å¶ä»æ°
-          æ®åºè¿è¦å¥½ãè¿æä¸äºå䏿§çå¨é¢ææ¯æ¯æï¼å¯ä»¥ç»æä¾ç»é£äºéè¦ç人ãï¼
-          åé1.7 å°èï¼
-          
-   ä»·æ ¼
-          æä»¬å¯¹ä»»ä½ç¨éé½åè´¹ï¼åæ¬åç¨åéåç¨ç®çã
-          ä½ å¯ä»¥ä¸å éå¶å°åä½ ç产åéå å¥æä»¬ç代ç ï¼é¤äºé£äºæä»¬å¨ä¸é¢çç
-          æå£°æé声æç BSDçæä¹å¤çå容ã
-          
-  1.14) PostgreSQLå¯ä»¥å¤çæè¿å个å½å®¶å¤æ¶å¶çååå?
-  
-   PostgreSQL 8.0ä¹åççæ¬æ¯ä½¿ç¨æä½ç³»ç»ä¸­
-   çæ¶åºæ°æ®åºæ¥å¤ç夿¶å¶çä¿¡æ¯ï¼èª8.0çå以åççæ¬PostgreSQLä¼èªèº«å«æææ°çæ
-   ¶åºä¿¡æ¯ã
-     _________________________________________________________________
-   
-ç¨æ·å®¢æ·ç«¯é®é¢
-
-  2.1) æä»¬å¯ä»¥ç¨ä»ä¹è¯è¨åPostgreSQLæäº¤éï¼
-  
-   PostgreSQL(缺çæåµ)åªå®è£æCåååµå¼Cçæ¥å£ï¼å¶ä»çæ¥å£é½æ¯ç¬ç«ç项ç®ï¼è½å¤
-   åå«ä¸è½½ï¼è¿äºæ¥å£é¡¹ç®ç¬ç«ç好å¤
-   æ¯ä»ä»¬å¯ä»¥æåèªçåå¸è®¡åååèªç¬ç«çå¼åç»ã
-   
-   ä¸äºç¼ç¨è¯­
-   è¨å¦PHPé½æè®¿é®PostgreSQLçæ¥å£ï¼PerlãTCLãPython以åå¾å¤å¶ä»è¯è¨çæ¥å£å¨
-   http://gborg.postgresql.orgç½ç«ä¸çDrivers/Interfaceså°è坿¾å°ï¼
-   å¹¶ä¸éè¿Internetå¾å®¹ææç´¢å°ã
-   
-  2.2) æä»ä¹å·¥å·å¯ä»¥æPostgreSQLç¨äº Web é¡µé¢ï¼
-  
-   ä¸ä¸ªä»ç»ä»¥æ°æ®åºä¸ºåå°çæºä¸éçç«ç¹æ¯ï¼http://www.webreview.comã
-   
-   å¯¹äº Web éæï¼PHP æ¯ä¸ä¸ªæå¥½çæ¥å£ãå®å¨http://www.php.net/ã
-   
-   å¯¹äºå¤æçä»»å¡ï¼å¾å¤äººé稠Perl æ¥å£å ä½¿ç¨CGI.pmçDBD::Pg æ mod_perl ã
-   
-  2.3)PostgreSQLæ¥æå¾å½¢ç¨æ·çé¢åï¼
-  
-   åä¸ç¨æ·ææ¯å¼æºå¼å人åè½æ¾å°å¾å¤çæå³PostgreSQLçGUIå¾å½¢å·¥å·è½¯ä»¶ï¼å¨
-   PostgreSQLç¤¾åºææ¡£æä¸ä¸ªè¯¦ç»çå表ã
-     _________________________________________________________________
-   
-ç³»ç»ç®¡çé®é¢
-
-  3.1)æææ ·è½æPostgreSQLè£å¨ /usr/local/pgsql ä»¥å¤çå°æ¹ï¼
-  
-   å¨è¿è¡ configure æ¶å ä¸ --prefix é项ã
-   
-  3.2) æå¦ä½æ§å¶æ¥èªå¶ä»çµèçè¿æ¥ï¼
-  
-   ç¼ºçæåµä¸ï¼PostgreSQLåªå许æ¥èªæ¬æºä¸éè¿ unix å奿¥åæTCP/IPæ¹å¼çè¿æ¥ã
-   ä½ åªæå¨ä¿®æ¹äºéç½®æä»¶postgresql.conf中
-   çlisten_addressesï¼ä¸ä¹å¨éç½®æä»¶$PGDATA/pg_hba.conf䏿å¼äº
-   åºäºè¿ç¨çµèï¼ host-based
-   ï¼ç身份认è¯ï¼å¹¶éæ°å¯å¨PostgreSQLï¼å¦åå¶ä»çµèæ¯ä¸è½ä¸ä½ çPostgreSQL
-   æå¡å¨è¿è¡è¿æ¥çã
-   
-  3.3) æææ ·è°æ´æ°æ®åºå¼æä»¥è·å¾æ´å¥½çæ§è½ï¼
-  
-   æä¸ä¸ªä¸»è¦æ¹é¢å¯ä»¥æåPostgreSQLçæ½è½ã
-   
-   æ¥è¯¢æ¹å¼çåå
-          è¿ä¸»è¦æ¶åä¿®æ¹æ¥è¯¢æ¹å¼ä»¥è·åæ´å¥½çæ§è½:
-          
-          + å建索å¼ï¼åæ¬è¡¨è¾¾å¼åé¨åç´¢å¼ï¼
-          + ä½¿ç¨COPYè¯å¥ä»£æ¿å¤ä¸ªInsertè¯å¥ï¼
-          + å°å¤ä¸ªSQLè¯å¥ç»æä¸ä¸ªäºå¡ä»¥åå°æäº¤äºå¡çå¼éï¼
-          + ä»ä¸ä¸ªç´¢å¼ä¸æå夿¡è®°å½æ¶ä½¿ç¨CLUSTERï¼
-          + ä»ä¸ä¸ªæ¥è¯¢ç»æä¸ååºé¨åè®°å½æ¶ä½¿ç¨LIMITï¼
-          + ä½¿ç¨é¢ç¼è¯å¼æ¥è¯¢ï¼Prepared Query)ï¼
-          + ä½¿ç¨ANALYZEä»¥ä¿æç²¾ç¡®çä¼åç»è®¡ï¼
-          + å®æä½¿ç¨ VACUUM æ pg_autovacuum
-          + è¿è¡å¤§éæ°æ®æ´æ¹æ¶åå é¤ç´¢å¼ï¼ç¶åé建索å¼ï¼
-            
-   æå¡å¨çéç½®
-          éç½®æä»¶postgres.conf中
-          çå¾å¤è®¾ç½®é½ä¼å½±åæ§è½ï¼ææåæ°çå表å¯è§ï¼
-          ç®¡çåæå/æ°æ®åºæå¡å¨è¿è¡ç¯å¢/æ°æ®åºæå¡å¨è¿è¡éç½®ï¼
-          æå³åæ°çè§£éå¯è§ï¼http://www.varlena.com/varlena/GeneralBits/Tid
-          bits/annotated_conf_e.html å
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.htmlã
-          
-   ç¡¬ä»¶çéæ©
-          è®¡ç®æºç¡¬ä»¶å¯¹æ§è½çå½±å坿µè§
-          http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
-          x.html å http://www.powerpostgresql.com/PerfList/ã
-          
-  3.4)PostgreSQLéå¯ä»¥è·å¾ä»ä¹æ ·çè°è¯ç¹æ§ï¼
-  
-   PostgreSQL æå¾å¤ç±»ä¼¼ log_*
-   çæå¡å¨éç½®åéå¯ç¨äºæ¥è¯¢çæå°åè¿ç¨ç»è®¡ï¼èè¿äºå·¥ä½å¯¹è°è¯åæ§è½æµè¯å¾æå¸
-   ®å©ã
-   
-  3.5) ä¸ºä»ä¹å¨è¯å¾è¿æ¥æ¶æ¶å°âSorry, too many
-  clientsï¼å·²æå¤ªå¤ç¨æ·è¿æ¥ï¼âæ¶æ¯ï¼
-  
-   è¿è¡¨ç¤ºä½ å·²è¾¾å°ç¼ºç100个并ååå°è¿ç¨æ°çéå¶ï¼ä½ éè¦éè¿ä¿®æ¹postgres
-   ql.confæä»¶ä¸çmax_connections弿¥
-   å¢å postmasterçåå°å¹¶åå¤çæ°ï¼ä¿®æ¹åééæ°å¯å¨postmasterã
-   
-  3.6)PostgreSQLçå级è¿ç¨æåªäºå容 ï¼
-  
-   PostgreSQL å¼åç»å¯¹æ¯æ¬¡å°çæ¬çå级主è¦åªåäºä¸äºBugä¿®æ£å·¥ä½ï¼å æ¤ä»
-   7.4.8 å级尠7.4.9 ä¸é覠dump å restoreï¼ä»éè¦åæ­
-   ¢æ°æ®åºæå¡å¨ï¼å®è£æ´æ°åç软件åï¼ç¶åé坿å¡å¨å³å¯ã
-   
-   ææPostgreSQLçç¨æ·åºè¯¥å¨ææ¥è¿ï¼ä½ æä½¿ç¨çä¸»çæ¬ï¼çå°æ¹è¿çæ¬åå¸å°½å¿«åç
-   º§ãå°½ç®¡æ¯æ¬¡å级å¯è½é½æä¸ç¹é£é©ï¼PostgreSQLçå°æ¹è¿çä»ä»æ¯è®¾è®¡ç¨æ¥ä
-   ¿®æ­
-   £ä¸äºBugçï¼ä»£ç æ¹å¨è¾å°ï¼æä»¥é£é©è¿æ¯å¾å°çãPostgreSQL社åºè®¤ä¸ºä¸è¬æ
-   åµä¸ä¸å级çé£é©è¿æ¯å¤äºå级çã
-   
-   ä¸»çæ¬çå级ï¼ä¾å¦ä» 7.3 å° 7.4ï¼é常ä¼ä¿®æ¹ç³»ç»è¡¨åæ°æ®è¡¨çå鍿 ¼å¼ã
-   è¿äºæ¹åä¸è¬æ¯è¾å¤æï¼å æ¤æä»¬ä¸ç»´ææ°æ®æä»¶çååå¼å®¹æ§ãå æ¤ä»èçæ¬ä¸­
-   è¿è¡æ°æ®å¯¼åºï¼dumpï¼/ç¶å卿°çæ¬ä¸­
-   è¿è¡æ°æ®å¯¼å¥ï¼reloadï¼å¯¹ä¸»çæ¬çå级æ¯å¿é¡»çã
-   
-  3.7)(使ç¨PostgreSQL)æéè¦ä½¿ç¨ä»ä¹è®¡ç®æºç¡¬ä»¶ ï¼
-  
-   ç±äºè®¡ç®æºç¡¬ä»¶å¤§å¤æ°æ¯å¼å®¹çï¼äººä»¬æ»æ¯å¾åäºç¸ä¿¡ææè®¡ç®æºç¡¬ä»¶è
-   ´¨é乿¯ç¸åçãäºå®ä¸ä¸æ¯ï¼ ECC RAMï¼å¸¦å¥å¶æ ¡éªçååï¼ï¼SCSI
-   ï¼ç¡¬çï¼åä¼è´¨çä¸»æ¿æ¯ä¸äºä¾¿å®è´§è¦æ´å å¯é ä¸å·ææ´å¥½çæ§è½ãPostgreSQL
-   å ä¹å¯ä»¥è¿è¡å¨ä»»ä½ç¡¬ä»¶ä¸ï¼
-   ä½å¦æå¯é æ§åæ§è½å¯¹ä½ çç³»ç»å¾éè¦ï¼ä½ å°±éè¦å¨é¢çç ç©¶ä¸ä¸ä½ ç硬件éç
-   ½®äºã卿们çé®ä»¶å表ä¸ä¹æå³äº ç¡¬ä»¶éç½®åæ§ä»·æ¯ç讨论ã
-     _________________________________________________________________
-   
-æä½é®é¢
-
-  4.1) å¦ä½åªéæ©ä¸ä¸ªæ¥è¯¢ç»æç头å è¡ï¼ææ¯éæºçä¸è¡ï¼
-  
-   å¦æä½ åªæ¯è¦æåå è¡æ°æ®ï¼å¹¶ä¸ä½ å¨æ§è¡æ¥è¯¢ä¸­
-   ç¥éç¡®åçè¡æ°ï¼ä½ å¯ä»¥ä½¿ç¨LIMITåè½ã å¦ææä¸ä¸ªç´¢å¼ä¸ ORDER BY中
-   çæ¡ä»¶å¹éï¼PostgreSQL å¯è½å°±åªå¤çè¦æ±ç头堿¡è®°å½ï¼
-   ï¼å¦åå°å¯¹æ´ä¸ªæ¥è¯¢è¿è¡å¤çç´å°çæéè¦çè¡ï¼ã妿卿§è¡æ¥è¯¢åè½æ¶ä¸ç¥éç¡®å
-   çè®°å½æ°ï¼ å¯ä½¿ç¨æ¸¸æ (cursor)åFETCHåè½ã
-   
-   å¯ä½¿ç¨ä»¥ä¸æ¹æ³æåä¸è¡éæºè®°å½çï¼
-      SELECT  cols
-      FROM tab
-      ORDER BY random()
-      LIMIT 1 ;
-
-  4.2)
-  å¦ä½æ¥ç表ãç´¢å¼ãæ°æ®åºä»¥åç¨æ·çå®ä¹ï¼å¦ä½æ¥çpsqléç¨å°çæ¥è¯¢æä»¤å¹¶æ¾ç¤ºå®ä»¬
-  ï¼
-  
-   å¨psqlä¸ä½¿ç¨ \dt å½ä»¤æ¥æ¾ç¤ºæ°æ®è¡¨çå®ä¹ï¼è¦äºè§£psql中
-   ç宿´å½ä»¤å表å¯ä½¿ç¨\? ï¼å¦å¤ï¼ä½ ä¹å¯ä»¥é读 psql çæºä»£ç
-   æä»¶pgsql/src/bin/psql/describe.cï¼å®åæ¬ä¸ºçæpsqlåææ å½ä»¤çè¾åºçææ SQL
-   å½ä»¤ãä½ è¿å¯ä»¥å¸¦ -E é项å¯å¨ psqlï¼ è¿æ ·å®å°æå°åºä½ å¨psql中
-   æç»åºçå½ä»¤æ§è¡æ¶çåé¨å®é使ç¨çSQLæ¥è¯¢è¯­
-   å¥ãPostgreSQL乿ä¾äºä¸ä¸ªå¼å®¹SQLçINFORMATION SCHEMAæ¥å£ï¼
-   ä½ å¯ä»¥ä»è¿éè·åå³äºæ°æ®åºçä¿¡æ¯ã
-   
-   å¨ç³»ç»ä¸ä¹æä¸äºä»¥pg_ æå¤´çç³»ç»è¡¨ä¹æè¿°äºè¡¨çå®ä¹ã
-   
-   ä½¿ç¨ psql -l æä»¤å¯ä»¥ååºææçæ°æ®åºã
-   
-   ä¹å¯ä»¥æµè§ä¸ä¸
-   pgsql/src/tutorial/syscat.sourceæä»¶ï¼å®å举äºå¾å¤å¯ä»æ°æ®åºç³»ç»è¡¨ä¸
-   è·åä¿¡æ¯çSELECTè¯æ³ã
-   
-  4.3) å¦ä½æ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åï¼
-  
-   å¨8.0çæ¬éæ´æ¹ä¸ä¸ªåæ®µçæ°æ®ç±»åå¾å®¹æï¼å¯ä½¿ç¨ ALTER TABLE ALTER
-   COLUMN TYPE ã
-   
-   å¨ä»¥åççæ¬ä¸ï¼å¯ä»¥è¿æ ·åï¼
-   BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-
-   ä½ ç¶åå¯ä»¥ä½¿ç¨VACUUM FULL tab æä»¤æ¥ä½¿ç³»ç»æ¶åæ ææ°æ®æå ç¨ç空é´ã
-   
-  4.4) åæ¡è®°å½ï¼å个表ï¼åä¸ªæ°æ®åºçæå¤§éå¶æ¯å¤å°ï¼
-  
-   ä¸é¢æ¯ä¸äºéå¶ï¼
-   
-     åä¸ªæ°æ®åºæå¤§å°ºå¯¸ï¼   æ éå¶ï¼å·²å卿 32TB çæ°æ®åºï¼
-     å个表çæå¤§å°ºå¯¸ï¼     32 TB
-     ä¸è¡è®°å½çæå¤§å°ºå¯¸ï¼   1.6 TB
-     ä¸ä¸ªå段çæå¤§å°ºå¯¸?    1 GB
-     ä¸ä¸ªè¡¨éæå¤§è¡æ°ï¼      æ éå¶
-     ä¸ä¸ªè¡¨éæå¤§åæ°ï¼       250-1600 ï¼ä¸åç±»åæå³ï¼
-     ä¸ä¸ªè¡¨éçæå¤§ç´¢å¼æ°éï¼ æ éå¶
-   
-   å½ç¶ï¼å®é䏿²¡æçæ£çæ éå¶ï¼è¿æ¯è¦åå¯ç¨ç£ç空é´ãå¯ç¨åå/交æ¢åºçå¶çº¦ã
-   äºå®ä¸ï¼å½ä¸è¿°è¿äºæ°å¼åå¾å¼å¸¸å°å¤§æ¶ï¼ç³»ç»æ§è½ä¹ä¼åå¾å¤§å½±åã
-   
-   å表çæå¤§å¤§å° 32 TB
-   ä¸éè¦æä½ç³»ç»å¯¹å个æä»¶ä¹éè¿ä¹å¤§çæ¯æã大表ç¨å¤ä¸ª 1 GB çæä»¶å­
-   å¨ï¼å æ¤æä»¶ç³»ç»å¤§å°çéå¶æ¯ä¸éè¦çã
-   
-   å¦æç¼ºççå大å°å¢é¿å° 32K ï¼æå¤§çå表大å°åæå¤§åæ°è¿å¯ä»¥å¢å å°ååã
-   
-   æä¸ä¸ªéå¶å°±æ¯ä¸è½å¯¹å¤§å°å¤äº2000å­
-   èçåå建索å¼ã幸è¿å°æ¯è¿æ ·çç´¢å¼å¾å°ç¨å°ãéè¿å¯¹å¤å­
-   èåçå容è¿è¡MD5åç¨è¿ç®ç»æè¿è¡å½æ°ç´¢å¼å¯å¯¹åçå¯ä¸æ§å¾å°ä¿è¯ï¼
-   å¹¶ä¸å¨ææ£ç´¢å许对åä¸çåè¯è¿è¡æç´¢ã
-   
-  4.5) åå¨ä¸ä¸ªå¸åçææ¬æä»¶éçæ°æ®éè¦å¤å°ç£ç空é´ï¼
-  
-   ä¸ä¸ª Postgres æ°æ®åºï¼å­
-   å¨ä¸ä¸ªææ¬æä»¶ï¼æå ç¨çç©ºé´æå¤å¯è½éè¦ç¸å½äºè¿ä¸ªææ¬æä»¶èªèº«å¤§å°5åçç£
-   ç空é´ã
-   
-   ä¾å¦ï¼å设æä¸ä¸ª 100,000 è¡çæä»¶ï¼æ¯è¡æä¸ä¸ªæ´æ°åä¸ä¸ªææ¬æè¿°ã
-   åè®¾ææ¬ä¸²çå¹³åé¿åº¦ä¸º20åèãææ¬æä»¶å ç¨ 2.8 MBãå­
-   æ¾è¿äºæ°æ®çPostgreSQLæ°æ®åºæä»¶å¤§çº¦æ¯ 6.4 MB:
-     28 åè: æ¯è¡ç头ï¼å¤§çº¦å¼ï¼
-     24 åè: ä¸ä¸ªæ´æ°ååæ®µåä¸ä¸ªææ¬ååæ®µ
-   +  4 åè: é¡µé¢åæååç»çæé
-   ----------------------------------------
-     56 åèæ¯è¡
-
-   PostgreSQL æ°æ®é¡µç大尿¯ 8192 åè (8 KB)ï¼åï¼
-
-   8192 åèæ¯é¡µ
-   -------------------   =  146 è¡/æ°æ®é¡µï¼åä¸åæ´ï¼
-     56 åèæ¯è¡
-
-   100000 æ°æ®è¡
-   --------------------  =  685 æ°æ®é¡µï¼åä¸åæ´ï¼
-      146 è¡/æ°æ®é¡µ
-
-   685 æ°æ®é¡µ * 8192 åè/页  = 5,611,520 åèï¼5.6 MBï¼
-
-   ç´¢å¼ä¸éè¦è¿ä¹å¤çé¢å¤æ¶èï¼ä½ä¹ç¡®å®åæ¬è¢«ç´¢å¼çæ°æ®ï¼å æ­
-   ¤å®ä»¬ä¹å¯è½å¾å¤§ã
-   
-   ç©ºå¼NULLåæ¾å¨ä½å¾ä¸ï¼å æ¤å ç¨å¾å°ç空é´ã
-   
-  4.6) ä¸ºä»ä¹æçæ¥è¯¢å¾æ¢ï¼ä¸ºä»ä¹è¿äºæ¥è¯¢æ²¡æå©ç¨ç´¢å¼ï¼
-  
-   å¹¶éæ¯ä¸ªæ¥è¯¢é½ä¼èªå¨ä½¿ç¨ç´¢å¼ãåªæå¨è¡¨ç大å°è¶è¿ä¸ä¸ªæå°å¼ï¼å¹¶ä¸æ¥
-   è¯¢åªä¼éä¸è¡¨ä¸è¾å°æ¯ä¾çè®°å½æ¶æä¼éç¨ç´¢å¼ã
-   è¿æ¯å ä¸ºç´¢å¼æ«æå¼èµ·çéå³ç£çååå¯è½æ¯ç´æ¥å°è¯»å表ï¼é¡ºåºæ«æï¼æ´æ¢ã
-   
-   ä¸ºäºå¤æ­
-   æ¯å¦ä½¿ç¨ç´¢å¼ï¼PostgreSQLå¿é¡»è·å¾æå³è¡¨çç»è®¡å¼ãè¿äºç»è®¡å¼å¯ä»¥ä½¿ç
-   ¨ VACUUM ANALYZEï¼æ ANALYZE è·å¾ã ä½¿ç¨ç»è®¡å¼ï¼ä¼åå¨ç¥é表中
-   æå¤å°è¡ï¼å°±è½å¤æ´å¥½å°å¤ææ¯å¦å©ç¨ç´¢å¼ã
-   ç»è®¡å¼å¯¹ç¡®å®ä¼åçè¿æ¥é¡ºåºåè¿æ¥æ¹æ³ä¹å¾æç¨ãå¨è¡¨çå容åçååæ¶ï¼åºå®æè¿
-   è¡ç»è®¡å¼çæ´æ°æ¶éã
-   
-   ç´¢å¼é常ä¸ç¨äº ORDER BY
-   ææ§è¡è¿æ¥ã对ä¸ä¸ªå¤§è¡¨ç䏿¬¡é¡ºåºæ«æåå䏿¬¡æåºé常æ¯ç´¢å¼æ«æè¦å¿«ãç¶
-   èï¼å¦æå° LIMIT å ORDER BY
-   ç»åå¨ä¸èµ·ä½¿ç¨çè¯ï¼é常å°ä¼ä½¿ç¨ç´¢å¼ï¼å ä¸ºè¿æ¶ä»è¿å表中
-   çä¸å°é¨åè®°å½ã
-   
-   å¦æä½ ç¡®ä¿¡PostgreSQLçä¼åå¨ä½¿ç¨é¡ºåºæ«ææ¯ä¸æ£ç¡®çï¼ä½ å¯ä»¥ä½¿ç¨SET
-   enable_seqscan TO 'off'æä»¤æ¥å³éé¡ºåºæ«æï¼
-   ç¶å忬¡è¿è¡æ¥è¯¢ï¼ä½ å°±å¯ä»¥çåºä½¿ç¨ä¸ä¸ªç´¢å¼æ«ææ¯å¦ç¡®å®è¦å¿«ä¸äºã
-   
-   å½ä½¿ç¨éé符æä½ï¼ä¾å¦ LIKE æ ~ æ¶ï¼ç´¢å¼åªè½å¨ç¹å®çæåµä¸ä½¿ç¨ï¼
-     * å符串çå¼å§é¨åå¿é¡»æ¯æ®éå符串ï¼ä¹å°±æ¯è¯´ï¼
-          + LIKE æ¨¡å¼ä¸è½ä»¥ % æå¤´ã
-          + ~ ï¼æ£å表达å¼ï¼æ¨¡å¼å¿é¡»ä»¥ ^ æå¤´ã
-     * å符串ä¸è½ä»¥å¹éå¤ä¸ªåç¬¦çæ¨¡å¼ç±»æå¤´ï¼ä¾å¦ [a-e]ã
-     * å¤§å°åæ å³çæ¥æ¾ï¼å¦ ILIKE å ~* çä¸ä½¿ç¨ç´¢å¼ï¼ä½å¯ä»¥ç¨ 4.8
-       èæè¿°ç表达å¼ç´¢å¼ã
-     * å¨å initdb æ¶å¿é¡»éç¨ç¼ºççæ¬å°è®¾ç½® C
-       localeï¼å ä¸ºç³»ç»ä¸å¯è½ç¥éå¨éC localeæåµæ¶ä¸ä¸ä¸ªæå¤§å符æ¯ä»ä¹ã
-       å¨è¿ç§æåµä¸ï¼ä½ å¯ä»¥å建ä¸ä¸ªç¹æ®çtext_pattern_opsç´¢å¼æ¥ç¨äºLIKE
-       çç´¢å¼ã
-       
-   å¨8.0ä¹åççæ¬ä¸­
-   ï¼é¤éè¦æ¥è¯¢çæ°æ®ç±»ååç´¢å¼çæ°æ®ç±»åç¸å¹éï¼å¦åç´¢å¼ç»å¸¸æ¯æªè¢«ç¨å°ï¼ç
-   ¹å«æ¯å¯¹int2,int8åæ°å¼åçç´¢å¼ã
-   
-  4.7) æå¦ä½æè½çå°æ¥è¯¢ä¼å卿¯ææ ·è¯ä¼°å¤çæçæ¥è¯¢ï¼
-  
-   åè EXPLAIN æå页ã
-   
-  4.8) æææ ·åæ£åè¡¨è¾¾å¼æç´¢å大å°åæ å³çæ­
-  £åè¡¨è¾¾å¼æ¥æ¾ï¼ææ ·å©ç¨ç´¢å¼è¿è¡å¤§å°åæ å³æ¥æ¾ï¼
-  
-   æä½ç¬¦ ~ å¤çæ£å表达å¼å¹éï¼è ~* å¤ç大å°åæ å³çæ­
-   £å表达å¼å¹éã大å°åæ å³ç LIKE åç§æä¸º ILIKEã
-   
-   å¤§å°åæ å³çç弿¯è¾é常ååï¼
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-   è¿æ ·å°ä¸ä¼ä½¿ç¨æ åçç´¢å¼ã使¯å¯ä»¥å建ä¸ä¸ªå¨è¿ç§æåµä¸ä½¿ç¨ç表达å¼ç
-   ´¢å¼:
-    CREATE INDEX tabindex ON tab (lower(col));
-
-   å¦æä¸è¿°ç´¢å¼å¨å建æ¶å å¥UNIQUE约æï¼è½ç¶ç´¢å¼å段èªèº«å容å¯ä»¥å­
-   å¨å¤§å°åä¸éçå容ï¼ä½å¦ææUNIQUE约æåï¼è¿äºå容ä¸è½ä»ä»æ¯å¤§å°åä¸åï¼å¦åä
-   ¼é æå²çªï¼ã为äºä¿è¯ä¸åçè¿ç§æåµï¼å¯ä»¥ä½¿ç¨CHECKçº¦ææ¡ä»¶ææ¯è§¦åå¨å¨å½
-   å¥æ¶è¿è¡éå¶ã
-   
-  4.9) å¨ä¸ä¸ªæ¥è¯¢éï¼æææ ·æ£æµä¸ä¸ªå段æ¯å¦ä¸º NULL ï¼æå¦ä½æè½åç¡®æåºèä¸è®ºæå­
-  æ®µæ¯å¦å« NULL å¼ï¼
-  
-   ç¨ IS NULL å IS NOT NULL æµè¯è¿ä¸ªå段ï¼å·ä½æ¹æ³å¦ä¸ï¼
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   ä¸ºäºè½å¯¹å« NULLåæ®µæåºï¼å¯å¨ ORDER BY æ¡ä»¶ä¸ä½¿ç¨ IS NULLå IS NOT
-   NULL ä¿®é¥°ç¬¦ï¼æ¡ä»¶ä¸ºç true å°æ¯æ¡ä»¶ä¸ºåfalse æå¨åé¢ï¼ä¸é¢çä¾å­
-   å°±ä¼å°å« NULL çè®°å½æå¨ç»æçä¸é¢é¨åï¼
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-  4.10) åç§å符类åä¹é´æä»ä¹ä¸åï¼
-  
-   ç±»å åé¨åç§° è¯´æ
-   VARCHAR(n) varchar æå®äºæå¤§é¿åº¦ï¼åé¿å­
-   ç¬¦ä¸²ï¼ä¸è¶³å®ä¹é¿åº¦çé¨åä¸è¡¥é½
-   CHAR(n) bpchar å®é¿å符串ï¼å®éæ°æ®ä¸è¶³å®ä¹é¿åº¦æ¶ï¼ä»¥ç©ºæ ¼è¡¥é½
-   TEXT text æ²¡æç¹å«çä¸ééå¶ï¼ä»åè¡çæå¤§é¿åº¦éå¶ï¼
-   BYTEA bytea åé¿åèåºåï¼ä½¿ç¨NULLåç¬¦ä¹æ¯å许çï¼
-   "char" char å个å符
-   
-   å¨ç³»ç»è¡¨åå¨ä¸äºé误信æ¯éä½ å°çå°åé¨åç§°ã
-   
-   ä¸é¢æåçååç§ç±»åæ¯"varlena"ï¼åé¿ï¼ç±»åï¼ä¹å°±æ¯è¯´ï¼å¼å¤´çå个å­
-   èæ¯é¿åº¦ï¼åé¢ææ¯æ°æ®ï¼ã äºæ¯å®éå ç¨çç©ºé´æ¯å£°æç大å°è¦å¤ä¸äºã
-   ç¶èè¿äºç±»åå¦å®ä¹å¾é¿æ¶é½å¯ä»¥è¢«å缩åå¨ï¼å æ­
-   ¤ç£ç空é´ä¹å¯è½æ¯é¢æ³çè¦å°ã
-   
-   VARCHAR(n) å¨åå¨éå¶äºæå¤§é¿åº¦çåé¿åç¬¦ä¸²æ¯æå¥½çã TEXT éç¨äºå­
-   å¨æå¤§å¯è¾¾ 1Gå·¦å³ä½æªå®ä¹éå¶é¿åº¦çå符串ã
-   
-   CHAR(n) æéåäºåå¨é¿åº¦ç¸åçå符串ã CHAR(n)伿 ¹æ®æç»å®çå­
-   æ®µé¿åº¦ä»¥ç©ºæ ¼è¡¥è¶³ï¼ä¸è¶³çåæ®µå容ï¼ï¼ è VARCHAR(n) åªå­
-   å¨æç»å®çæ°æ®å容ã BYTEA ç¨äºåå¨äºè¿å¶æ°æ®ï¼å°¤å¶æ¯åå« NULL å­
-   èçå¼ãè¿äºç±»åå·æå·®ä¸å¤çæ§è½ã
-   
-  4.11.1) æææ ·å建ä¸ä¸ªåºåå·ææ¯èªå¨éå¢çåæ®µï¼
-  
-   PostgreSQL æ¯æ SERIAL æ°æ®ç±»åãï¼å­
-   æ®µå®ä¹ä¸ºSERIALåï¼å°èªå¨å建ä¸ä¸ªåºåçæå¨ï¼ä¾å¦ï¼
-   CREATE TABLE person (
-      id   SERIAL,
-      name TEXT
-   );
-
-   ä¼èªå¨è½¬æ¢ä¸ºä»¥ä¸SQLè¯å¥ï¼
-   CREATE SEQUENCE person_id_seq;
-   CREATE TABLE person (
-      id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-      name TEXT
-   );
-
-   åè create_sequence æå页è·åå³äºåºåçæå¨çæ´å¤ä¿¡æ¯ã
-   
-  4.11.2) æå¦ä½è·å¾ä¸ä¸ªæå¥çåºåå·çå¼ï¼
-  
-   ä¸ç§æ¹æ³æ¯å¨æå¥ä¹ååç¨å½æ° nextval() ä»åºåå¯¹è±¡éæ£ç´¢åºä¸ä¸ä¸ª SERIAL
-   å¼ï¼ç¶ååç¨æ¤å¼ç²¾ç¡®å°æå¥ã使稠4.11.1 éçä¾è¡¨ï¼å¯ç¨ä¼ªç è¿æ ·æè¿°ï¼
-   new_id = execute("SELECT nextval('person_id_seq')");
-   execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-   è¿æ ·è¿è½å¨å¶ä»æ¥è¯¢ä¸ä½¿ç¨åæ¾å¨ new_id éçæ°å¼ï¼ä¾å¦ï¼ä½ä¸ºåç§ person
-   è¡¨çå¤é®ï¼ã æ³¨æèªå¨å建ç SEQUENCE å¯¹è±¡çåç§°å°ä¼æ¯
-   <table>_<serialcolumn>_seqï¼ è¿é table å serialcolumn
-   å嫿¯ä½ ç表çåç§°åä½ ç SERIAL å段çåç§°ã
-   
-   ç±»ä¼¼çï¼å¨ SERIAL å¯¹è±¡ç¼ºçæå¥åä½ å¯ä»¥ç¨å½æ° currval() æ£ç´¢åèµå¼ç
-   SERIAL å¼ï¼ä¾å¦ï¼
-   execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-   new_id = execute("SELECT currval('person_id_seq')");
-
-  4.11.3) åæ¶ä½¿ç¨ currval() ä¼å¯¼è´åå¶ä»ç¨æ·çå²çªæåµåï¼
-  
-   ä¸ä¼ãcurrval() è¿åçæ¯ä½ æ¬æ¬¡ä¼è¯è¿ç¨æèµçå¼è䏿¯ææç¨æ·çå½åå¼ã
-   
-  4.11.4) ä¸ºä»ä¹ä¸å¨äºå¡å¼å¸¸ä¸æ¢åéç¨åºåå·å¢ï¼ä¸ºä»ä¹å¨åºåå·å段çåå¼ä¸åå¨é´æ­
-  å¢ï¼
-  
-   ä¸ºäºæé«å¹¶åæ§ï¼åºåå·å¨éè¦çæ¶åèµäºæ­
-   £å¨è¿è¡çäºå¡ï¼å¹¶ä¸å¨äºå¡ç»æä¹åä¸è¿è¡éå®ï¼ è¿å°±ä¼å¯¼è´å¼å¸¸ä¸­
-   æ¢çäºå¡åï¼åºåå·ä¼åºç°é´éã
-   
-  4.12) ä»ä¹æ¯ OID ï¼ä»ä¹æ¯ CTID ï¼
-  
-   PostgreSQL
-   éåå»ºçæ¯ä¸è¡è®°å½é½ä¼è·å¾ä¸ä¸ªå¯ä¸çOIDï¼é¤éå¨å建表æ¶ä½¿ç¨WITHOUT
-   OIDSé项ã OIDå建æ¶ä¼èªå¨çæä¸ä¸ª4åèçæ´æ°ï¼ææ OID
-   å¨ç¸åºPostgreSQLæå¡å¨ä¸åæ¯å¯ä¸çã ç¶èï¼å®å¨è¶è¿40亿æ¶å°æº¢åºï¼ OIDæ­
-   ¤åä¼åºç°éå¤ãPostgreSQL å¨å®çåé¨ç³»ç»è¡¨é使稠OID å¨è¡¨ä¹é´å»ºç«èç³»ã
-   
-   å¨ç¨æ·çæ°æ®è¡¨ä¸ï¼æå¥½æ¯ä½¿ç¨SERIAlæ¥ä»£æ¿OID
-   å ä¸ºSERIALåªè¦ä¿è¯å¨å个表中
-   çæ°å¼æ¯å¯ä¸çå°±å¯ä»¥äºï¼è¿æ ·å®æº¢åºçå¯è½æ§å°±é常å°äºï¼
-   SERIAL8å¯ç¨æ¥ä¿å8åèçåºåæ°å¼ã
-   
-   CTID ç¨äºæ è¯å¸¦çæ°æ®åï¼å°åï¼åï¼ååï¼åç§»çç¹å®çç©çè¡ã CTID
-   å¨è®°å½è¢«æ´æ¹æéè½½ååçæ¹åãç´¢å¼æ°æ®ä½¿ç¨å®ä»¬æåç©çè¡ã
-   
-  4.13) ä¸ºä»ä¹ææ¶å°é误信æ¯âERROR: Memory exhausted in AllocSetAlloc()âï¼
-  
-   è¿å¾å¯è½æ¯ç³»ç»çèæååç¨åäºï¼æèåæ ¸å¯¹æäºèµæºæè¾ä½çéå¶å¼ãå¨å¯å¨
-   postmaster ä¹åè¯è¯ä¸é¢çå½ä»¤ï¼
-   ulimit -d 262144
-   limit datasize 256m
-
-   åå³äºä½ ç¨ç
-   shellï¼ä¸é¢å½ä»¤åªæä¸æ¡è½æåï¼ä½æ¯å®å°æä½ çè¿ç¨æ°æ®æ®µéå¶è®¾å¾æ¯è¾é«ï¼
-   å èä¹è®¸è½è®©æ¥è¯¢å®æãè¿æ¡å½ä»¤åºç¨äºå½åè¿ç¨ï¼ä»¥åææå¨è¿æ¡å½ä»¤è¿è¡ååå
-   »ºçåè¿ç¨ã
-   å¦æä½ æ¯å¨è¿è¡SQL客æ·ç«¯æ¶å ä¸ºåå°è¿åäºå¤ªå¤çæ°æ®èåºç°é®é¢ï¼è¯·å¨è¿è¡
-   å®¢æ·ç«¯ä¹åæ§è¡ä¸è¿°å½ä»¤ã
-   
-  4.14) æå¦ä½æè½ç¥éæè¿è¡çPostgreSQLççæ¬ï¼
-  
-   ä» psql éï¼è¾å¥ SELECT version();æä»¤ã
-   
-  4.15) æå¦ä½å建ä¸ä¸ªç¼ºç弿¯å½åæ¶é´çåæ®µï¼
-  
-   ä½¿ç¨ CURRENT_TIMESTAMPï¼
-   CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) æææ ·è¿è¡ outer join ï¼å¤è¿æ¥ï¼ï¼
-  
-   PostgreSQL éç¨æ åç SQL è¯æ³æ¯æå¤è¿æ¥ãè¿éæ¯ä¸¤ä¸ªä¾åï¼
-   SELECT *
-   FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   ææ¯
-   SELECT *
-   FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   è¿ä¸¤ä¸ªçä»·çæ¥è¯¢å¨ t1.col å t2.col ä¸åè¿æ¥ï¼å¹¶ä¸è¿å t1 ä¸­
-   æææªè¿æ¥çè¡ï¼é£äºå¨ t2 ä¸æ²¡æå¹éçè¡ï¼ã å³[å¤]è¿æ¥ï¼RIGHT OUTER
-   JOINï¼å°è¿å t2 ä¸æªè¿æ¥çè¡ã å®å¨å¤è¿æ¥ï¼FULL OUTER JOINï¼å°è¿å t1 å t2
-   ä¸æªè¿æ¥çè¡ã å³é®å OUTER å¨å·¦[å¤]è¿æ¥ãå³[å¤]è¿æ¥åå®å¨[å¤]è¿æ¥ä¸­
-   æ¯å¯éçï¼æ®éè¿æ¥è¢«ç§°ä¸ºåè¿æ¥ï¼INNER JOINï¼ã
-   
-  4.17) å¦ä½ä½¿ç¨æ¶åå¤ä¸ªæ°æ®åºçæ¥è¯¢ï¼
-  
-   æ²¡æåæ³æ¥è¯¢å½åæ°æ®åºä¹å¤çæ°æ®åºã
-   å ä¸ºPostgreSQLè¦å è½½ä¸æ°æ®åºç¸å³çç³»ç»ç®å½ï¼ç³»ç»è¡¨ï¼ï¼å æ­
-   ¤è·¨æ°æ®åºçæ¥è¯¢å¦ä½æ§è¡æ¯ä¸å®çã
-   
-   éå å¢å¼æ¨¡åcontrib/dblinkå许éç¨å½æ°è°ç¨å®ç°è·¨åºæ¥è¯¢ãå½ç¶ç¨æ·ä¹å¯ä»¥
-   åæ¶è¿æ¥å°ä¸åçæ°æ®åºæ§è¡æ¥è¯¢ç¶åå¨å®¢æ·ç«¯åå¹¶ç»æã
-   
-  4.18) å¦ä½è®©å½æ°è¿åå¤è¡æå¤åæ°æ®ï¼
-  
-   å¨å½æ°ä¸è¿åæ°æ®è®°å½éçåè½æ¯å¾å®¹æä½¿ç¨çï¼è¯¦æåè§ï¼
-   http://techdocs.postgresql.org/guides/SetReturningFunctions
-   
-  4.19) ä¸ºä»ä¹æå¨ä½¿ç¨PL/PgSQL彿°åå临æ¶è¡¨æ¶ä¼æ¶å°é误信æ¯ârelation with
-  OID ##### does not existâï¼
-  
-   PL/PgSQLä¼ç¼å彿°çèæ¬å容ï¼ç±æ¤å¸¦æ¥çä¸ä¸ªä¸å¥½çå¯ä½ç¨æ¯è¥ä¸ä¸ª
-   PL/PgSQL
-   å½æ°è®¿é®äºä¸ä¸ªä¸´æ¶è¡¨ï¼ç¶å该表被å é¤å¹¶é建äºï¼å忬¡è°ç¨è¯¥å½æ°å
-   °å¤±è´¥ï¼ å ä¸ºç¼åç彿°å容ä»ç¶æåæ§ç临æ¶è¡¨ãè§£å³çæ¹æ³æ¯å¨ PL/PgSQL
-   ä¸ç¨EXECUTE
-   å¯¹ä¸´æ¶è¡¨è¿è¡è®¿é®ãè¿æ ·ä¼ä¿è¯æ¥è¯¢å¨æ§è¡åæ»ä¼è¢«éæ°è§£æã
-   
-  4.20) ç®åæåªäºæ°æ®å¤å¶æ¹æ¡å¯ç¨ï¼
-  
-   âå¤å¶âåªæ¯ä¸ä¸ªæ¯è¯ï¼æå¥½å ç§å¤å¶ææ¯å¯ç¨ï¼æ¯ç§é½æä¼ç¹å缺ç¹ï¼
-   
-   ä¸»/ä»å¤å¶æ¹å¼æ¯å许ä¸ä¸ªä¸»æå¡å¨æ¥å读/åçç³è¯·ï¼èå¤ä¸ªä»æå¡å¨åªè½æ¥åè
-   ¯»/SELECTæ¥è¯¢çç³è¯·ï¼ ç®åææµè¡ä¸åè´¹ç主/ä»PostgreSQLå¤å¶æ¹æ¡æ¯
-   Slony-I ã
-   
-   å¤ä¸ªä¸»æå¡å¨çå¤å¶æ¹å¼å许å°è¯»/åçç³è¯·åéç»å¤å°çè®¡ç®æºï¼è¿ç§æ¹å¼ç±äºé
-   è¦å¨å¤å°æå¡å¨ä¹é´åæ¥æ°æ®åå¨
-   å¯è½ä¼å¸¦æ¥è¾ä¸¥éçæ§è½æå¤±ï¼Pgclusteræ¯ç®åè¿ç§æ¹æ¡ ä¸­
-   æå¥½çï¼èä¸è¿å¯ä»¥åè´¹ä¸è½½ã
-   
-   ä¹æä¸äºåä¸éä»è´¹ååºäºç¡¬ä»¶çæ°æ®å¤å¶æ¹æ¡ï¼æ¯æä¸è¿°åç§å¤å¶æ¨¡åã
-   
-  4.21) ä¸ºä½æ¥è¯¢ç»ææ¾ç¤ºç表åæååä¸æçæ¥è¯¢è¯å¥ä¸çä¸åï¼ä¸ºä½å¤§åç¶æä¸è½ä¿çï¼
-  
-   æå¸¸è§çåå æ¯å¨å建表æ¶å¯¹è¡¨åææ¯åå使ç¨äºåå¼å·ââï¼å½ä½¿ç¨äºåå¼å·åï¼è¡
-   ¨åæååï¼ç§°ä¸ºæ è¯ç¬¦ï¼å卿¶æ¯åºå å¤§å°åçï¼
-   è¿æè°ç你卿¥è¯¢æ¶è¡¨åæååä¹åºä½¿ç¨åå¼å·ï¼ä¸äºå·¥å·è½¯ä»¶ï¼åpgAdminä¼å¨
-   ååºå建表çæä»¤æ¶èªå¨å°å¨æ¯ä¸ªæ è¯ç¬¦ä¸å åå¼å·ã å æ­
-   ¤ï¼ä¸ºäºæ è¯ç¬¦çç»ä¸ï¼ä½ åºè¯¥ï¼
-     * å¨å建表æ¶é¿åå°æ è¯ç¬¦ä½¿ç¨åå¼å·å¼èµ·æ¥ã
-     * å¨æ è¯ç¬¦ä¸åªä½¿ç¨å°å忝ã
-     * ï¼ä¸ºäºä¸å·²åå¨çæ è¯ç¬¦ç¸åï¼å¨æ¥è¯¢ä¸ä½¿ç¨åå¼å·å°æ è¯ç¬¦å¼èµ·æ¥ã
diff --git a/doc/FAQ_chinese_trad b/doc/FAQ_chinese_trad
deleted file mode 100644 (file)
index b190853..0000000
+++ /dev/null
@@ -1,793 +0,0 @@
-
-                          PostgreSQL å¸¸è¦åé¡ï¼FAQï¼
-                                       
-   æè¿æ´æ°ï¼2007 å¹´ 2 æ 8 æ¥ ææäº 22:43:13 EST
-   ä¸æçæè¿æ´æ°ï¼2007 å¹´ 2 æ 12 æ¥ ææä¸ 12:00:04 CST
-   
-   ç¶åç¶è·äººå¡ï¼Bruce Momjian (pgman@candle.pha.pa.us)
-   æ£é«ä¸æçç¶è·äººå¡ï¼éæç(ChaoYi, Kuo)ï¼kuo.chaoyi@gmail.comï¼
-   
-   æ¬ææªçææ°çæ¬å¯ä»¥å¨
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html æ¥çã
-   
-   è使¥ç³»çµ±å¹³å°ç¸éçåé¡å¯å¨ http://www.postgresql.org/docs/faq/
-   è£¡æ¾å°çæ¡ã
-     _________________________________________________________________
-   
-常è¦åé¡
-
-   1.1)PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼
-   1.2)誰æ§å¶å管çPostgreSQL ï¼
-   1.3)PostgreSQLççæ¬æ¯ä»éº¼ï¼
-   1.4)PostgreSQLå¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼
-   1.5)æå¾åªè£¡è½å¾å°PostgreSQLï¼
-   1.6)ææ°çç PostgreSQL æ¯ä»éº¼ï¼
-   1.7)æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼
-   1.8)æå¦ä½æäº¤ä¸å BUG å ±åï¼
-   1.9)æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼
-   1.10)è½å¤ ç²åçææ°ææªæåªäºï¼
-   1.11)ææè©²ææ¨£å¸ç¿ SQL ï¼
-   1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼
-   1.13)PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼
-   1.14)PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®ååï¼
-   
-ç¨æ¶å®¢æ¶ç«¯åé¡
-
-   2.1)æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼
-   2.2)æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼
-   2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢(GUI)åï¼
-   
-系統管çåé¡
-
-   3.1)æææ¨£æè½æ PostgreSQL è£å¨ /usr/local/pgsql ä»¥å¤çå°æ¹ï¼
-   3.2)æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼
-   3.3)æææ¨£èª¿æ´è³æåº«ä¼ºæå¨ä»¥ç²å¾æ´å¥½çæ§è½ï¼
-   3.4)PostgreSQL è£¡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼
-   3.5)çºä»éº¼å¨è©¦å飿¥ç»éææ¶å°ãSorry, too many clientsã è¨æ¯ï¼
-   3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ï¼
-   3.7)(使稠PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é«ï¼
-   
-æä½åé¡
-
-   4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼
-   4.2) å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥ç psql
-   è£¡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå®åï¼
-   4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼
-   4.4) å®çè¨éï¼å®ä¸è¡¨ï¼ä¸åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼
-   4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¢ç©ºéï¼
-   4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼
-   4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢çï¼
-   4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ­
-   £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼
-   4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº
-   NULLï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å«NULLå¼ï¼
-   4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼
-   4.11.1) æææ¨£åµå»ºä¸ååºåèåææ¯èªåéå¢çæ¬ä½ï¼
-   4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼
-   4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼
-   4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸­
-   åå¨éæ·å¢ï¼
-   4.12) ä»éº¼æ¯ OIDï¼ä»éº¼æ¯ CTID ï¼
-   4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in
-   AllocSetAlloc()ãï¼
-   4.14) æå¦ä½æè½ç¥éæéè¡ç PostgreSQL ççæ¬ï¼
-   4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼
-   4.16) å¦ä½å·è¡å¤é£æ¥ï¼outer joinï¼æ¥è©¢ï¼
-   4.17) å¦ä½å·è¡æ¶åå¤åè³æåº«çæ¥è©¢ï¼
-   4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼
-   4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL å½æ¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation
-   with OID ##### does not existãï¼
-   4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼
-   4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸­
-   çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼
-     _________________________________________________________________
-   
-常è¦åé¡
-
-  1.1) PostgreSQL æ¯ä»éº¼ï¼è©²æéº¼ç¼é³ï¼
-  
-   PostgreSQL è®ä½ Post-Gres-Q-Lï¼ææåä¹ç°¡ç¨±çºPostgres
-   ãæ³è½ä¸ä¸å¶ç¼é³ç人å¡å¯å¾é裡ä¸è¼è²é³æä»¶ï¼ MP3 æ ¼å¼ ã
-   
-   PostgreSQL æ¯é¢åç®æ¨çéä¿è³æåº«ç³»çµ±ï¼å®å·æå³çµ±å業
-   è³æåº«ç³»çµ±çææåè½ï¼åæå嫿å°å¨ä¸ä¸ä»£ DBMS
-   ç³»çµ±ç使ç¨çå¢å¼·ç¹æ§ãPostgreSQL
-   æ¯èªç±åè²»çï¼ä¸¦ä¸æææºä»£ç¢¼é½å¯ä»¥ç²å¾ã
-   
-   PostgreSQL
-   çéç¼éä¼ä¸»è¦çºå¿é¡èï¼ä»åéä½ä¸çåå°ä¸¦ééäºè¯ç¶²é²è¡è¯ç¹«ï¼éæ¯ä¸å社åéç¼é
-    ç®ï¼å®ä¸è¢«ä»»ä½å¬å¸æ§å¶ã
-   å¦æ³å å¥éç¼éä¼ï¼è«åè¦éç¼äººå¡å¸¸è¦åé¡ï¼FAQï¼
-   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
-   
-  1.2) èª°æ§å¶ PostgreSQL ï¼
-  
-   å¦æä½ å¨å°æ¾PostgreSQLçæéäººï¼ææ¯ä»éº¼ä¸­
-   å¤®å§å¡æï¼ææ¯ä»éº¼æå±¬å¬å¸ï¼ä½ åªè½æ¾æ£äº---å çºä¸åä¹ä¸å­
-   å¨ï¼ä½æåç確æä¸å æ ¸å¿å§å¡æåCVS管ççµï¼ä½éäºå·¥ä½çµç設
-   ç«ä¸»è¦æ¯çºäºé²è¡ç®¡çå·¥ä½è䏿¯å°PostgreSQLé²è¡ç¨ä½å¼æ§å¶ï¼PostgreSQLé
-    ç®æ¯ç±ä»»ä½äººå
-   å¯åå çéç¼äººå¡ç¤¾ååææç¨æ¶æ§å¶çï¼ä½ æéè¦åçå°±æ¯è¨é±éµä»¶å表ï¼åèè¨è«å³å
-   ¯ï¼è¦åèPostgreSQLçéç¼è©³è¦ éç¼äººå¡å¸¸åé¡ (Developer's FAQ) ç²åè³è¨ï¼ã
-   
-  1.3) PostgreSQL ççæ¬æ¯ä»éº¼?
-  
-   PostgreSQLçç¼å¸éµå¾ç¶å¸ç BSD çæ¬ãå®åè¨±ç¨æ¶ä¸éç®çå°ä½¿ç¨
-   PostgreSQLï¼çè³ä½ å¯ä»¥é·å® PostgreSQL
-   èä¸å«æºä»£ç¢¼ä¹å¯ä»¥ï¼å¯ä¸çéå¶å°±æ¯ä½ ä¸è½å è»é«èªèº«åé¡èåæå追訴æ³å¾
-   è²¬ä»»ï¼å¦å¤å°±æ¯è¦æ±ææçè»é«æ·è²ä¸é åæ¬ä»¥ä¸çæ¬è²æã
-   ä¸é¢å°±æ¯æåæä½¿ç¨çBSDçæ¬è²æå§å®¹ï¼
-   
-   PostgreSQL è³æåº«ç®¡ç系統
-   
-   é¨åçæ¬ï¼cï¼1996-2005ï¼PostgreSQL å¨çéç¼å°çµï¼é¨åçæ¬ï¼cï¼1994-1996
-   å å·å¤§å¸è£äº
-   
-   ï¼Portions copyright (c) 1996-2005,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.ï¼
-   
-  1.4) PostgreSQL å¯ä»¥éè¡å¨åªäºä½æ¥ç³»çµ±å¹³å°ä¸ï¼
-  
-   ä¸è¬èªªä¾ï¼ä»»ä½ç¾å¨å° UNIX ç¸å®¹ç使¥ç³»çµ±ä¹ä¸é½è½éè¡ PostgreSQL
-   ãå¨å®è£æå裡ååºäºç¼ä½æç¶éæç¢ºæ¸¬è©¦çå¹³å°ã
-   
-   PostgreSQL ä¹å¯ä»¥ç´æ¥éè¡å¨åºæ¼å¾®è» Windows-NT ç使¥ç³»çµ±ï¼å¦
-   Win2000 SP4ï¼WinXP å Win2003ï¼å·²è£½ä½å®æçå®è£åå¯å¾
-   http://pgfoundry.org/projects/pginstallerä¸è¼ï¼åºæ¼MSDOSçWindows使¥­
-   ç³»çµ± ï¼Win95ï¼Win98ï¼WinMeï¼éè¦ééCygwin模æ¬ç°å¢éè¡PostgreSQLã
-   
-   åæä¹æä¸å纠Novell Netware 6 éç¼ççæ¬å¯å¾ http://forge.novell.com
-   ç²åï¼çºOS/2(eComStation)éç¼ççæ¬å¯å¾
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F ä¸è¼ã
-   
-  1.5) æå¾åªè£¡è½å¾å° PostgreSQLï¼
-  
-   ééç覽å¨å¯å¾ http://www.postgresql.org/ftp/ ä¸è¼ï¼ä¹å¯ééFTPï¼å¾
-   ftp://ftp.PostgreSQL.org/pub/ ç«é»ä¸è¼ã
-   
-  1.6) ææ°çç PostgreSQL æ¯ä»éº¼ï¼
-  
-   PostgreSQL ææ°ççæ¬æ¯ç欠8.2.3 ã
-   
-   æåè¨åæ¯å¹´ç¼ä½ä¸å主è¦åç´çæ¬ï¼æ¯å¹¾åæç¼ä½ä¸åå°çæ¬ã
-   
-  1.7) æå¾åªè£¡è½å¾å°å° PostgreSQL çæ¯æï¼
-  
-   PostgreSQL社åéééµä»¶å表çºå¶å¤§å¤æ¸ç¨æ¶æä¾å¹«å©ï¼è¨é±éµä»¶å表ç主ç«é
-   »æ¯
-   http://www.postgresql.org/community/lists/ï¼ä¸è¬ææ³ä¸ï¼åå å¥General æ
-   Bugéµä»¶å表æ¯ä¸åè¼å¥½çéå§ã
-   
-   ä¸»è¦çIRC頻鿝å¨FreeNode(irc.freenode.net)ç#postgresqlï¼çºäºé£ä¸æ­
-   ¤é »éï¼å¯ä»¥ä½¿ç¨ UNIX ç¨åº ircï¼å¶æä»¤æ ¼å¼ï¼ irc -c '#postgresql'
-   "$USER" irc.freenode.net ï¼æè使ç¨å¶ä»IRC客æ¶ç«¯ç¨åºã卿¤ç¶²çµ¡ä¸éå­
-   å¨ä¸å PostgreSQL ç西ççé »é(#postgersql-es)åæ³èªé »é
-   (#postgresql-fr)ã忍£å°ï¼å¨ EFNET ä¸ä¹æä¸å PostgreSQL ç交æµé »éã
-   
-   å¯æä¾åæ¥æ¯æçå¬å¸å表å¯å¨ http://techdocs.postgresql.org/companies.php
-   ç覽ã
-   
-  1.8) æå¦ä½æäº¤ä¸å BUG å ±åï¼
-  
-   å¯è¨ªå http://www.postgresql.org/support/submitbugï¼å¡«å¯« Bug
-   ä¸å ±è¡¨æ ¼å³å¯ï¼å樣ä¹å¯è¨ªå ftp ç«é» ftp://ftp.PostgreSQL.org/pub/
-   æª¢æ¥æç¡æ´æ°çPostgreSQL çæ¬æè£ä¸ã
-   
-   éé使稠Bug æäº¤è¡¨æ ¼ææ¯ç¼å¾ PostgreSQL éµä»¶å表ç Bug
-   é常ææä»¥ä¸ä¹ä¸åè¦ï¼
-     * ææäº¤å§å®¹ä¸æ¯ä¸å Bug åå¶ä¸æ¯ Bug çåå ã
-     * ææäº¤å§å®¹æ¯ä¸åå·²ç¥ç Bug ä¸¦ä¸å·²ç¶å å¥ TODO å¾èçä»»åå表ã
-     * ææäº¤ç Bug å·²å¨ç¶åçæ¬ä¸è¢«ä¿®æ£ã
-     * ææäº¤ç Bug å·²ä¿®æ£ä½å°æªå°è£ä¸å å¥ç¾å¨çç¼å¸è»é«åã
-     * è«æ±æäº¤èæä¾æ´è©³ç´°çè³è¨ï¼
-          + ä½æ¥ç³»çµ±
-          + PostgreSQL çæ¬
-          + å¯éç¾ Bug ç測試æ¡ä¾
-          + èª¿è©¦è³è¨
-          + èª¿è©¦è·è¹¤è¼¸åº
-     * ææäº¤å§å®¹æ¯ä¸åæ° Bugï¼å°å·è¡ä»¥ä¸å·¥ä½ï¼
-          + åµå»ºä¸åæ°è£ä¸ä¸¦å°å¶å å¥ä¸ä¸å主è¦çæ¬ææ¯å°çæ¹é²çæ¬ä¸ã
-          + æ¤ Bug æ«æä¸è½ä¿®æ£ï¼å°è¢«å è³ TODO å¾èçä»»åå表ã
-       
-  1.9) æå¦ä½ç解已ç¥ç BUG ææ«ç¼ºçåè½ï¼
-  
-   PostgreSQL æ¯æä¸åæ´å±ç SQL:2003 çåéãå鱿åç TODO å表ï¼ç解已祠Bug
-   åè¡¨ãæ«ç¼ºçåè½åå°ä¾çéç¼è¨åã
-   
-   è¦æ±å¢å æ°åè½çç³è«éå¸¸ææ¶å°ä»¥ä¸ä¹ä¸çåè¦ï¼
-     * è©²åè½å·²å å¥ TODO å¾èçä»»åå表ã
-     * è©²åè½ä¸æ¯å¿é çï¼å çºï¼
-          + å®æ¯ç¾æçä¸ç¬¦å SQL æ¨æºçæåè½çéè¤ã
-          + è©²åè½æ§æå¤§å¤§å¢å ä»£ç¢¼çè¤éç¨åºï¼è帶ä¾çå¥½èæ¯å¾®ä¸è¶³éçã
-          + è©²åè½æ¯ä¸å®å¨ææ¯ä¸å¯é çã
-     * è©²åè½å°è¢«å å¥ TODO å¾èçä»»åå表ã
-       
-   PostgreSQL ä¸ä½¿ç¨ Bug è·è¹¤ç³»çµ±ï¼å çºæåç¼ç¾å¨éµä»¶å表中
-   ç´æ¥åè¦ä»¥åä¿è TODO
-   ä»»åå表總æ¯èæ¼ææ°çæçæ¹å¼å·¥ä½æçææ´é«ä¸äºãäºå¯¦ä¸ï¼Bug䏿卿åçè»é«ä¸­
-   åå¨å¾é·æéï¼ å°å½±é¿å¾å¤ç¨æ¶çBugä¹ç¸½æ¯å¾å¿«æè¢«ä¿®æ­
-   £ãå¯ä¸è½æ¾å°æææ¹é²ãæé«åä¿®æ£çå°æ¹æ¯ CVS
-   çæ¥èªè³è¨ï¼å³ä½¿æ¯å¨è»é«æ°çæ¬çç¼å¸è³è¨ä¸ä¹ä¸æååºæ¯ä¸èçè»é«æ´æ°ã
-   
-  1.10) è½å¤ ç²åçææ°ææªæåªäºï¼
-  
-   PostgreSQL åå«å¤§éçææªï¼ä¸»è¦æè©³ç´°çåèæåï¼æåé åä¸äºç測試ä¾åãåè¦
-   /doc ç®éï¼è¯è¨»ï¼æçº $PGHOME/docï¼ã ä½ éå¯ä»¥å¨ç·ç覽 PostgreSQL
-   çæåï¼å¶ç¶²åæ¯ï¼http://www.PostgreSQL.org/docsã
-   
-   æå©æ¬éæ¼PostgreSQLçæ¸å¨ç·æä¾ï¼å¨
-   http://www.postgresql.org/docs/books/awbook.html å
-   http://www.commandprompt.com/ppbook/ ã ä¹æå¤§éç PostgreSQL
-   æ¸ç±å¯ä¾è³¼è²·ï¼å¶ä¸æçºæµè¡ç䏿¬æ¯ç± Korry Douglas ç·¨å¯«çãå¨
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php䏠䏿大éæé
-   PostgreSQL æ¸ç±çç°¡ä»ã å¨ http://techdocs.PostgreSQL.org/ ä¸æ¶éäºæé
-   PostgreSQL ç大éæè¡æç« ã
-   
-   å®¢æ¶ç«¯çå½ä»¤è¡ç¨åºpsqlæä¸äºä»¥ \d éé ­
-   çå½ä»¤ï¼å¯é¡¯ç¤ºéæ¼é¡åï¼æä½ç¬¦ï¼å½æ¸ï¼èåçè³è¨ï¼ä½¿ç¨ \?
-   å¯ä»¥é¡¯ç¤ºææå¯ç¨çå½ä»¤ã
-   
-   æåç web ç«é»å嫿´å¤çææªã
-   
-  1.11) ææè©²ææ¨£å¸ç¿ SQL ï¼
-  
-   é¦åèæ®ä¸è¿°æå°çèPostgreSQLç¸éçæ¸ç±ï¼å¦å¤ä¸æ¬æ¯ Teach Yourself SQL in
-   21 Days, Second Editionï¼å¶è©³ç´°ä»ç´¹çç¶²åæ¯
-   http://members.tripod.com/er4ebus/sql/index.htmï¼ æåç許å¤ç¨æ¶åæ¡The
-   Practical SQL Handbookï¼ Bowman, Judith S.
-   ç·¨å¯«ï¼Addison-Wesleyå¬å¸åºçï¼å¶ä»çååæ¡ The Complete Reference SQL,
-   Groff ç·¨å¯«ï¼McGraw-Hill å¬å¸åºçã
-   
-   å¨ä¸åç¶²åä¸ä¹æå¾å¥½çæç¨ï¼ä»åæ¯
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com.
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12)å¦ä½æäº¤è£ä¸ææ¯å å¥éç¼éä¼ï¼
-  
-   è©³è¦ éç¼äººå¡å¸¸è¦åé¡ (Developer's FAQ) ã
-   
-  1.13) PostgreSQL åå¶ä»è³æåº«ç³»çµ±æ¯èµ·ä¾å¦ä½ï¼
-  
-   è©å¹è»é«æå¥½å¹¾ç¨®æ¹æ³ï¼åè½ï¼æ§è½ï¼å¯é æ§ï¼æ¯æå广 ¼ã
-   
-   åè½
-          PostgreSQL ææå¤§ååç¨è³æåº«æå¤çåè½ï¼ä¾å¦ï¼äºåï¼å­
-          æ¥è©¢ï¼è§¸ç¼å¨ï¼è¦åï¼å¤éµåè宿´æ§åè¤éçéå®çã
-          æåéæä¸äºå®åæ²æçç¹æ§ï¼å¦ç¨æ¶å®ç¾©é¡åï¼ç¹¼æ¿ï¼è¦ååå¤çæ¬ä¸¦è¡æ§å¶ä
-          »¥æ¸å°éççç¨çã
-          
-   æ§è½
-          PostgreSQLåå¶ä»åç¨åéæºçè³æåº«å·æé¡ä¼¼çæ§è½ãå°æäºèç宿¯è¼å¿«ï¼å°
-          å¶ä»ä¸äºèç宿¯è¼æ¢ã èå¶ä»è³æåº«ç¸æ¯ï¼æåçæ§è½åªå£é常娠+/-
-          10%ä¹éã
-          
-   å¯é æ§
-          æåé½ç¥éè³æåº«å¿é æ¯å¯é çï¼å¦åå®å°±ä¸é»ç¨é½æ²æãæååªååå°ç¼ä½ç¶éèª
-          ç測試çï¼ç¼ºé·æå°çç©©å®ä»£ç¢¼ãæ¯åçæ¬è³å°æä¸åæç beta
-          æ¸¬è©¦æéï¼ä¸¦ä¸æåçç¼å¸æ­
-          ·å²é¡¯ç¤ºæåå¯ä»¥æä¾ç©©å®çï¼ç¢åºçï¼å¯ç¨æ¼çç¢ä½¿ç¨ççæ¬ãæåç¸ä¿¡å¨é
-          æ¹é¢æåèå¶ä»çè³æåº«è»é«æ¯ç¸ç¶çã
-          
-   æ¯æ
-          æåçéµä»¶å表æä¾ä¸åé常大çéç¼äººå¡åç¨æ¶ççµä»¥å¹«å©è§£æ±ºæç¢°å°ç
-          ä»»ä½åé¡ãæåä¸è½ä¿è­
-          ç¸½æ¯è½è§£æ±ºåé¡ï¼ç¸æ¯ä¹ä¸ï¼åç¨è³æåº«è»é«ä¹ä¸¦ä¸æ¯ç¸½è½å¤ æä¾è§
-          £æ±ºæ¹æ³ã
-          ç´æ¥èéç¼äººå¡ï¼ç¨æ¶ç¾¤ï¼æååæºç¨åºæ¥è§¸ä½¿PostgreSQLçæ¯ææ¯å¶ä»è³
-          æåº«éè¦å¥½ãéæä¸äºå業
-          æ§çå¨é¢æè¡æ¯æï¼å¯ä»¥çµ¦æä¾çµ¦é£äºéè¦ç人ãï¼åé±1.7 å°ç¯ï¼
-          
-   å¹æ ¼
-          æåå°ä»»ä½ç¨éé½åè²»ï¼åæ¬åç¨åéåç¨ç®çã
-          ä½ å¯ä»¥ä¸å éå¶å°åä½ çç¢å裡å å¥æåç代碼ï¼é¤äºé£äºæåå¨ä¸é¢ççæ¬
-          è²æè£¡è²æç BSDçæ¬ä¹å¤çå§å®¹ã
-          
-  1.14) PostgreSQL å¯ä»¥èçæè¿ååå家夿å¶çè®åå?
-  
-   PostgreSQL 8.0ä¹åççæ¬æ¯ä½¿ç¨ä½æ¥ç³»çµ±ä¸çæåè³æåº«ä¾èç夿å¶çè³è¨ï¼èª
-   8.0 çå以å¾ççæ¬ PostgreSQL æèªèº«å«æææ°çæåè³è¨ã
-     _________________________________________________________________
-   
-ç¨æ¶å®¢æ¶ç«¯åé¡
-
-  2.1) æåå¯ä»¥ç¨ä»éº¼èªè¨å PostgreSQL é²è¡æºéï¼
-  
-   PostgreSQL (é è¨ææ³)åªå®è£æ C åå§åµå¼ C
-   çæ¥å£ï¼å¶ä»çæ¥å£é½æ¯ç¨ç«çé ç®ï¼è½å¤ åå¥ä¸è¼ï¼éäºæ¥å£é ç®ç¨ç«ç好è
-   æ¯ä»åå¯ä»¥æåèªçç¼å¸è¨åååèªç¨ç«çéç¼çµã
-   
-   ä¸äºç·¨ç¨èªè¨å¦ PHP é½æè¨ªå PostgreSQL çæ¥å£ï¼PerlãTCLãPython
-   ä»¥åå¾å¤å¶ä»èªè¨çæ¥å£å¨ http://gborg.postgresql.org ç¶²ç«ä¸ç
-   Drivers/Interfaces å°ç¯å¯æ¾å°ï¼ ä¸¦ä¸éé Internet å¾å®¹ææç´¢å°ã
-   
-  2.2) æä»éº¼å·¥å·å¯ä»¥æ PostgreSQL ç¨æ¼ Web é é¢ï¼
-  
-   ä¸åä»ç´¹ä»¥è³æåº«çºå¾å°çæºä¸é¯çç«é»æ¯ï¼http://www.webreview.comã
-   
-   å°æ¼ Web éæï¼PHP æ¯ä¸åæ¥µå¥½çæ¥å£ãå®å¨ http://www.php.net/ã
-   
-   å°æ¼è¤éçä»»åï¼å¾å¤äººæ¡ç¨ Perl æ¥å£å ä½¿ç¨ CGI.pm ç DBD::Pg æ mod_perl
-   ã
-   
-  2.3)PostgreSQL ææåå½¢ç¨æ¶çé¢åï¼
-  
-   åæ¥ç¨æ¶ææ¯éæºéç¼äººå¡è½æ¾å°å¾å¤çæé PostgreSQLçGUI å形工å·è»é«ï¼å¨
-   PostgreSQLç¤¾åææª æä¸å詳細çå表ã
-     _________________________________________________________________
-   
-系統管çåé¡
-
-  3.1)æææ¨£è½æ PostgreSQL è£å¨ /usr/local/pgsql ä»¥å¤çå°æ¹ï¼
-  
-   å¨éè¡ configure æå ä¸ --prefix é¸é ã
-   
-  3.2) æå¦ä½æ§å¶ä¾èªå¶ä»é»è¦ç飿¥ï¼
-  
-   é è¨ææ³ä¸ï¼PostgreSQL åªå許ä¾èªæ¬æ©ä¸éé unix å奿¥åæ TCP/IP
-   æ¹å¼ç飿¥ã ä½ åªæå¨ä¿®æ¹äºéç½®æä»¶ postgresql.conf ä¸ç
-   listen_addressesï¼ä¸ä¹å¨éç½®æä»¶ $PGDATA/pg_hba.conf ä¸æéäº
-   åºæ¼é ç¨é»è¦ï¼ host-based ï¼ç身份èªèï¼ä¸¦éæ°åå
-   PostgreSQLï¼å¦åå¶ä»é»è¦æ¯ä¸è½èä½ ç PostgreSQL ä¼ºæå¨é²è¡é£æ¥çã
-   
-  3.3) æææ¨£èª¿æ´è³æåº«å¼æä»¥ç²å¾æ´å¥½çæ§è½ï¼
-  
-   æä¸åä¸»è¦æ¹é¢å¯ä»¥æå PostgreSQL çæ½è½ã
-   
-   æ¥è©¢æ¹å¼çè®å
-          éä¸»è¦æ¶åä¿®æ¹æ¥è©¢æ¹å¼ä»¥ç²åæ´å¥½çæ§è½:
-          
-          + åµå»ºç´¢å¼ï¼åæ¬è¡¨éå¼åé¨åç´¢å¼ï¼
-          + ä½¿ç¨ COPY èªå¥ä»£æ¿å¤å Insert èªå¥ï¼
-          + å°å¤åSQLèªå¥çµæä¸åäºå以æ¸å°æäº¤äºåçéé·ï¼
-          + å¾ä¸åç´¢å¼ä¸æå夿¢è¨éæä½¿ç¨ CLUSTERï¼
-          + å¾ä¸åæ¥è©¢çµæä¸ååºé¨åè¨éæä½¿ç¨ LIMITï¼
-          + ä½¿ç¨é ç·¨è¯å¼æ¥è©¢ï¼Prepared Query)ï¼
-          + ä½¿ç¨ ANALYZE ä»¥ä¿æç²¾ç¢ºçåªåçµ±è¨ï¼
-          + å®æä½¿ç¨ VACUUM æ pg_autovacuum
-          + é²è¡å¤§éè³ææ´æ¹æååªé¤ç´¢å¼ï¼ç¶å¾é建索å¼ï¼
-            
-   ä¼ºæå¨çéç½®
-          éç½®æä»¶ postgres.conf ä¸çå¾å¤è¨­
-          ç½®é½æå½±é¿æ§è½ï¼ææåæ¸çå表å¯è¦ï¼
-          ç®¡ç塿å/è³æåº«ä¼ºæå¨éè¡ç°å¢/è³æåº«ä¼ºæå¨éè¡éç½®ï¼
-          æé忏çè§£éå¯è¦ï¼http://www.varlena.com/varlena/GeneralBits/Tidb
-          its/annotated_conf_e.html å
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.htmlã
-          
-   ç¡¬é«ç鏿
-          é»è¦ç¡¬é«å°æ§è½çå½±é¿å¯ç覽
-          http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
-          x.html å http://www.powerpostgresql.com/PerfList/ã
-          
-  3.4)PostgreSQL è£¡å¯ä»¥ç²å¾ä»éº¼æ¨£çèª¿è©¦ç¹æ§ï¼
-  
-   PostgreSQL æå¾å¤é¡ä¼¼ log_*
-   ç伺æå¨éç½®è®éå¯ç¨æ¼æ¥è©¢çåå°åé²ç¨çµ±è¨ï¼èéäºå·¥ä½å°èª¿è©¦åæ§è½æ¸¬è©¦å
-   ¾æå¹«å©ã
-   
-  3.5) çºä»éº¼å¨è©¦å飿¥ææ¶å°ãSorry, too many
-  clientsï¼å·²æå¤ªå¤ç¨æ¶é£æ¥ï¼ãæ¶æ¯ï¼
-  
-   é表示你已éå°é è¨ 100 å並ç¼(åä½)å¾å°é²ç¨æ¸çéå¶ï¼ä½ éè¦ééä¿®æ¹
-   postgresql.conf æä»¶ä¸ç max_connections å¼ä¾ å¢å  postmaster
-   çå¾å°ä½µç¼èçæ¸ï¼ä¿®æ¹å¾ééæ°åå postmasterã
-   
-  3.6)PostgreSQL çåç´éç¨æåªäºå§å®¹ ï¼
-  
-   PostgreSQL éç¼çµå°æ¯æ¬¡å°çæ¬çåç´ä¸»è¦åªåäºä¸äº Bug ä¿®æ£å·¥ä½ï¼å æ¤å¾
-   7.4.8 åç´å° 7.4.9 ä¸é覠dump å restoreï¼åéè¦åæ­
-   ¢è³æåº«ä¼ºæå¨ï¼å®è£æ´æ°å¾çè»é«åï¼ç¶å¾éå伺æå¨å³å¯ã
-   
-   ææPostgreSQLçç¨æ¶æè©²å¨ææ¥è¿ï¼ä½ æä½¿ç¨çä¸»çæ¬ï¼çå°æ¹é²çæ¬ç¼ä½ç¡å¿«åç´
-   ãåç®¡æ¯æ¬¡åç´å¯è½é½æä¸é»é¢¨éªï¼PostgreSQLçå°æ¹ é²çå忝è¨è¨ç¨ä¾ä¿®æ­
-   £ä¸äº Bug
-   çï¼ç¨å¼ç¢¼æ¹åè¼å°ï¼æä»¥é¢¨éªéæ¯å¾å°çãPostgreSQL社åèªçºä¸è¬ææ³ä¸ä¸åç´ç
-   é¢¨éªéæ¯å¤æ¼åç´çã
-   
-   ä¸»çæ¬çåç´ï¼ä¾å¦å¾ 7.3 å° 7.4ï¼é常æä¿®æ¹ç³»çµ±è¡¨åè³æè¡¨çå§é¨æ ¼å¼ã
-   éäºæ¹è®ä¸è¬æ¯è¼è¤éï¼å æ¤æåä¸ç¶æè³ææä»¶çåå¾å¼å®¹æ§ãå æ¤å¾èçæ¬ä¸­
-   é²è¡è³æå°åºï¼dumpï¼/ç¶å¾å¨æ°çæ¬ä¸­
-   é²è¡è³æå°å¥ï¼reloadï¼å°ä¸»çæ¬çåç´æ¯å¿é çã
-   
-  3.7)(使稠PostgreSQL )æéè¦ä½¿ç¨ä»éº¼é»è¦ç¡¬é« ï¼
-  
-   ç±æ¼é»è¦ç¡¬é«å¤§å¤æ¸æ¯ç¸å®¹çï¼äººå總æ¯å¾åæ¼ç¸ä¿¡ææé»è¦ç¡¬é«è³ªé乿¯ç¸
-   åçãäºå¯¦ä¸ä¸æ¯ï¼ ECC RAMï¼å¸¶å¥å¶æ ¡é©çè¨æ¶é«ï¼ï¼SCSI
-   ï¼ç¡¬ç¢ï¼ååªè³ªçä¸»æ©æ¿æ¯ä¸äºä¾¿å®è²¨è¦æ´å å¯é ä¸å·ææ´å¥½çæ§è½ã
-   PostgreSQL å¹¾ä¹å¯ä»¥éè¡å¨ä»»ä½ç¡¬é«ä¸ï¼
-   ä½å¦æå¯é æ§åæ§è½å°ä½ ç系統å¾éè¦ï¼ä½ å°±éè¦å¨é¢çç ç©¶ä¸ä¸ä½ ç硬é«çµæ
-   äºã卿åçéµä»¶å表ä¸ä¹æé漠硬é«éç½®åæ§å¹æ¯çè¨è«ã
-     _________________________________________________________________
-   
-æä½åé¡
-
-  4.1) å¦ä½åªé¸æä¸åæ¥è©¢çµæçé å¹¾è¡ï¼ææ¯é¨æ©çä¸è¡ï¼
-  
-   å¦æä½ åªæ¯è¦æåå¹¾è¡è³æï¼ä¸¦ä¸ä½ å¨å·è¡æ¥è©¢ä¸­
-   ç¥é確åçè¡æ¸ï¼ä½ å¯ä»¥ä½¿ç¨ LIMIT åè½ã å¦ææä¸åç´¢å¼è ORDER BY ä¸­
-   çæ¢ä»¶å¹éï¼PostgreSQL å¯è½å°±åªèçè¦æ±çé å¹¾æ¢è¨éï¼
-   ï¼å¦åå°å°æ´åæ¥è©¢é²è¡èçç´å°çæéè¦çè¡ï¼ã妿å¨å·è¡æ¥è©¢åè½æä¸ç¥é確åçè¨éæ
-   ¸ï¼ å¯ä½¿ç¨æ¸¸æ¨(cursor)åFETCHåè½ã
-   
-   å¯ä½¿ç¨ä»¥ä¸æ¹æ³æåä¸è¡é¨æ©è¨éçï¼
-       SELECT  cols
-      FROM tab
-      ORDER BY random()
-      LIMIT 1 ;
-
-  4.2)
-  å¦ä½æ¥ç表ãç´¢å¼ãè³æåº«ä»¥åç¨æ¶çå®ç¾©ï¼å¦ä½æ¥çpsql裡ç¨å°çæ¥è©¢æä»¤ä¸¦é¡¯ç¤ºå
-  ®åï¼
-  
-   å¨psqlä¸ä½¿ç¨ \dt å½ä»¤ä¾é¡¯ç¤ºè³æè¡¨çå®ç¾©ï¼è¦çè§£ psql ä¸­
-   ç宿´å½ä»¤å表å¯ä½¿ç¨ \? ï¼å¦å¤ï¼ä½ ä¹å¯ä»¥é±è® psql çæºä»£ç¢¼ æä»¶
-   pgsql/src/bin/psql/describe.cï¼å®åæ¬çºçæ psql åææ§å½ä»¤ç輸åºçææ SQL
-   å½ä»¤ãä½ éå¯ä»¥å¸¶ -E é¸é åå psqlï¼ éæ¨£å®å°åå°åºä½ å¨ psql ä¸­
-   æçµ¦åºçå½ä»¤å·è¡æçå§é¨å¯¦é使ç¨ç SQL
-   æ¥è©¢èªå¥ãPostgreSQL乿ä¾äºä¸åå¼å®¹ SQLç INFORMATION SCHEMA æ¥å£ï¼
-   ä½ å¯ä»¥å¾é裡ç²åéæ¼è³æåº«çè³è¨ã
-   
-   å¨ç³»çµ±ä¸ä¹æä¸äºä»¥ pg_ æé çç³»çµ±è¡¨ä¹æè¿°äºè¡¨çå®ç¾©ã
-   
-   ä½¿ç¨ psql -l æä»¤å¯ä»¥ååºææçè³æåº«ã
-   
-   ä¹å¯ä»¥ç覽ä¸ä¸ pgsql/src/tutorial/syscat.source
-   æä»¶ï¼å®åèäºå¾å¤å¯å¾è³æåº«ç³»çµ±è¡¨ä¸ç²åè³è¨çSELECTèªæ³ã
-   
-  4.3) å¦ä½æ´æ¹ä¸åæ¬ä½çè³æé¡åï¼
-  
-   å¨8.0çæ¬è£¡æ´æ¹ä¸åæ¬ä½çè³æé¡åå¾å®¹æï¼å¯ä½¿ç¨ ALTER TABLE ALTER COLUMN
-   TYPE ã
-   
-   å¨ä»¥åççæ¬ä¸ï¼å¯ä»¥é樣åï¼
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-
-   ä½ ç¶å¾å¯ä»¥ä½¿ç¨ VACUUM FULL tab æä»¤ä¾ä½¿ç³»çµ±æ¶åç¡æè³ææä½ç¨ç空éã
-   
-  4.4) å®æ¢è¨éï¼å®å表ï¼å®åè³æåº«çæå¤§éå¶æ¯å¤å°ï¼
-  
-   ä¸é¢æ¯ä¸äºéå¶ï¼
-   
-     å®åè³æåº«æå¤§å°ºå¯¸ï¼    ç¡éå¶ï¼å·²å卿 32TB çè³æåº«ï¼
-     å®å表çæå¤§å°ºå¯¸ï¼      32 TB
-     ä¸è¡è¨éçæå¤§å°ºå¯¸ï¼     1.6 TB
-     ä¸åæ¬ä½çæå¤§å°ºå¯¸?      1 GB
-     ä¸å表裡æå¤§åæ¸ï¼       ç¡éå¶
-     ä¸å表裡æå¤§æ¬ä½æ¸ï¼    250-1600 ï¼èåé¡åæéï¼
-     ä¸å表裡çæå¤§ç´¢å¼æ¸éï¼ ç¡éå¶
-   
-   ç¶ç¶ï¼å¯¦é䏿²æçæ£çç¡éå¶ï¼éæ¯è¦åå¯ç¨ç£ç¤ç©ºéãå¯ç¨è¨æ¶é«/交æåçå¶ç´ã
-   äºå¯¦ä¸ï¼ç¶ä¸è¿°éäºæ¸å¼è®å¾ç°å¸¸å°å¤§æï¼ç³»çµ±æ§è½ä¹æåå¾å¤§å½±é¿ã
-   
-   å®è¡¨çæå¤§å¤§å° 32 TB ä¸éè¦ä½æ¥­
-   ç³»çµ±å°å®åæä»¶ä¹éééº¼å¤§çæ¯æã大表ç¨å¤å 1 GB çæä»¶åå²ï¼å æ­
-   ¤æä»¶ç³»çµ±å¤§å°çéå¶æ¯ä¸éè¦çã
-   
-   å¦æé è¨çå¡å¤§å°å¢é·å° 32K ï¼æå¤§çå®è¡¨å¤§å°åæå¤§åæ¸éå¯ä»¥å¢å å°ååã
-   
-   æä¸åéå¶å°±æ¯ä¸è½å°å¤§å°å¤æ¼2000å­
-   ç¯çååµå»ºç´¢å¼ã幸éå°æ¯é樣çç´¢å¼å¾å°ç¨å°ãééå°å¤å­
-   ç¯åçå§å®¹é²è¡MD5åç¨éç®çµæé²è¡å½æ¸ç´¢å¼å¯å°åçå¯ä¸æ§å¾å°ä¿èï¼
-   ä¸¦ä¸å¨ææª¢ç´¢å許å°åä¸çå®è©é²è¡æç´¢ã
-   
-  4.5) åå²ä¸åå¸åçææ¬æä»¶è£¡çè³æéè¦å¤å°ç£ç¤ç©ºéï¼
-  
-   ä¸å Postgres è³æåº«ï¼å­
-   å²ä¸åææ¬æä»¶ï¼æä½ç¨ç空éæå¤å¯è½éè¦ç¸ç¶æ¼éåææ¬æä»¶èªèº«å¤§å°5åçç£ç¤ç©ºé
-   ã
-   
-   ä¾å¦ï¼åè¨æä¸å 100,000 è¡çæä»¶ï¼æ¯è¡æä¸åæ´æ¸åä¸åææ¬æè¿°ã å設
-   ææ¬ä¸²çå¹³åé·åº¦çº20ä½åçµ(Byte)ãææ¬æä»¶ä½ç¨ 2.8 MBãå­
-   æ¾éäºè³æçPostgreSQLè³æåº«æä»¶å¤§ç´æ¯ 5.2 MB:
-     24 ååçµ: æ¯è¡çé ï¼å¤§ç´å¼ï¼
-     24 ååçµç¯: ä¸åæ´æ¸åæ¬ä½åä¸åææ¬åæ¬ä½
-   +  4 ååçµç¯: é é¢å§æååçµçæé
-   ----------------------------------------
-     52 ååçµæ¯è¡
-
-   PostgreSQL è³æé ç大尿¯ 8192 ä½åçµ (8 KB)ï¼åï¼
-
-   8192 ååçµæ¯é
-   -------------------   =  158 è¡/è³æé ï¼åä¸åæ´ï¼
-     52 ååçµæ¯è¡
-
-   100000 è³æè¡
-   --------------------  =  633 è³æé ï¼åä¸åæ´ï¼
-      146 è¡/è³æé
-
-   633 è³æé  * 8192 åç¯/é   = 5,185,536 åç¯ï¼5.2 MBï¼
-
-   ç´¢å¼ä¸éè¦é麼å¤çé¡å¤æ¶èï¼ä½ä¹ç¢ºå¯¦åæ¬è¢«ç´¢å¼çè³æï¼å æ­
-   ¤å®åä¹å¯è½å¾å¤§ã
-   
-   ç©ºå¼ NULL åæ¾å¨ä½åä¸ï¼å æ¤ä½ç¨å¾å°ç空éã
-   
-  4.6) çºä»éº¼æçæ¥è©¢å¾æ¢ï¼çºä»éº¼éäºæ¥è©¢æ²æå©ç¨ç´¢å¼ï¼
-  
-   ä¸¦éæ¯åæ¥è©¢é½æèªå使ç¨ç´¢å¼ãåªæå¨è¡¨ç大å°è¶éä¸åæå°å¼ï¼ä¸¦ä¸æ¥è©¢åªæé
-   ¸ä¸è¡¨ä¸è¼å°æ¯ä¾çè¨éææææ¡ç¨ç´¢å¼ã éæ¯å çºç´¢å¼æçå¼èµ·çé¨å³ç£ç¤å­
-   åå¯è½æ¯ç´æ¥å°è®å表ï¼é åºæçï¼æ´æ¢ã
-   
-   çºäºå¤æ·æ¯å¦ä½¿ç¨ç´¢å¼ï¼PostgreSQL
-   å¿é ç²å¾æé表ççµ±è¨å¼ãéäºçµ±è¨å¼å¯ä»¥ä½¿ç¨ VACUUM ANALYZEï¼æ ANALYZE
-   ç²å¾ã ä½¿ç¨çµ±è¨å¼ï¼åªåå¨ç¥é表中
-   æå¤å°è¡ï¼å°±è½å¤ æ´å¥½å°å¤æ·æ¯å¦å©ç¨ç´¢å¼ã
-   çµ±è¨å¼å°ç¢ºå®åªåç飿¥é åºå飿¥æ¹æ³ä¹å¾æç¨ãå¨è¡¨çå§å®¹ç¼çè®åæï¼æå®æé²è
-   ¡çµ±è¨å¼çæ´æ°æ¶éã
-   
-   ç´¢å¼é常ä¸ç¨æ¼ ORDER BY
-   æå·è¡é£æ¥ãå°ä¸å大表ç䏿¬¡é åºæçåå䏿¬¡æåºé常æ¯ç´¢å¼æçè¦å¿«ãç¶èï¼å¦æ
-   å° LIMIT å ORDER BY
-   çµåå¨ä¸èµ·ä½¿ç¨ç話ï¼éå¸¸å°æä½¿ç¨ç´¢å¼ï¼å çºéæåè¿å表ä¸çä¸å°é¨åè¨éã
-   
-   å¦æä½ ç¢ºä¿¡PostgreSQLçåªåå¨ä½¿ç¨é åºæçæ¯ä¸æ£ç¢ºçï¼ä½ å¯ä»¥ä½¿ç¨SET
-   enable_seqscan TO 'off'æä»¤ä¾ééé åºæçï¼
-   ç¶å¾å次éè¡æ¥è©¢ï¼ä½ å°±å¯ä»¥çåºä½¿ç¨ä¸åç´¢å¼æçæ¯å¦ç¢ºå¯¦è¦å¿«ä¸äºã
-   
-   ç¶ä½¿ç¨éé符æä½ï¼ä¾å¦ LIKE æ ~ æï¼ç´¢å¼åªè½å¨ç¹å®çææ³ä¸ä½¿ç¨ï¼
-     * å符串çéå§é¨åå¿é æ¯æ®éå符串ï¼ä¹å°±æ¯èªªï¼
-          + LIKE æ¨¡å¼ä¸è½ä»¥ % æé ã
-          + ~ ï¼æ£å表éå¼ï¼æ¨¡å¼å¿é ä»¥ ^ æé ã
-     * å符串ä¸è½ä»¥å¹éå¤ååç¬¦çæ¨¡å¼é¡æé ï¼ä¾å¦ [a-e]ã
-     * å¤§å°å¯«ç¡éçæ¥æ¾ï¼å¦ ILIKE å ~* çä¸ä½¿ç¨ç´¢å¼ï¼ä½å¯ä»¥ç¨ 4.8
-       ç¯æè¿°ç表éå¼ç´¢å¼ã
-     * å¨å initdb æå¿é æ¡ç¨é è¨çæ¬å°è¨ç½® C
-       localeï¼å çºç³»çµ±ä¸å¯è½ç¥éå¨é C locale ææ³æä¸ä¸åæå¤§å符æ¯ä»éº¼ã
-       å¨éç¨®ææ³ä¸ï¼ä½ å¯ä»¥åµå»ºä¸åç¹æ®ç text_pattern_ops ç´¢å¼ä¾ç¨æ¼
-       LIKE çç´¢å¼ã
-       
-   å¨ 8.0 ä¹åççæ¬ä¸­
-   ï¼é¤éè¦æ¥è©¢çè³æé¡ååç´¢å¼çè³æé¡åç¸å¹éï¼å¦åç´¢å¼ç¶å¸¸æ¯æªè¢«ç¨å°ï¼ç¹å¥æ
-   ¯å° int2, int8 åæ¸å¼åçç´¢å¼ã
-   
-  4.7) æå¦ä½æè½çå°æ¥è©¢åªå卿¯ææ¨£è©ä¼°èçæçæ¥è©¢ï¼
-  
-   åè EXPLAIN æåé ã
-   
-  4.8) æææ¨£åæ£å表éå¼æç´¢å大å°å¯«ç¡éçæ­
-  £å表é弿¥æ¾ï¼ææ¨£å©ç¨ç´¢å¼é²è¡å¤§å°å¯«ç¡éæ¥æ¾ï¼
-  
-   æä½ç¬¦ ~ èçæ£å表éå¼å¹éï¼è ~* èç大å°å¯«ç¡éçæ£å表éå¼å¹éã大å°å¯«ç¡éç
-   LIKE è®ç¨®æçº ILIKEã
-   
-   å¤§å°å¯«ç¡éçç弿¯è¼é常寫åï¼
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-   é樣å°ä¸æä½¿ç¨æ¨æºçç´¢å¼ã使¯å¯ä»¥åµå»ºä¸åå¨éç¨®ææ³ä¸ä½¿ç¨ç表éå¼ç´¢å¼
-   :
-    CREATE INDEX tabindex ON tab (lower(col));
-
-   å¦æä¸è¿°ç´¢å¼å¨åµå»ºæå å¥ UNIQUE ç´æï¼éç¶ç´¢å¼æ¬ä½èªèº«å§å®¹å¯ä»¥å­
-   å²å¤§å°å¯«ä¸éçå§å®¹ï¼ä½å¦ææ UNIQUE
-   ç´æå¾ï¼éäºå§å®¹ä¸è½å忝大å°å¯«ä¸åï¼å¦åæé æè¡çªï¼ãçºäºä¿è­
-   ä¸ç¼çéç¨®ææ³ï¼å¯ä»¥ä½¿ç¨ CHECK ç´ææ¢ä»¶ææ¯è§¸ç¼å¨å¨é奿é²è¡éå¶ã
-   
-  4.9) å¨ä¸åæ¥è©¢è£¡ï¼æææ¨£æª¢æ¸¬ä¸åæ¬ä½æ¯å¦çº NULL
-  ï¼æå¦ä½æè½æºç¢ºæåºèä¸è«ææ¬ä½æ¯å¦å« NULL å¼ï¼
-  
-   ç¨ IS NULL å IS NOT NULL æ¸¬è©¦é忬ä½ï¼å·é«æ¹æ³å¦ä¸ï¼
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   çºäºè½å°å« NULL æ¬ä½æåºï¼å¯å¨ ORDER BY æ¢ä»¶ä¸ä½¿ç¨ IS NULL å IS NOT
-   NULL ä¿®é£¾ç¬¦ï¼æ¢ä»¶çºç true å°æ¯æ¢ä»¶çºå false æå¨åé¢ï¼ä¸é¢çä¾å­
-   å°±æå°å« NULL çè¨éæå¨çµæçä¸é¢é¨åï¼
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-  4.10) å種å符é¡åä¹éæä»éº¼ä¸åï¼
-  
-   é¡å å§é¨å稱 èªªæ
-   VARCHAR(n) varchar æå®äºæå¤§é·åº¦ï¼è®é·å­
-   ç¬¦ä¸²ï¼ä¸è¶³å®ç¾©é·åº¦çé¨åä¸è£é½
-   CHAR(n) bpchar å®é·å符串ï¼å¯¦éè³æä¸è¶³å®ç¾©é·åº¦æï¼ä»¥ç©ºæ ¼è£é½
-   TEXT text æ²æç¹å¥çä¸ééå¶ï¼ååè¡çæå¤§é·åº¦éå¶ï¼
-   BYTEA bytea è®é·åç¯åºåï¼ä½¿ç¨NULLåç¬¦ä¹æ¯å許çï¼
-   "char" char å®åå符
-   
-   å¨ç³»çµ±è¡¨åå¨ä¸äºé¯èª¤è³è¨è£¡ä½ å°çå°å§é¨å稱ã
-   
-   ä¸é¢æåçåå種é¡å毠"varlena"ï¼è®é·ï¼é¡åï¼ä¹å°±æ¯èªªï¼éé çååå­
-   ç¯æ¯é·åº¦ï¼å¾é¢ææ¯è³æï¼ã æ¼æ¯å¯¦éä½ç¨çç©ºéæ¯è²æç大å°è¦å¤ä¸äºã
-   ç¶èéäºé¡åå¦å®ç¾©å¾é·æé½å¯ä»¥è¢«å£ç¸®åå²ï¼å æ­
-   ¤ç£ç¤ç©ºéä¹å¯è½æ¯é æ³çè¦å°ã
-   
-   VARCHAR(n) å¨åå²éå¶äºæå¤§é·åº¦çè®é·åç¬¦ä¸²æ¯æå¥½çã TEXT é©ç¨æ¼å­
-   å²æå¤§å¯é 1G å·¦å³ä½æªå®ç¾©éå¶é·åº¦çå符串ã
-   
-   CHAR(n) æé©åæ¼åå²é·åº¦ç¸åçå符串ã
-   CHAR(n)ææ ¹ææçµ¦å®çæ¬ä½é·åº¦ä»¥ç©ºæ ¼è£è¶³ï¼ä¸è¶³çæ¬ä½å§å®¹ï¼ï¼ è
-   VARCHAR(n) åªåå²æçµ¦å®çè³æå§å®¹ã BYTEA ç¨æ¼åå²äºé²å¶è³æï¼å°¤å¶æ¯åå«
-   NULL åç¯çå¼ãéäºé¡åå·æå·®ä¸å¤çæ§è½ã
-   
-  4.11.1) æææ¨£åµå»ºä¸ååºåèææ¯èªåéå¢çæ¬ä½ï¼
-  
-   PostgreSQL æ¯æ SERIAL
-   è³æé¡åãï¼æ¬ä½å®ç¾©çºSERIALå¾ï¼å°èªååµå»ºä¸ååºåçæå¨ï¼ä¾å¦ï¼
-   CREATE TABLE person (
-      id   SERIAL,
-      name TEXT
-   );
-
-   æèªåè½æçºä»¥ä¸SQLèªå¥ï¼
-   CREATE SEQUENCE person_id_seq;
-   CREATE TABLE person (
-      id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-      name TEXT
-   );
-
-   åè create_sequence æåé ç²åéæ¼åºåçæå¨çæ´å¤è³è¨ã
-   
-  4.11.2) æå¦ä½ç²å¾ä¸åæå¥çåºåèçå¼ï¼
-  
-   ä¸ç¨®æ¹æ³æ¯å¨æå¥ä¹ååç¨å½æ¸ nextval() å¾åºåå°è±¡è£¡æª¢ç´¢åºä¸ä¸å SERIAL
-   å¼ï¼ç¶å¾åç¨æ¤å¼ç²¾ç¢ºå°æå¥ã使稠4.11.1 è£¡çä¾è¡¨ï¼å¯ç¨å½ç¢¼é樣æè¿°ï¼
-   new_id = execute("SELECT nextval('person_id_seq')");
-   execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-   é樣éè½å¨å¶ä»æ¥è©¢ä¸ä½¿ç¨åæ¾å¨ new_id è£¡çæ°å¼ï¼ä¾å¦ï¼ä½çºåç§ person
-   è¡¨çå¤éµï¼ã æ³¨æèªååµå»ºç SEQUENCE å°è±¡çåç¨±å°ææ¯
-   <table>_<serialcolumn>_seqï¼ é裡 table å serialcolumn
-   å奿¯ä½ ç表çå稱åä½ ç SERIAL æ¬ä½çå稱ã
-   
-   é¡ä¼¼çï¼å¨ SERIAL å°è±¡é è¨æå¥å¾ä½ å¯ä»¥ç¨å½æ¸ currval() æª¢ç´¢å賦å¼ç
-   SERIAL å¼ï¼ä¾å¦ï¼
-   execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-   new_id = execute("SELECT currval('person_id_seq')");
-
-  4.11.3) åæä½¿ç¨ currval() æå°è´åå¶ä»ç¨æ¶çè¡çªææ³åï¼
-  
-   ä¸æãcurrval() è¿åçæ¯ä½ æ¬æ¬¡æè©±é²ç¨æè³¦çå¼è䏿¯ææç¨æ¶çç¶åå¼ã
-   
-  4.11.4) çºä»éº¼ä¸å¨äºåç°å¸¸ä¸æ¢å¾éç¨åºåèå¢ï¼çºä»éº¼å¨åºåèæ¬ä½çåå¼ä¸åå¨éæ·å¢ï¼
-  
-   çºäºæé«ä½µç¼æ§ï¼åºåèå¨éè¦çæåè³¦äºæ­
-   £å¨éè¡çäºåï¼ä¸¦ä¸å¨äºåçµæä¹åä¸é²è¡éå®ï¼ éå°±æå°è´ç°å¸¸ä¸­
-   æ¢çäºåå¾ï¼åºåèæåºç¾ééã
-   
-  4.12) ä»éº¼æ¯ OID ï¼ä»éº¼æ¯ CTID ï¼
-  
-   PostgreSQL è£¡åµå»ºçæ¯ä¸è¡è¨é齿ç²å¾ä¸åå¯ä¸ç OIDï¼é¤éå¨åµå»ºè¡¨æä½¿ç¨
-   WITHOUT OIDS é¸é ã OID åµå»ºææèªåçæä¸å 4ä½åçµçæ´æ¸ï¼ææ OID å¨ç¸æ
-   PostgreSQL ä¼ºæå¨ä¸åæ¯å¯ä¸çã ç¶èï¼å®å¨è¶é 40åæå°æº¢åºï¼ OID æ­
-   ¤å¾æåºç¾éè¤ãPostgreSQL å¨å®çå§é¨ç³»çµ±è¡¨è£¡ä½¿ç¨ OID
-   å¨è¡¨ä¹é建ç«è¯ç¹«ã
-   
-   å¨ç¨æ¶çè³æè¡¨ä¸ï¼æå¥½æ¯ä½¿ç¨ SERIAl ä¾ä»£æ¿ OID å çº SERIAL åªè¦ä¿è­
-   å¨å®å表ä¸çæ¸å¼æ¯å¯ä¸çå°±å¯ä»¥äºï¼éæ¨£å®æº¢åºçå¯è½æ§å°±é常å°äºï¼
-   SERIAL8 å¯ç¨ä¾ä¿å8ååçµçåºåæ¸å¼ã
-   
-   CTID ç¨æ¼æ¨è帶èè³æå¡ï¼å°åï¼åï¼å¡å§ï¼åç§»çç¹å®çç©çè¡ã CTID
-   å¨è¨éè¢«æ´æ¹æéè¼å¾ç¼çæ¹è®ãç´¢å¼è³æä½¿ç¨å®åæåç©çè¡ã
-   
-  4.13) çºä»éº¼ææ¶å°é¯èª¤è³è¨ãERROR: Memory exhausted in AllocSetAlloc()ãï¼
-  
-   éå¾å¯è½æ¯ç³»çµ±çèæ¬å§åç¨åäºï¼æèå§æ ¸å°æäºè³æºæè¼ä½çéå¶å¼ãå¨åå
-   postmaster ä¹å試試ä¸é¢çå½ä»¤ï¼
-   ulimit -d 262144
-   limit datasize 256m
-
-   å決æ¼ä½ ç¨ç
-   shellï¼ä¸é¢å½ä»¤åªæä¸æ¢è½æåï¼ä½æ¯å®å°æä½ çé²ç¨è³ææ®µéå¶è¨å¾æ¯è¼é«ï¼
-   å èä¹è¨±è½è®æ¥è©¢å®æã鿢å½ä»¤æç¨æ¼ç¶åé²ç¨ï¼ä»¥åææå¨éæ¢å½ä»¤éè¡å¾åµå»ºç
-   åé²ç¨ã
-   å¦æä½ æ¯å¨éè¡SQL客æ¶ç«¯æå çºå¾å°è¿åäºå¤ªå¤çè³æèåºç¾åé¡ï¼è«å¨éè¡å®¢æ¶ç
-   «¯ä¹åå·è¡ä¸è¿°å½ä»¤ã
-   
-  4.14) æå¦ä½æè½ç¥éæéè¡çPostgreSQLççæ¬ï¼
-  
-   å¾ psql è£¡ï¼è¼¸å¥ SELECT version();æä»¤ã
-   
-  4.15) æå¦ä½åµå»ºä¸åé è¨å¼æ¯ç¶åæéçæ¬ä½ï¼
-  
-   ä½¿ç¨ CURRENT_TIMESTAMPï¼
-   CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) æææ¨£é²è¡ outer join ï¼å¤é£æ¥ï¼ï¼
-  
-   PostgreSQL æ¡ç¨æ¨æºç SQL èªæ³æ¯æå¤é£æ¥ãé裡æ¯å©åä¾åï¼
-   SELECT *
-   FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   ææ¯
-   SELECT *
-   FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   éå©åçå¹çæ¥è©¢å¨ t1.col å t2.col ä¸å飿¥ï¼ä¸¦ä¸è¿å t1 ä¸­
-   æææªé£æ¥çè¡ï¼é£äºå¨ t2 ä¸æ²æå¹éçè¡ï¼ã å³[å¤]飿¥ï¼RIGHT OUTER
-   JOINï¼å°è¿å t2 ä¸æªé£æ¥çè¡ã å®å¨å¤é£æ¥ï¼FULL OUTER JOINï¼å°è¿å t1 å t2
-   ä¸æªé£æ¥çè¡ã ééµå OUTER å¨å·¦[å¤]飿¥ãå³[å¤]飿¥åå®å¨[å¤]飿¥ä¸­
-   æ¯å¯é¸çï¼æ®é飿¥è¢«ç¨±çºå§é£æ¥ï¼INNER JOINï¼ã
-   
-  4.17) å¦ä½ä½¿ç¨æ¶åå¤åè³æåº«çæ¥è©¢ï¼
-  
-   æ²æè¾¦æ³æ¥è©¢ç¶åè³æåº«ä¹å¤çè³æåº«ã
-   å çºPostgreSQLè¦å è¼èè³æåº«ç¸éç系統ç®éï¼ç³»çµ±è¡¨ï¼ï¼å æ­
-   ¤è·¨è³æåº«çæ¥è©¢å¦ä½å·è¡æ¯ä¸å®çã
-   
-   éå å¢å¼æ¨¡å¡ contrib/dblink
-   å許æ¡ç¨å½æ¸èª¿ç¨å¯¦ç¾è·¨åº«æ¥è©¢ãç¶ç¶ç¨æ¶ä¹å¯ä»¥åæé£æ¥å°ä¸åçè³æåº«å·è
-   ¡æ¥è©¢ç¶å¾å¨å®¢æ¶ç«¯åä½µçµæã
-   
-  4.18) å¦ä½è®å½æ¸è¿åå¤è¡æå¤åè³æï¼
-  
-   å¨å½æ¸ä¸è¿åè³æè¨ééçåè½æ¯å¾å®¹æä½¿ç¨çï¼è©³æåè¦ï¼
-   http://techdocs.postgresql.org/guides/SetReturningFunctions
-   
-  4.19) çºä»éº¼æå¨ä½¿ç¨ PL/PgSQL å½æ¸ååè¨æè¡¨æææ¶å°é¯èª¤è³è¨ãrelation with OID
-  ##### does not existãï¼
-  
-   PL/PgSQL æç·©å彿¸çè³æ¬å§å®¹ï¼ç±æ¤å¸¶ä¾çä¸åä¸å¥½çå¯ä½ç¨æ¯è¥ä¸å
-   PL/PgSQL
-   å½æ¸è¨ªåäºä¸åè¨æè¡¨ï¼ç¶å¾è©²è¡¨è¢«åªé¤ä¸¦é建äºï¼å忬¡èª¿ç¨è©²å½æ¸å°å¤
-   ±æï¼ å çºç·©åç彿¸å§å®¹ä»ç¶æåèçè¨æè¡¨ãè§£æ±ºçæ¹æ³æ¯å¨ PL/PgSQL ä¸­
-   ç¨EXECUTE å°è¨æè¡¨é²è¡è¨ªåã鿍£æä¿èæ¥è©¢å¨å·è¡å總æè¢«éæ°è§£æã
-   
-  4.20) ç®åæåªäºè³æè¤å¯«(replication)æ¹æ¡å¯ç¨ï¼
-  
-   ãè¤å¯«ãåªæ¯ä¸åè¡èªï¼æå¥½å¹¾ç¨®è¤å¯«æè¡å¯ç¨ï¼æ¯ç¨®é½æåªé»å缺é»ï¼
-   
-   ä¸»/å¾å¼è¤å¯«æ¹å¼æ¯å許ä¸å主伺æå¨æ¥åè®/寫çç³è«ï¼èå¤åå¾ä¼ºæå¨åªè½æ¥å
-   è®/SELECTæ¥è©¢çç³è«ï¼ ç®åææµè¡ä¸åè²»ç主/å¾PostgreSQLè¤å¯«æ¹æ¡æ¯
-   Slony-I ã
-   
-   å¤å主伺æå¨çè¤å¯«æ¹å¼å許å°è®/寫çç³è«ç¼é給å¤å°ç主æ©ï¼é種æ¹å¼ç±æ¼é
-   è¦å¨å¤å°ä¼ºæå¨ä¹éåæ¥è³æè®å å¯è½æå¸¶ä¾è¼å´éçæ§è½æå¤±ï¼Pgcluster
-   æ¯ç®åéç¨®æ¹æ¡ä¸æå¥½çï¼ä¸¦ä¸éå¯ä»¥åè²»ä¸è¼ã
-   
-   ä¹æä¸äºåæ¥éä»è²»ååºæ¼ç¡¬é«çè³æè¤å¯«æ¹æ¡ï¼æ¯æä¸è¿°å種è¤å¯«æ¨¡åã
-   
-  4.21) çºä½æ¥è©¢çµæé¡¯ç¤ºçè¡¨åææ¬åèæçæ¥è©¢èªå¥ä¸çä¸åï¼çºä½å¤§å¯«çæä¸è½ä¿çï¼
-  
-   æå¸¸è¦çåå æ¯å¨åµå»ºè¡¨æå°è¡¨åææ¯æ¬å使ç¨äºéå¼è( ' '
-   )ï¼ç¶ä½¿ç¨äºéå¼èå¾ï¼è¡¨åææ¬åï¼ç¨±çºæ¨è符ï¼å岿æ¯åå å¤§å°å¯«çï¼
-   éæè¬è你卿¥è©¢æè¡¨åææ¬åä¹æä½¿ç¨éå¼èï¼ä¸äºå·¥å·è»é«ï¼å pgAdmin
-   æå¨ç¼åºåµå»ºè¡¨çæä»¤æèªåå°å¨æ¯åæ¨è符ä¸å éå¼èã å æ¤ï¼çºäºæ¨è­
-   ç¬¦ççµ±ä¸ï¼ä½ æè©²ï¼
-     * å¨åµå»ºè¡¨æé¿åå°æ¨è符使ç¨éå¼èå¼èµ·ä¾ã
-     * å¨æ¨è符ä¸åªä½¿ç¨å°å¯«åæ¯ã
-     * ï¼çºäºèå·²åå¨çæ¨è符ç¸åï¼å¨æ¥è©¢ä¸ä½¿ç¨éå¼èå°æ¨è符å¼èµ·ä¾ã
diff --git a/doc/FAQ_czech b/doc/FAQ_czech
deleted file mode 100644 (file)
index 99120e6..0000000
+++ /dev/null
@@ -1,849 +0,0 @@
-
-                          Frequently Asked Questions
-                                       
-   Casto kladené dotazy (FAQ) PostgreSQL
-   
-   Poslední aktualizace: 29. ríjna 2007 (aktualizováno pro PostgreSQL
-   8.3)
-   
-   Soucasný správce: Bruce Momjian (bruce@momjian.us)
-   
-   Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
-   
-   Nejaktuálnejsí verzi tohoto dokumentu naleznete na adrese
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html
-   
-   Odpovedi na otázky vázané na konkrétní platformy naleznete na adrese
-   http://www.postgresql.org/docs/faq/.
-     _________________________________________________________________
-   
-                               Obecné otázky
-                                      
-   1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
-   1.2) Kdo rídí vývoj PostgreSQL?
-   1.3) Pod jakou licencí je PostgreSQL?
-   1.4) Na kterých platformách lze provozovat PostgreSQL?
-   1.5) Kde mohu získat PostgreSQL?
-   1.6) Jaká je poslední verze?
-   1.7) Kde mohu získat podporu?
-   1.8) Jak a kam hlásit chyby?
-   1.9) Kde najdu informace o známých chybách nebo nepodporovaných
-   vlastnostech?
-   1.10) Jaká je dostupná dokumentace?
-   1.11) Jak se mohu naucit SQL?
-   1.12) Jak se mohu pripojit k týmu vývojáru?
-   1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-   1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v
-   nekterých zemích?
-   
-                        Dotazy na klientská rozhraní
-                                      
-   2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
-   2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
-   2.3) Existuje grafické rozhraní pro PostgreSQL?
-   
-                           Administrativní dotazy
-                                      
-   3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
-   3.2) Jak nastavit pravidla pro prístup z jiných stanic?
-   3.3) Jak vyladit databázi na vyssí výkon?
-   3.4) Jaké mám ladící prostredky?
-   3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
-   3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu
-   PostgreSQL?
-   3.7) Jaký hardware bych mel pouzívat?
-   
-                              Provozní dotazy
-                                      
-   4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
-   4.2) Jak získám seznam tabulek, indexu, databází, a definovaných
-   uzivatelu. Mohu videt dotazy, které pouzívá psql pro zobrazení techto
-   informací?
-   4.3) Jak zmenit datový typ sloupce?
-   4.4) Jaká je maximální velikost rádku, tabulky a databáze?
-   4.5) Kolik diskového prostoru je potreba k ulození dat z normálního
-   textového souboru?
-   4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
-   4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
-   4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index
-   pro case insensitive hledání?
-   4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
-   dva retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli
-   je polozka NULL nebo ne?
-   4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
-   4.11.1) Jak vytvorit serial/auto-increment polozku?
-   4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
-   4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
-   prostredí?
-   4.11.4) Proc není vygenerované císlo pouzito pri prerusení
-   transakce?Proc vznikají díry v císlování prostrednictvím sekvence nebo
-   typu SERIAL?
-   4.12) Co to je OID? Co je to CTID?
-   4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
-   4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální
-   cas?
-   4.16) Jak provést vnejsí spojení (outer join)?
-   4.17) Jak provést dotaz napríc nekolika databázemi?
-   4.18) Muze funkce vrátit více rádku nebo sloupcu?
-   4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
-   4.20) Jaké jsou moznosti replikace databází?
-   4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí?
-   Proc jsou velká písmena v názvech automaticky prevedena na malá
-   písmena?
-     _________________________________________________________________
-   
-                               Obecné otázky
-                                      
-  1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
-  
-   Výslovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
-   V rade jazyku je slovo PostgreSQL obtízne vyslovitelný, proto se v
-   hovoru casto pouzívá zjednodusená forma názvu. Pro ty, kterí by si
-   rádi poslechli výslovnost, je k dispozici audiozáznam v MP3 formátu.
-   
-   PostgreSQL je relacní databáze s nekterými objektovými rysy, která má
-   moznosti tradicních komercních databázových systému s nekolika
-   rozsíreními, které lze najít v DBMS systémech prístí generace.
-   Pouzívání PostgreSQL není omezené a veskeré zdrojové kódy jsou volne
-   dostupné.
-   
-   Za vývojem PostgreSQL je mezinárodní skupina nezávislých vývojáru
-   navzájem komunikujících prostrednictvím internetu. Tento projekt není
-   rízen zádnou obchodní organizací. Pokud se chcete pridat k projektu,
-   prectete si vývojárské FAQ na adrese
-   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
-   
-  1.2) Kdo rídí vývoj PostgreSQL?
-  
-   Pokud budete hledat organizaci rídící vývoj PostgreSQL, budete
-   zklamáni. Nic takového neexistuje. Existují pouze "core" a CVS skupiny
-   uzivatelu, ale ty existují více z administrátorských duvodu nez z
-   organizacních. Projekt je smerován komunitou vývojáru a uzivatelu, ke
-   které se kdokoliv muze pripojit. Jediné co potrebuje, je prihlásit se
-   do elektronické konference. Více ve vývojárském FAQ.
-   
-  1.3) Pod jakou licencí je PostgreSQL?
-  
-   PostgreSQL je predmetem následujících autorských práv:
-   
-   Dílcí Copyright (c) 1996-2009, PostgreSQL Global Development Group
-   Dílcí Copyright (c) 1994-6, Regents of the University of California
-   
-   Udeluje se oprávnení k uzití, rozmnozování, provádení úprav a
-   rozsirování tohoto softwaru a dokumentace k nemu, pro jakékoli úcely,
-   bez licencního poplatku a bez písemné licencní smlouvy, za podmínky,
-   ze na vsech jeho kopiích je uvedeno oznámení o výse uvedených právech,
-   jakoz i obsah tohoto a dvou následujících odstavcu.
-   
-   THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ZÁDNÉM
-   PRÍPADE ODPOVEDNA ZÁDNÉ TRETÍ OSOBE ZA PRÍMOU, NEPRÍMOU, ZVLÁSTNÍ,
-   NAHODILOU NEBO VÝSLEDNOU SKODU, VCETNE USLÉHO ZISKU, ZPUSOBENOU UZITÍM
-   TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PRÍPADE, ZE THE
-   UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MOZNOSTI VZNIKU TAKOVÉ
-   SKODY.
-   
-   THE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
-   NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VÝROBKU KE
-   SPECIFICKÝM ÚCELUM. NÍZE UVEDENÝ SOFTWARE JE POSKYTNUT "JAK STOJÍ A
-   LEZÍ" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
-   ÚDRZBU, PODPORU, AKTUALIZACI, VYLEPSENÍ NEBO MODIFIKACI.
-   
-   Výse uvedené je BSD licence, bezná licence otevreného zdroje. Není zde
-   zádné omezení ohledne uzití kódu zdroje. Jsme s tím spokojeni a nemáme
-   v úmyslu na této skutecnosti cokoli menit.
-   
-  1.4) Na kterých platformách lze provozovat PostgreSQL?
-  
-   Strucne receno, PostgreSQL bezí na vsech moderních unixových
-   systémech. Seznam tech, u kterých probehlo testování, naleznete v
-   instalacních instrukcích.
-   
-   PostreSQL také bezí nativne na vsech Microsof Windows systémech
-   odvozených z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
-   a Windows2003. Instalacní balícek naleznete na adrese
-   http://pgfoundry.org/projects/pginstaller. Na starsích systémech s
-   jeste MS-DOS jádrem lze spustit PostgreSQL s emulacním programem
-   Cygwin.
-   
-   Dále existuje port pro Novell Netware 6 port na adrese
-   http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F .
-   
-  1.5) Kde mohu získat PostgreSQL?
-  
-   Pomocí webového klienta z adresy http://www.postgresql.org/ftp/ nebo
-   klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
-   
-  1.6) Jaká je poslední verze?
-  
-   Nejnovejsí verzí PostgreSQL je verze 8.2.5
-   
-   V plánu je uvolnovat kazdorocne jednu velkou verzi a kazdých nekolik
-   mesícu malé verze.
-   
-  1.7) Kde mohu získat podporu?
-  
-   Nejcastejsí forma podpory uzivatelum PostgreSQL komunitou je
-   prostrednictvím e-mailu. Na nasem webovém serveru naleznete odkaz na
-   stránky,kde se muzete prihlásit do elektronické konference. Pro
-   zacátek jsou doporucené konference general nebo bugs.
-   
-   Dalsí cestou je IRC kanál #postgresql na Freenode (irc.freenode.net).
-   K pripojení pouzijte Unixový príkaz irc -x '#postgresql' "$USER"
-   irc.freenode.net nebo jakékoholiv jiného IRC klienta. V této síti
-   existuje jeste spanelská (#postgresql-es) a francouzská
-   (#postgresqlfr) verze. Dalsí PostgreSQL kanál naleznete na EFNet.
-   
-   Seznam spolecností poskytující komercní podporu naleznete na adrese
-   http://techdocs.postgresql.org/companies.php.
-   
-  1.8) Jak a kam hlásit chyby?
-  
-   Vyplnte formulár na adrese
-   http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
-   ftp://ftp.postgresql.org/pub/ si overte, ze pouzíváte aktuální verzi
-   PostreSQL.
-   
-   Chyby reportované prostrednictvím chybového formuláre nebo zasláním
-   mailu do PostgreSQL konference obvykle generuje následující odezvu:
-     * Nejedná se o chybu, a proc
-     * Jedná se o známou chybu, která je jiz v seznamu úkolu TODO
-     * Tato chyba byla opravena v aktuální verzi
-     * Tato chyba byla jiz opravena ve verzi, která zatím nebyla
-       oficiálne uvolnena
-     * Pozadavek na dalsí doplnující informace:
-          + Operacní systém
-          + Verze PostgreSQL
-          + Test reprodukující chybu
-          + Ladící informace
-          + Backtrace výstup debuggeru
-     * Jedná se o zatím nezjistenou chybu, pak muzete cekat
-          + Záplatu odstranující chybu, která bude vlozena do dalsí velké
-            nebo malé verze
-          + Informaci, ze se jedná o chybu, kterou nelze okamzite resit a
-            je proto pridána do TODO
-       
-  1.9) Kde najdu informace o známých chybách nebo nepodporovaných vlastnostech?
-  
-   PostgreSQL podporuje rozsírenou podmnozinu SQL:2003. V nasem TODO
-   naleznete seznam známých chyb, chybejících vlastností, a plány do
-   budoucna.
-   
-   Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
-     * Pozadavek je jiz v TODO
-     * Pozadovaná funkce není chtená protoze
-          + Duplikuje jiz existující funkci, která respektuje SQL
-            standard
-          + Implementací funkce by se prílis zkomplikoval kód bez
-            relevantního prínosu
-          + Funkce by mohla být nebezpecná nebo nespolehlivá
-     * Pozadavek je pridán do TODO
-       
-   PostgreSQL nepozívá systém pro sledování chyb, protoze jsme zjistili,
-   ze je efektivnejsí prímo reagovat na maily a udrzovat aktuální TODO. V
-   praxi je snaha o co nejrychlejsí resení chyb, a chyby, které by se
-   mohly projevit u mnoha uzivatelu jsou opravovány velice rychle. Jediné
-   místo, kde lze dohledat vsechny zmeny, rozsírení a opravy v PostgreSQL
-   je CVS log. Poznámky k verzi "Release notes" nezachycují vsechny
-   zmeny, k nemz doslo.
-   
-  1.10) Jaká je dostupná dokumentace?
-  
-   PostgreSQL obsahuje vynikající dokumentaci zahrnující manuál,
-   manuálové stránky a testovací príklady. Podívejte se do adresáre /doc.
-   Manuál je prístupný online na http://www.postgresql.org/docs.
-   
-   K dispozici jsou zdarma dve online knihy na adresách
-   http://www.postgresql.org/docs/books/awbook.html a
-   http://www.commandprompt.com/ppbook/. Dalsí literaturu lze zakoupit.
-   Nejpopulárnejsí je od Kerryho Douglase. Seznam dostupné literatury je
-   na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
-   kolekce technicky orientovaných clánku tematicky spojených s
-   PostgreSQL na adrese http://techdocs.postgresql.org/.
-   
-   Rádkový klient psql má \d príkazy pro zobrazení informací o typech,
-   operátorech, funkcích, agregacních funkcí, atd. Pouzijte \? pro
-   zobrazení dostupných príkazu.
-   
-   Dalsí dokumentaci najdete na nasem webu.
-   
-  1.11) Jak se mohu naucit SQL?
-  
-   Podívejte se do výse uvedené dokumentace. Dalsí online knihou je
-   "Teach Yourself SQL in 21 Days, Second Edition" na adrese
-   http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
-   uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
-   S., et al., Addison-Wesley. Dalsí The Complete Reference SQL, Groff et
-   al., McGraw-Hill.
-   
-   Dalsí online tutoriály jsou dostupné na adresách:
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12) Jak se mohu pripojit k týmu vývojáru?
-  
-   Prostudujte si Developer's FAQ.
-   
-  1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-  
-   Software muzeme porovnávat z nekolika ruzných pohledu: vlastnosti,
-   výkon, spolehlivost, podpora a cena.
-   
-    Vlastnosti
-    
-   PostgreSQL nabízí vetsinu funkcí funkcionality velkých komercních DBMS
-   systému jako jsou: transakce, vnorené dotazy, spouste, referencní
-   integrita a sofistikovaný systém zamykání. Poskytujeme urcité funkce,
-   které ostatní systémy bezne nepodporují. Napr. uzivatelem definované
-   typy, dedicnost, pravidla (rules), a MVCC architekturu.
-   
-    Výkon
-    
-   Výkon PostgreSQL je srovnatelný s ostatními komercními nebo Open
-   Source databázemi. V nekterých prípadech je rychlejsí, jindy
-   pomalejsí. Nás výkon je obvykle +/-10% vuci ostatním databázím.
-   
-    Spolehlivost
-    
-   Uvedomujeme si, ze databáze musí být stoprocentne spolehlivá, jinak je
-   nepouzitelná. Snazíme se, aby kazdá verze byla dobre otestována a
-   obsahovala minimum chyb. Kazdá verze je minimálne nekolik mesícu v
-   beta testovacím rezimu. Do produkcního rezimu se dostane, az kdyz
-   nedochází k dalsím zmenám nebo opravám. Veríme, ze jsem více nez
-   srovnatelní s ostatními databázemi v této oblasti.
-   
-    Podpora
-    
-   Na nasich internetových konferencích se setkává velká skupina vývojáru
-   a uzivatelu pri resení vyskytujících se problému. Nase internetové
-   konference umoznují kontakt velké skupiny vývojáru a uzivatelu.
-   Nemuzeme garantovat opravu chyby, ale komercní DBMSs také vzdy
-   negarantují resení problému. Veríme ale, ze díky prímému kontaktu na
-   vývojáre, nasi uzivatelskou komunitu, manuálum, a dostupným zdrojovým
-   kódum máme lepsí podporu nez ostatní DBMSs. Pro ty, kterí preferují
-   komercní "per-incident" podporu, existuje spolecností, kterí ji
-   nabízejí (FAQ sekce 1.7.)
-   
-    Cena
-    
-   PostgreSQL lze pouzívat bezplatne (a to i pro komercní pouzití). Také
-   muzete neomezene pouzívat nás kód ve svých produktech s výjimkami
-   specifikovanými v nasí licenci (prebíráme BSD licenci).
-   
-  1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v nekterých
-  zemích?
-  
-   Pocínaje verzí 8.0.[4+] podporuje PostgreSQL letní cas také pro USA.
-   Podpora letního casu (daylight saving time) pro Kanadu a Západní
-   Austrálii je obsazena ve verzích 8.0.[10+] a 8.1.[6+] a vsech
-   následujících verzích. Starsí verze pouzívaly systémovou databázi
-   casových zón obsahující, krome jiného, informaci o tom, zda se pro
-   danou casovou zónu rozlisuje mezi letním a zimním casem.
-     _________________________________________________________________
-   
-                        Dotazy na klientská rozhraní
-                                      
-  2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
-  
-   PostgreSQL se distribuuje pouze s rozhraním pro jazyk C a embedded C.
-   Vsechna dalsí rozhraní predstavují nezávislé projekty, které je treba
-   stáhnout z internetu samostatne. Osamostatnení techto projektu
-   umoznuje nezávislost vývojových týmu a moznost vydávat nové verze bez
-   ohledu na vydání nové verze PostgreSQL.
-   
-   Nekteré programovací jazyky jako je napr. PHP obsahují rozhraní pro
-   PostgreSQL. Rozhraní pro jazyky jako je Perl, Tcl, Python a mnoho
-   dalsích jsou dostupné na adrese: http://gborg.postgresql.org v sekci
-   Drivers/Interfaces.
-   
-  2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
-  
-   Dobrým úvodem do problematiky databází v prostredí webových stránek
-   muze být web http://www.webreview.com.
-   
-   PHP (http://www.php.net) je vynikajícím rozhraním pro tvorbu webu.
-   
-   Pro slozitejsí úlohy se casto pouzívá Perl a jeho BDB:Pg rozhraní s
-   podporou CGI - CGI.pm nebo mod_perl(u).
-   
-  2.3) Existuje grafické rozhraní pro PostgreSQL?
-  
-   K dispozici je rada grafických nástroju podporujících PostgreSQL a to
-   od komercních nebo open source vývojáru. Podrobný seznam naleznete na
-   adrese http://www.postgresql.org/docs/techdocs.54.
-     _________________________________________________________________
-   
-                           Administrativní dotazy
-                                      
-  3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
-  
-   Pri spoustení configure nastavte parametr --prefix
-   
-  3.2) Jak nastavit pravidla pro prístup z jiných stanic?
-  
-   Ve výchozí konfiguraci, PostgreSQL umoznuje pouze pripojení z
-   lokálního uzivatele prostrednictvím Unix domain sockets nebo TCP/IP
-   spojení. Bez modifikace listen_addresses v souboru postgresql.conf, a
-   povolení adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
-   PostgreSQL z ostatních stanic. Zmena výse zmínených parametru vyzaduje
-   restart databázového serveru.
-   
-  3.3) Jak vyladit databázi na vyssí výkon?
-  
-   Výkon systému muzete ovlivnit ve trech oblastech:
-   
-    Zmeny dotazu
-    
-     * Pouzitím indexu vcetne cástecných a funkcionálních
-     * Pouzitím COPY místo opakovaných INSERTu
-     * Sloucením mnoha SQL príkazu do jedné transakce snízením rezie na
-       commit
-     * Pouzíváním CLUSTERU, pokud nacítáte vetsí pocet rádek podle indexu
-     * Pouzitím klauzule LIMIT v poddotazech
-     * Pouzitím predpripravených dotazu
-     * Pouzíváním ANALYZE. Tento príkaz aktualizuje statistiky, které se
-       pouzívají pri optimalizaci dotazu
-     * Pravidelné pouzití VACUUM nebo pouzívání pg_autovacuum
-     * Odstranením indexu pred rozsáhlými zmenami v datech
-       
-    Konfigurace serveru
-    
-   Urcité parametry v souboru postgresql.conf mají vliv na výkon serveru.
-   Detaily naleznete v prírucce Administrátora v Server Run-time
-   Environment/Run-time Configuration. Dalsí komentáre naleznete v
-   http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
-   ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-   
-    Výber hardware
-    
-   Vliv hardware na výkon serveru je popsán v dokumentech
-   http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
-   a http://www.powerpostgresql.com/PerfList/.
-   
-  3.4) Jaké mám ladící prostredky?
-  
-   Nastavením log_* promenných v konfiguraci serveru si vynutíte logování
-   dotazu a procesních statistik, které Vám mohou pomoci pri ladení a
-   optimalizaci výkonu.
-   
-  3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
-  
-   Prekrocil jste výchozí limit, který je 100 soucasne pripojených
-   uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
-   zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
-   
-  3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu PostgreSQL?
-  
-   Zpusob císlování je popsán v dokumentaci na
-   http://www.postgresql.org/support/versioning. Instrukce k provedení
-   migrace na vyssí verzi jsou taktéz v dokumentaci na adrese
-   http://www.postgresql.org/docs/current/static/install-upgrading.html.
-   
-  3.7) Jaký hardware bych mel pouzívat?
-  
-   Jelikoz PC jsou vetsinou kompatibilní, lidé mají tendence verit, ze
-   vsechna PC jsou stejne kvalitní. Coz není pravda. Pameti ECC, SCSI a
-   kvalitní základní desky jsou mnohem spolehlivejsí a výkonnejsí nez
-   lacinejsí hardware. PostgreSQL pobezí na vetsine hardwaru, nicméne
-   pokud je pro Vás spolehlivost a výkon systému dulezitá, je dobré
-   venovat cas nalezení vhodné hardwarové konfigurace. Na nasich
-   elektronických konferencích muzete diskutovat o vhodných konfiguracích
-   a znackách.
-     _________________________________________________________________
-   
-                              Provozní dotazy
-                                      
-  4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
-  
-   Pokud potrebujete pouze nekolik rádku a pokud víte kolik, pouzijte
-   SELECT LIMIT. Pokud bude mozné pouzít index shodující se s ORDER BY,
-   je mozné, ze se nebude provádet celý dotaz. Pokud neznáte pocet
-   záznamu, pouzijte kurzor a príkaz FETCH.
-   
-   Pro výber náhodného rádku pouzijte príkaz ve tvaru:
-SELECT col
-FROM tab
-ORDER BY random()
-LIMIT 1;
-
-  4.2) Jak získám seznam tabulek, indexu, databází, a definovaných uzivatelu.
-  Mohu videt dotazy, které pouzívá psql pro zobrazení techto informací?
-  
-   V psql príkazem \dt získáte seznam tabulek. Úplný seznam príkazu psql
-   získáte príkazem \?. Alternativne si muzete prostudovat zdrojový kód
-   psql - soubor pgsql/src/bin/psql/describe.c, který obsahuje SQL
-   príkazy, které jsou generovány pro získání výstupu psql "backslash"
-   príkazu. Také muzete nastartovat psql s parametrem -E, který zpusobí
-   zobrazení vsech SQL príkazu, které se odesílají na server. PostgreSQL
-   také podporuje SQL standard INFORMACNÍ SCHÉMATA (standardní systémové
-   tabulky). Klasickým dotazem do systémových tabulek získáte pozadované
-   informace o strukture databáze.
-   
-   Systémové tabulky PostgreSQL (mimo rámec SQL standardu) pouzívají
-   prefix pg_. Pro zjistení struktury databáze je muzete pouzít také, i
-   kdyz preferovány jsou dotazy do informacního schématu.
-   
-   Seznam vsech databází získáte príkazem psql -l
-   
-   Dalsí inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
-   Obsahuje ilustracní SELECTy potrebné k získání informací z systémových
-   tabulek databáze.
-   
-  4.3) Jak zmenit datový typ sloupce?
-  
-   Ve verzích 8.0 a pozdejsích jednoduse:
-ALTER TABLE ALTER COLUMN TYPE
-
-   V starsích verzích:
-BEGIN;
-ALTER TABLE tab ADD COLUMN new_col new_data_type;
-UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-ALTER TABLE tab DROP COLUMN old_col;
-COMMIT;
-
-   Po zmene spustte príkaz VACUUM FULL, aby doslo k uvolnení diskového
-   prostoru pouzitého v tu chvíli jiz neplatnými záznamy.
-   
-  4.4) Jaká je maximální velikost rádku, tabulky a databáze?
-  
-   PostgreSQL má tato omezení:
-   
-   Maximální velikost databáze:       neomezena (existují 32TB db)
-   Maximální velikost tabulky:        32 TB
-   Maximální velikost rádky:          480GB
-   Maximální velikost polozky         1 GB
-   Maximální pocet rádku v tabulce:   neomezeno
-   Maximální pocet sloupcu v tabulce: 250-1600 podle typu
-   Maximální pocet indexu na tabulce: neomezeno
-   
-   Ve skutecnosti nic není neomezeno, limitem bývá vzdy dostupná disková
-   pamet nebo velikost operacní pameti. Pokud máte nekterou z techto
-   hodnot neobvykle velkou, muze dojít ke snízení výkonu.
-   
-   Maximální velikost tabulky je 32 TB a nevyzaduje podporu velkých
-   souboru operacním systémem. Velké tabulky se ukládají do nekolika 1 GB
-   souboru takze limity souborového systému nejsou podstatné.
-   
-   Maximální velikost tabulky a maximální pocet sloupcu muzeme
-   zectyrnásobit nastavením velikosti bloku na 32K.
-   
-   Indexy jsou povolené pouze na sloupcích jejichz délka je mensí nez
-   2000 znaku. Pokud tuto délku prekrocíme a index potrebujeme pro
-   zajistení jednoznacnosti, je vhodnejsí pouzít funkcionální index nad
-   MD5 funkcí nebo fulltextový index.
-   
-  4.5) Kolik diskového prostoru je potreba k ulození dat z normálního textového
-  souboru?
-  
-   PostgreSQL vyzaduje az petinásobek diskového prostoru k ulození dat z
-   textového souboru.
-   
-   Napríklad, uvazujme soubor se 100 tisíci rádky obsahující na kazdé
-   rádce celé císlo a textový popis. Text je v prumerne dvacet bytu
-   dlouhý. Textový soubor bude 2.8 MB dlouhý. Velikost databáze
-   obsahující odpovídající data bude zhruba 5.2 MB.
-    24 bytu: hlavicka rádku (priblizne)
-    24 bytu: jedna celocíselná polozka a jedna textová
-   + 4 byty: ukazatel na stránku k entici
-   ------------------------------------------------------
-    52 bytu na rádek
-
-   Velikost datové stránky PostgreSQL je 8192 bytu (8KB)
- 8192 bytu na stránce
----------------------- = 158 rádek na stránku
-  52 bytu za rádek
-
-100000 rádek
------------------------ = 633 stránek (zaokrouhleno nahoru)
-   158 rádek na stránce
-
-633 datových stránek * 8192 bytu na kazdou stránku = 5,185,536 bytu (5.2 MB)
-
-   Indexy nemají tak velkou rezii, ale mohou být také velké, protoze
-   obsahují indexovaná data.
-   
-   Hodnoty NULL jsou ulozeny v bitmapách, takze zabírají jen velmi málo
-   diskového prostoru.
-   
-  4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
-  
-   Kazdý dotaz nemusí nutne pouzít existující indexy. Index se pouzije
-   tehdy, kdyz je tabulka vetsí nez urcitá minimální velikost, a dotaz
-   vybírá pouze procentuálne malou cást rádku tabulky. To proto, ze
-   náhodný prístup k disku daný ctením indexu muze být pomalejsí nez
-   lineární ctení tabulky nebo sekvencní ctení.
-   
-   PostgreSQL rozhoduje o pouzití indexu na základe statistiky prístupu k
-   tabulce. Tyto statistiky se shromazdují príkazy VACUUM ANALYZE nebo
-   ANALYZE. Díky statistikám má optimizer informaci o poctu rádek v
-   tabulce a muze lépe rozhodnout o pouzití indexu. Statistiky se uplatní
-   pri urcení optimálního poradí a metody spojení tabulek. Statistiky by
-   se meli aktualizovat opakovane, tak jak se mení obsah tabulek.
-   
-   Indexy nejsou obycejne pouzity pro setrídení nebo spojení tabulek.
-   Sekvencní zpracování následované explicitním trídením je obycejne
-   rychlejsí nez pouzití indexu na velké tabulce.
-   
-   Jinak je tomu v prípade pouzití LIMIT a ORDER BY, pri kterém se
-   vetsinou index pouzije, jelikoz je výsledkem pouze malá cást tabulky.
-   
-   Pokud si myslíte, ze optimizer mylne zvolil sekvencní prohledávání
-   tabulky, pouzijte príkaz SET enable_seqscan TO 'off' a zkuste zda je
-   prohledávání s indexem rychlejsí.
-   
-   Pri vyhledávání na základe vzoru jako je napr. operátor LIKE nebo ~ se
-   indexy pouzijí pouze za urcitých skutecností:
-     * zacátek hledaného vzoru musí být ukotven k zacátku, tj.
-          + vzor LIKE nesmí zacínat %
-          + ~ regulární výraz musí zacínat ^
-     * vzor nesmí zacínat intervalem, napr. [a-e]
-     * vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~*
-       nepouzívá indexy. Muzete ale pouzít funkcionální indexy, které
-       jsou popsány v sekci 4.8
-     * pri inicializaci databáze (initdb) musí být pouzito C locale nebo
-       vytvorte speciální text_pattern_index, který umozní, pri
-       respektování zmínených podmínek pouzití indexu operací LIKE. Pro
-       vyhledávání celých slov je mozné a výhodné pouzít fulltext.
-       
-  4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
-  
-   Podívejte se do nápovedy k príkazu EXPLAIN.
-   
-  4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index pro case
-  insensitive hledání?
-  
-   Vyhledávání prostrednictvím regulárních vzoru zajistuje operátor ~,
-   který je case-sensitive. Jeho case-insensitive varianta je operátor
-   ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.
-   
-   Case-insensitive vyhledání se resí:
-SELECT *
-FROM tab
-WHERE lower(col) = 'abc';
-
-   Tento dotaz nepouzije standardní index. Musíte pouzít tzv.
-   funkcionální index:
-CREATE INDEX tabindex ON tab (lower(col));
-
-   Pokud index vytvoríme jako unikátní, tak muzeme ukládat retezce
-   obsahující malá i velká písmena, ale nikoliv retezce, které se od sebe
-   odlisují jen v malých a velkých písmenech. K zajistení zápisu retezce
-   obsahující pouze malá nebo pouze velká písmena pouzijte CHECK kontroly
-   nebo triggery.
-   
-  4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
-  retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli je polozka
-  NULL nebo ne?
-  
-   Pokud chcete testovat hodnotu NULL pouzijte operátor IS:
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   K spojení retezcu, které mohou obsahovat hodnotu NULL, pouzívejte
-   funkci COALESCE(), napr.:
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-
-   Pokud chcete trídit podle hodnoty NULL, pouzijte výraz IS NULL nebo IS
-   NOT NULL v klauzuli ORDER. Hodnota pravda má prednost pred hodnotou
-   false a tedy pokud pouzijete:
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-   tak záznamy s NULL budou na zacátku setrídených dat.
-   
-  4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
-  
-   Typ        Interní název Poznámky
-   VARCHAR(n) varchar       n urcuje maximální délku
-   CHAR(n)    bpchar        retezec je do dané délky rozsíren mezerami
-   TEXT       text          bez omezení délky
-   BYTEA      bytea         pole bytu nespecifikované délky
-   "char"     char          jeden znak
-   
-   Na interní názvy muzete narazit v systémovém katalogu nebo v nekterých
-   chybových hláseních.
-   
-   Ctyri první typy jsou tzv. varlena typy (první ctyri byty na disku
-   jsou obsahují délku, ostatní obsahují vlastní data). Skutecne obsazený
-   prostor je tedy o neco málo vetsí nez deklarovaná velikost. Na druhou
-   stranu, delsí retezce jsou komprimovány, takze obsazený prostor na
-   disku muze být mensí nez se ceká.
-   
-   VARCHAR(n) je vhodný pro ukládání ruzne dlouhých retezcu u kterých
-   známe délkové omezení, TEXT pro retezce bez omezení délky (maximum je
-   jeden gigabyte).
-   
-   CHAR(n) se pouzívá pro ulození stejne dlouhých retezcu. CHAR(n) doplní
-   mezerami na specifikovanou délku, VARCHAR(n) hodnoty se ukládají tak
-   jak jsou. BYTEA je pro ukládání binárních dat - non ASCII hodnot.
-   Vsechny zmínené typy mají podobné výkonové charakteristiky.
-   
-  4.11.1) Jak vytvorit serial/auto-increment polozku?
-  
-   V PostgreSQL muzete pouzít datový typ SERIAL. Jeho pouzitím se
-   automaticky vytvorí sekvence. Napríklad:
-CREATE TABLE person (
-  id   SERIAL,
-  name TEXT
-);
-
-   je automaticky transformováno na:
-CREATE SEQUENCE person_id_seq;
-CREATE TABLE person (
-  id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-  name TEXT
-);
-
-   Podrobnejsí informace najdete v manuálu v popisu príkazu
-   create_sequence.
-   
-  4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
-  
-   Nejjednodussím zpusob, jak získat vygenerovanou hodnotu typu SERIAL,
-   je vyuzít klauzuli RETURNING. Pro tabulku z 4.11.1 vypadá takto:
-INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
-   Také muzete pouzít funkci nextvall() a její výsledek pouzít v príkazu
-   INSERT, nebo zavolat currval() po provedení príkazu INSERT.
-   
-  4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
-  prostredí?
-  
-   Ne, currval vrací vzdy hodnotu, která byla vygenerována pro vás.
-   
-  4.11.4) Proc není vygenerované císlo pouzito pri prerusení transakce?Proc
-  vznikají díry v císlování prostrednictvím sekvence nebo typu SERIAL?
-  
-   Poté co sekvence vygeneruje nové císlo, tak se nedochází k zamcení
-   sekvence a neceká se na úspesné nebo neúspesné dokoncení transakce.
-   Odvoláním transakce, která si vyzádala císla sekvence se tato císla
-   nenávratne ztratí.
-   
-  4.12) Co to je OID? Co je to CTID?
-  
-   V prípade, ze tabulku nezalozíme s atributem WITHOUT OIDS, tak má
-   kazdý rádek unikátní identifikacní císlo OID. Toto císlo je 4 bajtové
-   celé císlo, které je jedinecné v celé instalaci. Pretece po 4
-   miliardách rádku. PostgreSQL pouzívá OIDs jako interní linky v
-   interních systémových tabulkách.
-   
-   K získání unikátního císla v nesystémových tabulkách je vhodnejsí
-   pouzití typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzívá pouze
-   pro jednu tabulku a je tudíz méne náchylná na pretecení. Pokud byste
-   se toho obávali, pouzijte typ SERIAL8.
-   
-   CTID se pouzívá k identifikaci konkrétního fyzického rádku. CTID se
-   mení pokud je rádek modifikován nebo znovu nacten. Pouzívají ho indexy
-   jako adresaci fyzických rádku.
-   
-  4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
-  AllocSetAlloc()"?
-  
-   Pravdepodobne jste vycerpal dostupnou virtuální pamet, nebo tvuj
-   kernel má prílis nízké limity u urcitých zdroju. Pred startem
-   PostgreSQL vyzkousejte:
-ulimit -d 262144
-limit datasize 256m
-
-   Mozná, ze se projde pouze jeden príkaz - zálezí to na vasem shellu.
-   Mel by zvednout limity datových segmentu vasich procesu na dostatecne
-   velkou hodnotu a snad umoznit dokoncení dotazu. Zmena limitu se bude
-   aplikovat pouze na aktuální proces a na vsechny nove vytvorené
-   procesy. Jestlize máte problém s SQL klientem, protoze vám server
-   vrátil prílis dat, zkuste to pred startem klienta.
-   
-  4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
-  
-   V psql napiste:
-SELECT version();
-
-  4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální cas?
-  
-   Pouzijte CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) Jak provést vnejsí spojení (outer join)?
-  
-   PostgreSQL podporuje standardní SQL syntaxi pro vnejsí spojení. Zde
-   jsou dva príklady:
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   nebo
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   Tyto identické dotazy spojí sloupec t1.col k sloupci t2.col, a jeste
-   vrátí vsechny nespárované rádky t2 (ty, které nedohledá v t2). RIGHT
-   JOIN by pripojil vsechny nespárované rádky z t2. FULL JOIN vrátí
-   vsechny spárované rádky i vsechny zbývající rádky z obou tabulek.
-   Klícové slovo OUTER je volitelné. Bezná operace JOIN se také oznacuje
-   jako vnitrní spojení.
-   
-  4.17) Jak provést dotaz napríc nekolika databázemi?
-  
-   Neexistuje zádný zpusob, jak se v dotazu odkazovat na tabulky z jiné
-   nez aktuální databáze. A to protoze má systémové tabulky ulozené
-   nezávisle v kazdé databázi a není tak úplne zrejmé, jak by se dotaz
-   provedený napríc databázemi mel chovat.
-   
-   Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomocí
-   funkcí. Druhý zpusob je simultální pripojení klienta ke vsem
-   relevantním databázím a sloucení výsledku na strane klienta.
-   
-  4.18) Muze funkce vrátit více rádku nebo sloupcu?
-  
-   Jde to jednoduse pomocí set-returning funkce. Více na
-   http://www.postgresql.org/docs/techdocs.17.
-   
-  4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
-  
-   Nechteným vedlejsím efektem kesování SQL dotazu v PL/pgSQL funkci je
-   problém s neplatnými odkazy na docasné tabulky, které byly od prvního
-   spustení funkce zruseny a znovu vytvoreny pred dalsím spustením
-   PL/pgSQL funkce. Resením je pouzít príkaz EXECUTE a to proto, ze
-   provádecí plán SQL príkazu spousteného príkazem EXECUTE se vytvárí
-   pokazdé znovu (neukládá se do cache).
-   
-   Tento problém by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssích
-   verzích.
-   
-  4.20) Jaké jsou moznosti replikace databází?
-  
-   Replikaci databáze umoznuje nekolik technoligií. Kazdá má urcité
-   výhody a nevýhody.
-   
-   Master/Slave replikaci podporuje jeden hlavní server, který prijímá
-   pozadavky na zápis a ctení, a nekolik podrízených serveru, které
-   umoznují pouze ctení (SELECT). Nejrozsírenejsím volne dostupným
-   resením tohoto typu je Slony-I.
-   
-   Replikace typu Multi-master podporuje existenci nekolika serveru s
-   povoleným zápisem na více replikovaných serverech. Toto resení zvysuje
-   zátez serveru, protoze je nutná synchronizace serveru.
-   Nejrozsírenejsím volne dostupným resením je PGCluster.
-   
-   Jeste existuje nekolik komercních a hardware resení replikací
-   podporujících ruzné modely replikace.
-   
-  4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí? Proc
-  jsou velká písmena v názvech automaticky prevedena na malá písmena?
-  
-   Nejcastejsím duvodem nerozpoznání názvu objektu bylo pouzití vlození
-   názvu sloupce nebo tabulky mezi uvozovky pri zakládání tabulky. Pokud
-   se název zapíse mezi uvozovky, pak je case sensitive, a v dusledku
-   toho je nutné názvy techto sloupcu nebo tabulek v SQL príkazech také
-   vkládat mezi uvozovky (pokud obsahují velká písmena). Nekteré
-   programy, jako je napríklad pgAdmin, automaticky pouzívají uvozovky.
-   Takze pokud chcete, aby systém identifikoval identifikátor, musíte:
-     * nepouzívat uvozovky v príkazu CREATE TABLE
-     * v identifikátoru pouzít pouze malá písmena
-     * v dotazech vkládat identifikátory do uvozovek
diff --git a/doc/FAQ_farsi b/doc/FAQ_farsi
deleted file mode 100644 (file)
index 95b28bb..0000000
+++ /dev/null
@@ -1,1256 +0,0 @@
-PostgreSQL FAQسوالاتي ÙƒÙ‡ Ø§ØºÙ„ب Ø¯Ø± Ù…ورد PostgreSQL‌ 
-پرسيده Ù…ÙŠ Ø´ÙˆÙ†Ø¯
-تاريخ Ø¢Ø®Ø±ÙŠÙ† Ø§ØµÙ„اح Ø§ÙŠÙ† Ù\81ايل: 28 Ø´Ù‡Ø±ÛŒÙˆØ± 1383 Ù‡Ø¬Ø±ÛŒ 
-شمسی
-نگهدارنده Ø§ØµÙ„ÙŠ Ù\81ايل (زبان Ø§Ù†Ú¯Ù„يسي)در Ø­Ø§Ù„ 
-حاضر : Bruce Momjian pgman@candle.pha.pa.us
-نگهدارنده Ù\81ايل Ø¨Ù‡ Ø²Ø¨Ø§Ù† Ù\81ارسي: m.taghizadeh@imenafzar.net 
- Ù…حمود ØªÙ‚ي‌زاده Ù…هرجردی
-
-آخرين Ù†Ø³Ø®Ù‡ Ø§ÙŠÙ† Ù\81ايل Ø±Ø§ Ù…ي‌توانيد Ø§Ø² Ø§ÙŠÙ† 
-آدرس Ø¨Ú¯ÙŠØ±ÙŠØ¯  http://www.PostgreSQL.org/docs/faqs/FAQ.html
-سوالاتي ÙƒÙ‡ Ø¯Ø± Ù…ورد ÙŠÙƒ Ø³Ú©ÙˆÛŒ(پلتÙ\81رم) Ø®Ø§Øµ Ø§Ø³Øª Ø¯Ø± 
-اين Ø¢Ø¯Ø±Ø³ Ø¬ÙˆØ§Ø¨ Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ù†Ø¯  
-http://www.PostgreSQL.org/docs/index.html
-
-
-
-سوالات Ø¹Ù…ومي
-1.1) PostgreSQL Ú†ÙŠØ³Øª Ùˆ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø§ÙŠØ¯ Ø¢Ù† Ø±Ø§ ØªÙ„Ù\81ظ ÙƒØ±Ø¯ØŸ
-1.2) Ù‚انون ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØªâ€Œ (حقوق Ù…عنوي) Ø¯Ø± Ù…ورد 
-PostgreSQL  Ø¨Ù‡ Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
-1.3) PostgreSQL‌ Ø±ÙˆÙŠ Ú†Ù‡ Ù†ÙˆØ¹ ÙŠÙˆÙ†ÙŠÙƒØ³Ù‡Ø§ÙŠÙŠ Ø§Ø¬Ø±Ø§ 
-مي‌شود؟
-1.4) Ø±ÙˆÙŠ Ú†Ù‡ Ù…حيطهاي ØºÙŠØ± ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¢Ù† Ø±Ø§ 
-اجرا ÙƒØ±Ø¯ØŸ
-1.5) PostgreSQL Ø±Ø§ Ø§Ø² ÙƒØ¬Ø§ Ù…ي‌توانم Ø¨Ú¯ÙŠØ±Ù…ØŸ
-1.6) Ø§Ø² ÙƒØ¬Ø§ Ø®Ø¯Ù…ات Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ú¯ÙŠØ±Ù…ØŸ
-1.7) Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ Ø§Ø¹Ù„ام Ø´Ø¯Ù‡ Ú†ÙŠØ³ØªØŸ
-1.8) Ú†Ù‡ Ù…ستندات Ùˆ Ø±Ø§Ù‡Ù†Ù…ائيهايي ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ØŸ
-1.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§Ø²Ø§Ø´ÙƒØ§Ù„ات Ø´Ù†Ø§Ø®ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ ÙŠØ§ 
-امكاناتي ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯  
-مطلع Ø´ÙˆÙ…ØŸ
-1.10) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø²Ø¨Ø§Ù† SQL Ø±Ø§ ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±Ù…ØŸ
-1.11) Ø¢ÙŠØ§ PostgreSQL Ù…شكل Y2K‌ Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±ØŸ
-1.12) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¨Ù‡ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ PostgreSQL 
-ملحق Ø´ÙˆÙ…ØŸ
-1.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ø§Ø´ÙƒØ§Ù„ Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ 
-برنامه Ù†ÙˆÙŠØ³ Ø§Ø¹Ù„ام ÙƒÙ†Ù…ØŸ
-1.14)  ÙˆØ¶Ø¹ÙŠØª PostgreSQL‌ Ø¯Ø± Ù…قايسه Ø¨Ø§ Ø³Ø§ÙŠØ± DBMSها Ø¨Ù‡ 
-Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
-1.15) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§Ø² Ù†Ø¸Ø± Ù…الي Ø¨Ù‡ PostgreSQL 
-كمك ÙƒÙ†Ù…ØŸ
-
-سوالات Ù…ربوط Ø¨Ù‡ Ø§Ø³ØªÙ\81اده Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
-2.1) Ø¢ÙŠØ§ Ù‡ÙŠÚ† Ø¯Ø±Ø§ÙŠÙˆØ± ODBC‌ Ø¨Ø±Ø§ÙŠ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
-2.2) Ú†Ù‡ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙ\81اده Ø§Ø² PostgreSQL‌ Ø¨Ø§ 
-صÙ\81حات ÙˆØ¨ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
-2.3) Ø¢ÙŠØ§ PostgreSQL‌ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙƒØ§Ø±Ø¨Ø±ÙŠ Ú¯Ø±Ø§Ù\81يكي Ø¯Ø§Ø±Ø¯ØŸ
-2.4) Ø¨Ø§ Ú†Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ي‌توان Ø¨Ø§ 
-PostgreSQL‌ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚رار ÙƒØ±Ø¯ØŸ
-
-سوالات Ù…ربوط Ø¨Ù‡ Ø±Ø§Ù‡Ø¨Ø±ÙŠ
-3.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم PostgreSQL‌ Ø±Ø§ Ø¯Ø± Ø´Ø§Ø®Ù‡â€ŒØ§ÙŠ ØºÙŠØ± 
-از /usr/local/pgsql/  Ù†ØµØ¨ ÙƒÙ†Ù…ØŸ
-3.2) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ Ø±Ø§ Ø§Ø¬Ø±Ø§ Ù…ÙŠ 
-كنم Ù¾ÙŠØ§Ù… Bad system call‌ Ùˆ ÙŠØ§ core dump â€ŒÙ…ي‌گيرم؟
-3.3) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ 
-را Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ IpcMemoryCreate  Ù…ي‌گيرم؟
-3.4) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ 
-را Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ  IpcSemaphoreCreate Ù…ي‌گيرم؟
-3.5) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§ØªØµØ§Ù„ات Ø³Ø§ÙŠØ± Ù…اشينها Ø±Ø§ 
-كنترل ÙƒÙ†Ù…ØŸ
-3.6) Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¨Ø§Ù„اتر Ùˆ Ø¨Ù‡ØªØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
-Ú†Ù‡ ØªÙ†Ø¸ÙŠÙ…اتي Ø±Ø§ Ø¨Ø§ÙŠØ¯ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
-3.7) Ú†Ù‡ Ø§Ù…كاناتي Ø¨Ø±Ø§ÙŠ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„‌ ÙˆØ¬ÙˆØ¯ 
-دارد؟
-3.8) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ù…ي‌خواهم Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-وصل Ø´ÙˆÙ… Ù¾ÙŠØ§Ù… "Sorry, too many clients" â€ŒÙ…ي‌گيرم؟
-3.9) Ø¯Ø± Ø´Ø§Ø®Ù‡  pgsql_tmp  Ú†Ù‡ Ú†ÙŠØ²ÙŠ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯ØŸ
-3.10) Ú†Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ù†Ø³Ø®Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
-بايد ÙƒÙ„ Ø¯Ø§Ø¯Ù‡ Ù‡Ø§ Ø±Ø§ dump‌ Ùˆ Ù…جدداً restore ÙƒÙ†Ù…ØŸ
-3.11) Ø§Ø² Ú†Ù‡ Ø³Ø®Øª Ø§Ù\81زاري Ø¨Ø§ÙŠØ¯ Ø§Ø³ØªÙ\81اده ÙƒÙ†Ù…ØŸ
-
-سوالات Ø¹Ù…لياتي
-4.1) ØªÙ\81اوت Ø¨ÙŠÙ† binary cursors Ùˆ Normal cursors Ú†ÙŠØ³ØªØŸ
-4.2) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù\81قط Ø±ÙˆÙŠ Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ\81 Ø§ÙˆÙ„ ÙŠØ§ 
-يك Ø±Ø¯ÙŠÙ\81 ØªØµØ§Ø¯Ù\81ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª SELECT‌ Ø¨Ø²Ù†Ù…ØŸ
-4.3) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù„يستي Ø§Ø² Ø¬Ø¯Ø§ÙˆÙ„ ÙŠØ§ Ø³Ø§ÙŠØ± 
-چيزهايي ÙƒÙ‡ Ø¯Ø± psql‌ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ Ø±Ø§ Ø¨Ø¨ÙŠÙ†Ù…ØŸ
-4.4) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø­Ø°Ù\81 Ù…ي‌كنيد؟ Ú†Ú¯ÙˆÙ†Ù‡ 
-نوع Ø¯Ø§Ø¯Ù‡ Ø¢Ù† Ø±Ø§ Ø¹ÙˆØ¶ ÙƒÙ†ÙŠÙ…ØŸ
-4.5) Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙ\81،‌ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø®ÙˆØ¯ 
-پايگاه Ø¯Ø§Ø¯Ù‡ Ú†Ù‚در Ø§Ø³ØªØŸ
-4.6) Ú†Ù‚در Ù\81ضاي Ø¯ÙŠØ³Ùƒ Ø³Ø®Øª Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† 
-داده‌‌هاي ÙŠÙƒ Ù\81ايل Ù…تني Ù…ورد Ù†ÙŠØ§Ø² Ø§Ø³ØªØŸ
-4.7) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¨Ù\81همم ÙƒÙ‡ Ú†Ù‡ ÙƒØ§Ø±Ø¨Ø±Ø§Ù†ØŒâ€Œ 
-پايگاه Ø¯Ø§Ø¯Ù‡ØŒâ€Œ Ù†Ù…ايه Ùˆ Ø¬Ø¯Ø§ÙˆÙ„ÙŠ Ø¯Ø± Ø³ÙŠØ³ØªÙ… ØªØ¹Ø±ÙŠÙ\81 
-شده Ø§Ø³ØªØŸ
-4.8) Ú†Ø±Ø§ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠ Ù…Ù† ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ Ù…ي‌شوند ÙŠØ§ 
-چرا Ø§Ø² Ù†Ù…ايه Ù‡Ø§ Ø§Ø³ØªÙ\81اده Ù†Ù…ي‌كنند؟
-4.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ø±Ø³ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
-توسط Ø¨Ù‡ÙŠÙ†Ù‡â€ŒØ³Ø§Ø² Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ù…شاهده ÙƒÙ†Ù…ØŸ
-4.10) Ù†Ù…ايه R-tree‌ Ú†ÙŠØ³ØªØŸ
-4.11) Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² ØªÙƒÙˆÙŠÙ†ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ú†ÙŠØ³ØªØŸ (Genetic Query 
-Optimizer)
-4.12) Ú†Ú¯ÙˆÙ†Ù‡ Ø§Ø² Ø¹Ø¨Ø§Ø±Ø§Øª Ù…نظم Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬Ùˆ Ø§Ø³ØªÙ\81اده 
-كنم؟ Ú†Ú¯ÙˆÙ†Ù‡ Ø¬Ø³ØªØ¬ÙˆÙŠÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù… ÙƒÙ‡ Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن 
-نباشد؟ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن 
-از Ù†Ù…ايه Ø§Ø³ØªÙ\81اده ÙƒÙ†Ù…ØŸ
-4.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¯Ø± ÙŠÙƒ Ø¯Ø±Ø®ÙˆØ§Ø³Øª ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… 
-كه ÙŠÙƒ Ù\81يلد NULL‌ Ø§Ø³ØªØŸ
-4.14) ØªÙ\81اوت Ø¨ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù\81 character Ú†ÙŠØ³ØªØŸ
-4.15.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ù\81يلد Ø³Ø±ÙŠØ§Ù„ ÙŠØ§ 
-اÙ\81زايشي Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù…ØŸ
-4.15.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù…قدار ÙŠÙƒ Ø¯Ø±Ø¬ Ø³Ø±ÙŠØ§Ù„ÙŠ Ø±Ø§ 
-بدانم؟
-4.15.3) Ø¢ÛŒØ§ ØªÙˆØ§Ø¨Ø¹ ()nextval Ùˆ ()currval Ù…نجر Ø¨Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
-شرایط race Ø¨Ø±Ø§ÛŒ Ø³Ø§ÛŒØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ù…ÛŒ Ø´ÙˆÙ†Ø¯ØŸ
-4.15.4) Ú†Ø±Ø§ Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ù…ربوط Ø¨Ù‡ ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ÛŒ abort 
-شده Ù…جدداً Ø§Ø³ØªÙ\81اده Ù†Ù…ÛŒ Ø´ÙˆØ¯ØŸ Ú†Ø±Ø§ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ 
-سریالی ÛŒÚ© Ù\81اصله Ø®Ø§Ù„ÛŒ Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆØ¯ØŸ
-4.16) OID Ùˆ TID Ú†Ù‡ Ù‡Ø³ØªÙ†Ø¯ØŸ
-4.17) Ù…عني Ø¨Ø¹Ø¶ÙŠ Ø§Ø² ØªØ±Ù…ها Ùˆ ÙƒÙ„ماتي ÙƒÙ‡ Ø¯Ø± PostgreSQL‌ 
-استÙ\81اده Ù…ي‌شود Ú†ÙŠØ³ØªØŸ
-4.18) Ú†Ø±Ø§ Ù…Ù† Ø®Ø·Ø§ÙŠ "ERROR: Memory exhausted in AllocSetAlloc" 
-مي‌گيرم؟
-4.19) Ø§Ø² ÙƒØ¬Ø§ ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… ÙƒÙ‡ ÙˆÙŠØ±Ø§ÙŠØ´ ÙŠØ§ Ù†Ø³Ø®Ù‡ 
-PostgreSQLيي ÙƒÙ‡ Ù…Ù† Ø§Ø³ØªÙ\81اده Ù…ي‌كنم Ú†ÙŠØ³ØªØŸ
-4.20) Ú†Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø¬Ø±Ø§ÛŒ Ø¹Ù…لیات Ø±ÙˆÛŒ large-objectها 
-خطای "invalid large obj descriptor"به ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯ØŸ
-4.21) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù… ÙƒÙ‡ Ù…قدار Ø²Ù…ان 
-جاري Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù…قدار Ù¾ÙŠØ´â€ŒÙ\81رض Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯ØŸ
-4.22) Ú†Ø±Ø§ Ø²ÙŠØ± Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø§Ø² IN Ø§Ø³ØªÙ\81اده 
-مي‌كنند ÙƒÙ†Ø¯ Ù‡Ø³ØªÙ†Ø¯ØŸ
-4.23) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ø§Ù„حاق Ø®Ø§Ø±Ø¬ÙŠ (outer join) 
-انجام Ø¯Ù‡Ù…ØŸ
-4.24) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توان Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ Ø§Ø² Ú†Ù†Ø¯ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
-داده ØªÙˆÙ„يد ÙƒØ±Ø¯ØŸ
-4.25) Ú†Ú¯ÙˆÙ†Ù‡ Ø®Ø±ÙˆØ¬ÙŠ ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù…ي‌تواند  Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ\81 
-يا Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯ØŸ
-4.26)  Ø¯Ø± ØªÙˆØ§Ø¨Ø¹ PL/PgSQL Ú†Ø±Ø§ Ù†Ù…ي‌توان Ø¨Ø§ Ø§Ø·Ù…ينان 
-جداول Ù…وقت Ø±Ø§ Ø§ÙŠØ¬Ø§Ø¯ ÙŠØ§ Ø­Ø°Ù\81 ÙƒØ±Ø¯ØŸ
-4.27) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ ØªÙƒØ±Ø§Ø± (replication) ÙˆØ¬ÙˆØ¯ 
-دارد؟
-4.28) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø±Ù…زنگاري ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
-
-توسعه PostgreSQL
-5.1) Ù…Ù† ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù†ÙˆØ´ØªÙ‡â€ŒØ§Ù…. Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¯Ø± psql 
-اجرا ÙƒÙ†Ù…ØŸ Ú†Ø±Ø§ Ø¨Ø§ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† core dump Ù…ي‌گيرم؟
-5.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¯Ø± ØªÙˆÙ„يد Ù†ÙˆØ¹â€ŒÙ‡Ø§ Ùˆ ØªÙˆØ§Ø¨Ø¹ 
-جديد Ùˆ Ø¬Ø§Ù„ب Ø¨Ø±Ø§ÙŠ PostgreSQL‌ Ù‡Ù…كاري Ùˆ Ù…شاركت 
-داشته Ø¨Ø§Ø´Ù….
-5.3) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ ØªØ§Ø¨Ø¹ Ø¨Ù‡ Ø²Ø¨Ø§Ù† C Ø¨Ù†ÙˆÙŠØ³Ù… 
-كه Ø®Ø±ÙˆØ¬ÙŠ Ø¢Ù† ÙŠÙƒ â€Œtuple  (چند ØªØ§ÙŠÙŠ) Ø¨Ø§Ø´Ø¯ØŸ
-5.4) Ù…Ù† ÙŠÙƒ Ù\81ايل Ù…نبع Ø±Ø§ Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù‡ Ø§Ù… Ú†Ø±Ø§ Ø¯Ø± 
-عمليات ÙƒØ§Ù…پيل Ù…جدد Ø¢Ù† ØªØºÙŠÙŠØ± Ø¯ÙŠØ¯Ù‡ Ù†Ù…ي‌شود؟
-
-
-
-
-سوالات Ø¹Ù…ومي
-1.1) PostgreSQL Ú†ÙŠØ³Øª Ùˆ Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¨Ø§ÙŠØ¯ ØªÙ„Ù\81ظ ÙƒØ±Ø¯ØŸ
-PostgreSQL Ø¨Ù‡ ØµÙˆØ±Øª Post-Gres-Q-L‌ ØªÙ„Ù\81ظ Ù…ي‌شود. ÙŠÙƒ Ù\81ايل 
-صوتي Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://www.postfresql.org/postgresql.mp3‌ Ø¨Ø±Ø§ÙŠ 
-كساني ÙƒÙ‡ Ù…ايلند ØªÙ„Ù\81ظ ØµØ­ÙŠØ­ Ø±Ø§ Ø¨Ø´Ù†ÙˆÙ†Ø¯ ÙˆØ¬ÙˆØ¯ 
-دارد.
-PostgreSQL Ø§Ø² Ø±ÙˆÙŠ Ø³ÙŠØ³ØªÙ… Ù…ديريت Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ POSTGRES 
-توسعه Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª (هنوز Ù‡Ù… Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ù‚Ø¹ Ø¨Ø±Ø§ÙŠ 
-سادگي Ø¨Ù‡ Ø¢Ù† Postgres Ú¯Ù\81ته Ù…ي‌شود) ÙƒÙ‡ ÙŠÙƒ Ù†Ù…ونه 
-تحقيقاتي Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù†Ø³Ù„ Ø¨Ø¹Ø¯ Ø§Ø³Øª. 
-PostgreSQL Ù‡Ù…ان Ø§Ù„گوي Ø¯Ø§Ø¯Ù‡ Ù‚وي Ùˆ Ø§Ù†ÙˆØ§Ø¹ Ø¯Ø§Ø¯Ù‡  Ø±Ø§ 
-Ø­Ù\81ظ ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª ÙˆÙ„ÙŠ Ø²Ø¨Ø§Ù† PostQuel Ø±Ø§ Ø¨Ø§ ÙŠÙƒ 
-زيرمجموعه Ù¾ÙŠØ´Ø±Ù\81ته Ø§Ø² SQL Ø¬Ø§ÙŠÚ¯Ø²ÙŠÙ† ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª. 
-PostgreSQL Ù…تن Ø¨Ø§Ø² Ø¨ÙˆØ¯Ù‡ Ùˆ Ù…تن ÙƒØ§Ù…Ù„ Ø¢Ù† Ø¯Ø± Ø¯Ø³ØªØ±Ø³ 
-است.
-PostgreSQL  ØªÙˆØ³Ø· ÙŠÙƒ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…ه‌نويس ÙƒÙ‡ Ù‡Ù…Ú¯ÙŠ Ø¯Ø± 
-گروه Ù¾Ø³Øª Ø§Ù„كترونيك Ø¨Ø±Ù†Ø§Ù…ه‌نويسان PostgreSQL  
-عضو Ù‡Ø³ØªÙ†Ø¯ØŒ Ø§Ù†Ø¬Ø§Ù… Ù…ي‌شود. Ù‡Ù…اهنگ ÙƒÙ†Ù†Ø¯Ù‡ Ø§ØµÙ„ÙŠ 
-در Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Marc G. Fournier‌ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ scrappy@PostgreSQL.org  
-مي‌باشد. (براي Ø¯ÙŠØ¯Ù† Ù†Ø­ÙˆÙ‡ Ù…لحق Ø´Ø¯Ù† Ø¨Ù‡ Ø§ÙŠÙ† ØªÙŠÙ… 
-قسمت 1.6 Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯). Ø§ÙŠÙ† ØªÙŠÙ… Ø¯Ø± Ø­Ø§Ø¶Ø± Ù…سئوليت 
-تمام Ù…سائل Ù…ربوط Ø¨Ù‡ Ø¨Ø±Ù†Ø§Ù…ه‌نويسي PostgreSQL Ø±Ø§ 
-بر Ø¹Ù‡Ø¯Ù‡ Ø¯Ø§Ø±Ø¯. Ø§ÙŠÙ† ÙŠÙƒ Ù¾Ø±ÙˆÚ˜Ù‡ Ú¯Ø±ÙˆÙ‡ÙŠ Ø§Ø³Øª Ùˆ ØªØ­Øª 
-كنترل Ù‡ÙŠÚ† Ø´Ø±ÙƒØªÙŠ Ù†ÙŠØ³Øª. Ø¨Ø±Ø§ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¨ÙŠØ´ØªØ± Ø¯Ø± 
-مورد Ø§ÙŠÙ† ØªÙŠÙ… Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
-http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html Ù…راجعه ÙƒÙ†ÙŠØ¯.
-اولين Ù†Ø³Ø®Ù‡ PostgreSQL‌ ØªÙˆØ³Ø· Andrew Yu and Jolly Chen Ø¨Ù‡ 
-وجود Ø¢Ù…د. Ø§Ù\81راد Ø¨Ø³ÙŠØ§Ø±ÙŠ Ø¯Ø± ØªÙˆØ³Ø¹Ù‡ Ùˆ Ø±Ù\81ع Ø§Ø´ÙƒØ§Ù„ Ùˆ 
-انتقال Ø¢Ù† Ø´Ø±ÙƒØª ÙƒØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯. Ù…تن Ø§ØµÙ„ÙŠ Postgres ÙƒÙ‡ 
-PostgreSQL Ø§Ø² Ø±ÙˆÙŠ Ø¢Ù† Ù†ÙˆØ´ØªÙ‡ Ø´Ø¯Ù‡ Ø§Ø³ØªØŒ ØªÙˆØ³Ø· ØªØ¹Ø¯Ø§Ø¯ 
-زيادي Ø¯Ø§Ù†Ø´Ø¬ÙˆÙŠ ÙƒØ§Ø±Ø´Ù†Ø§Ø³ÙŠ Ø§Ø±Ø´Ø¯Ùˆ Ø¯Ø§Ù†Ø´Ø¬ÙˆÙŠ 
-كارشناسي Ùˆ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…ه‌نويسي ÙƒÙ‡ ØªØ­Øª Ù†Ø¸Ø± 
-پروÙ\81سور Michael Stonebrake Ø¯Ø± Ø¯Ø§Ù†Ø´Ú¯Ø§Ù‡ 
-بركلي،‌كاليÙ\81رنيا ÙƒØ§Ø± Ù…ي‌كرده‌اند Ù†ÙˆØ´ØªÙ‡ 
-شده Ø§Ø³Øª.
-نام Ø§ØµÙ„ÙŠ Ù†Ø±Ù… Ø§Ù\81زار Ø¯Ø± Ø¯Ø§Ù†Ø´Ú¯Ø§Ù‡ Ø¨Ø±ÙƒÙ„ÙŠ Postgres‌ 
-بود. Ø¯Ø± Ø³Ø§Ù„ 1995 Ø¨Ø¹Ø¯ Ø§Ø² Ø§Ø¶Ø§Ù\81Ù‡ Ø´Ø¯Ù† SQL Ù†Ø§Ù… Ø¢Ù† Ø¨Ù‡ 
-Postgres95 ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡ Ø´Ø¯. Ø¯Ø± Ø³Ø§Ù„ 1996 Ù†Ø§Ù… Ø¢Ù† Ø¨Ù‡ 
-PostgreSQL ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡ Ø´Ø¯.
-1.2) Ù‚وانين ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØª Ø¯Ø± Ù…ورد PostgreSQL Ø¨Ù‡ Ú†Ù‡ ØµÙˆØ±Øª 
-است؟
-PostgreSQL ØªØ­Øª Ù‚انون ÙƒÙ¾ÙŠ Ø±Ø§ÙŠØª Ø²ÙŠØ± Ù‚رار Ø¯Ø§Ø±Ø¯:
-PostgreSQL Data Base Management System
-Portions copyright (c) 1996-2004, 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.
-قانون Ø¨Ø§Ù„ا Ù„يسانس BSD ÙƒÙ‡ ÙŠÙƒ Ù„يسانس ÙƒÙ„اسيك 
-براي Ù…تن‌هاي Ø¨Ø§Ø² Ø§Ø³Øª Ù…ي‌باشد. Ù‡ÙŠÚ† Ù…حدوديتي 
-در Ù…ورد Ù†Ø­ÙˆÙ‡ Ø§Ø³ØªÙ\81اده Ø§Ø² Ù…تن Ø¯Ø± Ø¢Ù† Ø¯ÙŠØ¯Ù‡ 
-نمي‌شود. Ù…ا Ø¢Ù† Ø±Ø§ Ø¯ÙˆØ³Øª Ø¯Ø§Ø±ÙŠÙ… Ùˆ Ù‡ÙŠÚ† Ù‚صدي Ø¨Ø±Ø§ÙŠ 
-تغيير Ø¢Ù† Ù†Ø¯Ø§Ø±ÙŠÙ….
-1.3) PostgreSQL‌ Ø±ÙˆÙŠ Ú†Ù‡ Ù†ÙˆØ¹ ÙŠÙˆÙ†ÙŠÙƒØ³Ù‡Ø§ÙŠÙŠ Ø§Ø¬Ø±Ø§ 
-مي‌شود؟
-در Ø­Ø§Ù„ت ÙƒÙ„ÙŠ PostgreSQL Ø±ÙˆÙŠ Ù‡Ø± Ù¾Ù„تÙ\81رم (سكوي) Ø³Ø§Ø²Ú¯Ø§Ø± 
-با ÙŠÙˆÙ†ÙŠÙƒØ³ Ø§Ø¬Ø±Ø§ Ù…ي‌شود. Ù„يست Ù¾Ù„تÙ\81رمهايي ÙƒÙ‡ 
-تاكنون PostgreSQL‌ Ø±ÙˆÙŠ Ø¢Ù†Ù‡Ø§ Ù†ØµØ¨ Ùˆ ØªØ³Øª Ø´Ø¯Ù‡ Ø§Ø³Øª 
-درقسمت Ø¯Ø³ØªÙˆØ±Ø§Ù„عملهاي Ù†ØµØ¨ Ø¢Ù…ده Ø§Ø³Øª.
-1.4) Ø±ÙˆÙŠ Ú†Ù‡ Ù…حيطهاي ØºÙŠØ± ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† Ø¢Ù† Ø±Ø§ 
-اجرا ÙƒØ±Ø¯ØŸ
-Client
-مي‌توان psql, ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ libpq Ùˆ Ø³Ø§ÙŠØ± ÙˆØ§Ø³Ø·Ù‡Ø§ Ùˆ 
-برنامه‌هاي ÙƒØ§Ø±Ø¨Ø±Ø¯ÙŠ Ø±Ø§ Ø·ÙˆØ±ÙŠ ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒØ±Ø¯ ÙƒÙ‡ 
-روي Ù…حيطهاي ÙˆÙŠÙ†Ø¯ÙˆØ² Ù†ÙŠØ² Ø§Ø¬Ø±Ø§ Ø´ÙˆÙ†Ø¯. Ø¯Ø± Ø§ÙŠÙ† 
-حالت Client Ø±ÙˆÙŠ ÙˆÙŠÙ†Ø¯ÙˆØ² Ø§Ø¬Ø±Ø§ Ù…ي‌شود Ùˆ Ø§Ø² Ø·Ø±Ø¨Ù‚ 
-شبكه Ùˆ Ù¾Ø±ÙˆØªÙƒÙ„ TCP/IP Ø¨Ø§ ÙŠÙƒ Ø³Ø±ÙˆØ± ÙƒÙ‡ Ø±ÙˆÙŠ ÙŠÙƒ Ù¾Ù„تÙ\81رم 
-لينوكس Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§Ø³Øª Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚رار 
-مي‌كند.يك Ù\81ايل win32.mak Ù‡Ù…راه Ø¨Ø§ ÙƒØ¯Ù‡Ø§ÙŠ PostgreSQL 
-وجود Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ ÙƒØ§Ù…Ù¾ÙŠÙ„ ÙƒØ±Ø¯Ù† ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ libpq Ùˆ 
-برنامه psql Ù…ي‌باشد. P‌ostgreSQL‌ Ù‡Ù…چنين Ø§Ù…كان 
-ارتباط Ø¨Ù‡ ØµÙˆØ±Øª ODBC‌  Ø±Ø§ Ù†ÙŠØ² Ø¯Ø§Ø±Ø¯.
-Server
-با Ø§Ø³ØªÙ\81اده Ø§Ø² Cygwin‌ Ùˆ ÙƒØªØ§Ø¨Ø®Ø§Ù†Ù‡ Cygnus Ù…ي‌توان 
-پايگاه Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø±ÙˆÙŠ ÙˆÙŠÙ†Ø¯ÙˆØ² NT Ùˆ ÙŠØ§ Win2K Ø§Ø¬Ø±Ø§ 
-كرد.براي Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ù\81ايل pgsql/doc/FAQ_MSWIN 
-‌را ÙƒÙ‡ Ø¨Ù‡Ù…راه ØªÙˆØ²Ø¨Ø¹â€ŒÙ‡Ø§ÙŠ PostgreSQL Ø¢Ù…ده Ø§Ø³Øª 
-ببينيد Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ Ø¨Ù‡ Ø§ÙŠÙ† ØµÙ\81حه 
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN Ù…راجعه ÙƒÙ†ÙŠØ¯.
-در Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± ÙŠÙƒ Ø¹Ù…ليات Ø§Ù†ØªÙ‚ال PostgreSQL Ø¨Ù‡ Ø±ÙˆÙŠ 
-سكوهاي Win NT/2000/XP Ø¯Ø± Ø¬Ø±ÙŠØ§Ù† Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† ÙˆØ¶Ø¹ÙŠØª 
-اين Ù¾Ø±ÙˆÚ˜Ù‡ Ø¨Ù‡ Ø³Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ 
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm Ùˆ 
-http://techdocs.postgresql.org/guides/Windows Ù…راجعه ÙƒÙ†ÙŠØ¯. 
-همچنين ÙŠÙƒ Ø¹Ù…ليات Ø§Ù†ØªÙ‚ال Ø¨Ø± Ø±ÙˆÙŠ Novell Netware 6 Ù†ÙŠØ² 
-در Ø­Ø§Ù„ Ø§Ù†Ø¬Ø§Ù… Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø³Ø§ÙŠØª http://forge.novell.com 
-مي‌توانيد Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯.
-1.5) PostgreSQL Ø±Ø§ Ø§Ø² ÙƒØ¬Ø§ Ù…ي‌توانم Ø¨Ú¯ÙŠØ±Ù…ØŸ
-PostgreSQL‌ Ø±Ø§ Ø§Ø² Ø³Ø§ÙŠØª Ø§ØµÙ„ÙŠ Ø¢Ù†  ftp://ftp.PostgreSQL.org/pub 
-مي‌توانيد Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø¯Ø± ØµÙ\81حه Ø§ØµÙ„ÙŠ Ø³Ø§ÙŠØª Ù„يست 
-ساير Ø¢Ø¯Ø±Ø³Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù…ي‌توانيد PostgreSQL‌ Ø±Ø§ Ø§Ø² 
-آنها Ø¨Ú¯ÙŠØ±ÙŠØ¯ Ø¢Ù…ده Ø§Ø³Øª.
-1.6) Ø§Ø² ÙƒØ¬Ø§ Ø®Ø¯Ù…ات Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ú¯ÙŠØ±Ù…ØŸ
-گروه Ù¾Ø³ØªÙŠ Ø§ØµÙ„ÙŠ pgsql-general@PostgreSQL.org Ù…ي‌باشد. Ø§ÙŠÙ† 
-گروه Ø¨Ø±Ø§ÙŠ Ø¨Ø­Ø« Ø¯Ø± Ù…ورد Ù…وضوعات Ù…ختلÙ\81 Ø¯Ø± Ø²Ù…ينه 
-PostgreSQL Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶Ùˆ Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ ÙŠÙƒ 
-نامه Ø§Ù„كترونيكي Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ Ú¯Ø±ÙˆÙ‡ Ø¨Ø§ Ù…حتوياتی ÙƒÙ‡ 
-در Ø§Ø¯Ø§Ù…Ù‡ Ø¢Ù…ده Ø§Ø³Øª Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯. Ø¯Ø± Ù‚سمت Subject 
-چيزي Ù†Ù†ÙˆÙŠØ³ÙŠØ¯.
-    subscribe
-    end
-آدرس Ú¯Ø±ÙˆÙ‡: pgsql-general-request@PostgreSQL.org
-همچنين ÙŠÙƒ Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÙŠ Ù‡Ù… Ø¨Ù‡ ØµÙˆØ±Øª Ø§Ø±Ø³Ø§Ù„ Ú†ÙƒÙŠØ¯Ù‡ 
-پيامها ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶Ùˆ Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ 
-نامه Ø¨Ø§ Ù…حتويات Ø²ÙŠØ± Ø¨Ù‡ Ø§ÛŒÙ† Ø¢Ø¯Ø±Ø³  Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯. 
-pgsql-general-digest-request@PostgreSQL.org 
-    subscribe
-    end
-در Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ Ù‡Ø± Ù…وقع Ø­Ø¬Ù… Ù†Ø§Ù…ه‌ها Ø¨Ù‡ 30 
-كيلوبايت Ø±Ø³ÙŠØ¯ Ø¨Ø±Ø§ÙŠ ØªÙ…Ø§Ù… Ø§Ø¹Ø¶Ø§Ø¡ Ø§Ø±Ø³Ø§Ù„ Ù…ي‌شود.
-گروه Ù¾Ø³ØªÙŠ Ø¨Ø±Ø±Ø³ÙŠ Ø§Ù\90شكالات Ù‡Ù… ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ 
-عضو Ø´Ø¯Ù† Ø¯Ø± Ø§ÙŠÙ† Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ Ù†Ø§Ù…Ù‡ Ø¨Ø§ Ù…حتويات Ø²ÙŠØ± Ø¨Ù‡ 
-pgsql-bugs-request@PostgreSQL.org Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
-    subscribe
-    end
-گروه Ù¾Ø³ØªÙŠ Ù…Ø®ØµÙˆØµ ØªÙˆØ³Ø¹Ù‡ Ø¯Ù‡Ù†Ø¯Ú¯Ø§Ù† 
-(برنامه‌نويسان) Ù†ÙŠØ² ÙˆØ¬ÙˆØ¯Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¹Ø¶ÙˆÙŠØª Ø¯Ø± 
-اين Ú¯Ø±ÙˆÙ‡ ÙŠÙƒ Ù†Ø§Ù…Ù‡ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ Ø²ÙŠØ± Ø¨Ø§ Ù…حتويات Ù…شخص 
-شده Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.  pgsql-hackers-request@PostgreSQL.org  
-    subscribe
-    end
-گروههاي Ù¾Ø³ØªÙŠ Ø¯ÙŠÚ¯Ø±ÙŠ Ù†ÙŠØ² Ø¯Ø± Ø²Ù…ينه PostgreSQL‌ ÙˆØ¬ÙˆØ¯ 
-دارد  ÙƒÙ‡ Ù…ي‌توانيد Ø¯Ø± Ø³Ø§ÙŠØª http://www.postgresql.org 
-ببينيد.
-همچنين ÙŠÙƒ ÙƒØ§Ù†Ø§Ù„ IRC Ø±ÙˆÙŠ Freenode Ùˆ EFNet Ø¨Ù†Ø§Ù… PostgreSQL# 
-وجود Ø¯Ø§Ø±Ø¯. Ø´Ù…ا Ù…ي‌توانيد Ø§Ø² Ù\81رمان ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ irc 
--c '#PostgreSQL' "$USER" irc.phoenix.net. ÙŠØ§ irc -c '#PostgreSQL' "$USER" 
-irc.freenode.net Ø§Ø³ØªÙ\81اده ÙƒÙ†ÙŠØ¯.
-ليست Ø´Ø±ÙƒØªÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø§Ø² Ø·Ø±ÙŠÙ‚ Ø¢Ù†Ù‡Ø§ Ù…ي‌توانيد 
-خدمات Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ØªØ¬Ø§Ø±ÙŠ Ø¯Ø± Ø²Ù…ينه PostgreSQL Ø¯Ø±ÙŠØ§Ù\81ت 
-كنيد Ø¯Ø± Ø§ÙŠÙ† Ø¢Ø¯Ø±Ø³ http://techdocs.postgresql.org/companies.php 
-موجود Ø§Ø³Øª.
-1.7) Ø¢Ø®Ø±ÙŠÙ† Ù†Ø³Ø®Ù‡ Ø§Ø¹Ù„ام Ø´Ø¯Ù‡ Ú†ÙŠØ³ØªØŸ
-آخرين Ù†Ø³Ø®Ù‡ PostgreSQL‌  ÙƒÙ‡ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ 7.4.3 Ø§Ø³Øª.
-هدÙ\81 Ù…ا Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ù‡Ø± 6 Ù…اه ØªØ§ 8 Ù…اه ÙŠÙƒ Ù†Ø³Ø®Ù‡ Ø¬Ø¯ÙŠØ¯ 
-ارائه Ø´ÙˆØ¯.
-1.8) Ú†Ù‡ Ù…ستندات Ùˆ Ø±Ø§Ù‡Ù†Ù…ائيهايي ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ØŸ
-چندين ÙƒØªØ§Ø¨Ú†Ù‡ Ùˆ ØµÙ\81حات Ø±Ø§Ù‡Ù†Ù…ا Ùˆ Ù…ثالهاي ÙƒÙˆÚ†Ùƒ 
-همراه Ø¨Ø§ Ù…تن Ø§ØµÙ„ÙŠ PostgreSQL‌ Ø¯Ø± Ø´Ø§Ø®Ù‡ doc ÙˆØ¬ÙˆØ¯ 
-دارد. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† ØµÙ\81حات Ø±Ø§Ù‡Ù†Ù…ا Ù…ي‌توانيد Ø¨Ù‡ 
-سايت http://www.PostgreSQL.org/docs  Ù†ÙŠØ² Ù…راجعه Ù†Ù…اييد.
-دو ÙƒØªØ§Ø¨ Ø¯Ø± Ø²Ù…ينه PostgreSQL‌  Ø¯Ø± Ø¢Ø¯Ø±Ø³â€ŒÙ‡Ø§ÙŠ 
-http://www.PostgreSQL.org/docs/awbook.htm Ùˆ http://www.commandprompt.com/ppbook 
-وجود Ø¯Ø§Ø±Ø¯. Ù„يستي Ø§Ø² ÙƒØªØ§Ø¨Ù‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù‚ابل Ø®Ø±ÙŠØ¯ 
-است Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php 
-وجود Ø¯Ø§Ø±Ø¯. Ù‡Ù…چنين Ù„يستي Ø§Ø² Ù…قالات Ù\81ني Ø¯Ø± 
-مورد PostgreSQL Ø¯Ø± Ø¢Ø¯Ø±Ø³ http://techdocs.PostgreSQL.org ÙˆØ¬ÙˆØ¯ 
-دارد.
-برنامه psql ÙŠÙƒ Ø¯Ø³ØªÙˆØ± d\ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø§Ø·Ù„اعاتي Ø¯Ø± 
-مورد Ø§Ù†ÙˆØ§Ø¹ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù‚Ø§Ø¨Ù„ ØªØ¹Ø±ÙŠÙ\81 Ùˆ Ø¹Ù…لگر‌ها 
-Ùˆ ØªÙˆØ§Ø¨Ø¹ Ùˆ ... Ø¨Ù‡ Ù…ا Ù†Ø´Ø§Ù† Ù…ي‌دهد. Ø¯Ø± Ø³Ø§ÙŠØª Ø§ØµÙ„ÙŠ 
-ما Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ±ÙŠ Ø±Ø§ Ù…ي‌توانيد Ù¾ÙŠØ¯Ø§ ÙƒÙ†ÙŠØ¯.
-1.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§Ø²Ø§Ø´ÙƒØ§Ù„ات Ø´Ù†Ø§Ø®ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ ÙŠØ§ 
-امكاناتي ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ† Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯  
-مطلع Ø´ÙˆÙ…ØŸ
-PostgreSQL ÙŠÙƒ Ø²ÙŠØ± Ù…جموعه Ù¾ÙŠØ´Ø±Ù\81ته Ø§Ø² SQL-92 Ø±Ø§ 
-پشتيباني Ù…ي‌كند. Ø¯Ø± Ù„يست  TODO   Ø§Ù\90شكالات 
-شناخته Ø´Ø¯Ù‡ ÙŠØ§ Ø§Ù…كاناتي ÙƒÙ‡ ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯ Ùˆ ÙŠØ§ 
-برنامه‌‌هاي Ø¢ÙŠÙ†Ø¯Ù‡ Ø¢Ù…ده Ø§Ø³Øª.
-1.10) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø²Ø¨Ø§Ù† SQL Ø±Ø§ ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±Ù…ØŸ
-كتاب PostgreSQL Ø¯Ø± Ø¢Ø¯Ø±Ø³ SQL http://www.PostgreSQL.org/docs/awbook.html 
-‌را Ø¢Ù…وزش Ù…ي‌دهد. Ù‡Ù…چنين ÙŠÙƒ ÙƒØªØ§Ø¨ Ø¯Ø± Ø¢Ø¯Ø±Ø³ 
-http://www.commandprompt.com/ppbook ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø±Ø§Ù‡Ù†Ù…اي 
-خيلي Ø®ÙˆØ¨ Ù‡Ù… Ø¯Ø± Ø³Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ  
-http://www.intermedia.net/support/sql/sqltut.shtm Ùˆ 
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM Ùˆ  
-http://sqlcourse.com Ø¯Ø± Ù…ورد SQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
-كتاب Ø¯ÙŠÚ¯Ø±ÙŠ ÙƒÙ‡ Ù…ي‌توان Ø¨Ø±Ø§ÙŠ ÙŠØ§Ø¯Ú¯ÙŠØ±ÙŠ SQL Ø§Ø² Ø¢Ù† 
-استÙ\81اده ÙƒØ±Ø¯ ÙƒØªØ§Ø¨ "SQL Ø±Ø§ Ø¯Ø± 21 Ø±ÙˆØ² ÙŠØ§Ø¯ Ø¨Ú¯ÙŠØ±ÙŠØ¯ØŒâ€Œ 
-ويرايش Ø¯ÙˆÙ…" Ø¯Ø± Ø³Ø§ÙŠØª 
-http://members.tripod.com/er4ebus/sql/index.htm Ù…ي‌باشد.
-تعداد Ø²ÙŠØ§Ø¯ÙŠ Ø§Ø² ÙƒØ§Ø±Ø¨Ø±Ø§Ù† ÙƒØªØ§Ø¨ The Practical SQL Ø±Ø§ 
-ترجيح Ù…ي‌دهند. ÙƒØªØ§Ø¨ Ø¯ÙŠÚ¯Ø± The Complete Refrence SQL 
-انتشارات McGraw-Hill Ù…ي‌باشد.
-1.11) Ø¢ÙŠØ§ PostgreSQL Ù…شكل Y2K‌ Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±ØŸ
-خير،‌PostgreSQL‌ Ø¨Ø§ ØªØ§Ø±ÙŠØ®â€ŒÙ‡Ø§ÙŠ Ù‚Ø¨Ù„ Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² 2000 
-مشكلي Ù†Ø¯Ø§Ø±Ø¯.
-1.12) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¨Ù‡ ØªÙŠÙ… Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ PostgreSQL 
-ملحق Ø´ÙˆÙ…ØŸ
-ابتدا،‌آخرين Ø³ÙˆØ±Ø³ Ø±Ø§ Ø¯ÙˆÙ†Ù„ود ÙƒØ±Ø¯Ù‡ Ùˆ Ù…ستندات 
-مربوط Ø¨Ù‡ Ø¨Ø±Ù†Ø§Ù…ه‌نويسي PostgreSQL Ø±Ø§ Ø¯Ø± Ø³Ø§ÙŠØª 
-مطالعه ÙƒÙ†ÙŠØ¯. Ø³Ù¾Ø³ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ â€Œ pgsql-patches Ùˆ 
-pgsql-hackers  Ø¹Ø¶Ùˆ Ø´ÙˆÙŠØ¯. Ø¯Ø± Ù…رحله Ø¢Ø®Ø± ÙˆØµÙ„ه‌هاي Ø¨Ø§ 
-كيÙ\81يت Ø¨Ø§Ù„ا Ø±Ø§ Ø¨Ù‡ pgsql-patches Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
-تعداد Ø²ÙŠØ§Ø¯ÙŠ Ø§Ø² Ø¨Ø±Ù†Ø§Ù…ه‌نويسان ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ù†Ø¯ ÙƒÙ‡ 
-امتياز Ø§Ù†Ø¬Ø§Ù… ØªØºÙŠÙŠØ±Ø§Øª Ø¯Ø± cvs‌ Ø±Ø§ Ø¯Ø§Ø±Ù†Ø¯. Ù‡Ø± 
-كدام Ø§Ø² Ø¢Ù†Ù‡Ø§ ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ ÙˆØµÙ„Ù‡â€Œâ€Œ Ø¨Ø§ ÙƒÙŠÙ\81يت 
-بالا Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ Ø§Ø±Ø³Ø§Ù„ ÙƒØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯ ÙƒÙ‡ Ø§Ø¹ØªÙ…اد 
-گردانندگان PostgreSQL Ø±Ø§ Ø¨Ù‡ Ø¯Ø³Øª Ø¢ÙˆØ±Ø¯Ù‡â€ŒØ§Ù†Ø¯.
-1.13) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ø§Ù\90شكال Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ 
-برنامه Ù†ÙˆÙŠØ³ Ø§Ø¹Ù„ام ÙƒÙ†Ù…ØŸ
-لطÙ\81اً ØµÙ\81حه Ù…ربوط Ø¨Ù‡ Ø§Ù\90شكالات PostgreSQL Ø±Ø§ Ø¯Ø± 
-سايت http://www.PostgreSQL.org/bugs/bugs.php Ù…شاهده‌ ÙƒÙ†ÙŠØ¯. Ø¯Ø± 
-اين Ø³Ø§ÙŠØª Ù†Ø­ÙˆÙ‡ Ú¯Ø²Ø§Ø±Ø´ Ùˆ Ø§Ø±Ø³Ø§Ù„ ÙŠÙƒ Ø§Ø´ÙƒØ§Ù„ ØªÙˆØ¶ÙŠØ­ 
-داده Ø´Ø¯Ù‡ Ø§Ø³Øª.
- Ù‡Ù…چنين Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ Ø¬Ø¯ÙŠØ¯ØªØ± PostgreSQL Ùˆ 
-يا ÙˆØ¬ÙˆØ¯ ÙŠÙƒ ÙˆØµÙ„Ù‡ Ø¬Ø¯ÙŠØ¯ Ø§Ø² Ø³Ø§ÙŠØª ftp://ftp.PostgreSQL.org/pub 
-بازديد ÙƒÙ†ÙŠØ¯.
-1.14) ÙˆØ¶Ø¹ÙŠØª PostgreSQL‌ Ø¯Ø± Ù…قايسه Ø¨Ø§ Ø³Ø§ÙŠØ± DBMSها Ø¨Ù‡ 
-Ú†Ù‡ ØµÙˆØ±Øª Ø§Ø³ØªØŸ
-راههاي Ù…ختلÙ\81ÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¯Ø§Ø²Ù‡â€ŒÚ¯ÙŠØ±ÙŠ Ùˆ Ù…قايسه 
-نرم‌اÙ\81زارها ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¹Ø¨Ø§Ø±ØªÙ†Ø¯ Ø§Ø² 
-امكانات، ÙƒØ§Ø±Ø§ÙŠÙŠØŒ Ù‚ابليت Ø§Ø¹ØªÙ…اد، Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ùˆ 
-قيمت
-    Ø§Ù…كانات 
-    PostgreSQL Ø¨ÙŠØ´ØªØ± Ø§Ù…كانات Ù…وجود Ø¯Ø± Ø³ÙŠØ³ØªÙ…‌هاي 
-    Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ ØªØ¬Ø§Ø±ÙŠ Ø¨Ø²Ø±Ú¯ Ù†Ø¸ÙŠØ± transactions, subselets, 
-    triggers, views, foreign key referential integrity Ùˆ sophisticated 
-    locking‌ Ø±Ø§ Ø¯Ø§Ø±Ø¯. Ø¯Ø± PostgreSQL‌‌ Ø§Ù…كاناتي ÙˆØ¬ÙˆØ¯ 
-    Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ Ø¯ÙŠÚ¯Ø± Ø¢Ù† Ø±Ø§ Ù†Ø¯Ø§Ø±Ù†Ø¯ 
-    Ù†Ø¸ÙŠØ± user-defined types‌و Inheritance‌و rules‌و multi-version 
-    concurrency control 
-
-  ÙƒØ§Ø±Ø§ÙŠÙŠ
-          ÙƒØ§Ø±Ø§ÙŠÙŠ PostgreSQL Ø¯Ø± Ø­Ø¯ Ø¨Ù‚يه Ø³ÙŠØ³ØªÙ…‌هاي 
-  ØªØ¬Ø§Ø±ÙŠ Ùˆ Ù…تن Ø¨Ø§Ø² Ø§Ø³Øª. Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ø±Ø¯ Ø³Ø±ÙŠØ¹ØªØ± Ùˆ 
-  Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ Ù…ÙˆØ§Ø±Ø¯ Ø§Ø² Ø¢Ù†Ù‡Ø§ ÙƒÙ†Ø¯ØªØ± Ø§Ø³Øª. Ø¯Ø± Ù…قايسه 
-  Ø¨Ø§ MySQL Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ø¨ÙŠØ´ØªØ± Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠ 
-  Ù¾ÙŠÚ†ÙŠØ¯Ù‡ Ùˆ Ø¨Ø§Ø± Ø²ÙŠØ§Ø¯ Ø®ÙˆØ§Ù†Ø¯Ù†/نوشتن Ø³Ø±ÙŠØ¹ØªØ± Ø§Ø³Øª. 
-  Ø¯Ø± Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ÙŠ Ø³Ø§Ø¯Ù‡ SELECT‌ Ø§Ø² MySQL ÙƒÙ†Ø¯ØªØ± Ø§Ø³Øª. 
-  Ø§Ù„بته MySQL Ø®ÙŠÙ„ÙŠ Ø§Ø² Ø§Ù…كانات PostgreSQL ÙƒÙ‡ Ø¯Ø± Ø¨Ø§Ù„ا 
-  Ø¨Ù‡ Ø¢Ù† Ø§Ø´Ø§Ø±Ù‡ Ø´Ø¯ Ø±Ø§ Ù†Ø¯Ø§Ø±Ø¯. Ù‡Ø¯Ù\81 Ø§ØµÙ„ÙŠ Ù…ا Ø§Ù…كانات 
-  Ùˆ Ù‚ابليت Ø§Ø¹ØªÙ…اد Ø¨Ø§Ù„است Ø¯Ø± Ø¶Ù…Ù† Ø¢Ù†ÙƒÙ‡ ØªÙ„اش 
-  Ù…ي‌كنيم ØªØ§ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¢Ù† Ù†ÙŠØ² Ø¨Ù‡Ø¨ÙˆØ¯ ÙŠØ§Ø¨Ø¯. Ø¯Ø± 
-  Ø¢Ø¯Ø±Ø³ http://openacs.org/philosophy/why-not-mysql.html ÙŠÙƒ Ù…قايسه 
-  Ø¬Ø§Ù„ب Ø¨ÙŠÙ† MySQL Ùˆ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø§Ø² Ø·Ø±Ù\81 Ø¯ÙŠÚ¯Ø± 
-  MySQL‌ ÙŠÙƒ Ø´Ø±ÙƒØª Ø§Ø³Øª ÙƒÙ‡ Ù…حصول Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª Ù…تن 
-  Ø¨Ø§Ø² Ø§Ø±Ø§Ø¦Ù‡ Ù…ي‌كند ÙˆÙ„ÙŠ Ø¨Ø±Ø§ÙŠ Ù†Ø±Ù…â€ŒØ§Ù\81زار ØºÙŠØ± 
-  Ù…تن Ø¨Ø§Ø² Ø®ÙˆØ¯ Ø§Ø­ØªÙŠØ§Ø¬ Ø¨Ù‡ Ù„يسانس ØªØ¬Ø§Ø±ÙŠ Ø¯Ø§Ø±Ø¯ Ø¨Ø± 
-  Ø®Ù„اÙ\81 PostgreSQL ÙƒÙ‡ ÙŠÙƒ Ú¯Ø±ÙˆÙ‡ ÙƒØ§Ù…لاً Ù…تن Ø¨Ø§Ø² Ù‡Ø³ØªÙ†Ø¯.
-
-    Ù‚ابليت Ø§Ø·Ù…ينان 
-    Ù…ا Ù\81كر Ù…ي‌كنيم ÙƒÙ‡ ÙŠÙƒ Ø³ÙŠØ³ØªÙ… Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
-    Ø¯Ø§Ø¯Ù‡â€ŒØ§ÙŠ ÙƒÙ‡ Ù…طمئن Ù†Ø¨Ø§Ø´Ø¯ Ø§Ø±Ø²Ø´ÙŠ Ù†Ø¯Ø§Ø±Ø¯. Ù…ا 
-    ØªÙ…ام ØªÙ„اشمان Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø§Ø±Ø§Ø¦Ù‡ ÙƒØ¯Ù‡Ø§ÙŠ Ù¾Ø§ÙŠØ¯Ø§Ø±ÙŠ 
-    ÙƒÙ‡ Ø¨Ù‡ Ø®ÙˆØ¨ÙŠ ØªØ³Øª Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ù†Ø¯ Ùˆ ÙƒÙ…ترين Ø§Ù\90شكالات 
-    Ø±Ø§ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ù†Ø¯ Ù…ي‌كنيم. Ù‡Ø± Ù†Ø³Ø®Ù‡ Ø¬Ø¯ÙŠØ¯ÙŠ ÙƒÙ‡ 
-    Ø§Ø±Ø§Ø¦Ù‡ Ù…ي‌شود Ø­Ø¯Ø§Ù‚Ù„ ÙŠÙƒ Ù…اه Ø±Ø§ Ø¯Ø± Ù…رحله ØªØ³Øª 
-    Ø¨ØªØ§ Ù…ي‌گذراند. Ù…ا Ø¨Ø± Ø§ÙŠÙ† Ø¨Ø§ÙˆØ± Ù‡Ø³ØªÙŠÙ… ÙƒÙ‡ 
-    Ù‚ابليت Ø§Ø·Ù…ينان PostgreSQL‌ Ø¯Ø± Ù…قايسه Ø¨Ø§ Ø³Ø§ÙŠØ± 
-    Ø³ÙŠØ³ØªÙ…‌هاي Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù‚ابل ØªÙˆØ¬Ù‡ Ø§Ø³Øª Ùˆ 
-    Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ ØªØ§ÙƒÙ†ÙˆÙ† Ø§Ø±Ø§Ø¦Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª Ù†Ø´Ø§Ù† 
-    Ù…ي‌دهد ÙƒÙ‡ Ù…ا ØªÙˆØ§Ù†Ø§ÙŠÙŠ Ø§Ø±Ø§Ø¦Ù‡ ÙŠÙƒ Ø³ÙŠØ³ØªÙ… Ù‚وي Ùˆ 
-    Ù…حكم Ùˆ Ù…طمئن Ø±Ø§ ÙƒÙ‡ Ø¢Ù…اده Ø¨Ù‡Ø±Ù‡â€ŒØ¨Ø±Ø¯Ø§Ø±ÙŠ Ø§Ø³Øª 
-    Ø¯Ø§Ø±ÙŠÙ…. 
-    Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ 
-    Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ Ù…ا Ø§Ù…كان Ø§Ø±ØªØ¨Ø§Ø· Ùˆ ØªÙ…اس Ø¨Ù‡ 
-    Ú¯Ø±ÙˆÙ‡ Ø¨Ø²Ø±Ú¯ÙŠ Ø§Ø² Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³Ø§Ù† Ùˆ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ø±Ø§ 
-    Ù…ي‌دهد ÙƒÙ‡ Ù…ي‌توانند Ø¯Ø± Ø­Ù„ Ù…شكلات Ø¨Ù‡ 
-    Ø¯ÙŠÚ¯Ø±Ø§Ù† ÙƒÙ…Ùƒ ÙƒÙ†Ù†Ø¯. Ø¯Ø³ØªØ±Ø³ÙŠ Ù…Ø³ØªÙ‚ÙŠÙ… Ø¨Ù‡ 
-    Ø¨Ø±Ù†Ø§Ù…ه‌نويسان Ùˆ Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ ÙƒØ§Ø±Ø¨Ø±Ø§Ù† Ùˆ 
-    Ø±Ø§Ù‡Ù†Ù…اها Ùˆ ÙƒØ¯Ø§ØµÙ„ÙŠ Ø¨Ø§Ø¹Ø« Ù…ي‌شود ÙƒÙ‡ 
-    Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ PostgreSQL Ù†Ø³Ø¨Øª Ø¨Ù‡ Ø³Ø§ÙŠØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ 
-    Ø¯Ø§Ø¯Ù‡ Ø¨Ù‡ Ù†Ø­Ùˆ Ø¨Ù‡ØªØ±ÙŠ Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯. Ù‡Ù…چنين Ø§Ù…كان 
-    Ø§Ø±Ø§Ø¦Ù‡ Ø®Ø¯Ù…ات Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø¨Ù‡ ØµÙˆØ±Øª ØªØ¬Ø§Ø±ÙŠ Ù†ÙŠØ² 
-    ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø¨Ù‡ FAQ 
-    section 1.6  Ù…راجعه ÙƒÙ†ÙŠØ¯. 
-    Ù‚يمت 
-    Ù‡Ù… Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙ\81اده ØªØ¬Ø§Ø±ÙŠ Ùˆ Ù‡Ù… ØºÙŠØ± ØªØ¬Ø§Ø±ÙŠ Ù‡ÙŠÚ† 
-    Ù‡Ø²ÙŠÙ†Ù‡â€ŒØ§ÙŠ Ù†Ø¨Ø§ÙŠØ¯ Ù¾Ø±Ø¯Ø§Ø®Øª Ø´ÙˆØ¯. Ù‡ÙŠÚ† Ù…حدوديتي 
-    Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¬Ø§Ù… ØªØºÙŠÙŠØ±Ø§Øª Ø¯Ø± PostgreSQL ØªÙˆØ³Ø· Ø§Ø³ØªÙ\81اده 
-    ÙƒÙ†Ù†Ø¯Ú¯Ø§Ù† ÙˆØ¬ÙˆØ¯ Ù†Ø¯Ø§Ø±Ø¯ Ø¨Ù‡ Ø¬Ø² Ù…واردي ÙƒÙ‡ Ø¯Ø± 
-    Ù„يسانس BSD Ø¨Ù‡ Ø¢Ù† Ø§Ø´Ø§Ø±Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª. 
-1.15) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§Ø² Ù†Ø¸Ø± Ù…الي Ø¨Ù‡ PostgreSQL 
-كمك ÙƒÙ†Ù…ØŸ
-PostgreSQL  Ø¯Ø§Ø±Ø§ÙŠ ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± ØªØ´ÙƒÙŠÙ„اتي Ø¯Ø±Ø¬Ù‡ Ø§ÙˆÙ„ Ø§Ø³Øª 
-كه Ø¢Ù† Ø±Ø§ Ù…ديون Marc Fournier‌ Ø§Ø³Øª ÙƒÙ‡ Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± Ø±Ø§ 
-ايجاد ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª.
-كيÙ\81يت ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ù¾Ø±ÙˆÚ˜Ù‡ Ù…تن Ø¨Ø§Ø² Ø¨Ø³ÙŠØ§Ø± 
-اهميت Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø³Ø§Ø®ØªØ§Ø± Ø®ÙˆØ¨ Ù…ي‌تواند Ù…انع Ø§Ø² 
-حوادثي Ø´ÙˆØ¯ ÙƒÙ‡ Ø¯Ø± Ø­Ø±ÙƒØª Ø±ÙˆØ¨Ù‡â€ŒØ¬Ù„وي Ù¾Ø±ÙˆÚ˜Ù‡ Ø®Ù„لي 
-وارد Ù…ي‌كنند.
-البته Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± ØªØ´ÙƒÙŠÙ„اتي Ø§Ø±Ø²Ø§Ù† Ù†ÙŠØ³Øª. 
-هزينه‌هاي Ø«Ø§Ø¨Øª Ù…اهانه Ùˆ Ø±ÙˆØ²Ù…ره Ø¨Ø±Ø§ÙŠ 
-نگهداري Ùˆ Ø­Ù\81ظ Ø§ÙŠÙ† Ø³Ø§Ø®ØªØ§Ø± Ù…ورد Ù†ÙŠØ§Ø² Ø§Ø³Øª. Ø§Ú¯Ø± 
-شما ÙŠØ§ Ø´Ø±ÙƒØª Ø´Ù…ا Ù…ايل Ø§Ø³Øª ÙƒÙ‡ Ø§Ø² Ù†Ø¸Ø± Ù…الي Ø¨Ù‡ 
-اين Ø­Ø±ÙƒØª ÙƒÙ…Ùƒ ÙƒÙ†Ø¯ Ù„Ø·Ù\81اً Ø¨Ù‡ Ø³Ø§ÙŠØª 
-http://store.pgsql.com/shopping Ù…راجعه ÙƒØ±Ø¯Ù‡ Ùˆ ÙƒÙ…Ùƒ Ø®ÙˆØ¯ Ø±Ø§ 
-اهدا ÙƒÙ†ÙŠØ¯.
-هر Ú†Ù†Ø¯ Ø¯Ø± ØµÙ\81حه Ø§ØµÙ„ÙŠ Ø¹Ø¨Ø§Ø±Øª PostgreSQL,Inc‌ Ø°ÙƒØ± Ø´Ø¯Ù‡ 
-است ÙˆÙ„ÙŠ Ù…شاركت Ø¹Ù…دتاً Ø¨Ø±Ø§ÙŠ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ø§Ø² 
-پروژه PostgreSQL‌ Ù…ÙŠ Ø¨Ø§Ø´Ø¯ Ùˆ Ù†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø´Ø±ÙƒØª Ù…شخص. 
-اگر ØªØ±Ø¬ÙŠØ­ Ù…ي‌دهيد Ù…ي‌توانيد ÙŠÙƒ Ú†Ùƒ Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
-مشخص Ø´Ø¯Ù‡ Ø§Ø±Ø³Ø§Ù„ ÙƒÙ†ÙŠØ¯.
-اگر ÙŠÙƒ Ø§Ø³ØªÙ\81اده Ù…ÙˆÙ\81Ù‚ Ø§Ø² PostgreSQL Ø³Ø±Ø§Øº Ø¯Ø§Ø±ÙŠØ¯ 
-لطÙ\81اً Ø¢Ù† Ø±Ø§ Ø¨Ù‡ Ø³Ø§ÙŠØª http://advocacy.postgresql.org Ú¯Ø²Ø§Ø±Ø´ 
-دهيد.
-
-
-
-سوالات Ù…ربوط Ø¨Ù‡ Ø§Ø³ØªÙ\81اده Ø§Ø² Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
-2.1) Ø¢ÙŠØ§ Ù‡ÙŠÚ† Ø¯Ø±Ø§ÙŠÙˆØ± ODBC‌ Ø¨Ø±Ø§ÙŠ PostgreSQL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
-دو Ø¯Ø±Ø§ÙŠÙˆØ± ODBC Ø¨Ù†Ø§Ù…هاي psqlODBC‌ Ùˆ OpenLink Ø¨Ø±Ø§ÙŠ 
-PostgreSQL‌ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
-براي Ú¯Ø±Ù\81تن psqlODBC Ø¨Ù‡ Ø³Ø§ÙŠØª 
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php Ù…راجعه 
-كنيد.
-OpenLlink Ø±Ø§ Ø§Ø² Ø§ÙŠÙ† Ø³Ø§ÙŠØª http://www.openlinksw.com 
-مي‌توانيد Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø§ÙŠÙ† Ø¯Ø±Ø§ÙŠÙˆØ± Ø¨Ø§ 
-نرم‌اÙ\81زارهاي Ù…ختلÙ\81 ODBC ÙƒØ§Ø± Ù…ي‌كند Ø¨Ù†Ø§Ø¨Ø±Ø§ÙŠÙ† 
-شما Ù‚ادر Ø®ÙˆØ§Ù‡ÙŠØ¯ Ø¨ÙˆØ¯ Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² OpenLink Ø±ÙˆÙŠ 
-اكثر Ø³ÙƒÙˆâ€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ù†Ø±Ù…‌اÙ\81زارODBC‌دارند Ø¨Ø¯ÙˆÙ† 
-مشكل Ø¨Ù‡ PostgreSQL Ù†ÙŠØ² Ù…تصل Ø´ÙˆÙŠØ¯.
-اين Ù…حصول Ø¨Ù‡ ÙƒØ³Ø§Ù†ÙŠ ÙƒÙ‡ Ø§Ø­ØªÙŠØ§Ø¬ Ø¨Ù‡ Ø®Ø¯Ù…ات 
-پشتيباني ØªØ¬Ø§Ø±ÙŠ Ø¯Ø§Ø±Ù†Ø¯ Ù\81روخته Ù…ي‌شود. ÙˆÙ„ÙŠ 
-نسخه Ø¢Ø²Ø§Ø¯ Ø§ÙŠÙ† Ù†Ø±Ù…‌اÙ\81زار Ù‡Ù…يشه Ø¯Ø± Ø¯Ø±Ø³ØªØ±Ø³ 
-مي‌باشد. Ø¨Ø±Ø§ÙŠ ÙƒØ³Ø¨ Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø³ÙˆØ§Ù„ات Ø®ÙˆØ¯ 
-را Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ postgres95@openlink.co.uk â€ŒØ§Ø±Ø³Ø§Ù„ Ù†Ù…اييد.
-2.2) Ú†Ù‡ Ø§Ø¨Ø²Ø§Ø±Ù‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙ\81اده Ø§Ø² PostgreSQL‌ Ø¨Ø§ 
-صÙ\81حات ÙˆØ¨ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ
-در Ø³Ø§ÙŠØª http://www.webreview.com Ø¨Ø±Ø§ÙŠ Ø§Ø³ØªÙ\81اده Ø§Ø² 
-PostgreSQL‌ Ø¯Ø± ØµÙ\81حات ÙˆØ¨ Ø±Ø§Ù‡Ù†Ù…اييهاي Ø®ÙˆØ¨ÙŠ ÙˆØ¬ÙˆØ¯ 
-دارد.
-براي ØªØ±ÙƒÙŠØ¨ Ùˆ Ø§Ø³ØªÙ\81اده Ø¯Ø± ØµÙ\81حات ÙˆØ¨ Ø²Ø¨Ø§Ù† PHP‌ ÙŠÙƒ 
-واسط Ø¨Ø³ÙŠØ§Ø± Ù…ناسب Ø§Ø³Øª. Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
-PHP‌در Ø³Ø§ÙŠØª http://www.php.net ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
-مثالهايي Ù†ÙŠØ² Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Perl‌ Ùˆ CGI.pm Ùˆ mod_perl 
-وجود Ø¯Ø§Ø±Ø¯.
-2.3) Ø¢ÙŠØ§ PostgreSQL‌ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙƒØ§Ø±Ø¨Ø±ÙŠ Ú¯Ø±Ø§Ù\81يكي Ø¯Ø§Ø±Ø¯ØŸ
-چند Ù†Ø±Ù… Ø§Ù\81زار Ú¯Ø±Ø§Ù\81يكي Ø¨Ø±Ø§ÙŠ PostgreSQL‌ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ 
-كه Ø´Ø§Ù…Ù„ pgAccess Ø¯Ø±Ø³Ø§ÙŠØª http://www.pgaccess.org Ùˆ pgAdmin III Ø¯Ø± 
-سايت http://www.pgadmin.org Ùˆ RHDB Admin Ø¯Ø± Ø³Ø§ÙŠØª 
-http://sources.redhat.com/rhdb Ùˆ Rekall Ø¯Ø± Ø³Ø§ÙŠØª 
-http://www.thekompany.com/products/rekall  Ù…ي‌باشد. Ù‡Ù…چنين ÙŠÙƒ 
-phpPgAdmin Ù‡Ù… Ø¯Ø± Ø³Ø§ÙŠØª http://phppgadmin.sourceforge.net ÙˆØ¬ÙˆØ¯ 
-دارد ÙƒÙ‡ ÙŠÙƒ ÙˆØ§Ø³Ø· ÙˆØ¨ÙŠ Ø¨Ø±Ø§ÙŠ Ù…ديريت PostgreSQL 
-مي‌باشد.
-براي Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
-نرم‌اÙ\81زارهاي Ú¯Ø±Ø§Ù\81يكي Ø¨Ø±Ø§ÙŠ PostgreSQL Ø¨Ù‡ Ø¢Ø¯Ø±Ø³ 
-http://techdocs.postgresql.org/guides/GUITools Ù…راجعه ÙƒÙ†ÙŠØ¯.
-2.4) Ø¨Ø§ Ú†Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ي‌توان Ø¨Ø§ 
-PostgreSQL‌ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚رار ÙƒØ±Ø¯ØŸ
-بيشتر Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡â€ŒÙ†ÙˆÙŠØ³ÙŠ Ù…ي‌توانند Ø¨Ø§ 
-PostgreSQL‌ Ø§Ø±ØªØ¨Ø§Ø· Ø¨Ø±Ù‚رار ÙƒÙ†Ù†Ø¯. Ø¨Ù‡ Ù‡Ù…راه  Ø³ÙˆØ±Ø³ 
-PostgreSQL ØªØ¹Ø¯Ø§Ø¯ÙŠ Ø§Ø² ÙˆØ§Ø³Ø·Ù‡Ø§ÙŠ Ù…ÙˆØ±Ø¯ Ù†ÙŠØ§Ø² Ø¨Ø±Ø§ÙŠ 
-ارتباط Ø¨Ø§ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø² Ø·Ø±ÙŠÙ‚ Ø²Ø¨Ø§Ù†Ù‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù\81 
-آمده Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø²ÙŠØ± Ù„يست Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ù…شاهده 
-مي‌كنيد.
-  C (libpq) 
-  Embedded C (ecpg) 
-  Java (jdbc) 
-  Python (PyGreSQL) 
-  TCL (libpgtcl) 
-واسطهاي Ø¯ÙŠÚ¯Ø± Ø¯Ø± Ø³Ø§ÙŠØª http://gborg.postgresql.org Ø¯Ø± Ù‚سمت 
-Drivers/Interfaces ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
-
-
-
-سوالات Ù…ديريتي
-3.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم PostgreSQL‌ Ø±Ø§ Ø¯Ø± Ø´Ø§Ø®Ù‡â€ŒØ§ÙŠ ØºÙŠØ± 
-از /usr/local/pgsql/  Ù†ØµØ¨ ÙƒÙ†Ù…ØŸ
-موقع Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ø³ØªÙˆØ± configure Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ prefix-- Ø§Ø³ØªÙ\81اده 
-كنيد.
-3.2) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ Ø±Ø§ Ø§Ø¬Ø±Ø§ Ù…ÙŠ 
-كنم Ù¾ÙŠØ§Ù… Bad system call‌ Ùˆ ÙŠØ§ core dump â€ŒÙ…ي‌گيرم؟
-به Ø¯Ù„ايل Ù…ختلÙ\81 Ù…مكن Ø§Ø³Øª Ø§ÙŠÙ† Ø§ØªÙ\81اق Ø¨ÙŠÙ\81تد. Ø§Ù…ا 
-در Ù‚دم Ø§ÙˆÙ„ Ø´Ù…ا Ù…طمئن Ø´ÙˆÙŠØ¯ ÙƒÙ‡ ÙƒÙ‡ Ø§Ù…كانات 
-اضاÙ\81Ù‡ System V‌ Ø¯Ø± ÙƒØ±Ù†Ù„ Ø´Ù…ا Ù†ØµØ¨ Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ø¯. PostgreSQL 
-براي Ø§Ø¬Ø±Ø§ Ø´Ø¯Ù† Ù†ÙŠØ§Ø² Ø¨Ù‡ Ø§Ø³ØªÙ\81اده Ø§Ø² Ø§Ù…كانات 
-حاÙ\81ظه Ù…شترك Ùˆ Ø³Ù…اÙ\81ورها Ø¯Ø§Ø±Ø¯.
-3.3) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ 
-را Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ IpcMemoryCreate  Ù…ي‌گيرم؟
-احتمالاً‌ Ù‚سمت Ø§ÙŠØ¬Ø§Ø¯ Ø­Ø§Ù\81ظه Ù…شترك Ø¯Ø± ÙƒØ±Ù†Ù„ Ø¨Ù‡ 
-درستي ØªÙ†Ø¸ÙŠÙ… Ù†Ø´Ø¯Ù‡ Ø§Ø³Øª Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ Ø¨Ø§ÙŠØ¯ Ù\81ضاي 
-حاÙ\81ظه Ø§Ø´ØªØ±Ø§ÙƒÙŠ Ø¯Ø± ÙƒØ±Ù†Ù„ Ø±Ø§ Ø²ÙŠØ§Ø¯ ÙƒØ±Ø¯. Ù…يزان 
-دقيق Ø­Ø§Ù\81ظه Ù…شترك Ù…ورد Ù†ÙŠØ§Ø² Ø¨Ø³ØªÙ‡ Ø¨Ù‡ Ù…عماري Ùˆ 
-نحوه Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¨Ø§Ù\81رها ØªÙˆØ³Ø· Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster 
-دارد. Ø¨Ø±Ø§ÙŠ Ø¨ÙŠØ´ØªØ± Ø³ÙŠØ³ØªÙ…‌ها ÙƒÙ‡ Ø¨Ø§ ØªÙ†Ø¸ÙŠÙ…ات 
-پيش‌Ù\81رض ÙƒØ§Ø± Ù…ي‌كنند Ù…قدار Ø§ÙŠÙ† Ø­Ø§Ù\81ظه Ø­Ø¯ÙˆØ¯ 1 
-مگابايت Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø±Ø§Ø¬Ø¹ Ø¨Ù‡ 
-حاÙ\81ظه Ù…شترك Ùˆ Ø³Ù…اÙ\81ور Ø¨Ù‡ PostgreSQL Administrator's Guide 
-مراجعه ÙƒÙ†ÙŠØ¯.
-3.4) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ø³Ø¹ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ù… Ø¨Ø±Ù†Ø§Ù…Ù‡ postmaster‌ 
-را Ø§Ø¬Ø±Ø§ ÙƒÙ†Ù… Ø®Ø·Ø§ÙŠ  IpcSemaphoreCreate Ù…ي‌گيرم؟
-اگر Ù¾ÙŠØºØ§Ù… Ø®Ø·Ø§ (‌pcSemaphoreCreate: semget failed (No space left on 
-device  Ø¨Ø§Ø´Ø¯ Ø¨Ù‡ Ø§ÙŠÙ† Ù…عني Ø§Ø³Øª ÙƒÙ‡ ØªØ¹Ø¯Ø§Ø¯ Ø³Ù…اÙ\81ورهاي 
-تنظيم Ø´Ø¯Ù‡ Ø¯Ø± ÙƒØ±Ù†Ù„ ÙƒØ§Ù\81ÙŠ Ù†ÙŠØ³Øª. PostgreSQL‌ Ø¨Ø±Ø§ÙŠ Ù‡Ø± 
\81رايندي ÙƒÙ‡ Ø¯Ø± backend Ø§Ø¬Ø±Ø§ Ù…ي‌شود Ø¨Ù‡ ÙŠÙƒ Ø³Ù…اÙ\81ور 
-نياز Ø¯Ø§Ø±Ø¯. ÙŠÙƒ Ø±Ø§Ù‡ Ø­Ù„ Ù…وقت Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ† Ù…سئله Ø¢Ù† 
-است ÙƒÙ‡ postmaster Ø±Ø§ Ø¨Ø§ Ø§Ø¹Ù…ال Ù…حدوديت Ø±ÙˆÙŠ ØªØ¹Ø¯Ø§Ø¯ 
\81رايندهايي ÙƒÙ‡ Ù…ي‌تواند Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠÙ…. 
-براي Ø§ÙŠÙ†ÙƒØ§Ø± Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ N- Ùˆ ÙŠÙƒ Ø¹Ø¯Ø¯ ÙƒÙ…تر Ø§Ø² 32 
-استÙ\81اده ÙƒÙ†ÙŠØ¯. Ø±Ø§Ù‡ Ø­Ù„ Ø¯Ø§Ø¦Ù…ÙŠ Ø§ÙŠÙ† Ù…شكل Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ 
-پارامترهاي SEMMNS, SEMMNI ÙƒØ±Ù†Ù„ Ø±Ø§ Ø§Ù\81زايش Ø¯Ù‡ÙŠÙ….
-در Ø²Ù…ان Ø¯Ø³ØªØ±Ø³ÙŠ Ø®ÙŠÙ„ÙŠ Ø²ÙŠØ§Ø¯ Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ØŒ â€Œ 
-سماÙ\81ورهاي Ù†Ø§Ù…عتبر Ù…ي‌توانند Ø¨Ø§Ø¹Ø« crash‌ ÙƒØ±Ø¯Ù† 
-سيستم Ø´ÙˆÙ†Ø¯.
-اگر Ù¾ÙŠØºØ§Ù… Ø®Ø·Ø§ Ú†ÙŠØ² Ø¯ÙŠÚ¯Ø±ÙŠ Ø¨Ø§Ø´Ø¯ Ø§Ø­ØªÙ…الاً Ø¨Ù‡ 
-دليل Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ ÙƒØ±Ù†Ù„ Ø§Ø² Ø³Ù…اÙ\81ورها Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ 
-نمي‌كند. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø±Ø§Ù‡Ù†Ù…اي 
-مديريتي PostgreSQL Ø±Ø§ Ù…طالعه ÙƒÙ†ÙŠØ¯.
-3.5) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø§ØªØµØ§Ù„ات Ø³Ø§ÙŠØ± Ù…اشينها Ø±Ø§ 
-كنترل ÙƒÙ†Ù…ØŸ
-به ØµÙˆØ±Øª Ù¾ÙŠØ´ Ù\81رض Ù\81قط Ø§Ø² Ù…اشيني ÙƒÙ‡ PostgreSQL Ø±ÙˆÙŠ Ø¢Ù† 
-در Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§Ø³Øª Ù…ي‌توان Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² 
-سوكت‌هاي ÙŠÙˆÙ†ÙŠÙƒØ³ÙŠ Ø¨Ù‡ Ø¢Ù† Ù…تصل Ø´Ø¯. Ø³Ø§ÙŠØ± 
-ماشين‌ها Ù‚ادر Ù†ÙŠØ³ØªÙ†Ø¯ Ø¨Ù‡ PostgreSQL Ù…تصل Ø´ÙˆÙ†Ø¯ Ù…گر 
-آنكه Ú¯Ø²ÙŠÙ†Ù‡ tcp_sockets Ø¯Ø± Ù\81ايل postgresql.conf Ù\81عال Ø´Ø¯Ù‡ Ùˆ 
-همچنين Ø¨Ø§ Ø§ØµÙ„اح Ù\81ايل PGDATA/ph_hba.conf Ù‡ÙˆÙŠØªâ€ŒØ´Ù†Ø§Ø³ÙŠ 
-مبتني Ø¨Ø± Ù…يزبان Ù†ÙŠØ² Ù\81عال Ø´ÙˆØ¯. Ø¨Ø§ Ø§ÙŠÙ† ÙƒØ§Ø± 
-مي‌توان Ø§ØªØµØ§Ù„ات TCP/IP Ø¨Ù‡ PostgreSQL‌ Ø§ÙŠØ¬Ø§Ø¯ ÙƒØ±Ø¯.
-3.6) Ø¨Ø±Ø§ÙŠ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø¨Ø§Ù„اتر Ùˆ Ø¨Ù‡ØªØ± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
-Ú†Ù‡ ØªÙ†Ø¸ÙŠÙ…اتي Ø±Ø§ Ø¨Ø§ÙŠØ¯ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù…ØŸ
-به Ø·ÙˆØ± Ø­ØªÙ… Ø§Ø³ØªÙ\81اده Ø§Ø² Ø§Ù†Ø¯ÙŠØ³â€ŒÙ‡Ø§ Ø¨Ø§Ø¹Ø« Ø¨Ø§Ù„ا 
-رÙ\81تن Ø³Ø±Ø¹Øª Ù¾Ø§Ø³Ø®â€ŒÚ¯ÙˆÙŠÙŠ Ø¨Ù‡ Ø¯Ø±Ø®ÙˆØ§Ø³Øªâ€ŒÙ‡Ø§ Ø®ÙˆØ§Ù‡Ø¯ 
-شد. Ø¯Ø³ØªÙˆØ± EXPLAIN ANALYZE Ø¨Ù‡ Ø´Ù…ا Ø§Ù…كان Ø¯ÙŠØ¯Ù† Ù†Ø­ÙˆÙ‡ 
-پردازش ÙŠÙƒ Ø¯Ø³ØªÙˆØ± ØªÙˆØ³Ø· PostgreSQL Ø±Ø§ Ù…ي‌دهد.
-اگر Ø´Ù…ا ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ INSERT‌ Ø¯Ø§Ø±ÙŠØ¯ Ø³Ø¹ÙŠ ÙƒÙ†ÙŠØ¯ 
-آنها Ø±Ø§ Ø¨Ø§ Ù‚رار Ø¯Ø§Ø¯Ù† Ø¯Ø± ÙŠÙƒ Ù\81ايل Ø¨Ø§ Ø¯Ø³ØªÙˆØ± COPY‌ 
-اجرا ÙƒÙ†ÙŠØ¯. Ø§ÙŠÙ† Ø¯Ø³ØªÙˆØ± Ø¨Ù‡ Ù…راتب Ø§Ø² INSERT Ø³Ø±ÙŠØ¹ØªØ± 
-است. Ø­ØªÙŠâ€ŒØ§Ù„امكان Ø³Ø¹ÙŠ ÙƒÙ†ÙŠØ¯ Ø§Ø² ØªØ±Ø§ÙƒÙ†Ø´Ù‡Ø§ 
-استÙ\81اده Ù†ÙƒÙ†ÙŠØ¯. ØªØ±Ø§ÙƒÙ†Ø´Ù‡Ø§ Ù…جموعه Ø¯Ø³ØªÙˆØ±Ø§ØªÙŠ 
-هستند ÙƒÙ‡ Ø¨ÙŠÙ†Ø¯ BEGIN Ùˆ â€\8dCOMMIT Ù…ي‌آيند. Ø§Ú¯Ø± ÙŠÙƒ 
-دستور Ø¨Ù‡ ØµÙˆØ±Øª Ø¹Ø§Ø¯ÙŠ Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯ PostgreSQL Ø®ÙˆØ¯ Ø¢Ù† 
-دستور Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª ÙŠÙƒ ØªØ±Ø§ÙƒÙ†Ø´ Ù…ستقل Ù†Ú¯Ø§Ù‡ ÙƒØ±Ø¯Ù‡ Ùˆ 
-اجرا Ù…ي‌كند. Ù…وقعی ÙƒÙ‡ ØªØºÙŠÙŠØ±Ø§Øª Ø²ÙŠØ§Ø¯ÙŠ Ø¯Ø± 
-پايگاه Ø¯Ø§Ø¯Ù‡ Ø§Ù†Ø¬Ø§Ù… Ù…ي‌شود Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ÙŠ Ù‚Ø¨Ù„ÙŠ Ø±Ø§ 
-حذÙ\81 Ùˆ Ù…جدداً‌ Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†ÙŠØ¯.
-استÙ\81اده Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ o -F- Ø¯Ø± Ù\81رمان postmaster Ø¨Ø§Ø¹Ø« ØºÙŠØ± 
\81عال ÙƒØ±Ø¯Ù† ()fsync Ù…ي‌شود. Ø§ÙŠÙ† Ø¯Ø³ØªÙˆØ± Ø¨Ø¹Ø¯ Ø§Ø² Ù‡Ø± 
-تراكنش Ø§Ø·Ù„اعات Ø±Ø§ Ø±ÙˆÙŠ Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ Ù…نتقل 
-مي‌كند.
-براي Ø§Ù\81زايش ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§Ù\81رهاي Ø­Ø§Ù\81ظه Ø§Ø´ØªØ±Ø§ÙƒÙŠ Ø§Ø² 
-گزينه B- Ø¨Ù‡ Ù‡Ù…راه Ù\81رمان postmaster Ø§Ø³ØªÙ\81اده ÙƒÙ†ÙŠØ¯. 
-توجه ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø§Ú¯Ø± Ø§ÙŠÙ† Ø¹Ø¯Ø¯ Ø®ÙŠÙ„ÙŠ Ø¨Ø²Ø±Ú¯ Ø¨Ø§Ø´Ø¯ Ù…مكن 
-است postmaster Ø§ØµÙ„اً‌ Ø§Ø¬Ø±Ø§ Ù†Ø´ÙˆØ¯. Ù‡Ø± Ø¨Ø§Ù\81ر 8 ÙƒÙŠÙ„Ùˆ 
-بايت Ø­Ø§Ù\81ظه Ù†ÙŠØ§Ø² Ø¯Ø§Ø±Ø¯ Ùˆ ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§Ù\81رها Ø¨Ù‡ Ø·ÙˆØ± 
-پيش Ù\81رض 64 Ø§Ø³Øª.
-همچنين Ù…ي‌توان Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ S-  Ù…يزان Ø­Ø§Ù\81ظه‌اي 
-كه Ø¨Ø±Ø§ÙŠ Ù…Ø±ØªØ¨â€ŒØ³Ø§Ø²ÙŠâ€ŒÙ‡Ø§ÙŠ Ù…وقت ØªÙˆØ³Ø· PostgreSQL 
-استÙ\81اده Ù…ي‌شود Ø±Ø§ Ø§Ù\81زايش Ø¯Ø§Ø¯. Ù…قدار Ù¾ÙŠØ´ Ù\81رض 
-512 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª Ø§Ø³Øª.
-استÙ\81اده Ø§Ø² Ø¯Ø³ØªÙˆØ± CLUSTER Ù†ÙŠØ² Ø¨Ø±Ø§ÙŠ Ø¨Ø§Ù„Ø§ Ø¨Ø±Ø¯Ù† 
-كارايي Ù…وثر Ø§ Ø³Øª. Ø¯Ø³ØªÙˆØ± Ø±Ø§Ù‡Ù†Ù…اي CLUSTER Ø§Ø·Ù„اعات 
-بيشتري Ø¯Ø± Ø§ÙŠÙ† Ø²Ù…ينه Ø¨Ù‡ Ø´Ù…ا Ù…ي‌دهد.
-3.7) Ú†Ù‡ Ø§Ù…كاناتي Ø¨Ø±Ø§ÙŠ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„‌ ÙˆØ¬ÙˆØ¯ 
-دارد؟
-PostgerSQL‌ Ø§Ù…كانات Ù…ختلÙ\81ÙŠ Ø¨Ø±Ø§ÙŠ Ú¯Ø²Ø§Ø±Ø´ Ø¯Ø§Ø¯Ù† 
-وضعيت Ø®ÙˆØ¯ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ Ø§Ø´ÙƒØ§Ù„ Ø²Ø¯Ø§ÙŠÙŠ Ù…ÙŠâ€ŒØªÙˆØ§Ù† 
-از Ø¢Ù†Ù‡Ø§ Ø§Ø³ØªÙ\81اده ÙƒØ±Ø¯.
-با Ø§Ø³ØªÙ\81اده Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ enable-assert-- ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ 
-()assert Ø¨Ø±Ø§ÙŠ Ù…ÙˆÙ†ÙŠØªÙˆØ± ÙƒØ±Ø¯Ù† Ùˆ ØªÙˆÙ‚Ù\81 Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø¯Ø± ØµÙˆØ±Øª 
-بروز Ø®Ø·Ø§Ù‡Ø§ÙŠ Ù†Ø§Ø®ÙˆØ§Ø³ØªÙ‡ Ù\81عال Ù…ي‌شود.
-هم Postmaster Ùˆ Ù‡Ù… postgres Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ø²ÙŠØ§Ø¯ÙŠ Ø¨Ø±Ø§ÙŠ 
-اشكال Ø²Ø¯Ø§ÙŠÙŠ Ø¯Ø§Ø±Ù†Ø¯. Ù…وقعي ÙƒÙ‡ postmaster Ø±Ø§ Ø§Ø¬Ø±Ø§ 
-مي‌كنيد Ø®Ø±ÙˆØ¬ÙŠ Ø§Ø³ØªØ§Ù†Ø¯Ø§Ø±Ø¯ Ùˆ Ø®Ø·Ø§ Ø±Ø§ Ø³Ù…ت Ù\81ايل log 
-ارسال ÙƒÙ†ÙŠØ¯.
-    cd /usr/local/pgsql
-    ./bin/postmaster >server.log 2>&1 &
-اين ÙƒØ§Ø± ÙŠÙƒ Ù\81ايل log Ø¯Ø± Ø¨Ø§Ù„اترين Ø´Ø§Ø®Ù‡ PostgreSQL‌ 
-ايجاد Ù…ي‌كند. Ø§ÙŠÙ† Ù\81ايل Ø­Ø§ÙˆÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ù…Ù\81يدي 
-در Ù…ورد Ù…سائل Ùˆ Ø®Ø·Ø§Ù‡Ø§ÙŠÙŠ Ø§Ø³Øª ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ Ø³Ø±ÙˆØ± 
-اتÙ\81اق Ø§Ù\81تاده Ø§Ø³Øª. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø¬Ø²Ø¦ÙŠØ§Øª Ø¨ÙŠØ´ØªØ± 
-مي‌توان Ø§Ø² d-  Ø¨Ù‡ Ù‡Ù…راه Ù\81رمان postmaster‌ Ø§Ø³ØªÙ\81اده 
-كرد. Ú¯Ø²ÙŠÙ†Ù‡ d- Ù‡Ù…چنين ÙŠÙƒ Ø¹Ø¯Ø¯ Ù…ي‌گيرد ÙƒÙ‡ Ù†Ø´Ø§Ù† 
-دهنده Ø³Ø·Ø­ Ø¬Ø²Ø¦ÙŠØ§ØªÙŠ Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Log‌Ù\81ايل Ù†ÙˆØ´ØªÙ‡ 
-مي‌شود. Ø¨Ø§ Ø¨Ø§Ù„ابردن Ø§ÙŠÙ† Ø¹Ø¯Ø¯ Ø­Ø¬Ù… Ø§Ø·Ù„اعات 
-توليد Ø´Ø¯Ù‡ Ø¯Ø± LogÙ\81ايل Ù†ÙŠØ² Ø§Ù\81زايش Ù…ي‌يابد.
-اگر postmaster Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§ Ù†Ø¨Ø§Ø´Ø¯ØŒ Ù…ي‌توانيم postgres 
-را Ø¨Ù‡ Ø·ÙˆØ± Ù…ستقيم Ø§Ø² Ø®Ø· Ù\81رمان Ø§Ø¬Ø±Ø§ ÙƒØ±Ø¯Ù‡ Ùˆ  
-دستورات SQL Ø±Ø§ Ø¨Ù‡ Ø¢Ù† Ø¨Ø¯Ù‡ÙŠÙ…. Ø§ÙŠÙ† ÙƒØ§Ø± Ù\81قط Ø¨Ø±Ø§ÙŠ 
-اشكال‌يابي ØªÙˆØµÙŠÙ‡ Ù…ي‌شود. ØªÙˆØ¬Ù‡ ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø¯Ø± 
-اين Ø­Ø§Ù„ت ÙŠÙƒ Ø¯Ø³ØªÙˆØ± Ø¨Ø§ ÙƒØ§Ø±Ø§ÙƒØªØ± newline Ø®Ø§ØªÙ…Ù‡ Ù¾ÙŠØ¯Ø§ 
-مي‌كند Ùˆ Ù†Ù‡ Ø¨Ø§ ;. Ø§Ú¯Ø± postmaster Ø±Ø§ Ø¨Ø§ Ø§Ù…كانات 
-اشكال‌يابي ÙƒØ§Ù…پيل ÙƒØ±Ø¯Ù‡ Ø¨Ø§Ø´ÙŠØ¯ Ù…ي‌توانيد Ø¨Ø§ 
-استÙ\81اده Ø§Ø² ÙŠÙƒ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§Ø´ÙƒØ§Ù„‌ياب Ø§Ø¬Ø±Ø§ÙŠ 
-برنامه Ø±Ø§ Ù…ونيتور ÙƒÙ†ÙŠØ¯. 
-اگر postmaster Ø¯Ø± Ø­Ø§Ù„ Ø§Ø¬Ø±Ø§ Ø¨Ø§Ø´Ø¯ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± psql 
-مي‌توان Ø¨Ù‡ postgres Ù…تصل Ø´Ø¯. Ø¨Ø§ Ù¾ÙŠØ¯Ø§ ÙƒØ±Ø¯Ù† PID 
\81رايند postgres ÙƒÙ‡ psql Ø¨Ù‡ Ø¢Ù† Ù…تصل Ø´Ø¯Ù‡ Ø§Ø³Øª Ù…ي‌توان 
-آن Ø±Ø§ Ù…ونيتور ÙƒØ±Ø¯. Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§ÙŠØ¯ ÙŠÙƒ 
-برنامه Ø§Ø´ÙƒØ§Ù„‌ياب Ø±Ø§ Ø¨Ù‡ Ø¢Ù† pid Ù…تصل ÙƒØ±Ø¯. Ø§Ú¯Ø± 
-بخواهيم Ø¨Ø§Ù„ا Ø¢Ù…دن postgres Ø±Ø§ Ù…ونيتور ÙƒÙ†ÙŠÙ… ÙƒØ§Ù\81ÙŠ 
-است "PGOPTIONS="-W n Ùˆ psql Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠÙ…. Ø§ÙŠÙ† ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« 
-مي‌شود ÙƒÙ‡ postgres Ø¨Ø§ n Ø«Ø§Ù†ÙŠÙ‡ ØªØ§Ø®ÙŠØ± Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯ Ùˆ Ø¯Ø± 
-اين Ù\81اصله Ø´Ù…ا Ù…ي‌توانيد Ø¨Ø±Ù†Ø§Ù…Ù‡ Ø§Ø´ÙƒØ§Ù„‌ياب 
-را Ø¨Ù‡ Ø¢Ù† Ù…تصل ÙƒØ±Ø¯Ù‡ Ùˆ Ø¨Ø§ Ù‚رار Ø¯Ø§Ø¯Ù† ÙŠÙƒ Ù†Ù‚طه 
-توقÙ\81  Ø±ÙˆÙ†Ø¯ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† Ø±Ø§ Ù…ونيتور ÙƒÙ†ÙŠØ¯.
-postgres Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠ s-‌ Ùˆ A- Ùˆ t-‌ Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø±Ø§ÙŠ 
-پيدا ÙƒØ±Ø¯Ù† Ø§Ø´ÙƒØ§Ù„ات Ø¨Ø³ÙŠØ§Ø± Ù…ناسب Ù‡Ø³ØªÙ†Ø¯.
-شما Ù…ي‌توانيد postgreSQL Ø±Ø§ Ø¨Ø§ Ø§Ù…كانات profiling 
-كامپيل ÙƒÙ†ÙŠØ¯. Ø§ÙŠÙ† ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ي‌شود ÙƒÙ‡ Ø²Ù…ان 
-اجراي Ø¯Ù‚يق Ù‡Ø± ØªØ§Ø¨Ø¹ Ø¯Ø± Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù…شخص Ø´ÙˆØ¯. 
-خروجي‌هاي ØªÙˆÙ„يد Ø´Ø¯Ù‡ Ø¯Ø± Ø§ÙŠÙ† Ø­Ø§Ù„ت Ø¯Ø± Ù\81ايل 
-DLINUX_PROFILE. Ø±ÙŠØ®ØªÙ‡ Ù…ي‌شود.
-3.8) Ú†Ø±Ø§ Ù…وقعي ÙƒÙ‡ Ù…Ù† Ù…ي‌خواهم Ø¨Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-وصل Ø´ÙˆÙ… Ù¾ÙŠØ§Ù… "Sorry, too many clients" â€ŒÙ…ي‌گيرم؟
-شما Ø¨Ø§ÙŠØ¯ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ Ù\81رايندهاي Ù‡Ù…زمان 
-postmaster Ø±Ø§ Ø§Ù\81زايش Ø¯Ù‡ÙŠØ¯. Ù…قدار Ù¾ÙŠØ´ Ù\81رض 32 Ø§Ø³Øª. 
-براي Ø§Ù\81زايش Ø¢Ù† Ù…ي‌توان Ø§Ø² Ú¯Ø²ÙŠÙ†Ù‡ N- Ø§Ø³ØªÙ\81اده 
-كرد Ùˆ ÙŠØ§ Ù\81ايل postgresql.conf Ø±Ø§ Ø§ØµÙ„اح Ù†Ù…ود
-توجه ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø§Ú¯Ø± N- Ù…قداري Ø¨ÙŠØ´ØªØ± Ø§Ø² 32 Ø¯Ø§Ø´ØªÙ‡ 
-باشد Ø¨Ø§ÙŠØ¯ Ù…قدار B- Ø±Ø§ Ù†ÙŠØ² Ø§Ù\81زايش Ø¯Ù‡ÙŠÙ…. Ø§ÙŠÙ† 
-مقدار Ø¨Ø§ÙŠØ¯ Ø­Ø¯Ø§Ù‚Ù„ Ø¯Ùˆ Ø¨Ø±Ø§Ø¨Ø± Ù…قدار N-‌ Ø¨Ø§Ø´Ø¯. 
-براي Ø§Ø¹Ø¯Ø§Ø¯ Ø®ÙŠÙ„ÙŠ Ø¨Ø§Ù„ا Ø¨Ø§ÙŠØ¯ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² 
-پارامترهاي ÙƒØ±Ù†Ù„ Ø±Ø§ Ù†ÙŠØ² Ø§ØµÙ„اح ÙƒØ±Ø¯. 
-پارامترهايي Ù†Ø¸ÙŠØ± Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø­Ø§Ù\81ظه 
-اشتراكي SHMMAX ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ Ø³Ù…اÙ\81ورها SEMMNI‌ Ùˆ 
-SEMMNS ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ Ù\81رايندها NPROCØŒ Ø­Ø¯Ø§ÙƒØ«Ø± 
\81رايندهاي ÙŠÙƒ ÙƒØ§Ø±Ø¨Ø± MAXUPRC Ùˆ Ø­Ø¯Ø§ÙƒØ«Ø± Ù\81ايلهاي Ø¨Ø§Ø² 
-NFILE Ùˆ NINODE. ÙŠÙƒÙŠ Ø§Ø² Ø¯Ù„ايلي ÙƒÙ‡ ØªØ¹Ø¯Ø§Ø¯ Ø§ØªØµØ§Ù„ات 
-همزمان postgreSQL Ù…حدود Ø§Ø³Øª Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ù†ÙŠØ§Ø²Ù‡Ø§ÙŠ 
-PostgreSQL Ø¨ÙŠØ´ Ø§Ø² Ù…نابع Ù…وجود Ø³ÙŠØ³ØªÙ… Ù†Ø¨Ø§Ø´Ø¯.
-3.9) Ø¯Ø± Ø´Ø§Ø®Ù‡  pgsql_tmp  Ú†Ù‡ Ú†ÙŠØ²ÙŠ Ù‚Ø±Ø§Ø± Ø¯Ø§Ø±Ø¯ØŸ
-دراين Ø´Ø§Ø®Ù‡ Ù\81ايلهاي Ù…وقتي Ù‚رار Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø§ 
-اجراي Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ø¢Ù…ده Ø§Ø³Øª. Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† 
-مثال Ø§Ú¯Ø± Ø¨Ø±Ø§ÙŠ Ø§Ø¬Ø±Ø§ÙŠ Ø¯Ø³ØªÙˆØ± order by Ù†ÙŠØ§Ø² Ø¨Ù‡ Ø§Ù†Ø¬Ø§Ù… 
-مرتب Ø³Ø§Ø²ÙŠ Ø¨Ø§Ø´Ø¯ Ùˆ Ø¯Ø± ØµÙˆØ±ØªÙŠ ÙƒÙ‡ Ø­Ø§Ù\81ظه Ù…شخص Ø´Ø¯Ù‡ 
-با Ú¯Ø²ÙŠÙ†Ù‡ S- Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ†ÙƒØ§Ø± ÙƒØ§Ù\81ÙŠ Ù†Ø¨Ø§Ø´Ø¯ Ø³ÙŠØ³ØªÙ… ÙŠÙƒ 
\81ايل Ù…وقت Ø¯Ø± Ø§ÙŠÙ† Ø´Ø§Ø®Ù‡ Ø§ÙŠØ¬Ø§Ø¯ Ù…ي‌كند ØªØ§ Ø¹Ù…Ù„ 
-مرتب Ø³Ø§Ø²ÙŠ Ø±Ø§ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ø¯.
\81ايلهاي Ù…وقت Ù…عمولاً Ø¨Ù‡ ØµÙˆØ±Øª Ø§ØªÙˆÙ…اتيك Ù¾Ø§Ùƒ 
-مي‌شود Ø§Ù…ا Ø§Ú¯Ø± postgreSQL Ø¯Ø± Ø­ÙŠÙ† Ù…رتب Ø³Ø§Ø²ÙŠ crash‌ 
-كند Ø¢Ù† Ù\81ايلها Ø¨Ø§Ù‚ÙŠ Ù…ي‌مانند. Ø¨Ø§ stop Ùˆ start ÙƒØ±Ø¯Ù† 
-برنامه postmaster Ø§ÙŠÙ† Ù\81ايلها Ù¾Ø§Ùƒ Ù…ي‌شوند.
-3.10) Ú†Ø±Ø§ Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ù†Ø³Ø®Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…Ù† 
-بايد ÙƒÙ„ Ø¯Ø§Ø¯Ù‡ Ù‡Ø§ Ø±Ø§ dump‌ Ùˆ Ù…جدداً restore ÙƒÙ†Ù…ØŸ
-تيم Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÙŠØ³ postgreSQL Ø¯Ø± Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ Ø§Ø±Ø§Ø¦Ù‡ Ø´Ø¯Ù‡ 
-كه Ù\81قط minor Ø¢Ù†Ù‡Ø§ Ù…تÙ\81اوت Ø§Ø³Øª Ù\81قط ØªØºÙŠÙŠØ±Ø§Øª ÙƒÙˆÚ†ÙƒÙŠ 
-اعمال Ù…ي‌كنند؛ Ø¨Ù†Ø§Ø¨Ø±Ø§ÙŠÙ† Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² ÙƒØ±Ø¯Ù† Ø§Ø² 
-نسخه 7.2‌به 7.2.1 Ù†ÙŠØ§Ø²ÙŠ Ø¨Ù‡ dump Ùˆ restore Ù†ÙŠØ³Øª. Ø§Ù…ا Ø¯Ø± 
-نسخه‌هايي ÙƒÙ‡ major Ø¢Ù†Ù‡Ø§ ØªØºÙŠÙŠØ± Ù…ي‌كند ØºØ§Ù„باً 
-ساختار Ø¯Ø§Ø®Ù„ÙŠ Ø¬Ø¯Ø§ÙˆÙ„ Ùˆ Ù\81ايلهاي Ø¯Ø§Ø¯Ù‡ ØªØºÙŠÙŠØ± 
-مي‌كند. Ø§ÙŠÙ† ØªØºÙŠÙŠØ±Ø§Øª Ù…عمولاً‌ Ù¾ÙŠÚ†ÙŠØ¯Ù‡ Ù‡Ø³ØªÙ†Ø¯. 
-براي Ø§Ù†ØªÙ‚ال Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ù…ÙˆØ¬ÙˆØ¯ Ø¯Ø± Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-در Ø§ÙŠÙ† Ø­Ø§Ù„ت Ø¨Ø§ÙŠØ¯ â€ŒØ§Ø² dump Ùˆ restore Ø§Ø³ØªÙ\81اده ÙƒØ±Ø¯.
-در Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠÙŠ ÙƒÙ‡ Ø³Ø§Ø®ØªØ§Ø± Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ ØªØºÙŠÙŠØ±ÙŠ 
-نمي‌كند Ù…ÙŠ ØªÙˆØ§Ù† Ø§Ø² Ø¨Ø±Ù†Ø§Ù…Ù‡ pg_upgrade Ø¨Ø±Ø§ÙŠ Ø¨Ù‡ Ø±ÙˆØ² 
-كردن Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø³ØªÙ\81اده ÙƒØ±Ø¯ Ø¨Ø¯ÙˆÙ† Ø§ÙŠÙ†ÙƒÙ‡ 
-نيازي Ø¨Ù‡ Ø§Ø³ØªÙ\81اده Ø§Ø² dump Ùˆ restore  Ø¨Ø§Ø´Ø¯. Ø¯Ø± 
-يادداشتي ÙƒÙ‡ Ø¨Ù‡ Ù‡Ù…راه Ù‡Ø± ØªÙˆØ²ÙŠØ¹ Ù…ي‌آيد Ø°ÙƒØ± 
-شده Ø§Ø³Øª ÙƒÙ‡ Ø¢ÙŠØ§ Ø¨Ø±Ù†Ø§Ù…Ù‡ pg_upgrade Ø¨Ø±Ø§ÙŠ Ø§ÙŠÙ† ØªÙˆØ²ÙŠØ¹ 
-وجود Ø¯Ø§Ø±Ø¯ ÙŠØ§ Ø®ÙŠØ±.
-3.11) Ø§Ø² Ú†Ù‡ Ø³Ø®Øª Ø§Ù\81زاري Ø¨Ø§ÙŠØ¯ Ø§Ø³ØªÙ\81اده ÙƒÙ†Ù…ØŸ
-
-چون Ø§ÙƒØ«Ø± Ø³Ø®Øªâ€ŒØ§Ù\81زارهاي PC  Ø³Ø§Ø²Ú¯Ø§Ø± Ù‡Ø³ØªÙ†Ø¯ Ù…ردم 
\81كر Ù…ي‌كنند ÙƒÙ‡ ÙƒÙŠÙ\81يت Ø¢Ù†Ù‡Ø§ Ù†ÙŠØ² ÙŠÙƒØ³Ø§Ù† Ø§Ø³Øª. Ø¯Ø± 
-حاليكه Ø§ÙŠÙ†Ø·ÙˆØ± Ù†ÙŠØ³Øª. Ø§Ø³ØªÙ\81اده Ø§Ø² Ù‡Ø§Ø±Ø¯Ù‡Ø§ÙŠ SCSI Ùˆ 
-حاÙ\81ظه‌هاي ECC Ùˆ Ù…ادربردهاي Ø¨Ø§ ÙƒÙŠÙ\81يت Ø¨Ø§Ù„ا 
-نسبت Ø¨Ù‡ Ø³Ø®Øª Ø§Ù\81زارهاي Ø§Ø±Ø²Ø§Ù†ØªØ± Ù†ØªØ§ÙŠØ¬ Ø¨Ù‡ØªØ±ÙŠ Ø§Ø² 
-نظر ÙƒØ§Ø±Ø§ÙŠÙŠ Ùˆ Ù¾Ø§ÙŠØ¯Ø§Ø±ÙŠ Ø³ÙŠØ³ØªÙ… Ø¨Ù‡Ù…راه Ø®ÙˆØ§Ù‡Ø¯ 
-داشت. PostgreSQL Ø±ÙˆÙŠ Ø¨ÙŠØ´ØªØ± Ø³Ø®Øª Ø§Ù\81زارها Ø§Ø¬Ø±Ø§ 
-مي‌شود Ø§Ù…ا Ø§Ú¯Ø± ÙƒØ§Ø±Ø§ÙŠÙŠ Ùˆ Ø§Ø·Ù…ينان Ù\81اكتورهاي 
-مهمي Ù‡Ø³ØªÙ†Ø¯ Ø¨Ø§ÙŠØ¯ Ø³Ø®Øª Ø§Ù\81زار Ù…ناسب Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯. 
-در Ú¯Ø±ÙˆÙ‡Ù‡Ø§ÙŠ Ù¾Ø³ØªÙŠ Ø¯Ø± Ù…ورد Ø³Ø®Øª Ø§Ù\81زار Ù…ناسب  Ùˆ 
-انتخاب Ø¢Ù† Ø¨Ø­Ø« Ø´Ø¯Ù‡ Ø§Ø³Øª. 
-
-
-
-سوالات Ø¹Ù…لياتي
-4.1) ØªÙ\81اوت Ø¨ÙŠÙ† binary cursors Ùˆ Normal cursors Ú†ÙŠØ³ØªØŸ
-راهنماي Ø¯Ø³ØªÙˆØ± DECLARE‌ Ø±Ø§ Ù…طالعه ÙƒÙ†ÙŠØ¯.
-4.2) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù\81قط Ø±ÙˆÙŠ Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ\81 Ø§ÙˆÙ„ ÙŠØ§ 
-يك Ø±Ø¯ÙŠÙ\81 ØªØµØ§Ø¯Ù\81ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª SELECT‌ Ø¨Ø²Ù†Ù…ØŸ
-راهنماي Ø¯Ø³ØªÙˆØ± FETCH  ÙŠØ§ SELECT...LIMIT Ø±Ø§ Ø¨Ø¨ÙŠÙ†ÙŠØ¯.
-در ÙˆØ§Ù‚ع ÙƒÙ„ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø§ÙŠØ¯ Ø¨Ø±Ø±Ø³ÙŠ Ùˆ Ø§Ø±Ø²ÙŠØ§Ø¨ÙŠ Ø´ÙˆØ¯ 
-حتي Ø§Ú¯Ø± Ø´Ù…ا Ù\81قط Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ\81 Ø§ÙˆÙ„ Ø±Ø§ Ø¨Ø®ÙˆØ§Ù‡ÙŠØ¯. Ø¨Ø±Ø§ÙŠ 
-مثال Ø¯Ø±Ø®ÙˆØ§Ø³Øª ORDER BY Ø±Ø§ Ø¯Ø± Ù†Ø¸Ø± Ø¨Ú¯ÙŠØ±ÙŠØ¯. Ø§Ú¯Ø± 
-انديس ÙŠØ§ Ù†Ù…ايه‌اي Ø¨Ø±Ø§ÙŠ ORDER BY ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø´ØªÙ‡ 
-باشد،‌postgreSQL‌ Ù…مكن Ø§Ø³Øª Ø¨ØªÙˆØ§Ù†Ø¯ Ù\81قط Ú†Ù†Ø¯ Ø³Ø·Ø± 
-اول Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙŠ Ø±Ø§ Ø§Ø±Ø²ÙŠØ§Ø¨ÙŠ ÙƒÙ†Ø¯ Ùˆ ÙŠØ§ Ø§ÙŠÙ†ÙƒÙ‡ ÙƒÙ„ 
-درخواست Ù¾Ø±Ø¯Ø§Ø²Ø´ Ø´ÙˆØ¯ ØªØ§ ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙ\81‌هاي 
-درخواستي ØªÙˆÙ„يد Ø´ÙˆØ¯.
-براي Ø§Ù†ØªØ®Ø§Ø¨ ÙŠÙƒ Ø³Ø·Ø± ØªØµØ§Ø¯Ù\81ÙŠ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
-مي‌كنيم:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-4.3) Ù…Ù† Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù„يستي Ø§Ø² Ø¬Ø¯Ø§ÙˆÙ„ ÙŠØ§ Ø³Ø§ÙŠØ± 
-چيزهايي ÙƒÙ‡ Ø¯Ø± psql‌ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ Ø±Ø§ Ø¨Ø¨ÙŠÙ†Ù…ØŸ
-براي Ø¯ÙŠØ¯Ù† Ù„يست Ø¬Ø¯Ø§ÙˆÙ„ Ø¯Ø³ØªÙˆØ±  dt\ Ø±Ø§ Ø¯Ø± Ø¨Ø±Ù†Ø§Ù…Ù‡ 
-psql‌ Ø§Ø³ØªÙ\81اده ÙƒÙ†ÙŠØ¯. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù„يست ÙƒØ§Ù…Ù„ 
\81رمانها ?\ Ø±Ø§ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠØ¯. Ø±Ø§Ù‡ Ø¯ÙŠÚ¯Ø± Ø®ÙˆØ§Ù†Ø¯Ù† Ù…تن 
-برنامه psql‌ Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø± Ø´Ø§Ø®Ù‡ pgsql/src/bin/psql/describe.c 
-‌قرار Ø¯Ø§Ø±Ø¯. Ø§ÙŠÙ† Ù\81ايل Ø­Ø§ÙˆÙŠ Ù\81رامين SQLيي Ø§Ø³Øª ÙƒÙ‡ 
-خروجي Ø±Ø§ Ø¨Ø±Ø§ÙŠ  Ø¯Ø³ØªÙˆØ±Ø§ØªÙŠ ÙƒÙ‡ Ø¨Ø§ \‌در psql Ø´Ø±ÙˆØ¹ 
-مي‌شوند ØªÙˆÙ„يد Ù…ي‌كنند. Ø±Ø§Ù‡ Ø¯ÙŠÚ¯Ø± Ø§Ø¬Ø±Ø§ÙŠ psql Ø¨Ø§ 
-گزينه E-‌است. Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ي‌شود ÙƒÙ‡ psql Ù‚بل 
-از Ø§Ø¬Ø±Ø§ Ù‡Ø± Ø¯Ø³ØªÙˆØ± SQL‌متناظر Ø¢Ù† Ø±Ø§ Ù†Ø´Ø§Ù† Ø¯Ù‡Ø¯. 
-PostgreSQL‌همچنين ÙŠÙƒ Ø¨Ø±Ù†Ø§Ù…Ù‡ SQLi Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ù…ي‌توان 
-با Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¢Ù†  Ø§Ø·Ù„اعات Ø¯Ø§Ø®Ù„ÙŠ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-را Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒØ±Ø¯.
-4.4) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø­Ø°Ù\81 Ù…ي‌كنيد؟ Ú†Ú¯ÙˆÙ†Ù‡ 
-نوع Ø¯Ø§Ø¯Ù‡ Ø¢Ù† Ø±Ø§ Ø¹ÙˆØ¶ ÙƒÙ†ÙŠÙ…ØŸ
-حذÙ\81 ÙŠÙƒ Ø³ØªÙˆÙ† Ø¯Ø± ØªÙˆØ²ÙŠØ¹ 7.3 Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¯Ø³ØªÙˆØ± 
-ALTER TABLE DROP COLUMN Ø§Ø¶Ø§Ù\81Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª. Ø¯Ø± Ù†Ø³Ø®Ù‡â€ŒÙ‡Ø§ÙŠ 
-قبلي Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ ÙƒÙ†ÙŠØ¯:
-    BEGIN;
-    LOCK TABLE old_table;
-    SELECT ...  -- ØªÙ…ام Ø³ØªÙˆÙ†Ù‡Ø§ ØºÙŠØ± Ø§Ø² Ø³ØªÙˆÙ†ÙŠ ÙƒÙ‡ Ù…ي‌خواهيد Ø¢Ù† Ø±Ø§ Ø­Ø°Ù\81 ÙƒÙ†ÙŠØ¯ Ø±Ø§ Ø¯Ø± Ø§ÙŠÙ†Ø¬Ø§ Ø¨ÙŠØ§ÙˆØ±ÙŠØ¯
-    INTO TABLE new_table
-    FROM old_table;
-    DROP TABLE old_table;
-    ALTER TABLE new_table RENAME TO old_table;
-    COMMIT;
-براي Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù† Ù†ÙˆØ¹ Ø¯Ø§Ø¯Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
-كنيد:
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-4.5) Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙ\81،‌ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø®ÙˆØ¯ 
-پايگاه Ø¯Ø§Ø¯Ù‡ Ú†Ù‚در Ø§Ø³ØªØŸ
-محدوديتها Ø¹Ø¨Ø§Ø±ØªÙ†Ø¯ Ø§Ø²:
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡             Ù†Ø§Ù…حدود (تا 32 ØªØ±Ø§Ø¨Ø§ÙŠØª ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯)
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„               32 ØªØ±Ø§Ø¨Ø§ÙŠØª
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§ Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ø±Ø¯ÙŠÙ\81              1.6 ØªØ±Ø§Ø¨Ø§ÙŠØª
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ ÙŠÙƒ Ù\81يلد                1 Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø±Ø¯ÙŠÙ\81هاي ÙŠÙƒ Ø¬Ø¯ÙˆÙ„  Ù†Ø§ Ù…حدود
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø³ØªÙˆÙ†Ù‡Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„     Ø¨Ø³ØªÙ‡ Ø¨Ù‡ Ù†ÙˆØ¹ Ø¬Ø¯ÙˆÙ„ Ø¨ÙŠÙ† 250 ØªØ§ 6000 
-    Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„ Ù†Ø§ Ù…حدود
-البته Ø¯Ø± Ø­Ø§Ù„ت Ù†Ø§Ù…حدود Ù†ÙŠØ² Ù…ا Ù…حدود Ø¨Ù‡ Ø­Ø¬Ù… 
-هاردديسك Ùˆ Ù\81ضاي Ø­Ø§Ù\81ظه Ø®ÙˆØ§Ù‡ÙŠÙ… Ø¨ÙˆØ¯. Ø¯Ø± ØµÙˆØ±ØªÙŠ 
-Ú©Ù‡ Ù…قادير Ù…شخص Ø´Ø¯Ù‡ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù†Ø§Ù…حدود Ø¨Ù‡ ØµÙˆØ±Øª 
-غير Ù…عمولي Ø¨Ø²Ø±Ùƒ Ø´ÙˆÙ†Ø¯ ÙƒØ§Ø±Ø§ÙŠÙŠ Ø³ÙŠØ³ØªÙ… ÙƒØ§Ù‡Ø´ 
-خواهد ÙŠØ§Ù\81ت.
-براي Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† Ø¬Ø¯Ø§ÙˆÙ„ Ø¨Ø§ Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø®ÙŠÙ„ÙŠ Ø¨Ø²Ø±Ú¯ 
-نيازي Ù†ÙŠØ³Øª ÙƒÙ‡ Ø³ÙŠØ³ØªÙ… Ø¹Ø§Ù…Ù„ Ø§Ù…كان Ø§ÙŠØ¬Ø§Ø¯ 
\81ايلهاي Ø¨Ø²Ø±Ú¯ Ø±Ø§ Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯. Ø¨Ù„كه Ø¬Ø¯Ø§ÙˆÙ„ Ø®ÙŠÙ„ÙŠ 
-بزرگ Ø¨Ù‡ ØµÙˆØ±Øª Ù\81ايلهايي Ø¨Ù‡ Ø­Ø¬Ù… ÙŠÙƒ Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª 
-نگاهداري Ù…ي‌شوند.
-اگر Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¨Ù„وكهاي Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø¨Ø±Ø§Ø¨Ø± 32 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª 
-قرار Ø¯Ù‡ÙŠÙ… Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¬Ø¯ÙˆÙ„ Ùˆ Ø­Ø¯Ø§ÙƒØ«Ø± ØªØ¹Ø¯Ø§Ø¯ 
-ستونها 4 Ø¨Ø±Ø§Ø¨Ø± Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
-4.6) Ú†Ù‚در Ù\81ضاي Ø¯ÙŠØ³Ùƒ Ø³Ø®Øª Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ ÙƒØ±Ø¯Ù† 
-داده‌‌هاي ÙŠÙƒ Ù\81ايل Ù…تني Ù…ورد Ù†ÙŠØ§Ø² Ø§Ø³ØªØŸ
-يك Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ PostgreSQL‌ ØªØ§ 5 Ø¨Ø±Ø§Ø¨Ø± Ù\81ضايي Ø±ÙˆÙŠ 
-هاردديسك Ø¨Ø±Ø§ÙŠ Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÙŠ ÙŠÙƒ Ù\81ايل Ù…تني Ù†ÙŠØ§Ø² 
-دارد.
-به Ø¹Ù†ÙˆØ§Ù† Ù…ثال ÙŠÙƒ Ù\81ايل Ø¨Ø§ 100000 Ø®Ø· Ø±Ø§ Ø¯Ø± Ù†Ø¸Ø± 
-بگيريد ÙƒÙ‡ Ø¯Ø± Ù‡Ø± Ø®Ø· ÙŠÙƒ Ø¹Ø¯Ø¯ ØµØ­ÙŠØ­ Ùˆ ÙŠÙƒ ØªÙˆØ¶ÙŠØ­ 
-متني Ø¢Ù…ده Ø§Ø³Øª. Ù\81رض ÙƒÙ†ÙŠØ¯ ÙƒÙ‡ Ø±Ø´ØªÙ‡ Ù…تني Ø¨Ù‡ Ø·ÙˆØ± 
-متوسط 20 Ø¨Ø§ÙŠØª Ø¨Ø§Ø´Ø¯. Ø§Ù†Ø¯Ø§Ø²Ù‡ Ù\81ايل Ø¨Ø±Ø§Ø¨Ø± 2.8 Ù…گا 
-بايت Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯ ÙˆÙ„ÙŠ PostgreSQL Ø¨Ø±Ø§ÙŠ Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÙŠ Ø§ÙŠÙ† 
\81ايل Ø¨Ù‡ 6.4 Ù…گا Ø¨Ø§ÙŠØª Ø§Ø·Ù„اعات Ù†ÙŠØ§Ø² Ø®ÙˆØ§Ù‡Ø¯ Ø¯Ø§Ø´Øª.
-    32 bytes: Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø³Ø±Ø§ÙŠÙ†Ø¯ Ù‡Ø± Ø®Ø· Ø¨Ù‡ Ø·ÙˆØ± ØªÙ‚ريبي
-    24 bytes: ÙŠÙƒ Ø¹Ø¯Ø¯ ØµØ­ÙŠØ­ Ùˆ ÙŠÙƒ Ø±Ø´ØªÙ‡ 24 Ø¨Ø§ÙŠØªÙŠ
-   + 4 bytes: Ø§Ø´Ø§Ø±Ù‡ Ú¯Ø± Ø±ÙˆÙŠ ØµÙ\81حه Ø¨Ù‡ ÙŠÙƒ Ú†Ù†Ø¯ØªØ§ÙŠÙŠ
-   ----------------------------------------
-    60 bytes Ø¯Ø± Ù‡Ø± Ø±Ø¯ÙŠÙ\81
-
-اندازه ØµÙ\81حات Ø¯Ø§Ø¯Ù‡ Ø¯Ø± PostgreSQL Ø¨Ø±Ø§Ø¨Ø± Ø¨Ø§ 8 ÙƒÙŠÙ„Ùˆ Ø¨Ø§ÙŠØª Ø§Ø³Øª
-   8192 ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ Ø¯Ø± Ù‡Ø± ØµÙ\81حه
-   -------------------   =  136 ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙ\81‌ها Ø¯Ø± ÙŠÙƒ ØµÙ\81حه Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
-     60  ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ Ù‡Ø± Ø±Ø¯ÙŠÙ\81
-
-   100000  ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙ\81ها
-   --------------------  = ØªØ¹Ø¯Ø§Ø¯ØµÙ\81حات Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡
-      128 ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙ\81ها Ø¯Ø± Ù‡Ø± ØµÙ\81حه
-
-735 ØªØ¹Ø¯Ø§Ø¯ ØµÙ\81حات * 8192 ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ Ù‡Ø± ØµÙ\81حه  =  6,021,120 Ù…گا Ø¨Ø§ÙŠØª
-سربار Ø§Ù†Ø¯ÙŠØ³Ù‡Ø§ ÙŠØ§ Ù†Ù…ايه‌ها Ø§Ø² Ø§ÙŠÙ† Ù…قدار ÙƒÙ…تر 
-است ÙˆÙ„ÙŠ Ú†ÙˆÙ† Ø´Ø§Ù…Ù„ Ø®ÙˆØ¯ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ Ù‡Ù… Ù‡Ø³Øª Ù…Ù…Ú©Ù† Ø§Ø³Øª 
-اندازه Ø¢Ù†Ù‡Ø§ Ù‡Ù… Ø¨Ø²Ø±Ú¯ Ø´ÙˆØ¯.
-NULLها Ø¨Ù‡ ØµÙˆØ±Øª bitmap Ø°Ø®ÙŠØ±Ù‡ Ù…ي‌شوند Ùˆ Ø§Ø² Ø§ÙŠÙ†Ø±Ùˆ 
\81ضاي Ø¨Ø³ÙŠØ§Ø± ÙƒÙ…ÙŠ Ø±Ø§ Ø§Ø´ØºØ§Ù„ Ù…ي‌كنند.
-4.7) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¨Ù\81همم ÙƒÙ‡ Ú†Ù‡ ÙƒØ§Ø±Ø¨Ø±Ø§Ù†ØŒâ€Œ 
-پايگاه Ø¯Ø§Ø¯Ù‡ØŒâ€Œ Ù†Ù…ايه Ùˆ Ø¬Ø¯Ø§ÙˆÙ„ÙŠ Ø¯Ø± Ø³ÙŠØ³ØªÙ… ØªØ¹Ø±ÙŠÙ\81 
-شده Ø§Ø³ØªØŸ
-psql ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø¯Ø³ØªÙˆØ± Ø¯Ø§Ø±Ø¯ ÙƒÙ‡ Ø¨Ø§ \ Ø´Ø±ÙˆØ¹ 
-مي‌شوند Ùˆ Ø§ÙŠÙ† Ø§Ø·Ù„اعات Ø±Ø§ Ø¯Ø± Ø§Ø®ØªÙŠØ§Ø± Ù…ا Ù‚رار 
-مي‌دهند. Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ø¢Ù†Ù‡Ø§ Ø¯Ø³ØªÙˆØ± ?\  Ø±Ø§ Ø§Ø¬Ø±Ø§ 
-كنيد.  Ù‡Ù…چنين Ø¬Ø¯Ø§ÙˆÙ„ Ø³ÙŠØ³ØªÙ…ÙŠ ÙƒÙ‡ Ø¨Ø§ Ù†Ø§Ù… Ø¢Ù†Ù‡Ø§ pg_ 
-‌شروع Ù…ي‌شود Ù†ÙŠØ² Ø§ÙŠÙ† Ø§Ø·Ù„اعات Ø±Ø§ Ø¯Ø± Ø®ÙˆØ¯ 
-دارند. Ø§Ø¬Ø±Ø§ÙŠ Ø¨Ø±Ù†Ø§Ù…Ù‡ psql Ø¨Ø§ Ú¯Ø²ÙŠÙ†Ù‡ l-  Ù†ÙŠØ² Ø¨Ø§Ø¹Ø« 
-نشان Ø¯Ø§Ø¯Ù† Ù„يست ØªÙ…ام Ù¾Ø§ÙŠÚ¯Ø§Ù‡Ù‡Ø§ÙŠ Ø¯Ø§Ø¯Ù‡ Ù…ي‌شود.
-همچنين Ù\81ايل pgsql/src/tutorial/syscat.source Ù†ÙŠØ² Ù\81رمانهاي 
-SELECT ÙƒÙ‡ Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¢Ù† Ù…ي‌توان Ø§Ø·Ù„اعات 
-پايگاه Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒØ±Ø¯ Ø´Ø±Ø­ Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª.
-4.8) Ú†Ø±Ø§ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠ Ù…Ù† ÙƒÙ†Ø¯ Ø§Ø¬Ø±Ø§ Ù…ي‌شوند ÙŠØ§ 
-چرا Ø§Ø² Ù†Ù…ايه Ù‡Ø§ Ø§Ø³ØªÙ\81اده Ù†Ù…ي‌كنند؟
-به Ø·ÙˆØ± Ù…عمول Ø¨Ø±Ø§ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ø§Ø² Ù†Ù…ايه‌ها 
-استÙ\81اده Ù†Ù…ي‌شود. ØªÙ†Ù‡Ø§ Ø¯Ø± ØµÙˆØ±ØªÙŠ Ø§Ø² Ù†Ù…ايه‌ها 
-استÙ\81اده Ù…ي‌شود ÙƒÙ‡ Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø¬Ø¯ÙˆÙ„ Ø§Ø² ÙŠÙƒ Ø§Ù†Ø¯Ø§Ø²Ù‡ 
-حداقل Ø¨Ø²Ø±Ú¯ØªØ± Ø¨Ø§Ø´Ø¯ Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ù‡Ù… Ù\81قط Ù‚سمتي Ø§Ø² 
-رديÙ\81‌هاي Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø§Ù†ØªØ®Ø§Ø¨ ÙƒØ±Ø¯Ù‡ Ø¨Ø§Ø´Ø¯. Ø¯Ù„يل Ø§ÙŠÙ† 
-كار Ø¢Ù† Ø§Ø³Øª ÙƒÙ‡ Ø¯Ø³ØªØ±Ø³ÙŠâ€ŒÙ‡Ø§ÙŠ ØªØµØ§Ø¯Ù\81ÙŠ Ø¨Ù‡ Ù‡Ø§Ø±Ø¯Ø¯ÙŠØ³Ùƒ 
-كه Ø¨Ù‡ Ø®Ø§Ø·Ø± Ù†Ù…ايه‌ها Ø§ÙŠØ¬Ø§Ø¯ Ù…ي‌شود Ù…مكن Ø§Ø³Øª 
-از Ø®ÙˆØ§Ù†Ø¯Ù† Ù…ستقيم Ø¬Ø¯ÙˆÙ„ ÙŠØ§ Ø®ÙˆØ§Ù†Ø¯Ù† ØªØ±ØªÙŠØ¨ÙŠ 
-ركوردها ÙƒÙ†Ø¯ØªØ± Ø¨Ø§Ø´Ø¯.
-براي ØªØ¹ÙŠÙŠÙ† Ø§ÙŠÙ†ÙƒÙ‡ Ø§Ø² Ù†Ù…ايه Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ ÙŠØ§ 
-خير، PostgreSQL Ø¨Ø§ÙŠØ¯ Ø§Ø·Ù„اعات Ø¢Ù…اري Ø±Ø§ Ø¯Ø± Ù…ورد ÙŠÙƒ 
-جدول Ø¨Ø¯Ø§Ù†Ø¯. Ø§ÙŠÙ† Ø§Ø·Ù„اعات ØªÙˆØ³Ø· Ø¯Ø³ØªÙˆØ± ANALYZE Ùˆ VACUUM 
-ANALYZE Ø¨Ù‡ Ø¯Ø³Øª Ù…ي‌آيد. Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ø§ÙŠÙ† 
-اطلاعات،‌ Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² Ø§Ø² ØªØ¹Ø¯Ø§Ø¯ Ø±Ø¯ÙŠÙ\81‌هاي ÙŠÙƒ 
-جدول Ø§Ø·Ù„اع Ù¾ÙŠØ¯Ø§ Ù…ي‌كند Ùˆ Ø¨Ù‡ØªØ± Ù…ي‌تواند 
-تعيين ÙƒÙ†Ø¯ ÙƒÙ‡ Ø¢ÙŠØ§ Ø§Ø² Ù†Ù…ايه Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ ÙŠØ§ Ø®ÙŠØ±. 
-اطلاعات Ø¢Ù…اري Ù‡Ù…چنين Ø¨Ø±Ø§ÙŠ ØªØ¹ÙŠÙŠÙ† ØªØ±ØªÙŠØ¨ Ø§Ù„حاق 
-Ùˆ Ø±ÙˆØ´Ù‡Ø§ÙŠ Ø§Ù„Ø­Ø§Ù‚ Ø¨Ù‡ ØµÙˆØ±Øª Ø¨Ù‡ÙŠÙ†Ù‡ Ù†ÙŠØ² ÙƒØ§Ø±Ø¨Ø± Ø¯Ø§Ø±Ø¯. 
-جمع Ø¢ÙˆØ±ÙŠ Ø§Ø·Ù„Ø§Ø¹Ø§Øª Ø¢Ù…اري Ø¨Ø§ÙŠØ¯ Ø¨Ù‡ ØµÙˆØ±Øª Ø¯ÙˆØ±Ù‡â€ŒØ§ÙŠ 
-همزمان Ø¨Ø§ ØªØºÙŠÙŠØ± Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø¬Ø¯ÙˆÙ„ Ø§Ù†Ø¬Ø§Ù… Ø´ÙˆØ¯.
-نمايه‌ها Ø¨Ù‡ Ø·ÙˆØ± Ù…عمول Ù‡Ù…راه Ø¨Ø§ Ø¯Ø³ØªÙˆØ± ORDER BY 
-به ÙƒØ§Ø± Ø¨Ø±Ø¯Ù‡ Ù†Ù…ي‌شوند. Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø¯ÙˆÙ„ Ø¨Ø²Ø±Ú¯ ÙŠÙƒ 
-پيمايش ØªØ±ØªÙŠØ¨ÙŠ Ù‡Ù…Ø±Ø§Ù‡ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± Ù…رتب Ø³Ø§Ø²ÙŠ Ø§Ø² Ø¨Ù‡ 
-كار Ø¨Ø±Ø¯Ù† Ù†Ù…ايه‌ها Ø³Ø±ÙŠØ¹ØªØ± Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯.
-اما Ø§Ú¯Ø± Ù‡Ù…راه Ø¨Ø§ ORDER BY‌ Ø§Ø² LIMIT Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ 
-اغلب Ø§Ø² Ù†Ù…ايه‌ها Ø§Ø³ØªÙ\81اده Ù…ي‌شود Ú†ÙˆÙ† Ù\81قط 
-قسمتي Ø§Ø² Ø¬Ø¯ÙˆÙ„ Ø§Ø³ØªÙ\81اده Ù…ي‌شود. Ø¯Ø± Ø­Ù‚يقت Ù‡Ø± 
-چند ØªÙˆØ§Ø¨Ø¹ ()MIN‌ Ùˆ ()MAX Ø§Ø² Ù†Ù…ايه‌ها Ø§Ø³ØªÙ\81اده 
-نمي‌كنند ÙˆÙ„ÙŠ Ù…ي‌توانيم Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¯Ø³ØªÙˆØ± 
-زير Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ù†Ù…ايه‌ها Ùˆ Ø¯Ø³ØªÙˆØ± ORDER BY Ùˆ 
-LIMIT‌ Ø¢Ù†Ù‡Ø§ Ø±Ø§ Ø¨Ù‡ Ø¯Ø³Øª Ø¢ÙˆØ±ÙŠÙ….
-    SELECT col
-    FROM tab
-    ORDER BY col [ DESC ]
-    LIMIT 1;
-اگر Ø´Ù…ا Ù\81كر Ù…ي‌كنيد ÙƒÙ‡ Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² Ø³ÙŠØ³ØªÙ… Ø¯Ø± 
-انتخاب Ù¾ÙŠÙ…ايش ØªØ±ØªÙŠØ¨ÙŠ Ø§Ø´ØªØ¨Ø§Ù‡ ÙƒØ±Ø¯Ù‡ Ø§Ø³Øª Ø¨Ø§ 
-دستور 'SET enable_seqscan TO 'off'  Ù…ي‌توانيد Ø¨Ø¨ÙŠÙ†ÙŠØ¯ Ø¢ÙŠØ§ 
-استÙ\81اده Ø§Ø² Ù†Ù…ايه‌ها Ø¨Ø§Ø¹Ø« Ø§Ù\81زايش Ø³Ø±Ø¹Øª 
-درخواست‌ها Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
-استÙ\81اده Ø§Ø² Ù†Ù…ايه‌ها Ù‡Ù†Ú¯Ø§Ù…ÙŠ ÙƒÙ‡ Ø§Ø² Ø¹Ù„ائم ÙˆÙŠÚ˜Ù‡ 
-نظير LIKE Ùˆ ~ Ø§Ø³ØªÙ\81اده Ù…ي‌كنيد Ù\81قط Ø¯Ø± Ø¨Ø¹Ø¶ÙŠ 
-شرايط Ø®Ø§ØµÙŠ ÙƒÙ‡ Ø¯Ø± Ø§ÙŠÙ†Ø¬Ø§ Ø°ÙƒØ± Ø´Ø¯Ù‡ Ø§Ø³Øª Ù…مكن Ø§Ø³Øª:
-  Ø§Ø¨ØªØ¯Ø§ÙŠ Ø±Ø´ØªÙ‡ Ø¬Ø³ØªØ¬Ùˆ Ø¨Ø§ÙŠØ¯ Ø¨Ù‡ Ø·ÙˆØ± ØµØ±ÙŠØ­ Ù…شخص 
-  Ø¨Ø§Ø´Ø¯ Ø¨Ø±Ø§ÙŠ Ù…Ø«Ø§Ù„: 
-  Ø¯Ø³ØªÙˆØ±Ø§Øª LIKE Ù†Ø¨Ø§ÙŠØ¯ Ø¨Ø§ Ø¹Ù„امت % Ø´Ø±ÙˆØ¹ Ø´ÙˆÙ†Ø¯ 
-  Ø§Ù„گوهاي Ù…نظمي ÙƒÙ‡ Ø¨Ø§ ~ Ù…ي‌ايد Ø­ØªÙ…اً Ø¨Ø§ÙŠØ¯ Ø¨Ø§ 
-  Ø¹Ù„امت ^ Ø´Ø±ÙˆØ¹ Ø´ÙˆØ¯ 
-  Ø±Ø´ØªÙ‡ Ø¬Ø³ØªØ¬Ùˆ Ù†Ø¨Ø§ÙŠØ¯ Ø¨Ø§ ÙŠÙƒ Ù…جموعه Ø§Ø² 
-  ÙƒØ§Ø±Ø§ÙƒØªØ±â€ŒÙ‡Ø§  Ù…ثل [a-e] Ø´Ø±ÙˆØ¹ Ø´ÙˆØ¯ 
-  Ø¬Ø³ØªØ¬ÙˆÙ‡Ø§ÙŠ ØºÙŠØ±Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن Ù…ثل  ILIKE‌ Ùˆ *~ Ø§Ø² 
-  Ù†Ù…ايه‌ها Ø§Ø³ØªÙ\81اده Ù†Ù…ي‌كنند. Ø¯Ø± Ø¹ÙˆØ¶ Ø§Ø² 
-  ØªÙˆØ§Ø¨Ø¹ Ù†Ù…ايه‌اي ÙƒÙ‡ Ø¯Ø± Ù‚سمت 4.12 ØªÙˆØ¶ÙŠØ­ Ø¯Ø§Ø¯Ù‡ Ø´Ø¯ 
-  Ø§Ø³ØªÙ\81اده Ù…ي‌كنند. 
-  Ù…قدار Ù¾ÙŠØ´ Ù\81رض locale‌ Ø¨Ø§ÙŠØ¯ Ø¯Ø± initdb Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯. 
-
-4.9) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ø±Ø³ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
-توسط Ø¨Ù‡ÙŠÙ†Ù‡â€ŒØ³Ø§Ø² Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ Ù…شاهده ÙƒÙ†Ù…ØŸ
-راهنماي Ø¯Ø³ØªÙˆØ± EXPLAIN Ø±Ø§ Ù†Ú¯Ø§Ù‡ ÙƒÙ†ÙŠØ¯.
-4.10) Ù†Ù…ايه R-tree‌ Ú†ÙŠØ³ØªØŸ
-از Ù†Ù…ايه R-Tree  Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¯ÙŠØ³ ÙƒØ±Ø¯Ù† Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ 
\81اصله‌اي Ø§Ø³ØªÙ\81اده Ù…ي‌شود. ÙŠÙƒ Ù†Ù…ايه hash 
-نمي‌توانند Ø¬Ø³ØªØ¬ÙˆÙ‡Ø§ÙŠ Ù…Ø­Ø¯ÙˆØ¯Ù‡â€ŒØ§ÙŠ Ø±Ø§ Ø§Ù†Ø¬Ø§Ù… 
-دهد. Ù†Ù…ايه "B-tree" Ù†ÙŠØ² Ø¨Ø±Ø§ÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¬Ø³ØªØ¬ÙˆÙŠ 
-محدوده‌اي Ø¯Ø± ÙŠÙƒ Ø¬Ù‡Øª Ù‚ابل Ø§Ø³ØªÙ\81اده Ø§Ø³Øª. Ø§Ù…ا 
-R-Tree Ù…ي‌تواند Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ú†Ù†Ø¯ Ø¨Ø¹Ø¯ÙŠ Ø±Ø§ Ù†ÙŠØ² 
-پشتيباني ÙƒÙ†Ø¯. Ø¨Ø±Ø§ÙŠ Ù…Ø«Ø§Ù„ Ø§Ø³ØªÙ\81اده Ø§Ú¯Ø± Ø§Ø² Ù†Ù…ايه 
-R-tree‌ Ø¨Ø±Ø§ÙŠ Ú¯ÙˆÙ†Ù‡ Point Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ Ø³Ø±Ø¹Øª 
-درخواست‌هايي Ù†Ø¸ÙŠØ± "select all points within a bounding 
-rectangle" Ø¨Ù‡ Ù…راتب Ø§Ù\81زايش Ù…ي‌يابد.
-مقاله‌اي ÙƒÙ‡ Ø·Ø±Ø§Ø­ÙŠ R-tree Ø±Ø§ ØªÙˆØ¶ÙŠØ­ Ø¯Ø§Ø¯Ù‡ Ø§Ø³Øª 
-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.
-R-tree‌ Ù…ي‌تواند Ú†Ù†Ø¯Ø¶Ù„عيها Ùˆ Ú†Ù†Ø¯ ÙˆØ¬Ù‡ÙŠ Ø±Ø§ 
-پشتيباني ÙƒÙ†Ø¯. Ø¯Ø± ØªØ¦ÙˆØ±ÙŠ R-tree Ù…ي‌تواند ØªØ¹Ø¯Ø§Ø¯ 
-بعدهاي Ø¨Ø§Ù„اتر Ø±ÙŠ Ù†ÙŠØ² Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ ÙƒÙ†Ø¯. Ø¯Ø± Ø¹Ù…Ù„ 
-توسعه R-tree‌ Ù†ÙŠØ§Ø² Ø¨Ù‡ ÙƒØ§Ø± Ø¨ÙŠØ´ØªØ±ÙŠ Ø¯Ø§Ø±Ø¯.
-4.11) Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø² ØªÙƒÙˆÙŠÙ†ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ú†ÙŠØ³ØªØŸ (Genetic Query 
-Optimizer)
-استÙ\81اده Ø§Ø² GEQO Ø³Ø±Ø¹Øª Ø¨Ù‡ÙŠÙ†Ù‡ Ø³Ø§Ø²ÙŠ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø±Ø§ 
-هنگاميكه ØªØ¹Ø¯Ø§Ø¯ Ø²ÙŠØ§Ø¯ÙŠ Ø¬Ø¯ÙˆÙ„ Ø±Ø§ Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² 
-الگوريتم Ú˜Ù†ØªÙŠÙƒ Ø§Ù„حاق Ù…ي‌كنيم Ø§Ù\81زايش 
-مي‌دهد.
-4.12) Ú†Ú¯ÙˆÙ†Ù‡ Ø§Ø² Ø¹Ø¨Ø§Ø±Ø§Øª Ù…نظم Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬Ùˆ Ø§Ø³ØªÙ\81اده 
-كنم؟ Ú†Ú¯ÙˆÙ†Ù‡ Ø¬Ø³ØªØ¬ÙˆÙŠÙŠ Ø§Ù†Ø¬Ø§Ù… Ø¯Ù‡Ù… ÙƒÙ‡ Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن 
-نباشد؟ Ú†Ú¯ÙˆÙ†Ù‡ Ø¨Ø±Ø§ÙŠ ÙŠÙƒ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن 
-از Ù†Ù…ايه Ø§Ø³ØªÙ\81اده ÙƒÙ†Ù…ØŸ
-براي Ø¬Ø³ØªØ¬ÙˆÙŠ Ø¹Ø¨Ø§Ø±Øª Ù…نظم Ø§Ø² Ø¹Ù…لگر ~‌ Ø§Ø³ØªÙ\81اده 
-مي‌كنيم. Ø¨Ø±Ø§ÙŠ Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن Ø§Ø² 
-عملگر *~ Ùˆ ÙŠØ§ ILIKE‌ Ø§Ø³ØªÙ\81اده Ù…ي‌كنيم.
-روش Ø¯ÙŠÚ¯Ø± Ø§Ù†Ø¬Ø§Ù… Ø¬Ø³ØªØ¬ÙˆÙŠ ØºÙŠØ± Ø­Ø³Ø§Ø³ Ø¨Ù‡ Ù…تن Ø¯Ø± Ø²ÙŠØ± 
-نشان Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª.
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-اين Ø§Ø² Ù†Ù…ايه‌هاي Ø§Ø³ØªØ§Ù†Ø¯Ø§Ø±Ø¯ Ø§Ø³ØªÙ\81اده 
-نمي‌كند. ÙˆÙ„ÙŠ Ø´Ù…ا Ù…ÙŠ ØªÙˆØ§Ù†ÙŠØ¯ Ø¨Ø§ Ø¯Ø³ØªÙˆØ± Ø²ÙŠØ± ÙŠÙƒ 
-نمايه Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†ÙŠØ¯ Ùˆ Ø§Ø² Ø¢Ù† Ø§Ø³ØªÙ\81اده ÙƒÙ†ÙŠØ¯.
-    CREATE INDEX tabindex ON tab (lower(col));
-4.13) Iچگونه Ù…ي‌توانم Ø¯Ø± ÙŠÙƒ Ø¯Ø±Ø®ÙˆØ§Ø³Øª ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… 
-كه ÙŠÙƒ Ù\81يلد NULL‌ Ø§Ø³ØªØŸ
-با Ø§Ø³ØªÙ\81اده Ø§Ø² ØªÙˆØ§Ø¨Ø¹ IS NULL Ùˆ IS NOT NULL Ù…ي‌توانيم 
-NULL Ø¨ÙˆØ¯Ù† ÙŠÙƒ Ù\81يلد Ø±Ø§ ØªØ³Øª ÙƒÙ†ÙŠÙ….
-4.14) ØªÙ\81اوت Ø¨ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ÙŠ Ù…Ø®ØªÙ„Ù\81 character Ú†ÙŠØ³ØªØŸ
-Type            Internal Name   Notes
---------------------------------------------------
-VARCHAR(n)      varchar      Ø§Ù†Ø¯Ø§Ø²Ù‡ØŒ Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ Ø±Ø§ Ù†Ø´Ø§Ù† Ù…ÙŠ Ø¯Ù‡Ø¯ Ø¨Ø¯ÙˆÙ† Ø§Ø¶Ø§Ù\81Ù‡ Ø´Ø¯Ù† ÙƒØ§Ø±Ø§ÙƒØªØ± Ø§Ø¶Ø§Ù\81Ù‡
-CHAR(n)            bpchar       ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ÙŠ Ø¨Ù„Ø§Ù†Ùƒ Ø¨Ø±Ø§ÙŠ Ù¾Ø± Ø´Ø¯Ù† Ø·ÙˆÙ„ Ù…شخص Ø´Ø¯Ù‡ Ø§Ø³ØªÙ\81اده Ù…ي‌شود
-TEXT                text            Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ Ø±Ø§ Ù…شخص Ù†Ù…ي‌كند
-BYTEA               bytea         Ø¢Ø±Ø§ÙŠÙ‡â€ŒØ§ÙŠ Ø§Ø² Ø¨Ø§ÙŠØª Ø¨Ø§ Ø·ÙˆÙ„ Ù…تغير
-"char"               char           ÙŠÙƒ ÙƒØ§Ø±Ø§ÙƒØªØ±
-نام Ø¯Ø§Ø®Ù„ÙŠ Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ Ø±Ø§ Ø¯Ø± system catalogue â€ŒÙˆ Ø¨Ø¹Ø¶ÙŠ Ø§Ø² 
-پيغامهاي Ø®Ø·Ø§ Ù…ي‌توان Ø¯ÙŠØ¯.
-چهار Ú¯ÙˆÙ†Ù‡ Ø§ÙˆÙ„ Ù‡Ù…Ú¯ÙŠ Ø§Ø² Ù†ÙˆØ¹ varlena Ù‡Ø³ØªÙ†Ø¯ (4 Ø¨Ø§ÙŠØª 
-اول Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ Ø·ÙˆÙ„ Ø±Ø§ Ù…شخص Ù…ي‌كند ÙƒÙ‡ Ø¨Ù‡ Ø¯Ù†Ø¨Ø§Ù„ 
-آن Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ Ù‚رار Ø¯Ø§Ø±Ù†Ø¯.)‌بنابراين Ù\81ضاي 
-واقعي Ø§Ø³ØªÙ\81اده Ø´Ø¯Ù‡ Ø±ÙˆÙŠ Ø¯ÙŠØ³Ùƒ Ø§Ø² Ø§Ù†Ø¯Ø§Ø²Ù‡ ØªØ¹Ø±ÙŠÙ\81 
-شده Ø¨ÙŠØ´ØªØ± Ø§Ø³Øª. Ø§Ù…ا Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ Ø±Ø§ Ù…ي‌توان 
\81شرده ÙƒØ±Ø¯ ÙƒÙ‡ Ø§ÙŠÙ†ÙƒØ§Ø± Ø¨Ø§Ø¹Ø« Ù…ي‌شود Ù\81ضاي ÙƒÙ…تري 
-روي Ø¯ÙŠØ³Ùƒ Ø§Ø´ØºØ§Ù„ ÙƒÙ†Ù†Ø¯.
-براي Ø°Ø®ÙŠØ±Ù‡ Ø±Ø´ØªÙ‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ Ø·ÙˆÙ„ Ù…تغير(VARCHAR(n‌ 
-بهترين Ø§Ù†ØªØ®Ø§Ø¨ Ø§Ø³Øª. Ø¯Ø± Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡ Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ 
-رشته Ù…حدود Ø§Ø³Øª Ø¨Ø± Ø®Ù„اÙ\81 text ÙƒÙ‡ Ù‡ÙŠÚ† Ù…حدوديتي 
-روي Ø­Ø¯Ø§ÙƒØ«Ø± Ø§Ù†Ø¯Ø§Ø²Ù‡ Ø±Ø´ØªÙ‡ Ù†Ù…ي‌گذارد.(در Ø§ÙŠÙ† 
-گونه Ø­Ø¯Ø§ÙƒØ«Ø± Ø·ÙˆÙ„ ÙŠÙƒ Ø±Ø´ØªÙ‡ ÙŠÙƒ Ú¯ÙŠÚ¯Ø§ Ø¨Ø§ÙŠØª Ø®ÙˆØ§Ù‡Ø¯ 
-بود)
-گونه (CHAR(n  Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø¨Ø§ Ø·ÙˆÙ„ ÙŠÙƒØ³Ø§Ù† 
-است.يك Ú¯ÙˆÙ†Ù‡â€ŒÙŠ (CHAR(n Ø¨Ø§ ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ÙŠ Ø¨Ù„Ø§Ù†Ùƒ 
-(خالي) Ù¾Ø± Ù…ي‌شود ØªØ§ Ø¨Ù‡ Ø·ÙˆÙ„ Ù…شخص Ø´Ø¯Ù‡ Ø¨Ø±Ø³Ø¯ Ø¯Ø± 
-حاليكه Ú¯ÙˆÙ†Ù‡ VARCHAR ÙƒØ§Ø±Ø§ÙƒØªØ±Ù‡Ø§ Ø±Ø§ Ø¨Ù‡ Ù‡Ù…ان ØµÙˆØ±Øª 
-كه Ù‡Ø³ØªÙ†Ø¯ Ø°Ø®ÙŠØ±Ù‡ Ù…ي‌كند. Ú¯ÙˆÙ†Ù‡ BYTEA Ø¨Ø±Ø§ÙŠ Ø°Ø®ÙŠØ±Ù‡ 
-داده‌هاي Ø¨Ø§ÙŠÙ†Ø±ÙŠ Ø§Ø³Øª Ø¨Ù‡ Ø®ØµÙˆØµ Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ 
-باينتري ÙƒÙ‡ Ø´Ø§Ù…Ù„ Ø¨Ø§ÙŠØªâ€ŒÙ‡Ø§ÙŠ NULL Ù‡Ø³ØªÙ†Ø¯. Ø§Ø² Ù†Ø¸Ø± 
-كارايي ØªÙ…ام Ø§ÙŠÙ† Ú¯ÙˆÙ†Ù‡â€ŒÙ‡Ø§ ÙŠÙƒØ³Ø§Ù† Ù‡Ø³ØªÙ†Ø¯.
-4.15.1) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ù\81يلد Ø³Ø±ÙŠØ§Ù„ ÙŠØ§ 
-اÙ\81زايشي Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù…ØŸ
-PostgreSQL Ø§Ø² Ø¯Ø§Ø¯Ù‡â€ŒÙ‡Ø§ÙŠ Ø³Ø±ÙŠØ§Ù„ Ù¾Ø´ØªÙŠØ¨Ø§Ù†ÙŠ Ù…ÙŠâ€ŒÙƒÙ†Ø¯. 
-براي Ø§ÙŠØ¬Ø§Ø¯ ÙŠÙƒ Ù\81يلد Ø³Ø±ÙŠØ§Ù„ (براي Ø¯Ø§Ø´ØªÙ† ÙŠÙƒ Ù\81يلد 
-منحصر Ø¨Ù‡ Ù\81رد Ø¨Ø±Ø§ÙŠ Ù‡Ø± Ø±Ø¯ÙŠÙ\81 )به Ø±ÙˆØ´ Ø²ÙŠØ± Ø¹Ù…Ù„ 
-كنيد:
-    CREATE TABLE person ( 
-        id   SERIAL, 
-        name TEXT 
-    );
-دستور Ø¨Ø§Ù„ا Ø¨Ù‡ Ø·ÙˆØ± Ø§ØªÙˆÙ…اتيک Ø¨Ù‡ Ø¯Ø³ØªÙˆØ± Ø²ÙŠØ± 
-تبديل Ù…ي‌شود:
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person ( 
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT 
-    );
-براي Ø¯ÙŠØ¯Ù† Ø§Ø·Ù„اعات Ø¨ÙŠØ´ØªØ± Ø¨Ù‡ Ø±Ø§Ù‡Ù†Ù…اي Ø¯Ø³ØªÙˆØ± 
-create_sequence  Ù…راجعه ÙƒÙ†ÙŠØ¯. Ù‡Ù…چنين Ù…ي‌توان Ø§Ø² 
-OID‌هر Ø±Ø¯ÙŠÙ\81 Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† ÙŠÙƒ Ù…قدار Ù…نحصر Ø¨Ù‡ Ù\81رد 
-استÙ\81اده ÙƒØ±Ø¯. Ø§Ù…ا Ø¯Ø± Ø§ÙŠÙ† Ø­Ø§Ù„ت Ø¨Ø±Ø§ÙŠ dump ÙƒØ±Ø¯Ù† Ùˆ 
-reload‌كردن Ù¾Ø§ÙŠÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø¨Ø§ÙŠØ¯ Ø¯Ø³ØªÙˆØ± pg_dumps‌ Ø±Ø§ 
-با Ú¯Ø²ÙŠÙ†Ù‡ o-‌ Ø§Ø¬Ø±Ø§ ÙƒÙ†ÙŠØ¯.
-4.15.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ù…قدار ÙŠÙƒ Ø¯Ø±Ø¬ Ø³Ø±ÙŠØ§Ù„ÙŠ Ø±Ø§ 
-بدانم؟
-يك Ø±ÙˆØ´ Ø¨Ø±Ø§ÙŠ Ú¯Ø±Ù\81تن Ù…قدار Ø¨Ø¹Ø¯ÙŠ ÙŠÙƒ Ù\81يلد Ø³Ø±ÙŠØ§Ù„ 
-استÙ\81اده Ø§Ø² ØªØ§Ø¨Ø¹ ()nextval Ø§Ø³Øª. Ø¯Ø± Ø´Ø¨Ù‡ ÙƒÙ\8fدي ÙƒÙ‡ Ø¯Ø± 
-ادامه Ø¢Ù…ده Ø§Ø³Øª Ø±ÙˆØ´ Ø§Ù†Ø¬Ø§Ù… Ø§ÙŠÙ† ÙƒØ§Ø± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ 
-شده Ø§Ø³Øª:
-    new_id = execute("SELECT nextval('person_id_seq')");
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-با Ø§Ø¬Ø±Ø§ Ø¯Ø³ØªÙˆØ± Ù\81وق Ù…قدار Ø¬Ø¯ÙŠØ¯ Ø±Ø§ Ø¯Ø± Ù…تغير new_id 
-نيز Ø®ÙˆØ§Ù‡ÙŠØ¯Ø¯Ø§Ø´Øª ÙƒÙ‡ Ù…ي‌توانيد Ø¢Ù† Ø±Ø§ Ø¯Ø± Ø¨Ù‚يه 
-درخواست‌هاي Ù†ÙŠØ² Ø§Ø³ØªÙ\81اده ÙƒÙ†ÙŠØ¯. ØªÙˆØ¬Ù‡ Ø¯Ø§Ø´ØªÙ‡ 
-باشيد ÙƒÙ‡ Ù†Ø§Ù… SEQUENCEيي ÙƒÙ‡ Ø¨Ù‡ Ø·ÙˆØ± Ø§ØªÙˆÙ…اتيك Ø§ÙŠØ¬Ø§Ø¯ 
-شده Ø§Ø³Øª Ø¨Ù‡ ØµÙˆØ±Øª table_serialcolumn_seq‌ Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯. ÙƒÙ‡ 
-در Ø¢Ù† table‌ Ù†Ø§Ù… Ø¬Ø¯ÙˆÙ„ Ùˆ serialcolumn Ù†Ø§Ù… Ù\81يلد Ø³Ø±ÙŠØ§Ù„ 
-جدول Ù…ي‌باشد.
-براي Ø¯ÙŠØ¯Ù† Ù…قدار Ù†Ø³Ø¨Øª Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø¨Ù‡ Ù\81يلد Ø³Ø±ÙŠØ§Ù„ 
-نيز Ù…ي‌توان Ø§Ø² ØªØ§Ø¨Ø¹ () currval Ø¨Ù‡ ØµÙˆØ±Øª Ø²ÙŠØ± 
-استÙ\81اده ÙƒØ±Ø¯. 
-    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-    new_id = execute("SELECT currval('person_id_seq')");
-Ùˆ Ø³Ø±Ø§Ù†Ø¬Ø§Ù… Ø´Ù…ا Ù…ي‌توانيد Ø§Ø² Ù…قدار OID ÙƒÙ‡ Ø®Ø±ÙˆØ¬ÙŠ 
-دستور INSERT  Ø§Ø³Øª Ø¨Ø±Ø§ÙŠ Ø¯ÙŠØ¯Ù† Ù…قدار Ù¾ÙŠØ´ Ù\81رض 
-استÙ\81اده ÙƒÙ†ÙŠØ¯. Ù‡Ø± Ú†Ù†Ø¯ Ø§ÙŠÙ† Ø±ÙˆØ´ Ø¯Ø± Ù‡Ù…Ù‡ Ù¾Ù„تÙ\81رمها 
-قابل Ø§Ø³ØªÙ\81اده Ù†ÙŠØ³Øª Ùˆ Ø¶Ù…Ù† Ø§ÙŠÙ†ÙƒÙ‡ Ù\81يلد oid‌ Ø¨Ø¹Ø¯ 
-از Ø¹Ø¯Ø¯ 4 Ù…يليارد Ø¯ÙˆØ¨Ø§Ø±Ù‡ ØµÙ\81ر Ù…ي‌شود. Ø¯Ø± Ø²Ø¨Ø§Ù† 
-perl Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² DBI Ùˆ DBD::Pg Ù…قدار oid‌را 
-مي‌توانيد Ø¨Ù‡ Ø´ÙƒÙ„ Ø²ÙŠØ± Ø§Ø³ØªØ®Ø±Ø§Ø¬ ÙƒÙ†ÙŠØ¯: Ø¨Ø¹Ø¯ Ø§Ø² 
-اجراي ()st->execute$ Ù…قدار oid‌ Ø¯Ø± Ù…تغير  sth->pg_oid_status$ 
-ذخيره Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
-4.15.3) Ø¢ÛŒØ§ ØªÙˆØ§Ø¨Ø¹ ()nextval Ùˆ ()currval Ù…نجر Ø¨Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
-شرایط race Ø¨Ø±Ø§ÛŒ Ø³Ø§ÛŒØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ù…ÛŒ Ø´ÙˆÙ†Ø¯ØŸ
-خیر، Ø§Ø³ØªÙ\81اده Ø§Ø² Ø§ÛŒÙ† ØªÙˆØ§Ø¨Ø¹ Ø´Ø±Ø§ÛŒØ· race Ø±Ø§ Ø¨Ù‡ 
-وجود Ù†Ù…ÛŒ Ø¢ÙˆØ±Ø¯.
-4.15.4) Ú†Ø±Ø§ Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ù…ربوط Ø¨Ù‡ ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ÛŒ abort 
-شده Ù…جدداً Ø§Ø³ØªÙ\81اده Ù†Ù…ÛŒ Ø´ÙˆØ¯ØŸ Ú†Ø±Ø§ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ 
-سریالی ÛŒÚ© Ù\81اصله Ø®Ø§Ù„ÛŒ Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆØ¯ØŸ
-برای Ø¨Ø§Ù„ا Ø¨Ø±Ø¯Ù† Ø§Ù…کان Ø§Ø¬Ø±Ø§ÛŒ Ù‡Ù…زمان ØªØ±Ø§Ú©Ù†Ø´Ù‡Ø§ØŒ 
-اعداد Ø³Ø±ÛŒØ§Ù„ÛŒ Ø¨Ù‡ Ù…حض Ø§Ø¬Ø±Ø§ÛŒ ØªØ±Ø§Ú©Ù†Ø´ Ø¨Ù‡ Ø¢Ù†Ù‡Ø§ 
-تخصیص Ù…ÛŒ ÛŒØ§Ø¨Ø¯ Ø¯Ø± Ø§ÛŒÙ† Ø­Ø§Ù„ت Ø§Ú¯Ø± Ø¨Ø¹Ø¶ÛŒ Ø§Ø² 
-تراکنشها abort Ø´ÙˆÙ†Ø¯ Ø¨ÛŒÙ† Ø§Ø¹Ø¯Ø§Ø¯ Ø³Ø±ÛŒØ§Ù„ÛŒ Ø§Ø³ØªÙ\81اده 
-شده ÛŒÚ© Ù\81اصله Ø®Ø§Ù„ÛŒ Ø¨Ù‡ ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯.
-4.16) OID Ùˆ TID Ú†Ù‡ Ù‡Ø³ØªÙ†Ø¯ØŸ
-OID Ø±Ø§Ù‡ Ø­Ù„ PostgreSQL Ø¨Ø±Ø§ÛŒ Ø¯Ø§Ø´ØªÙ† ÛŒÚ© Ø´Ù†Ø§Ø³Ù‡ Ù…نحصر Ø¨Ù‡ 
\81رد Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø±Ø¯ÛŒÙ\81 Ø§Ø³Øª. Ù‡Ø± Ø±Ø¯ÛŒÙ\81 Ø¬Ø¯ÛŒØ¯ÛŒ Ú©Ù‡ Ø§ÛŒØ¬Ø§Ø¯ 
-Ù…ÛŒ Ø´ÙˆØ¯ ÛŒÚ© OID Ù…نحصر Ø¨Ù‡ Ù\81رد Ø¨Ù‡ Ø¢Ù† Ø§Ø®ØªØµØ§Øµ Ù…ÛŒ 
-یابد. ØªÙ…ام OIDهایی Ú©Ù‡ Ø¯Ø± Ø­ÛŒÙ† initdb Ø§ÛŒØ¬Ø§Ø¯ Ù…ÛŒ Ø´ÙˆÙ†Ø¯ 
-از 16384 Ú©Ù…تر Ù‡Ø³ØªÙ†Ø¯ Ùˆ OIDهایی Ø¨Ø¹Ø¯Ø§Ù‹ ØªÙˆÙ„ید Ù…ÛŒ Ø´ÙˆØ¯ 
-از Ø§ÛŒÙ† Ø¹Ø¯Ø¯ Ø¨Ø²Ø±Ú¯ØªØ± Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯. Ù†Ú©ØªÙ‡ Ù…هم Ø¢Ù† Ø§Ø³Øª 
-Ú©Ù‡ OIDها Ù†Ù‡ ØªÙ†Ù‡Ø§ Ø¯Ø± ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø´Ø¨ÛŒÙ‡ Ù†ÛŒØ³ØªÙ†Ø¯ Ø¨Ù„Ú©Ù‡ 
-در Ú©Ù„ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù‡ÛŒÚ† Ø¯Ùˆ Ø±Ø¯ÛŒÙ\81ÛŒ Ø¯Ø§Ø±Ø§ÛŒ OID ÛŒÚ©Ø³Ø§Ù† 
-نخواهد Ø¨ÙˆØ¯.
-PostgreSQL Ø§Ø² OID Ø¯Ø± Ø³ÛŒØ³ØªÙ… Ø¯Ø§Ø®Ù„ÛŒ Ø®ÙˆØ¯ Ø¨Ø±Ø§ÛŒ Ø§ÛŒØ¬Ø§Ø¯ 
-ارتباط Ø¨ÛŒÙ† Ø±Ø¯ÛŒÙ\81های Ø¬Ø¯Ø§ÙˆÙ„ Ù…ختلÙ\81 Ø§Ø³ØªÙ\81اده Ù…ÛŒ 
-کند. ØªÙˆØµÛŒÙ‡ Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ ÛŒÚ© Ø³ØªÙˆÙ† Ø§Ø² Ù†ÙˆØ¹ OID Ø¨Ø±Ø§ÛŒ 
-ذخیره Ø§ÛŒÙ† Ù\81یلد Ø¯Ø± Ø¬Ø¯ÙˆÙ„ Ø§ÛŒØ¬Ø§Ø¯ Ú©Ù†ÛŒØ¯. Ø³Ø§Ø®ØªÙ† ÛŒÚ© 
-نمایه Ø¨Ø±Ø§ÛŒ Ø§ÛŒÙ† Ù\81یلد Ø¨Ø§Ø¹Ø« Ø¯Ø³ØªØ±Ø³ÛŒ Ø³Ø±ÛŒØ¹ØªØ± Ø¨Ù‡ Ø¢Ù† 
-خواهد Ø´Ø¯.
-تمام Ù¾Ø§ÛŒÚ¯Ø§Ù‡Ù‡Ø§ÛŒ Ø¯Ø§Ø¯Ù‡ Ø¯Ø± PostgreSQL Ø¨Ø±Ø§ÛŒ Ú¯Ø±Ù\81تن OID 
-جدید Ø§Ø² ÛŒÚ© Ù†Ø§Ø­ÛŒÙ‡ Ù…رکزی Ø§Ø³ØªÙ\81اده Ù…ÛŒ Ú©Ù†Ø¯. ÙˆÙ„ÛŒ 
-اگر Ø¨Ø®ÙˆØ§Ù‡ÛŒÙ… OID Ø±Ø§ Ø¨Ù‡ Ø±ÙˆØ´ Ø¯ÛŒÚ¯Ø±ÛŒ Ø¨Ú¯ÛŒØ±ÛŒÙ… Ùˆ ÛŒØ§ 
-اینکه Ø¯Ø± Ø­ÛŒÙ† Ú©Ù¾ÛŒ Ú©Ø±Ø¯Ù† ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø¨Ø®ÙˆØ§Ù‡ÛŒÙ… OIDهای 
-اصلی Ø¢Ù† ØªØºÛŒÛŒØ± Ù†Ú©Ù†Ø¯ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÛŒØ± Ù…ÛŒ ØªÙˆØ§Ù†ÛŒÙ… Ø¹Ù…Ù„ 
-کنیم:
-
-        CREATE TABLE new_table(mycol int);
-        SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
-        COPY tmp_table TO '/tmp/pgtable';
-        COPY new_table WITH OIDS FROM '/tmp/pgtable';
-        DROP TABLE tmp_table;
-OID ÛŒÚ© Ø¹Ø¯Ø¯ ØµØ­ÛŒØ­ 4 Ø¨Ø§ÛŒØªÛŒ Ø§Ø³Øª Ùˆ Ø¨Ù†Ø§Ø¨Ø±Ø§ÛŒÙ† Ø­Ø¯Ø§Ú©Ø«Ø± 
-مقدار Ø¢Ù† 4 Ù…یلیارد Ø®ÙˆØ§Ù‡Ø¯ Ø¨ÙˆØ¯ Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² Ø¢Ù† 
-مقدار Ø¢Ù† Ø³Ø±Ø±ÛŒØ² Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.  Ø§Ù„بته ØªØ§ Ú©Ù†ÙˆÙ† Ø¨Ø±Ø§ÛŒ  
-کسی  Ø§ÛŒÙ† Ø§ØªÙ\81اق Ù†ÛŒÙ\81تاده Ø§Ø³Øª Ùˆ ØªØµÙ…یم Ú¯Ø±Ø¯Ø§Ù†Ø¯Ú¯Ø§Ù† 
-PostgreSQL Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ù‚بل Ø§Ø² Ø¢Ù†Ú©Ù‡ Ø§ÛŒÙ† Ø§ØªÙ\81اق Ø±Ø® Ø¯Ù‡Ø¯ 
-این Ù…Ø´Ú©Ù„ Ø±Ø§ Ø¨Ø±Ø·Ø±Ù\81 Ú©Ù†Ù†Ø¯.
-TIDها Ø¨Ø±Ø§ÛŒ Ø´Ù†Ø§Ø³Ø§ÛŒÛŒ Ù…حل Ù\81یزیکی ÛŒÚ© Ø±Ø¯ÛŒÙ\81 Ø¨Ø± Ø§Ø³Ø§Ø³ 
-بلوک Ùˆ Ø¢Ù\81ست Ù…ÛŒ Ø¨Ø§Ø´Ø¯. TIDها Ø¨Ø¹Ø¯ Ø§Ø² ØªØºÛŒÛŒØ± Ù¾ÛŒØ¯Ø§ 
-کردن ÛŒÚ© Ø±Ø¯ÛŒÙ\81 Ùˆ ÛŒØ§ Ø¨Ø§Ø²Ø®ÙˆØ§Ù†ÛŒ Ø¢Ù† Ø¹ÙˆØ¶ Ù…ÛŒ Ø´ÙˆÙ†Ø¯. 
-TIDها ØªÙˆØ³Ø· Ù†Ù…ایه Ù‡Ø§ Ø§Ø³ØªÙ\81اده Ù…ÛŒ Ø´ÙˆÙ†Ø¯.
-4.17) Ù…عني Ø¨Ø¹Ø¶ÙŠ Ø§Ø² ØªØ±Ù…ها Ùˆ ÙƒÙ„ماتي ÙƒÙ‡ Ø¯Ø± PostgreSQL‌ 
-استÙ\81اده Ù…ي‌شود Ú†ÙŠØ³ØªØŸ
-لیست Ø¨Ø±Ø®ÛŒ Ø§Ø² ØªØ±Ù…ها Ùˆ Ú©Ù„ماتی Ú©Ù‡ Ø§Ø³ØªÙ\81اده Ù…ÛŒ 
-شوند:
-  table, relation, class :کلاس، Ø±Ø§Ø¨Ø·Ù‡ØŒ Ø¬Ø¯ÙˆÙ„
-  row, record, tuple Ú†Ù†Ø¯ØªØ§ÛŒÛŒØŒ Ø±Ú©ÙˆØ±Ø¯ØŒ Ø±Ø¯ÛŒÙ\81
-  column, field, attribute ØµÙ\81ت، Ù\81یلد، Ø³ØªÙˆÙ†
-  retrieve, select Ø§Ù†ØªØ®Ø§Ø¨ØŒ Ø®ÙˆØ§Ù†Ø¯Ù†
-  replace, updateبه Ø±ÙˆØ² Ú©Ø±Ø¯Ù†ØŒ Ø¬Ø§ÛŒÚ¯Ø²ÛŒÙ†ÛŒ 
-  append, insert Ø¯Ø±Ø¬ØŒ Ø§Ø¶Ø§Ù\81Ù‡ Ú©Ø±Ø¯Ù†
-  OID, serial value Ù…قدار Ø³Ø±ÛŒØ§Ù„
-  portal, cursor 
-  range variable, table name, table alias 
-یک Ù„یست Ø¹Ù…ومی Ø§Ø² ØªØ±Ù…های Ù…ورد Ø§Ø³ØªÙ\81اده Ø¯Ø± 
-پایگاه Ø¯Ø§Ø¯Ù‡ Ø¯Ø± Ø¢Ø¯Ø±Ø³  
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm 
-وجود Ø¯Ø§Ø±Ø¯.
-4.18) Ú†Ø±Ø§ Ù…Ù† Ø®Ø·Ø§ÙŠ "ERROR: Memory exhausted in AllocSetAlloc" 
-مي‌گيرم؟
-این Ø®Ø·Ø§ Ø§Ø­ØªÙ…الاً ÛŒØ§ Ø¨Ù‡ Ø®Ø§Ø·Ø± ØªÙ…ام Ø´Ø¯Ù† Ø­Ø§Ù\81ظه 
-مجازی Ø³ÛŒØ³ØªÙ… Ø´Ù…است Ùˆ ÛŒØ§ Ø§ÛŒÙ†Ú©Ù‡ Ú©Ø±Ù†Ù„ Ø¨Ø±Ø§ÛŒ 
-برنامه Ù‡Ø§ Ø¯Ø± Ù…ورد Ù…یزان Ø§Ø³ØªÙ\81اده Ø§Ø² Ø­Ø§Ù\81ظه 
-مجازی Ù…حدودیت Ø§Ø¹Ù…ال Ú©Ø±Ø¯Ù‡ Ø§Ø³Øª. Ù‚بل Ø§Ø² Ø§Ø¬Ø±Ø§ÛŒ 
-برنامه Ø§ØµÙ„ÛŒ ÛŒÚ©ÛŒ Ø§Ø² Ø¯Ø³ØªÙˆØ±Ø§Øª Ø²ÛŒØ± Ø±Ø§ Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯.
-    ulimit -d 262144
-    limit datasize 256m
-بسته Ø¨Ù‡ Ù†ÙˆØ¹ Ø´Ù„ ÛŒÚ©ÛŒ Ø§Ø² Ø§ÛŒÙ† Ø¯Ø³ØªÙˆØ±Ø§Øª Ù…Ù…Ú©Ù† Ø§Ø³Øª Ø¨Ø§ 
-موÙ\81قیت Ø§Ø¬Ø±Ø§ Ø´ÙˆØ¯. Ø¨Ø§ Ø§Ø¬Ø±Ø§ÛŒ Ø¢Ù† Ø¯Ø³ØªÙˆØ± Ù…حدودیت 
-حاÙ\81ظه Ù…جازی Ø¨Ø±Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù‡Ø§ Ø¨Ø±Ø¯Ø§Ø´ØªÙ‡ Ø´Ø¯Ù‡ Ùˆ Ø¨Ø§ 
-این Ú©Ø§Ø± Ø§Ø­ØªÙ…الاً Ø¯Ø±Ø®ÙˆØ§Ø³ØªÛŒ Ú©Ù‡ Ù‚بلاً Ø®Ø·Ø§ Ù…ÛŒ 
-داده Ø§Ø³Øª Ø§Ø¬Ø±Ø§ Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯.
-4.19) Ø§Ø² ÙƒØ¬Ø§ ØªØ´Ø®ÙŠØµ Ø¯Ù‡Ù… ÙƒÙ‡ ÙˆÙŠØ±Ø§ÙŠØ´ ÙŠØ§ Ù†Ø³Ø®Ù‡ 
-PostgreSQLيي ÙƒÙ‡ Ù…Ù† Ø§Ø³ØªÙ\81اده Ù…ي‌كنم Ú†ÙŠØ³ØªØŸ
-با Ø§Ø¬Ø±Ø§ÛŒ Ø¯Ø³ØªÙˆØ± ()SELECT version
-4.20) Ú†Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø¬Ø±Ø§ÛŒ Ø¹Ù…لیات Ø±ÙˆÛŒ large-objectها 
-خطای "invalid large obj descriptor"به ÙˆØ¬ÙˆØ¯ Ù…ÛŒ Ø¢ÛŒØ¯ØŸ
-شما Ø¨Ø§ÛŒØ¯ Ù‚بل Ø§Ø² Ø´Ø±ÙˆØ¹ Ø¯Ø³ØªÙˆØ±Ø§ØªÛŒ Ú©Ù‡ Ø¨Ø§ large-objectها 
-کار Ù…ÛŒ Ú©Ù†Ù†Ø¯ Ø§Ø² BEGIN  Ùˆ Ø¨Ø¹Ø¯ Ø§Ø² Ø¢Ù†Ù‡Ø§ Ù‡Ù… ÛŒÚ© END 
-بگذارید. Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± PostgreSQL Ù‡Ù†Ø¯Ù„ large-objectها Ø±Ø§ 
-در Ø²Ù…ان Ù†Ù‡Ø§ÛŒÛŒ Ø´Ø¯Ù† ØªØ±Ø§Ú©Ù†Ø´ (commitشدن) Ù…ÛŒ Ø¨Ù†Ø¯Ø¯. Ø¨Ù‡ 
-همین Ø¯Ù„یل Ø§ÙˆÙ„ین ØªÙ„اش Ø¨Ø±Ø§ÛŒ Ø§Ù†Ø¬Ø§Ù… Ù‡Ø± Ú©Ø§Ø±ÛŒ Ø¨Ø§ 
-هندل Ù…نجر Ø¨Ù‡ Ø®Ø·Ø§ÛŒ invalid large obj descriptor Ø®ÙˆØ§Ù‡Ø¯ Ø´Ø¯. 
-برای Ø¬Ù„وگیری Ø§Ø² Ø§ÛŒÙ† Ø®Ø·Ø§ Ø­ØªÙ…اً Ø¨Ø§ÛŒØ¯ Ø§Ø² ÛŒÚ© 
-تراکنش Ø§Ø³ØªÙ\81اده Ú©Ù†ÛŒØ¯. Ø§ÛŒÙ† Ú©Ø§Ø± Ù‡Ù…انطور Ú©Ù‡ 
-قبلاً Ú¯Ù\81ته Ø´Ø¯ Ø¨Ø§ Ø§Ø³ØªÙ\81اده Ø§Ø² Ù‚رار Ø¯Ø§Ø¯Ù† BEGIN Ùˆ END 
-در Ø§Ø¨ØªØ¯Ø§ Ùˆ Ø§Ù†ØªÙ‡Ø§ÛŒ Ø¯Ø³ØªÙˆØ±Ø§Øª Ø§Ù†Ø¬Ø§Ù… Ù…ÛŒ Ø´ÙˆØ¯.
-اگر Ø§ÛŒÙ† Ø®Ø·Ø§ Ø±Ø§ Ø¯Ø± Ø­ÛŒÙ† Ø§Ø³ØªÙ\81اده Ø§Ø² ÛŒÚ© Ø¯Ø±Ø§ÛŒÙˆØ± ODBC 
-دریاÙ\81ت Ú©Ø±Ø¯ÛŒØ¯ Ø§Ø­ØªÙ…الاً Ø¨Ø§ÛŒØ¯ Ø§ÛŒÙ† Ø¯Ø³ØªÙˆØ± Ø±Ø§ 
-اجرا Ú©Ù†ÛŒØ¯: set auto-commit off
-4.21) Ú†Ú¯ÙˆÙ†Ù‡ ÙŠÙƒ Ø³ØªÙˆÙ† Ø§ÙŠØ¬Ø§Ø¯ ÙƒÙ†Ù… ÙƒÙ‡ Ù…قدار Ø²Ù…ان 
-جاري Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ù…قدار Ù¾ÙŠØ´â€ŒÙ\81رض Ø¯Ø§Ø´ØªÙ‡ Ø¨Ø§Ø´Ø¯ØŸ
-از CURRENT_TIMESTAMP  Ø§Ø³ØªÙ\81اده Ú©Ù†ÛŒØ¯ Ø¯Ø± Ù…ثال Ø²ÛŒØ± Ù†Ø­ÙˆÙ‡ 
-انجام Ø§ÛŒÙ† Ú©Ø§Ø± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª:
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-4.22) Ú†Ø±Ø§ "زير Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ" ÙƒÙ‡ Ø§Ø² IN Ø§Ø³ØªÙ\81اده 
-مي‌كنند ÙƒÙ†Ø¯ Ù‡Ø³ØªÙ†Ø¯ØŸ
-در Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚بل Ø§Ø² 7.4 Ø¹Ù…Ù„ Ø§Ù„حاق Ø²ÛŒØ± Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ùˆ 
-درخواست Ø§ØµÙ„ÛŒ Ø¨Ù‡ Ø§ÛŒÙ† ØµÙˆØ±Øª Ø§Ù†Ø¬Ø§Ù… Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ 
-نتایج Ø¨Ù‡ Ø¯Ø³Øª Ø¢Ù…ده Ø§Ø² Ø²ÛŒØ± Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ù‡ ØµÙˆØ±Øª 
-ترتیبی Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø±Ø¯ÛŒÙ\81 Ø§Ø¹Ù…ال Ù…ÛŒ Ø´ÙˆØ¯. Ø§Ú¯Ø± 
-زیردرخواست Ø±Ø¯ÛŒÙ\81 Ù‡Ø§ÛŒ Ú©Ù…ÛŒ Ø±Ø§ Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ 
-برگرداند Ùˆ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨ÛŒØ±ÙˆÙ†ÛŒ Ø±Ø¯ÛŒÙ\81 Ù‡Ø§ÛŒ Ø²ÛŒØ§Ø¯ÛŒ Ø±Ø§ 
-شامل Ø´ÙˆØ¯ Ø§Ø³ØªÙ\81اده Ø§Ø² IN Ø¨Ù‡ØªØ±ÛŒÙ† Ø±ÙˆØ´ Ø§Ø³Øª Ø¯Ø± ØºÛŒØ± 
-اینصورت Ø¨Ù‡ØªØ± Ø§Ø³Øª Ø§Ø² EXISTS Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯
-    SELECT *
-    FROM tab
-    WHERE col IN (SELECT subcol FROM subtab);
-به:
-    SELECT *
-    FROM tab
-    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-برای Ø§Ø¬Ø±Ø§ÛŒ Ø³Ø±ÛŒØ¹ Ø§ÛŒÙ† Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø§ÛŒØ¯ Ø¨Ø±Ø§ÛŒ Ø³ØªÙˆÙ† 
-subcol Ù†Ù…ایه Ø§ÛŒØ¬Ø§Ø¯ Ø´Ø¯Ù‡ Ø¨Ø§Ø´Ø¯.
-در Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ø¨Ø¹Ø¯ Ø§Ø² 7.4 IN Ø¨Ø±Ø§ÛŒ Ø§Ù„حاق Ø§Ø² Ù‡Ù…ان 
-تکنیک Ù¾ÛŒÚ†ÛŒØ¯Ù‡ Ù…ورد Ø§Ø³ØªÙ\81اده Ø¯Ø± Ø¯Ø³ØªÙˆØ±Ø§Øª Ù…عمولی 
-استÙ\81اده Ù…ÛŒ Ú©Ù†Ø¯ Ùˆ Ø¨Ù†Ø§Ø¨Ø±Ø§ÛŒÙ† Ø§Ø³ØªÙ\81اده Ø§Ø² Ø¢Ù† Ù†Ø³Ø¨Øª 
-به EXISTS Ø§Ø±Ø¬Ø­ÛŒØª Ø¯Ø§Ø±Ø¯.
-4.23) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ Ø§Ù„حاق Ø®Ø§Ø±Ø¬ÙŠ (outer join) 
-انجام Ø¯Ù‡Ù…ØŸ
-برای Ø§Ù†Ø¬Ø§Ù… Ø§Ù„حاق Ø®Ø§Ø±Ø¬ÛŒ Ø¨Ù‡ Ø±ÙˆØ´ Ø²ÛŒØ± Ø¹Ù…Ù„ Ú©Ù†ÛŒØ¯:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-یا
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-درخواستهای Ø¨Ø§Ù„ا t1.col , t2.col Ø±Ø§ Ø¨Ù‡ Ù‡Ù… Ø§Ù„حاق Ù…ÛŒ 
-کند Ùˆ Ù‡Ù…چنین Ø±Ø¯ÛŒÙ\81های t1 Ú©Ù‡ Ù†Ø¸ÛŒØ± Ø¢Ù†Ù‡Ø§ Ø¯Ø± t2 
-نبوده Ø§Ø³Øª Ø±Ø§ Ù†ÛŒØ² Ø¨Ø±Ù…ÛŒ Ú¯Ø±Ø¯Ø§Ù†Ø¯. Ø§Ú¯Ø± Ø§Ø² RIGHT 
-استÙ\81اده Ø´ÙˆØ¯ Ù†ØªÛŒØ¬Ù‡ Ø¨Ø± Ø¹Ú©Ø³ Ø§Ø³Øª. ÛŒØ¹Ù†ÛŒ Ø±Ø¯ÛŒÙ\81های t2 
-Ú©Ù‡ Ù†Ø¸ÛŒØ± Ø¢Ù†Ù‡Ø§ Ø¯Ø± t1 Ù†Ø¨Ø§Ø´Ø¯ Ø±Ø§ Ù†Ø´Ø§Ù† Ù…ÛŒ Ø¯Ù‡Ø¯ Ùˆ Ø§Ú¯Ø± 
-از FULL Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ Ù†ØªÛŒØ¬Ù‡ Ù‡Ù… Ø´Ø§Ù…Ù„ Ø±Ø¯ÛŒÙ\81های t1 
-است  Ùˆ Ù‡Ù… Ø´Ø§Ù…Ù„ Ø±Ø¯ÛŒÙ\81های t2. Ø§Ø³ØªÙ\81اده Ø§Ø² Ú©Ù„مه OUTER 
-اختیاری Ø§Ø³Øª Ú†Ø±Ø§ Ú©Ù‡ Ø§ÛŒÙ† Ú©Ù„مه Ø¨Ù‡ Ø·ÙˆØ± Ø¶Ù…Ù†ÛŒ 
-دستورهای LEFT, RIGHT, FULL ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯.
-در Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚بلی Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ù…ÛŒ ØªÙˆØ§Ù†ÛŒÙ… Ø§Ù„حاق 
-خارجی Ø±Ø§ Ø¨Ù‡ Ú©Ù…Ú© Ø¯Ø³ØªÙˆØ±Ù‡Ø§ÛŒ UNION, NOT IN Ø´Ø¨ÛŒÙ‡ Ø³Ø§Ø²ÛŒ 
-کنیم. Ø§ÛŒÙ† Ú©Ø§Ø± Ø¯Ø± Ù…ثال Ø²ÛŒØ± Ù†Ø´Ø§Ù† Ø¯Ø§Ø¯Ù‡ Ø´Ø¯Ù‡ Ø§Ø³Øª:
-
-    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) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توان Ø¯Ø±Ø®ÙˆØ§Ø³ØªÙ‡Ø§ÙŠÙŠ Ø§Ø² Ú†Ù†Ø¯ Ù¾Ø§ÙŠÚ¯Ø§Ù‡ 
-داده ØªÙˆÙ„يد ÙƒØ±Ø¯ØŸ
-در Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Ø§ÛŒÙ† Ú©Ø§Ø± Ø§Ù…کان Ù¾Ø°ÛŒØ± Ù†ÛŒØ³Øª. PostgreSQL 
\81قط Ø§Ù…کان Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø§Ø² Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§ÛŒ Ø±Ø§ Ù…ÛŒ 
-دهد Ú©Ù‡ Ø¯Ø± Ø­Ø§Ù„ Ø­Ø§Ø¶Ø± Ø¨Ù‡ Ø¢Ù† Ù…تصل Ø¨Ø§Ø´ÛŒØ¯ Ùˆ Ù†Ù…ÛŒ 
-توان Ø¨Ù‡ Ø·ÙˆØ± Ù‡Ù…زمان Ø§Ø² Ø¯Ùˆ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø§Ø³ØªÙ\81اده 
-کرد. Ø§Ù„بته ÛŒÚ© Ø¨Ø±Ù†Ø§Ù…Ù‡ Ú©Ø§Ø±Ø¨Ø±Ø¯ÛŒ Ø®ÙˆØ¯ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ø¨Ù‡ 
-طور Ù‡Ù…زمان Ø¯Ùˆ  Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ù…ورد Ø§Ø³ØªÙ\81اده 
-قرار Ø¯Ø§Ø¯Ù‡ Ùˆ Ù†ØªØ§ÛŒØ¬ Ø±Ø§ Ø¨Ø§ Ù‡Ù… ØªØ±Ú©ÛŒØ¨ Ú©Ù†Ø¯ ÙˆÙ„ÛŒ Ù†Ù…ÛŒ 
-تواند Ø¯Ø± ÛŒÚ© Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ù‡ Ù‡Ø±  Ø¯Ùˆ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-رجوع Ú©Ù†Ø¯.
-4.25) Ú†Ú¯ÙˆÙ†Ù‡ Ø®Ø±ÙˆØ¬ÙŠ ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù…ي‌تواند  Ú†Ù†Ø¯ Ø±Ø¯ÙŠÙ\81 
-يا Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯ØŸ
-در Ù†Ø³Ø®Ù‡ 7.3 Ø®Ø±ÙˆØ¬ÛŒ ÛŒÚ© ØªØ§Ø¨Ø¹ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ú†Ù†Ø¯ Ø±Ø¯ÛŒÙ\81 ÛŒØ§ 
-چند Ø³ØªÙˆÙ† Ø¨Ø§Ø´Ø¯. Ø¨Ø±Ø§ÛŒ Ø¯ÛŒØ¯Ù†  Ø§Ø·Ù„اعات Ø¨ÛŒØ´ØªØ± Ø¨Ù‡ 
-سایت Ø²ÛŒØ± Ù…راجعه 
-کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions  
-4.26) Ø¯Ø± ØªÙˆØ§Ø¨Ø¹ PL/PgSQL Ú†Ø±Ø§ Ù†Ù…ي‌توان Ø¨Ø§ Ø§Ø·Ù…ينان 
-جداول Ù…وقت Ø±Ø§ Ø§ÙŠØ¬Ø§Ø¯ ÙŠØ§ Ø­Ø°Ù\81 ÙƒØ±Ø¯ØŸ
-PL/PgSQL Ù…حتوای ØªÙˆØ§Ø¨Ø¹ Ø±Ø§ Ø°Ø®ÛŒØ±Ù‡ (cache) Ù…ÛŒ Ú©Ù†Ø¯. ÛŒÚ© 
-اثر Ø¨Ø¯ Ø¬Ø§Ù†Ø¨ÛŒ Ø§ÛŒÙ† Ú©Ø§Ø± Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ø§Ú¯Ø± Ø¯Ø± ØªØ§Ø¨Ø¹ Ø§Ø² 
-یک Ø¬Ø¯ÙˆÙ„ Ù…وقت Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ Ùˆ Ø¨Ø¹Ø¯Ø§Ù‹ Ø¢Ù† Ø¬Ø¯ÙˆÙ„ Ø­Ø°Ù\81 
-Ùˆ ÛŒÚ© Ø¬Ø¯ÙˆÙ„ Ø¬Ø¯ÛŒØ¯ Ø¨Ù‡ Ø¬Ø§ÛŒ Ø¢Ù† Ø§ÛŒØ¬Ø§Ø¯ Ø´ÙˆØ¯ØŒ Ø¯Ø± 
\81راخوانی Ù…جدد  Ø¢Ù† ØªØ§Ø¨Ø¹ØŒ Ù…حتوای Ø°Ø®ÛŒØ±Ù‡ Ø´Ø¯Ù‡ 
-تابع  Ù‡Ù†ÙˆØ² Ø¨Ù‡ Ø¬Ø¯ÙˆÙ„ Ù‚دیمی Ø§Ø´Ø§Ø±Ù‡ Ù…ÛŒ Ú©Ù†Ø¯ Ùˆ 
-بنابراین Ø§Ø¬Ø±Ø§ÛŒ ØªØ§Ø¨Ø¹ Ø¨Ø§ Ø§Ø´Ú©Ø§Ù„ Ù…واجه Ù…ÛŒ Ø´ÙˆØ¯. 
-راه Ø­Ù„ Ø§ÛŒÙ† Ù…Ø´Ú©Ù„ Ø¢Ù† Ø§Ø³Øª Ú©Ù‡ Ø¨Ø±Ø§ÛŒ Ø¬Ø¯Ø§ÙˆÙ„ Ù…وقت Ø§Ø² 
-دستور EXECUTE Ø§Ø³ØªÙ\81اده Ø´ÙˆØ¯ Ú©Ù‡ Ø§ÛŒÙ† Ú©Ø§Ø± Ø³Ø¨Ø¨ Ù…ÛŒ Ø´ÙˆØ¯ 
-Ú©Ù‡ Ø¯Ø±Ø®ÙˆØ§Ø³Øª Ø¨Ø±Ø§ÛŒ Ù‡Ø± Ø¨Ø§Ø± Ø§Ø¬Ø±Ø§ Ù…جدداً Ù¾ÛŒÙ…ایش Ùˆ 
-تÙ\81سیر Ø´ÙˆØ¯.
-4.27) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ ØªÙƒØ±Ø§Ø± (replication) ÙˆØ¬ÙˆØ¯ 
-دارد؟ 
-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 lists 
-them. A multi-master replication solution is being worked on at 
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-4.28) Ú†Ù‡ Ú¯Ø²ÙŠÙ†Ù‡â€ŒÙ‡Ø§ÙŠÙŠ Ø¨Ø±Ø§ÙŠ Ø±Ù…زنگاري ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯ØŸ 
-  contrib/pgcrypto Ø´Ø§Ù…Ù„ ØªÙˆØ§Ø¨Ø¹ Ø±Ù…زنگاری Ø²ÛŒØ§Ø¯ÛŒ Ø§Ø³Øª Ú©Ù‡ 
-  Ù…ÛŒ ØªÙˆØ§Ù† Ø§Ø² Ø¢Ù†Ù‡Ø§ Ø¯Ø± Ø¯Ø³ØªÙˆØ±Ø§Øª SQL Ø§Ø³ØªÙ\81اده Ú©Ø±Ø¯.
-  Ø¨Ø±Ø§ÛŒ Ø±Ù…ز Ú©Ø±Ø¯Ù† Ø§Ø±ØªØ¨Ø§Ø· Ø¨ÛŒÙ† client Ùˆ server ØŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ 
-  Ø¯Ø§Ø¯Ù‡ Ø­ØªÙ…اً Ú¯Ø²ÛŒÙ†Ù‡ SSL Ø±Ø§ Ø¨Ø± Ø±ÙˆÛŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡ Ø¯Ø§Ø¯Ù‡ 
-  Ù\81عال Ú©Ù†ÛŒÙ….
-  Ø¯Ø± Ù†Ø³Ø®Ù‡ 7.3 Ø¨Ù‡ Ø¨Ø¹Ø¯ Ú©Ù„مات Ø¹Ø¨ÙˆØ± Ú©Ø§Ø±Ø¨Ø±Ø§Ù† Ø¨Ù‡ Ø·ÙˆØ± 
-  Ø§ØªÙˆÙ…اتیک Ø¨Ù‡ ØµÙˆØ±Øª Ø±Ù…ز Ø´Ø¯Ù‡ Ø°Ø®ÛŒØ±Ù‡ Ù…ÛŒ Ø´ÙˆØ¯ ÙˆÙ„ÛŒ 
-  Ø¯Ø± Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ Ù‚بلی Ø¨Ø§ÛŒØ¯ Ú¯Ø²ÛŒÙ†Ù‡ PASSWORD_ENCRYPTION  Ø¯Ø± 
-  Ù\81ایلpostgresql.conf Ù\81عال Ú©Ù†ÛŒÙ…. 
-  Ù…ÛŒ ØªÙˆØ§Ù† Ù¾Ø§ÛŒÚ¯Ø§Ù‡Ù‡Ø§ÛŒ Ø¯Ø§Ø¯Ù‡ Ø±Ø§ Ø±ÙˆÛŒ ÛŒÚ© Ù\81ایل Ø³ÛŒØ³ØªÙ… 
-  Ø±Ù…زشده Ù†Ú¯Ø§Ù‡Ø¯Ø§Ø±ÛŒ Ú©Ø±Ø¯
-
-
-
-Extending PostgreSQL
-5.1) Ù…Ù† ÙŠÙƒ ØªØ§Ø¨Ø¹ Ù†ÙˆØ´ØªÙ‡â€ŒØ§Ù…. Ú†Ú¯ÙˆÙ†Ù‡ Ø¢Ù† Ø±Ø§ Ø¯Ø± psql 
-اجرا ÙƒÙ†Ù…ØŸ Ú†Ø±Ø§ Ø¨Ø§ Ø§Ø¬Ø±Ø§ÙŠ Ø¢Ù† core dump Ù…ي‌گيرم؟
-دلایل Ù…ختلÙ\81ÛŒ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ Ø¨Ø§Ø¹Ø« Ø¨Ø±ÙˆØ² Ø§ÛŒÙ† Ù…Ø´Ú©Ù„ 
-شود. Ø§Ù…ا Ù‚بل Ø§Ø² Ù‡Ù…Ù‡ ØªØ§Ø¨Ø¹ Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ ØµÙˆØ±Øª Ø¬Ø¯Ø§ 
-تست Ú©Ù†ÛŒØ¯.
-5.2) Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم Ø¯Ø± ØªÙˆÙ„يد Ù†ÙˆØ¹â€ŒÙ‡Ø§ Ùˆ ØªÙˆØ§Ø¨Ø¹ 
-جديد Ùˆ Ø¬Ø§Ù„ب Ø¨Ø±Ø§ÙŠ PostgreSQL‌ Ù‡Ù…كاري Ùˆ Ù…شاركت 
-داشته Ø¨Ø§Ø´Ù…ØŸ
-کد Ø®ÙˆØ¯ Ø±Ø§ Ø¨Ù‡ Ú¯Ø±ÙˆÙ‡ Ù¾Ø³ØªÛŒ pgsql-hackers   Ø§Ø±Ø³Ø§Ù„ Ú©Ù†ÛŒØ¯.
-5.3)  Ú†Ú¯ÙˆÙ†Ù‡ Ù…ي‌توانم ÙŠÙƒ ØªØ§Ø¨Ø¹ Ø¨Ù‡ Ø²Ø¨Ø§Ù† C Ø¨Ù†ÙˆÙŠØ³Ù… 
-كه Ø®Ø±ÙˆØ¬ÙŠ Ø¢Ù† ÙŠÙƒ â€Œtuple  (چند ØªØ§ÙŠÙŠ) Ø¨Ø§Ø´Ø¯ØŸ
-در Ù†Ø³Ø®Ù‡ Ù‡Ø§ÛŒ 7.3 Ø¨Ù‡ Ø¨Ø¹Ø¯ ÛŒÚ© ØªØ§Ø¨Ø¹ Ù…ÛŒ ØªÙˆØ§Ù†Ø¯ ÛŒÚ© Ø¬Ø¯ÙˆÙ„ 
-را Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ Ø¨Ø±Ú¯Ø±Ø¯Ø§Ù†Ø¯. Ø§ÛŒÙ† ÙˆÛŒÚ˜Ú¯ÛŒ Ø¯Ø± 
-توابعی Ú©Ù‡ Ø¨Ù‡ Ø²Ø¨Ø§Ù†Ù‡Ø§ÛŒ C Ùˆ PL/PgSQL Ù†ÙˆØ´ØªÙ‡ Ù…ÛŒ Ø´ÙˆÙ†Ø¯ 
-به Ø·ÙˆØ± Ú©Ø§Ù…Ù„ ÙˆØ¬ÙˆØ¯ Ø¯Ø§Ø±Ø¯. Ø±Ø§Ù‡Ù†Ù…ا Ø¨Ø±Ù†Ø§Ù…Ù‡ Ù†ÙˆÛŒØ³Ø§Ù† 
-را Ù…طالعه Ú©Ù†ÛŒØ¯. ÛŒÚ© Ù…ثال Ø§Ø² Ù†Ø­ÙˆÙ‡ Ø¨Ø±Ú¯Ø±Ø¯Ø§Ù†Ø¯Ù† ÛŒÚ© 
-جدول Ø¨Ù‡ Ø¹Ù†ÙˆØ§Ù† Ø®Ø±ÙˆØ¬ÛŒ Ø¯Ø± contrib/tablefunc Ø¢Ù…ده Ø§Ø³Øª.
-5.4) Ù…Ù† ÙŠÙƒ Ù\81ايل Ù…نبع Ø±Ø§ Ø¹ÙˆØ¶ ÙƒØ±Ø¯Ù‡ Ø§Ù… Ú†Ø±Ø§ Ø¯Ø± 
-عمليات ÙƒØ§Ù…پيل Ù…جدد Ø¢Ù† ØªØºÙŠÙŠØ± Ø¯ÙŠØ¯Ù‡ Ù†Ù…ي‌شود؟
-Makefile Ø¨Ø±Ø§ÛŒ Ù\81ایلهای include Ø´Ø¯Ù‡ ÙˆØ§Ø¨Ø³ØªÚ¯ÛŒÙ‡Ø§ Ø±Ø§ Ø¨Ù‡ 
-درستی Ù†Ø´Ø§Ù† Ù†Ù…ÛŒ Ø¯Ù‡Ø¯. Ø¨Ø±Ø§ÛŒ Ø§Ø·Ù…ینان Ø§Ø² Ø§ÛŒÙ†Ú©Ù‡ 
\81ایلی Ú©Ù‡ Ø¹ÙˆØ¶ Ú©Ø±Ø¯Ù‡ Ø§ÛŒØ¯ Ø­ØªÙ…اً Ø¯ÙˆØ¨Ø§Ø±Ù‡ Ú©Ø§Ù…پیل Ù…ÛŒ 
-شود Ø¯Ø³ØªÙˆØ± make clean Ø±Ø§ Ø§Ø¬Ø±Ø§ Ú©Ù†ÛŒØ¯. Ø§Ú¯Ø± Ø§Ø² Ú©Ø§Ù…پیلر 
-gcc Ø§Ø³ØªÙ\81اده Ù…ÛŒ Ú©Ù†ÛŒØ¯ Ù…ÛŒ ØªÙˆØ§Ù†ÛŒØ¯ Ø§Ø² Ú¯Ø²ÛŒÙ†Ù‡ 
-enable-depend-- Ø¯Ø± Ù…وقع Ø§Ø¬Ø±Ø§ÛŒ Ø¨Ø±Ù†Ø§Ù…Ù‡ configure Ø§Ø³ØªÙ\81اده 
-کنید Ø§ÛŒÙ† Ú¯Ø²ÛŒÙ†Ù‡ Ø¨Ø§Ø¹Ø« Ù…ÛŒ Ø´ÙˆØ¯ Ú©Ù‡ ÙˆØ§Ø¨Ø³ØªÚ¯ÛŒÙ‡Ø§ Ø¨Ù‡ 
-طور Ø§ØªÙˆÙ…اتیک ØªÙˆÙ„ید Ø´ÙˆØ¯.
\ No newline at end of file
diff --git a/doc/FAQ_french b/doc/FAQ_french
deleted file mode 100644 (file)
index 71f19f0..0000000
+++ /dev/null
@@ -1,1289 +0,0 @@
-
-                   Foire Aux Questions (FAQ) pour PostgreSQL
-                                       
-   Dernière mise à jour : vendredi 14 novembre 2004 16:32:47
-   
-   Mainteneur actuel : Bruce Momjian (pgman@candle.pha.pa.us)
-   
-   La plus récente version de ce document est disponible sur
-   http://www.PostgreSQL.org/docs/faqs/FAQ.html.
-   
-   Les questions spécifiques à la plateforme sont répondues sur
-   http://www.PostgreSQL.org/docs/index.html.
-     _________________________________________________________________
-   
-                            Questions générales
-                                      
-   1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
-   1.2) Quelle est la licence de PostgreSQL ?
-   1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
-   1.4) Sous quels environnements non-Unix PostgreSQL tourne-t-il ?
-   1.5) Où puis-je me procurer PostgreSQL ?
-   1.6) Où puis-je obtenir du support ?
-   1.7) Quelle est la dernière version ?
-   1.8) Quelle documentation est disponible ?
-   1.9) Comment savoir quels sont les bogues connus ou les
-   fonctionnalités manquantes ?
-   1.10) Comment puis-je apprendre le SQL ?
-   1.11) PostgreSQL est-il compatible an 2000 ?
-   1.12) Comment puis-je rejoindre l'équipe de développement ?
-   1.13) Comment dois-je soumettre un rapport de bogue ?
-   1.14) Comment PostgreSQL se compare-t'il à d'autres SGBD ?
-   1.15) Comment puis-je aider financièrement PostgreSQL ?
-   
-                    Questions sur le client utilisateur
-                                      
-   2.1) Y a-t-il des pilotes ODBC pour PostgreSQL ?
-   2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des
-   pages Web ?
-   2.3) PostgreSQL a-t-il une interface graphique ?
-   2.4) Quels langages sont disponibles pour communiquer avec
-   PostgreSQL ?
-   
-                         Questions administratives
-                                      
-   3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
-   3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un
-   message core dumped. Pourquoi ?
-   3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
-   Pourquoi ?
-   3.4) Quand je lance postmaster, j'obtiens des erreurs
-   IpcSemaphoreCreate. Pourquoi ?
-   3.5) Comment contrôler les connexions d'autres machines ?
-   3.6) Comment règler le moteur de la base de données pour de meilleures
-   performances ?
-   3.7) Quelles fonctionalités de déboguage sont disponibles ?
-   3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many
-   clients quand je me connecte ?
-   3.9) Que contient le répertoire pgsql_tmp ?
-   3.10) Pourquoi ai-je besoin de faire une sauvegarde des bases et de
-   restaurer pour mettre a jour les versions de PostgreSQL ?
-   3.11) Quels matériels dois-je utiliser ?
-   
-                          Questions fonctionnelles
-                                      
-   4.1) Quelle est la différence entre curseur binaire et curseur
-   normal ?
-   4.2) Comment faire un SELECT seulement sur les premières lignes d'une
-   requête ? Sur une ligne aléatoire ?
-   4.3) Comment obtenir une liste des tables ou d'autres choses que je
-   vois dans psql ?
-   4.4) Comment supprime-t-on une colonne d'une table, ou comment
-   change-t-on son type de données ?
-   4.5) Quelle est la taille maximale pour une ligne, une table et une
-   base de données ?
-   4.6) Combien d'espace disque faut-il pour stocker les données d'un
-   fichier texte typique ?
-   4.7) Comment puis-je savoir quels index, tables, bases de données et
-   utilisateurs sont définis ?
-   4.8) Mes requêtes sont lentes ou ne font pas usage des index.
-   Pourquoi ?
-   4.9) Comment puis-je savoir si l'optimiseur évalue mes requêtes ?
-   4.10) Qu'est-ce qu'un index R-tree ?
-   4.11) Qu'est-ce que l'optimiseur génétique de requêtes ?
-   4.12) Comment puis-je réaliser des recherches par des expressions
-   rationnelles ainsi que des recherches non sensibles à la casse ?
-   Comment puis-je utiliser un index lors de recherches non sensibles à
-   la casse ?
-   4.13) Comment puis-je détecter si un champ est NULL dans une requête ?
-   4.14) Quelle sont les différences entre les nombreux types de
-   caractères ?
-   4.15.1) Comment puis-je créer un champ série, c'est-à-dire
-   s'incrémentant automatiquement ?
-   4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite à une
-   insertion ?
-   4.15.3) Est-ce que currval() et nextval() n'amènent pas des problèmes
-   lorsque plusieurs utilisateurs les lancent en même temps ?
-   4.15.4) Pourquoi mes numéros de séquences ne sont pas ré-utilisés lors
-   d'une annulation de transaction ? Pourquoi existe-t'il des trous dans
-   la numérotation de ma colonne séquentielle (SERIAL) ?
-   4.16) Qu'est-ce qu'un OID? Qu'est-ce qu'un TID ?
-   4.17) A quoi correspond certains termes utilisés avec PostgreSQL ?
-   4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in
-   AllocSetAlloc() ?
-   4.19) Comment puis-je connaître la version de PostgreSQL que
-   j'utilise ?
-   4.20) Pourquoi ai-je invalid large obj descriptor lors d'opérations
-   avec des gros objets ?
-   4.21) Comment puis-je créer une colonne qui aura par défaut l'heure
-   actuelle comme valeur ?
-   4.22) Pourquoi mes sous-requêtes utilisant IN sont-elles si lentes ?
-   4.23) Comment puis-je réaliser une jointure externe ?
-   4.24) Comment puis-je lancer des requêtes utilisant plusieurs bases de
-   données ??
-   4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes à partir
-   d'une fonction ?
-   4.26) Pourquoi ne puis-je pas créer/supprimer des tables temporaires
-   dans les fonctions PL/PgSQL de façon stable ?
-   4.27) Quelles options de cryptage sont disponibles ?
-   
-                             Etendre PostgreSQL
-                                      
-   5.1) J'ai écrit une fonction utilisateur. Lorsque je l'exécute avec
-   psql, pourquoi cela finit-il avec un "dump core" ?
-   5.2) Comment puis-je contribuer avec de nouveaux types et fonctions
-   pour PostgreSQL ?
-   5.3) Comment puis-je écrire une fonction C pour récupérer une ligne ?
-   5.4) J'ai modifié un fichier source. Pourquoi la modification
-   n'est-elle pas visible après la recompilation ?
-     _________________________________________________________________
-   
-                            Questions générales
-                                      
-    1.1) Qu'est ce que PostgreSQL ? Comment le prononcer ?
-    
-   PostgreSQL se prononce Post-Gres-Q-L. Un fichier audio est disponible
-   sur http://www.postgresql.org/postgresql.mp3 pour ceux souhaitant
-   entendre la prononciation.
-   
-   PostgreSQL est une amélioration du système de gestion de bases de
-   données POSTGRES (et est toujours quelque fois appelé "Postgres"), un
-   prototype de recherche de SGBD de prochaine génération. PostgreSQL
-   garde le puissant modèle de données et les types de données riches de
-   POSTGRES, mais remplace le langage de requêtes PostQuel par un
-   sous-ensemble étendu de SQL. PostgreSQL est gratuit et les sources
-   complets sont disponibles.
-   
-   PostgreSQL est écrit par une équipe de développeurs qui sont tous
-   inscrits à la liste de diffusion de développement de PostgreSQL. Le
-   coordinateur actuel est Marc G. Fournier (scrappy@PostgreSQL.org et
-   voir la section 1.6 pour contacter les développeurs). Cette équipe est
-   responsable de tout le développement de PostgreSQL. C'est un projet
-   soutenu par une communauté sans être contrôlé par une société. Pour y
-   contribuer, voir la FAQ des développeurs sur
-   http://www.postgresql.org/docs/faqs/FAQ_DEV.html.
-   
-   Les auteurs de PostgreSQL 1.01 étaient Andrew Yu et Jolly Chen.
-   Beaucoup d'autres personnes ont contribué au portage, aux tests, au
-   déboguage et à l'amélioration du code. Le code de Postgres original,
-   duquel PostgreSQL est dérivé, était le fruit de l'effort de nombreux
-   étudiants diplômés et non diplômés, et de programmeurs travaillant
-   sous la direction du Professeur Michael Stonebraker à l'université de
-   Californie, Berkeley.
-   
-   Le nom original du logiciel à Berkeley était Postgres. Quand le SQL
-   fut ajouté en 1995, le nom a dû être changé en Postgres95. Fin 1996,
-   le nom fut changé en PostgreSQL.
-   
-    1.2) Quelle est la licence de PostgreSQL ?
-    
-   PostgreSQL est distribué sous la licence suivante :
-   
-   PostgreSQL Data Base Management System
-   
-   Portions Copyright (c) 1996-2009, 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.
-   
-   La licence ci-dessus est la licence BSD, une licence open-source
-   classique.
-   
-    1.3) Sous quels environnements Unix PostgreSQL tourne-t-il ?
-    
-   En général, tout environnement compatible Unix moderne devrait pouvoir
-   faire fonctionner PostgreSQL. Les environnements qui ont été testés
-   explicitement sont listés dans les instructions d'installation.
-   
-    1.4) Sous quels environnements non Unix PostgreSQL fonctionne-t'il ?
-    
-   À partir de la version 8.0, PostgreSQL fonctionne nativement sur les
-   systèmes d'exploitation Microsoft Windows à base NT comme Win2000,
-   WinXP et Win2003. Un installeur est disponible sur
-   http://pgfoundry.org/projects/pginstaller.
-   
-   Il existe aussi un port sur Novell Netware sur
-   http://forge.novell.com.
-   
-    1.5) Où puis-je me procurer PostgreSQL ?
-    
-   Le site FTP anonyme principal de PostgreSQL est
-   ftp://ftp.PostgreSQL.org/pub. Pour les sites miroirs, voir notre site
-   web principal.
-   
-    1.6) Où puis-je obtenir du support ?
-    
-   La liste de diffusion principale est pgsql-general@PostgreSQL.org.
-   Elle est disponible pour discuter de sujets en rapport avec
-   PostgreSQL. Pour s'y inscrire, il faut envoyer un courriel avec les
-   lignes suivantes dans le corps du message (pas dans la ligne du
-   sujet) :
-    subscribe
-    end
-
-   à pgsql-general-request@PostgreSQL.org.
-   
-   Il existe aussi un recueil de la liste. Pour s'y inscrire, envoyez un
-   courriel à pgsql-general-digest-request@PostgreSQL.org avec dans le
-   corps :
-    subscribe
-    end
-
-   Les recueils sont envoyés aux membres de cette liste dès que la liste
-   principale a reçu 30 Ko de messages.
-   
-   Une liste de diffusion de bogues est disponible. Pour s'y inscrire,
-   envoyer un courriel à pgsql-bugs-request@PostgreSQL.org avec dans le
-   corps :
-    subscribe
-    end
-
-   Une liste de diffusion pour les développeurs est aussi disponible.
-   Pour s'y inscrire, envoyez un courriel à
-   pgsql-hackers-request@PostgreSQL.org avec dans le corps :
-    subscribe
-    end
-
-   Vous pouvez trouver d'autres listes et informations sur PostgreSQL sur
-   le site web de PostgreSQL :
-   
-     http://www.PostgreSQL.org
-     
-   Il y a aussi un canal IRC sur Freenode et EFNet, le canal #PostgreSQL.
-   Vous pouvez utiliser la commande Unix irc -c '#PostgreSQL' "$USER"
-   irc.phoenix.net ou irc -c '#PostgreSQL' "$USER" irc.freenode.net.
-   
-   Une liste de sociétés pouvant fournir un support commercial est
-   disponible sur http://techdocs.postgresql.org/companies.php.
-   
-    1.7) Quelle est la dernière version ?
-    
-   La dernière version de PostgreSQL est la version 7.4.5.
-   
-   Nous projetons de sortir une version majeure tous les six à huit mois.
-   
-    1.8) Quelle documentation est disponible ?
-    
-   Plusieurs manuels, pages de manuel ainsi que des petits exemples de
-   test sont inclus dans la distribution. Voir le répertoire /doc. Vous
-   pouvez aussi accéder aux manuels en ligne sur
-   http://www.PostgreSQL.org/docs.
-   
-   Deux livres sur PostgreSQL sont disponibles en ligne sur
-   http://www.PostgreSQL.org/docs/awbook.html et
-   http://www.commandprompt.com/ppbook/. Il y a une liste de livres sur
-   PostgreSQL pouvant être achetés sur
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Il y a aussi
-   une collection d'articles techniques sur PostgreSQL sur
-   http://techdocs.PostgreSQL.org/.
-   
-   psql possède des commandes \d pratiques montrant des informations sur
-   les types, opérateurs, fonctions, aggrégats, etc.
-   
-   Notre site web contient encore plus de documentations.
-   
-    1.9) Comment savoir quels sont les bogues connus ou les fonctionnalités
-    manquantes ?
-    
-   PostgreSQL supporte un sous-ensemble étendu de SQL-92. Voir notre
-   liste TODO pour les bogues connus, les fonctionnalités manquantes et
-   les plans pour le futur.
-   
-    1.10) Comment puis-je apprendre le SQL ?
-    
-   Le livre PostgreSQL sur http://www.PostgreSQL.org/docs/awbook.html
-   enseigne le SQL. Il existe un autre livre PostgreSQL sur
-   http://www.commandprompt.com/ppbook. Il existe de bons tutoriels sur
-   http://www.intermedia.net/support/sql/sqltut.shtm,
-   http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
-   et http://sqlcourse.com.
-   
-   Un autre (en anglais uniquement) "Teach Yourself SQL in 21 Days,
-   Second Edition" se trouve sur
-   http://members.tripod.com/er4ebus/sql/index.htm
-   
-   Nombre de nos utilisateurs aiment The Practical SQL Handbook, Bowman,
-   Judith S., et al., Addison-Wesley. D'autres aiment The Complete
-   Reference SQL, Groff et al., McGraw-Hill.
-   
-    1.11) PostgreSQL est-il compatible an 2000 ?
-    
-   Oui, nous manipulons facilement les dates après et avant l'an 2000.
-   
-    1.12) Comment puis-je rejoindre l'équipe de développement ?
-    
-   Tout d'abord, téléchargez les derniers sources et lisez la
-   documentation pour les développeurs sur notre site web ou bien dans la
-   distribution. Ensuite, inscrivez-vous aux listes de diffusion
-   pgsql-hackers et pgsql-patches. Et pour finir, soumettez des
-   correctifs de grande qualité sur pgsql-patches.
-   
-   Environ une douzaine de personnes ont des droits de modification sur
-   l'archive CVS de PostgreSQL. Ils ont chacun soumis tellement de
-   correctifs de qualité qu'il était devenu impossible aux développeurs
-   de tenir la cadence et nous avions confiance dans le qualité des
-   correctifs qu'ils soumettaient.
-   
-    1.13) Comment dois-je soumettre un rapport de bogue ?
-    
-   Merci de visiter la page PostgreSQL BugTool sur
-   http://www.PostgreSQL.org/bugs/bugs.php, qui donne des indications sur
-   la façon de soumettre un rapport de bogue.
-   
-   De même, vérifiez notre site ftp ftp://ftp.PostgreSQL.org/pub pour
-   voir s'il existe une version PostgreSQL plus récente ou des
-   correctifs.
-   
-    1.14) Comment PostgreSQL se compare-til à d'autres SGBD ?
-    
-   Il y a plusieurs manières de mesurer un logiciel : les
-   fonctionnalités, les performances, la fiabilité, le support, et le
-   prix.
-   
-   Fonctionnalités
-          PostgreSQL possède la plupart des fonctionnalités présentes
-          dans les SGBD commerciaux, comme les transactions, les requêtes
-          imbriquées, les déclencheurs, les vues, l'intégrité
-          référentielle par clés étrangères, et le verrouillage
-          sophistiqué. Nous avons des fonctionnalités qu'ils n'ont pas,
-          comme les types définis par l'utilisateur, l'héritage, les
-          règles, et le contrôle de concurrence par multi-versionnage
-          pour réduire les contentions de verrouillage.
-          
-   Performances
-          PostgreSQL a des performances similaires aux autres bases de
-          données commerciales et open source. Il est plus rapide pour
-          certaines opérations, plus lent pour d'autres. Par rapport à
-          MySQL ou d'autres SGBD plus léger, nous sommes plus rapides
-          pour de nombreux utilisateurs, des requêtes complexes et une
-          charge pour les requêtes de lecture/écriture. MySQL est plus
-          rapide pour des requêtes SELECT simples effectuées par quelques
-          utilisateurs. Bien sûr, MySQL ne possède aucune des
-          fonctionnalités de la section Fonctionnalités ci-dessus.
-          PostgreSQL est construit pour la fiabilité et les
-          fonctionnalités et nous continuons à améliorer les performances
-          à chaque version. Il y a une page web intéressante qui compare
-          PostgreSQL à MySQL sur
-          http://openacs.org/philosophy/why-not-mysql.html. De plus,
-          MySQL est une société qui distribue son produit via l'open
-          source et requiert une licence commerciale pour les logiciels
-          propriétaires, donc pas une communauté de développement open
-          source comme PostgreSQL.
-          
-   Fiabilité
-          Nous somme conscients qu'un SGBD doit être fiable ou bien il
-          est inutile. Nous faisons le maximum pour sortir des versions
-          bien testées, du code stable ne contenant qu'un minimum de
-          bogues. Chaque version a au moins un mois de tests, et notre
-          historique de versions montre que nous pouvons fournir des
-          versions stables et robustes, prêtes pour une utilisation en
-          environnement de production. Nous pensons que nous nous
-          comparons favorablement aux autres bases de données dans ce
-          domaine.
-          
-   Support
-          Nos listes de diffusion offrent un contact avec un large groupe
-          de développeurs et d'utilisateurs afin d'aider à la résolution
-          des problèmes rencontrés. Nous ne pouvons garantir un correctif
-          mais les SGBD commerciaux ne le garantissent pas toujours non
-          plus. L'accès direct aux développeurs, à la communauté
-          d'utilisateurs, aux manuels, et au code source, fait du support
-          pour PostgreSQL un support supérieur aux autres SGBD. Un
-          support commercial par incident est disponible pour ceux qui en
-          ont le besoin (voir la section 1.6 de la FAQ).
-          
-   Prix
-          Nous sommes gratuits pour tous les usages, commerciaux et non
-          commerciaux. Vous pouvez inclure notre code dans vos produits
-          sans limitation, exceptées celles citées dans notre licence de
-          type BSD donnée plus haut.
-          
-    1.15) Comment puis-je aider financièrement PostgreSQL ?
-    
-   PostgreSQL possède une infrastructure de première classe depuis le
-   début en 1996. Ceci grâce à Marc Fournier, qui a créé et géré cette
-   infrastructure des années durant.
-   
-   Une infrastructure de qualité est importante pour un projet
-   open-source. Cela permet d'empêcher l'éparpillement qui ralentirait
-   beaucoup l'avancement du projet.
-   
-   Bien sûr, cette infrastructure n'est pas donnée. Elle requiert un
-   certain nombre de dépenses mensuelles ou ponctuelles. Si vous ou votre
-   société peut donner de l'argent pour soutenir cet effort, merci de
-   consulter la page web http://store.pgsql.com/shopping/ et de faire une
-   donation.
-   
-   Bien que la page web mentionne PostgreSQL, Inc, les contributions sont
-   exclusivement utilisées pour soutenir le projet PostgreSQL et ne
-   soutiennent aucune société que ce soit. Si vous le préférez, vous
-   pouvez aussi envoyer un chèque à l'adresse de contact.
-     _________________________________________________________________
-   
-   De plus, si vous avez une histoire de succès avec PostgreSQL, merci de
-   la soumettre à notre site d'évangélisation sur
-   http://advocacy.postgresql.org.
-   
-                    Questions sur le client utilisateur
-                                      
-    2.1) Existe-t'il des pilotes ODBC pour PostgreSQL ?
-    
-   Il y a deux pilotes ODBC disponibles, PsqlODBC et OpenLink ODBC.
-   
-   Vous pouvez télécharger PsqlOBDC depuis
-   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
-   
-   OpenLink ODBC peut être obtenu depuis http://www.openlinksw.com. Il
-   fonctionne avec leur logiciel client ODBC standard, vous aurez donc
-   PostgreSQL ODBC sur toutes les plateformes client qu'ils supportent
-   (Win, Mac, Unix, VMS).
-   
-   Ils vendront probablement ce produit aux gens qui recherchent une
-   qualité de support professionnelle mais une version freeware sera
-   toujours disponible. Merci d'envoyer vos questions à
-   postgres95@openlink.co.uk.
-   
-    2.2) Quels outils sont disponibles pour utiliser PostgreSQL avec des pages
-    Web ?
-    
-   Une bonne introduction aux pages Web adossés à une base de données se
-   trouve à http://www.webreview.com
-   
-   Pour l'intégration Web, PHP est une excellente interface. Elle se
-   trouve à http://www.php.net.
-   
-   Pour les cas complexes, beaucoup utilisent l'interface Perl et CGI.pm
-   ou mod_perl.
-   
-    2.3) PostgreSQL a-t-il une interface graphique ?
-    
-   Oui, il y a plusieurs interfaces graphiques disponibles pour
-   PostgreSQL, dont PgAccess http://www.pgaccess.org), PgAdmin III
-   (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
-   et Rekall ( http://www.thekompany.com/products/rekall/, propriétaire).
-   Il y a aussi PhpPgAdmin ( http://phppgadmin.sourceforge.net/ ), une
-   interface Web pour PostgreSQL.
-   
-   Voir http://techdocs.postgresql.org/guides/GUITools pour une liste
-   plus détaillée.
-   
-    2.4) Quels langages sont disponibles pour communiquer avec PostgreSQL ?
-    
-   La plupart des langages de programmation couramment utilisés ont une
-   interface pour PostgreSQL. Vérifiez la liste des modules de votre
-   langage.
-   
-   Les interfaces ci-dessous sont incluses dans la distribution :
-     * C (libpq)
-     * Embedded C (ecpg)
-     * Java (jdbc)
-     * Python (PyGreSQL)
-     * TCL (libpgtcl)
-       
-   Interfaces supplémentaires disponibles sur http://gborg.postgresql.org
-   dans la section Drivers/Interfaces
-     _________________________________________________________________
-   
-                         Questions Administratives
-                                      
-    3.1) Comment installer PostgreSQL ailleurs que sous /usr/local/pgsql ?
-    
-   Il faut spécifier l'option --prefix lors du lancement de configure.
-   
-    3.2) Quand je lance postmaster, j'obtiens un Bad System Call ou un message
-    core dumped . Pourquoi ?
-    
-   Cela peut être dû à une variété de problèmes mais vérifiez d'abord que
-   vous avez les extensions System V installées pour votre noyau.
-   PostgreSQL nécessite le support noyau pour la mémoire partagée et les
-   sémaphores.
-   
-    3.3) Quand je lance postmaster, j'obtiens des erreurs IpcMemoryCreate.
-    Pourquoi ?
-    
-   Soit vous n'avez pas configuré correctement la mémoire partagée dans
-   votre noyau, soit vous devez augmenter la mémoire partagée disponible
-   dans le noyau. Le montant exact dont vous avez besoin dépend de votre
-   architecture et du nombre de tampons et de processus que vous avez
-   configuré pour postmaster. Pour la plupart des systèmes avec un nombre
-   par défaut de tampons et de processus, vous aurez besoin d'un minimum
-   d'environ 1 Mo. Voir le chapitre Administration du manuel PostgreSQL
-   pour des informations plus détaillées sur la mémoire partagée et les
-   sémaphores.
-   
-    3.4) Quand je lance postmaster, j'obtiens des erreurs IpcSemaphoreCreate.
-    Pourquoi ?
-    
-   Si le message d'erreur est IpcSemaphoreCreate: semget failed (No space
-   left on device) alors votre noyau n'est pas configuré avec
-   suffisamment de sémaphores. PostgreSQL a besoin d'un sémaphore par
-   processus serveur potentiel. Une solution provisoire est de lancer
-   postmaster avec une plus petite limite sur le nombre de processus
-   serveur. Utilisez l'option -N avec un paramètre inférieur au choix par
-   défaut de 32. Une solution permanente est d'augmenter les paramètres
-   SEMMNS et SEMMNI de votre noyau.
-   
-   Des sémaphores inopérantes peuvent aussi provoquer des plantages
-   pendant de gros accès à la base de données.
-   
-   Si le message d'erreur est autre chose, vous n'avez peut-être pas du
-   tout le support des sémaphores dans votre noyau. Voir le chapitre
-   Administration du manuel PostgreSQL pour des informations plus
-   détaillées sur la mémoire partagée et les sémaphores.
-   
-    3.5) Comment contrôler les connexions d'autres machines ?
-    
-   Par défaut, PostgreSQL autorise seulement les connexions de la machine
-   locale en utilisant les sockets de domaine Unix ou les connexions
-   TCP/IP. D'autres machines ne seront pas capables de se connecter sauf
-   si vous modifiez listen_addresses dans postgresql.conf et activez une
-   authentification basée sur l'hôte en modifiant le fichier
-   $PGDATA/pg_hba.conf en accord.
-   
-    3.6) Comment régler le moteur de la base de données pour de meilleures
-    performances ?
-    
-   Des index accéléreront les requêtes. La commande EXPLAIN ANALYZE vous
-   permet de voir comment PostgreSQL traite votre requête et quels index
-   sont utilisés.
-   
-   Si vous faites beaucoup d'insertions (instruction INSERT), envisagez
-   de les faire en une fois en utilisant la commande COPY. Ceci est plus
-   rapide que des commandes INSERTS individuelles. Deuxièment, les
-   requêtes qui ne sont pas dans des blocs de transaction BEGIN
-   WORK/COMMIT sont considérés comme étant dans leur propre transaction.
-   Envisagez de faire plusieurs instructions dans un seul bloc de
-   transaction. Ceci réduira la surcharge apportée par les transactions.
-   Aussi, envisagez d'abandonner et de recréer des index lors de grosses
-   modifications de données.
-   
-   Il y a plusieurs options d'optimisations. Vous pouvez désactiver
-   fsync() en lançant postmaster avec l'option -o -F. Ceci empêchera les
-   fsync()s d'écrire sur disque après toute transaction.
-   
-   Vous pouvez utiliser l'option -B de postmaster pour augmenter le
-   nombre de tampons de mémoire partagée utilisés par les processus
-   serveurs. Si vous fixez ce paramètre trop haut, postmaster ne se
-   lancera pas car vous avez dépassé la limite de votre noyau sur la
-   quantité de mémoire partagée. Chaque tampon fait 8 Ko et le choix par
-   défaut est de 64 tampons.
-   
-   Vous pouvez utiliser l'option serveur -S pour augmenter la quantité
-   maximale de mémoire utilisée par les processus serveurs pour des tris
-   temporaires. La valeur de -S est mesuré en kilooctets et le choix par
-   défaut est de 512 (c'est-à-dire 512 Ko).
-   
-   Vous pouvez utiliser la commande CLUSTER pour regrouper vos données en
-   tables pour correspondre à un index. Voir la page de manual CLUSTER
-   pour plus de détails.
-   
-    3.7) Quelles fonctionalités de déboguage sont disponibles ?
-    
-   PostgreSQL a plusieurs fonctionalités qui permettent de recueillir des
-   informations de statut qui peuvent être utile pour des intentions de
-   déboguage.
-   
-   D'abord, en lançant configure avec l'option --enable-cassert, beaucoup
-   d'assert()s surveillent le serveur et arrêtent le programme quand
-   quelque chose d'inattendu arrive.
-   
-   Postmaster et postgres ont tous deux plusieurs options de déboguage de
-   disponible. D'abord, quand vous lancez postmaster, vérifiez que vous
-   envoyez les sorties standard et d'erreur dans un fichier de traces
-   comme :
-    cd /usr/local/pgsql
-    ./bin/postmaster >server.log 2>&1 &
-
-   Ceci va créer un fichier server.log dans le répertoire racine de
-   PostgreSQL. Ce fichier contient des informations utiles sur les
-   problèmes ou erreurs rencontrés par le serveur. Postmaster dispose
-   d'une option -d qui permet de rapporter des informations encore plus
-   détaillées d'être rapportées. L'option -d prend un numéro qui spécifie
-   le niveau de déboguage. Faites attention au fait que des valeurs
-   élévées de niveau de déboguage génerent des fichiers de traces
-   volumineux.
-   
-   Si postmaster ne tourne pas, vous pouvez lancer le serveur postgres de
-   la ligne de commande et taper votre requête SQL directement. Ceci est
-   recommandé seulement pour des fonctions de déboguage. Notez qu'un
-   retour chariot termine la requête, pas un point-virgule. Si vous
-   compilez avec les symboles de déboguage, vous pouvez utiliser un
-   débogueur pour voir ce qui se passe. Parce que le serveur n'a pas été
-   lancé par postmaster, il ne tourne pas dans un environnement identique
-   et les problèmes d'interaction de verrouillage/serveur ne peuvent être
-   dupliqués.
-   
-   Si postmaster est en train de tourner, lancez psql dans une fenêtre
-   puis trouvez le PID du processus postgres utilisé par psql. Utilisez
-   un débogueur pour l'attacher au PID postgres. Vous pouvez mettre un
-   point d'arrêt dans le débogueur et envoyez des requêtes de psql. Si
-   vous déboguez le démarrage de postgres, vous pouvez mettre
-   PGOPTIONS="-W n", puis lancez psql. Ceci va retarder le démarrage de n
-   secondes pour que vous puissiez attacher un débogueur au processus,
-   fixer des points d'arrêt et continuer la séquence de démarrage.
-   
-   Le programme postgres a les options -s, -A et -t qui peuvent être
-   utile pour des mesures de déboguage et de performance.
-   
-   Vous pouvez compiler avec les options de performance pour voir quelles
-   fonctions prennent du temps d'exécution. Les fichiers de gestion du
-   serveur seront déposés dans le répertoire pgsql/data/base/nom_db. Les
-   fichiers de gestion clients seront mis dans le répertoire actuel du
-   client. Linux requiert une compilation avec -DLINUX_PROFILE pour une
-   meilleure gestion.
-   
-    3.8) Pourquoi est-ce que j'obtiens des messages Sorry, too many clients
-    quand je me connecte ?
-    
-   Vous pouvez augmenter la limite de postmaster sur le nombre de
-   processus serveur concurrents qu'il peut lancer.
-   
-   La limite par défaut est de 32 processus. Vous pouvez l'augmenter en
-   relançant postmaster avec une valeur -N appropriée ou en modifiant
-   postgresql.conf.
-   
-   Tenez compte du fait que si vous fixez -N plus grand que 32, vous
-   devez aussi augmenter -B au-dela de sa valeur par défaut 64 ; -B doit
-   valoir au moins deux fois -N et probablement plus pour une meilleure
-   performance. Pour de grand nombres de processus serveurs vous aurez
-   probablement aussi augmenter plusieurs parametres de configuration du
-   noyau Unix. Les choses a vérifier incluent la taille maximale des
-   blocs de mémoire partagée, SHMMAX ; le nombre maximal de sémaphores,
-   SEMMNS et SEMMNI ; le nombre maximal de processus, NPROC ; le nombre
-   maximal de processus par utilisateur, MAXUPRC ; et le nombre maximal
-   de fichiers ouverts, NFILE et NINODE. La raison pour laquelle
-   PostgreSQL a une limite sur le nombre de processus serveurs autorisés
-   est pour que votre système ne tombe pas à court de ressources.
-   
-    3.9) Que contient le répertoire pgsql_tmp ?
-    
-   Ce répertoire contient des fichiers temporaires générés par le moteur
-   de requête. Par exemple, si un tri doit être fait pour satisfaire un
-   ORDER BY et que ce tri requiert plus de place que le paramètre -S du
-   serveur n'autorise, alors des fichiers temporaires seront créés pour
-   contenir les données nécessaires.
-   
-   Les fichiers temporaires sont d'habitude effacés automatiquement mais
-   peuvent rester si un serveur s'arrête brutalement pendant un tri. Un
-   arrêt et un redémarrage de postmaster effacera les fichiers dans ces
-   répertoires.
-   
-    3.10) Pourquoi est-ce que j'ai besoin de faire une sauvegarde des bases et
-    de restaurer pour mettre a jour les versions de PostgreSQL ?
-    
-   L'équipe PostgreSQL ne fait que des changements mineurs entre des
-   versions mineurs, donc mettre à jour de 7.2 vers 7.2.1 ne nécessitera
-   pas de sauvegarde et de restauration. Par contre, les sorties majeures
-   (c'est-à-dire de 7.2 vers 7.3) changent souvent le format interne des
-   tables systèmes et des fichiers de données. Ces modifications sont
-   souvent complexes alors nous ne gardons pas de compatibilité
-   descendante pour les fichiers de données. Une sauvegarde exportera les
-   données dans un format générique qui peut ensuite être chargé dans le
-   nouveau format interne.
-   
-   Dans les sorties où le format sur disque ne change pas, le script
-   pg_upgrade peut être utilisé pour mettre à jour sans
-   sauvegarde/restauration. Les notes de sorties précisent si pg_upgrade
-   est disponible pour la sortie.
-   
-    3.11) Quels matériels dois-je utiliser ?
-    
-   Comme le matériel PC est compatible en grosse partie, les gens ont
-   tendance à croire que tous les matériels PC sont de même qualité. Ce
-   n'est pas le cas. La RAM ECC, le SCSI et les cartes-mère de qualité
-   sont plus fiables et ont de meilleurs performances qu'un matériel
-   moins coûteux. PostgreSQL fonctionnera sur à peu près tout matériel
-   mais si la fiabilité et la performance sont importantes pour vous, il
-   est rusé de bien considérer les options matérielles. Nos listes de
-   diffusion peuvent être utilisées pour discuter des options matériels.
-     _________________________________________________________________
-   
-                          Questions fonctionnelles
-                                      
-    4.1) Quelle est la différence entre curseur binaire et curseur normal ?
-    
-   Voir la page DECLARE du manuel pour une description.
-   
-    4.2) Comment faire un SELECT seulement sur les premières lignes d'une
-    requête ? Sur une ligne aléatoire ?
-    
-   Voir la page FETCH du manuel ou utiliser SELECT ... LIMIT....
-   
-   Il se peut que l'intégralité de la requête doive être évaluée, même si
-   vous voulez seulement les premières lignes. Envisagez d'utiliser une
-   requête avec une clause ORDER BY. S'il existe un index correspondant à
-   l'ORDER BY, PostgreSQL peut n'évaluer que les premières lignes, sinon
-   l'intégralité de la requête peut être évaluée, jusqu'à générer les
-   lignes désirées.
-   
-   Pour faire un SELECT sur une ligne aléatoire :
-    SELECT colonne
-    FROM table
-    ORDER BY random()
-    LIMIT 1;
-
-    4.3) Comment obtenir une liste des tables ou d'autres objets que je vois
-    dans psql ?
-    
-   Utilisez la commande \dt pour voir les tables dans psql. Pour une
-   liste complète de commandes à l'intérieur de psql, vous pouvez
-   utiliser \?. Autrement, vous pouvez lire le code source de psql dans
-   le fichier pgsql/src/bin/psql/describe.c. Il contient des commandes
-   SQL qui génèrent le contenu des commandes anti-slash de psql. Vous
-   pouvez aussi lancer psql avec l'option -E, afin qu'il imprime les
-   requêtes qu'il utilise pour exécuter les commandes que vous lui
-   passez. PostgreSQL fournit aussi une interface d'informations sur le
-   schéma compatible avec SQLi que vous pouvez interroger des
-   informations sur la base de données.
-   
-    4.4) Comment supprime-t-on une colonne d'une table, ou comment change-t-on
-    son type de données ?
-    
-   La fonction DROP COLUMN a été ajoutée dans la version 7.3 avec ALTER
-   TABLE DROP COLUMN. Pour les versions précédentes, vous pouvez faire :
-    BEGIN;
-    LOCK TABLE ancienne_table;
-    SELECT ...  -- sélectionnez toutes les colonnes sauf celle à supprimer
-    INTO TABLE nouvelle_table
-    FROM ancienne_table;
-    DROP TABLE ancienne_table;
-    ALTER TABLE nouvelle_table RENAME TO ancienne_table;
-    COMMIT;
-
-   Pour changer le type de données d'une colonne, faites :
-    BEGIN;
-    ALTER TABLE table ADD COLUMN nouvelle_colonne nouveau_type_de_donnees;
-    UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_de_donnees);
-    ALTER TABLE table DROP COLUMN ancienne_colonne;
-    COMMIT;
-
-   Après, vous pouvez faire VACUUM FULL tab pour récupérer l'espace
-   disque utilisé par les lignes expirées.
-   
-    4.5) Quelle est la taille maximale pour une ligne, une table, une base de
-    données ?
-    
-   Les limites sont :
-    Taille maximum pour une base de données     illimitée (il existe des basesde 32 To)
-    Taille maximum pour une table               32 To
-    Taille maximum pour une ligne               1,6 To
-    Taille maximum pour un champ                1 Go
-    Nombre maximum de lignes dans une table     illimité
-    Nombre maximum de colonnes dans une table   250-1600, selon le type de colonnes
-    Nombre maximum d'index sur une table        illimité
-
-   Bien sûr, ces valeurs ne sont pas vraiment illimitée, elles sont
-   limitées par l'espace disque disponible, ainsi que par l'espace de
-   mémoire et de swap. Les performances peuvent se dégrader si ces
-   valeurs sont inhabituellement grandes.
-   
-   La taille maximum des tables (32 To) ne nécessite pas que le système
-   d'exploitation supporte les grands fichiers. Les grandes tables sont
-   stockées sous forme de fichiers multiples de 1 Go, donc les limites de
-   taille du système de fichier ne sont pas importantes.
-   
-   La taille maximum des tables et le nombre maximum de colonnes peuvent
-   être quadriplés, si la taille des blocs par défaut est augmentée à
-   32 Ko.
-   
-    4.6) Combien d'espace disque faut-il pour stocker les données d'un fichier
-    texte typique ?
-    
-   Une base de données PostgreSQL peut utiliser jusqu'à cinq fois
-   l'espace nécessaire pour stocker les données d'un fichier texte.
-   
-   A titre d'exemple, considérez un fichier de 100 000 lignes, comportant
-   un entier et une chaîne de description sur chaque ligne. Supposons que
-   la chaîne soit longue en moyenne de 20 octets. Le fichier texte serait
-   de 2,8 Mo. La taille du fichier d'une base de données PostgreSQL peut
-   être estimée à 6,4 Mo :
-    32 octets: chaque ligne (approximation)
-    24 octets: un champ 'entier' et un champ 'texte'
-   + 4 octets: pointeur vers le tuple sur la page
-   ----------------------------------------
-    60 octets par ligne
-
-   La taille des pages de données dans PostgreSQL est de 8192 octets (8 KO), donc :
-
-   8192 octets par page
-   ----------------------   = 136 lignes par page de base de données (arrondi à l'entier inférieur)
-     60 octets par ligne
-
-   100000 lignes de données
-   -------------------------  =  735 pages de base de données (arrondi à l'entier supérieur)
-      128 lignes par page
-
-735 pages de base de données * 8192 octets par page  =  6 021 120 octets (6,4 Mo)
-
-   Les index utilisent moins d'espace, mais ils contiennent les données
-   indexées, ils peuvent donc également être grands.
-   
-   Les NULL sont stockés sous forme de bitmap, aussi utilisent-ils très
-   peu d'espace.
-   
-    4.7) Comment puis-je savoir quels index, tables, bases de données et
-    utilisateurs sont définis ?
-    
-   psql dispose de plusieurs commandes commençant par un anti-slash pour
-   retrouver ces informations. Utilisez \? pour les connaître. Il existe
-   aussi des tables systèmes, qui commencent par pg_ et qui les décrivent
-   également. Aussi, psql -l liste toutes les bases de données.
-   
-   Essayez également le fichier pgsql/src/tutorial/syscat.source. Il
-   illustre un grand nombre de commandes SELECT nécessaires pour
-   récupérer l'information des tables système de la base de données.
-   
-    4.8) Mes requêtes sont lentes ou ne font pas usage des index. Pourquoi ?
-    
-   Les index ne sont pas automatiquement utilisés par chaque requête. Ils
-   sont utilisés uniquement si la table est plus grande qu'une certaine
-   taille, et si la requête sélectionne seulement un faible pourcentage
-   des lignes de la table. Ceci est dû au fait qu'un accès disque
-   aléatoire causé par un parcours d'index peut être plus lent qu'une
-   simple lecture de la table, ou parcours séquentiel
-   
-   Pour déterminer si un index devrait être utilisé, PostgreSQL a besoin
-   des statistiques de la table. Ces statistiques sont collectées en
-   lançant VACUUM ANALYZE ou simplement ANALYZE. Avec les statistiques,
-   l'optimiseur sait combien de lignes se trouvent dans la table et peut
-   mieux déterminer s'il faut utiliser l'index. Les statistiques sont
-   également utiles pour déterminer l'ordre optimal des opérations de
-   jointure. La collecte des statistiques devrait être effectuée
-   régulièrement lorsque le contenu de la table change.
-   
-   Les index ne sont normalement pas utilisés pour les clauses ORDER BY
-   ou pour les jointures. Un parcours séquentiel suivi d'un tri explicite
-   est habituellement plus rapide qu'un parcours d'index pour une table
-   importante. Toutefois, LIMIT combiné avec ORDER BY utilisera souvent
-   un index parce que seulement une petite partie de la table est
-   renvoyée. En fait, bien que MAX() et MIN() n'utilisent pas les index,
-   il est possible de retrouver ces valeurs en utilisant un index avec
-   ORDER BY et LIMIT :
-    SELECT colonne
-    FROM table
-    ORDER BY colonne [ DESC ]
-    LIMIT 1;
-
-   Si vous pensez que l'optimiseur choisit par erreur un parcours
-   sequentiel, utilisez SET enable_seqscan TO 'off' et lancez des tests
-   pour voir si le parcours d'index est effectivement plus rapide.
-   
-   Lorsque vous utilisez des caractères joker tels que LIKE ou ~, les
-   index peuvent seulement être utilisés dans certaines circonstances :
-     * Le début de la chaîne de recherche doit être ancré au départ de la
-       chaîne, c'est-à-dire
-          + Les modèles pour LIKE ne doivent pas commencer par %.
-          + Les modèles d'expression régulière pour ~ doivent commencer
-            par ^.
-     * La chaîne de recherche ne peut pas commencer par une classe de
-       caractères, c'est-à-dire [a-e].
-     * Les recherches sans casse comme ILIKE et ~* n'utilisent pas les
-       index. Utilisez plutôt les index fonctionnels, décrit dans la
-       section 4.12.
-     * La locale C par défaut doit être utilisée lors de initdb.
-       
-   Dans les versions antérieures à la 8.0, les indexs ne peuvent souvent
-   pas être utilisés sauf si les types de données correspondent
-   exactement au type de la colonne de l'index. Ceci est particulièrement
-   vrai pour les index de colonnes de type int2, int8 et numeric.
-   
-    4.9) Comment puis-je savoir si l'optimiseur évalue mes requêtes ?
-    
-   Voir la page EXPLAIN du manuel.
-   
-    4.10) Qu'est-ce qu'un index R-tree ?
-    
-   Un index R-tree est utilisé pour l'indexation des données spatiales.
-   Un index de hachage ne permet pas les recherches par plage. Un index
-   B-tree peut seulement faire des recherches sur une dimension. Les
-   index R-tree peuvent traiter des données multi-dimensionnelles. Par
-   exemple, si un index R-tree peut être construit sur un attribut de
-   type point, le système peut plus efficacement gérer les requêtes du
-   type "Sélection de tous les points d'un rectangle".
-   
-   L'article de référence qui décrit le système R-tree original est :
-   
-   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.
-   
-   Vous pouvez également trouver ce papier dans le livre de Stonebraker
-   "Readings in Database Systems".
-   
-   Les index R-tree intégrés peuvent prendre en charge les polygônes et
-   les boîtes. En théorie, les R-trees peuvent être étendus à un plus
-   grand nombre de dimensions. En pratique, l'extension des R-trees
-   requiert pas mal de travail et nous n'avons pour le moment aucune
-   documentation sur la façon de procéder.
-   
-    4.11) Qu'est-ce que l'optimiseur génétique de requêtes ?
-    
-   Le module GEQO (acronyme de GEnetic Query Optimizer) accélère
-   l'optimisation des requêtes lors de jointures de nombreuses tables par
-   un algorithme génétique (GA). Il permet la gestion des grosses
-   requêtes de jointures en utilisant une recherche non exhaustive.
-   
-    4.12) Comment puis-je réaliser des recherches sur des expressions
-    rationnelles ainsi que des recherches non sensibles à la casse ? Comment
-    puis-je utiliser un index lors de recherches non sensibles à la casse ?
-    
-   L'opérateur ~ réalise des recherches d'expressions rationnelles et ~*
-   le fait sans tenir compte de la casse. La variante de LIKE non
-   sensible à la casse est ILIKE.
-   
-   Des comparaisons d'égalité non sensibles à la casse sont
-   habituellement exprimées de cette façon :
-    SELECT *
-    FROM table
-    WHERE lower(colonne) = 'abc';
-
-   Ceci n'utilisera pas un index standard. Néanmoins, si vous créez un
-   index fonctionnel, celui-ci sera utilisé :
-    CREATE INDEX tableindex ON table (lower(colonne));
-
-    4.13) Comment puis-je détecter si un champ est NULL dans une requête ?
-    
-   Il vous suffit de tester la colonne avec IS NULL ou IS NOT NULL.
-   
-    4.14) Quelle sont les différences entre les nombreux types de caractères ?
-    
-Type            Nom interne     Notes
---------------------------------------------------
-VARCHAR(n)      varchar         n spécifie la taille maximum, sans remplissage
-CHAR(n)         bpchar          des espaces sont ajoutés pour obtenir la
-                                longueur fixe spécifiée
-TEXT            text            pas de limite supérieure pour la taille
-BYTEA           bytea           tableau d'octets (accepte les octets nuls)
-"char"          char            un caractère
-
-   Vous verrez le nom interne en examinant les catalogues système et dans
-   quelques messages d'erreur.
-   
-   Les quatres premiers types du dessus sont des types "varlena"
-   (c'est-à-dire que les quatre premiers octets correspondent à la
-   taille, suivi des données). Donc, l'espace réellement utilisé est
-   légèrement plus grand que la taille déclarée. Néanmoins, ces types de
-   données sont aussi sujet à la compression ou à un enregistrement en
-   dehors de la table avec TOAST, donc l'espace occupé sur disque
-   pourrait aussi être moindre que ce qu'on pourrait attendre.
-   
-   VARCHAR(n) est bien mieux pour enregistrer des chaînes de longueurs
-   variables tout en limitant la taille de cette chaîne. TEXT est utile
-   pour les chaînes de longueur illimitée, avec malgré tout un maximum de
-   1 Go.
-   
-   CHAR(n) est intéressant pour stocker des chaînes de taille identique.
-   CHAR(n) complète avec des espaces pour arriver à la taille spécifiée
-   alors que VARCHAR(n) n'enregistre que les caractères donnés. BYTEA
-   sert à stocker des données binaires, particulièrement les données
-   incluant des octets NULL. Tous les types décrits ici ont des
-   performances similaires.
-   
-    4.15.1) Comment puis-je créer un champ série, c'est-à-dire s'incrémentant
-    automatiquement ?
-    
-   PostgreSQL supporte un type de données SERIAL. Il crée automatiquement
-   une séquence. Par exemple, ceci :
-    CREATE TABLE personne (
-        id  SERIAL,
-        nom TEXT
-    );
-
-   est automatiquement traduit en ceci :
-    CREATE SEQUENCE personne_id_seq;
-    CREATE TABLE personne (
-        id  INT4 NOT NULL DEFAULT nextval('personne_id_seq'),
-        nom TEXT
-    );
-
-   Voir la page man de create_sequence pour plus d'informations sur les
-   séquences. Vous pouvez aussi utiliser le champ OID de chaque ligne
-   comme valeur unique. Néanmoins, si vous avez besoin de sauvegarder
-   puis recharger la base de données, vous devrez utiliser l'option -o ou
-   l'option COPY WITH OIDS de pg_dump pour conserver les OIDs.
-   
-    4.15.2) Comment puis-je obtenir la valeur d'un SERIAL suite à une
-    insertion ?
-    
-   Une approche pour récupérer la prochaine valeur SERIAL à partir de
-   l'objet séquence est d'utiliser la fonction nextval() avant
-   l'insertion et de l'insérer ensuite explicitement. En utilisant la
-   table d'exemple de la section 4.15.1, un exemple dans un
-   pseudo-langage ressemblerait à ceci :
-    nouvelle_id = execute("SELECT nextval('personne_id_seq')");
-    execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
-
-   Vous pourriez ensuite utiliser la nouvelle valeur stockée dans
-   nouvelle_id avec d'autres requêtes (c'est-à-dire en tant que clé
-   étrangère de la table personne). Notez que le nom de la SEQUENCE
-   automatiquement créée sera <table>_<colonneserial>_seq, où table et
-   colonneserial sont les noms respectifs de votre table et de votre
-   colonne SERIAL.
-   
-   Autrement, vous pouvez récupérer la valeur SERIAL affectée avec la
-   fonction currval() après qu'elle ait été insérée par défaut,
-   c'est-à-dire,
-    execute("INSERT INTO personne (nom) VALUES ('Blaise Pascal')");
-    nouvelle_id = execute("SELECT currval('personne_id_seq')");
-
-   Enfin, vous pouvez utiliser l'OID renvoyé par l'instruction INSERT
-   pour récupérer la valeur par défaut bien que cela soit l'appoche la
-   moins portable et la valeur de l'OID se réinitialisera aux environs de
-   quatre milliards. En Perl, avec DBI et le module DBD:Pg d'Edmund
-   Mergl, l'ancienne valeur est disponible via $sth->{pg_oid_status}
-   après un $sth->execute().
-   
-    4.15.3) Est-ce que currval() et nextval() n'amènent pas des problèmes
-    lorsque plusieurs utilisateurs les lancent en même temps ?
-    
-   Non. currval() renvoie la valeur actuelle affectée par votre
-   processus, et non pas par tous les utilisateurs.
-   
-    4.15.4) Pourquoi mes numéros de séquences ne sont pas ré-utilisés lors
-    d'une annulation de transaction ? Pourquoi existe-t'il des trous dans la
-    numérotation de ma colonne séquentielle (SERIAL) ?
-    
-   Pour améliorer les accès concurrents, les valeurs de séquences sont
-   données aux transactions qui en ont besoin et ne sont pas bloquées
-   jusqu'à la fin de la transaction. Ceci crée des trous dans le
-   numérotage pour les transactions annulées.
-   
-    4.16) Qu'est-ce qu'un OID ? Qu'est-ce qu'un TID ?
-    
-   Les OID sont la réponse de PostgreSQL aux identifiants de lignes
-   uniques. Chaque ligne créée dans PostgreSQL obtient un OID unique.
-   Tous les OID générés pendant initdb sont inférieurs à 16384 (voir
-   include/access/transam.h). Tous les OID créés par un utilisateur sont
-   supérieurs ou égaux à ceci. Par défaut, tous ces OID sont uniques non
-   seulement dans une table ou une base mais unique à l'intérieur d'une
-   installation PostgreSQL entière.
-   
-   PostgreSQL utilise les OID dans ses tables système interne pour lier
-   les lignes entre tables. Ces OID peuvent être utilisés pour identifier
-   des lignes utilisateurs spécifiques et utilisés dans des jointures. Il
-   est recommandé que vous utilisiez le type de colonne OID pour stocker
-   des valeurs OID. Vous pouvez créer un index sur le champ OID pour un
-   accès plus rapide.
-   
-   Les OID sont attribués pour toute ligne d'un endroit central qui est
-   utilisé par toutes les bases de données. Si vous voulez changer l'OID
-   en quelque chose d'autre ou si vous voulez faire une copie de la table
-   avec les OID originaux, il n'y a pas de raisons pour ne pas le faire :
-    CREATE TABLE nouvelle_table (macolonne int);
-    SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
-    COPY table_temporaire FROM '/tmp/tablepg';
-    COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
-    DROP TABLE table_temporaire;
-
-   Les OID sont stockés en tant qu'entiers de quatre octets et
-   déborderont à quatre milliards. Personne n'a jamais rapporté un tel
-   cas et nous avons prévu de retirer la limite avant que cela ne se
-   produise.
-   
-   Les TIDs sont utilisés pour identifier des lignes physiques
-   spécifiques avec des valeurs de bloc et décalage. Les TID changent
-   après que les lignes aient été modifiés ou rechargés. Ils sont
-   utilisés par des entrées d'index pour pointer vers des lignes
-   physiques.
-   
-    4.17) A quoi correspond certains termes utilisés avec PostgreSQL ?
-    
-   Une partie du code source et de l'ancienne documentation utilisent des
-   termes dont l'usage est plus commun. Voici quelques exemples :
-     * table, relation, classe
-     * ligne (row), enregistrement (record), tuple
-     * colonne (column), champ (field), attribut
-     * récupère, sélectionne (select)
-     * remplace (replace), met à jour (update)
-     * ajoute (append), insère (insert)
-     * OID, valeur séquentielle (serial value)
-     * portal, curseur
-     * range variable, table name, table alias
-       
-   Une liste des termes généraux pour le domaine des bases de données est
-   disponible sur :
-   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
-   /glossary.html
-   
-    4.18) Pourquoi ai-je l'erreur ERROR: Memory exhausted in AllocSetAlloc() ?
-    
-   Vous manquez probablement de mémoire virtuelle sur votre système ou
-   votre noyau a une limite assez basse pour certaines ressources.
-   Essayez ceci avant de lancer postmaster :
-    ulimit -d 262144
-    limit datasize 256m
-
-   Suivant votre shell, seul un d'eux pourrait réussir mais cela
-   configurera d'une façon plus importante la taille du segment de
-   données de votre processus. Cette commande s'applique au processus
-   actuel et à tous les processus lancé par celui-ci. Si vous avez des
-   problèmes avec le client SQL parce que le processus serveur renvoie
-   trop de données, essayez ça avant de lancer le client.
-   
-    4.19) Comment puis-je connaître la version de PostgreSQL que j'utilise ?
-    
-   A partir de psql, tapez SELECT version();
-   
-    4.20) Pourquoi ai-je invalid large obj descriptor lors d'opérations sur des
-    gros objects ?
-    
-   Vous avez besoin de placer BEGIN WORK et COMMIT autour de chaque
-   utilisateur de gros objets, c'est-à-dire pour entourer lo_open ...
-   lo_close.
-   
-   Actuellement, PostgreSQL force cette règle en fermant les gros objets
-   lors de la transaction. Donc, le premier essai d'opérations sur ces
-   objets, fonctionnant habituellement (au moins la plupart du temps)
-   aura un invalid large obj descriptor. Donc le code, auparavant
-   fonctionnel (au moins la plupart du temps), génèrera maintenant un
-   message d'erreur si vous n'utilisez pas de transaction.
-   
-   Si vous utilisez une interface client interface comme ODBC, vous aurez
-   peut-être besoin de lancer auto-commit off.
-   
-    4.21) Comment puis-je créer une colonne qui aura par défaut l'heure
-    actuelle comme valeur ?
-    
-   Utilisez CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP );
-
-    4.22) Pourquoi mes sous-requêtes utilisant IN sont-elles si lentes ?
-    
-   Dans les versions précédant la 7.4, les sous-requêtes ont été jointes
-   avec des jointures externes en parcourant séquentiellement le résultat
-   de la sous-requête pour chaque ligne de la requête externe. Si la
-   sous-requête renvoit quelques lignes et que la requête externe en
-   renvoit plein, IN sera plus rapide. Pour accélérer les autres
-   requêtes, remplacez IN avec EXISTS :
-    SELECT *
-    FROM table
-    WHERE colonne IN (SELECT souscolonne FROM soustable);
-
-   to:
-    SELECT *
-    FROM table
-    WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
-
-   Pour que ceci soit rapide, souscolonne doit être une colonne indexée.
-   
-   A partir de la version 7.4, IN utilise actuellement les mêmes
-   techniques sophistiquées de jointures comme des requêtes normales et
-   est préféré à l'utilisation de EXISTS.
-   
-    4.23) Comment puis-je réaliser une jointure externe ?
-    
-   PostgreSQL supporte les jointures externes en utilisant la syntaxe SQL
-   standard. Voici deux exemples :
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   or
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   Ces requêtes identiques joignent t1.col à t2.col et renvoient toute
-   colonne non jointe de t1 (celles sans correspondance dans t2). Une
-   jointure droite (RIGHT join) ajoutera les lignes non jointes de t2.
-   Une jointure complète (FULL join) renverra les lignes correspondantes
-   ainsi que les lignes non jointes de t1 et t2. Le mot clé OUTER est
-   optionnelle et assumé dans le cas de jointure LEFT, RIGHT et FULL. Les
-   jointures ordinaires sont appelées des jointures INNER.
-   
-   Lors des précédentes versions, les jointures externes peuvent être
-   simulées en utilisant UNION et NOT IN. Par exemple, lors d'une
-   jointure de tab1 et tab2, la requête suivante réalise une jointure
-   externe, outer, des deux 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) Comment puis-je lancer des requêtes utilisant plusieurs bases de
-    données ?
-    
-   Il n'existe pas de moyens de lancer des requêtes sur une autre base
-   que la courante. Comme PostgreSQL charge des catalogues systèmes
-   spécifiques à la base de données, sa réaction aux requêtes inter-base
-   de données est incertaine.
-   
-   contrib/dblink permet les requêtes entre bases de données en utilisant
-   des fonctions. Bien sûr un client peut réaliser des connexions
-   simultanées à plusieurs bases de données et joindre les résultats du
-   côté client.
-   
-    4.25) Comment puis-je renvoyer plusieurs lignes ou colonnes à partir d'une
-    fonction?
-    
-   A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes
-   ou colonnes à partir d'une fonction,
-   http://techdocs.postgresql.org/guides/SetReturningFunctions.
-   
-    4.26) Pourquoi ne puis-je pas créer/supprimer des tables temporaires dans
-    les fonctions PL/PgSQL de façon stable ?
-    
-   PL/PgSQL cache le contenu des fonctions et un effet de bord malheureux
-   est que si une fonction PL/PgSQL accède à une table temporaire, que
-   cette table est ensuite supprimée et recréée, et que la fonction est
-   appelée de nouveau, la fonction échouera car le contenu de la fonction
-   cachée pointera toujours vers l'ancienne table temporaire. La solution
-   revient à utiliser EXECUTE pour l'accès aux tables temporaires avec
-   PL/PgSQL. Ceci obligera l'analyse de la requête à chaque fois.
-   
-    4.27) Quelles options de cryptage sont disponibles ?
-    
-     * contrib/pgcrypto contient de nombreuses fonctions de cryptage, à
-       utiliser dans des requêtes SQL.
-     * Pour crypter une transmission entre le client et le serveur, le
-       serveur doit avoir positionné l'option ssl à true dans
-       postgresql.conf, et un enregistrement applicable host ou hostssl
-       doit exister dans pg_hba.conf, et le sslmode du client ne doit pas
-       être désactivée. Notez qu'il est aussi possible d'utiliser un
-       transport crypté d'une troisième partie, tel que stunnel ou ssh,
-       plutôt que les connexions SSL natives de PostgreSQL.
-     * Les mots de passe des utilisateurs sont automatiquement cryptés
-       depuis la version 7.3. Pour les versions précédentes, vous devez
-       activer l'option PASSWORD_ENCRYPTION dans postgresql.conf.
-     * Le serveur peut fonctionner avec un système de fichiers cryptés.
-     _________________________________________________________________
-   
-                             Etendre PostgreSQL
-                                      
-    5.1) J'ai écrit une fonction utilisateur. Lorsque je l'exécute avec psql,
-    pourquoi cela finit-il avec un dump core ?
-    
-   Il peut y avoir plusieurs raisons. Essayez tout d'abord votre fonction
-   utilisateur dans un programme de test.
-   
-    5.2) Comment puis-je ajouter de bons nouveaux types ou fonctions à
-    PostgreSQL ?
-    
-   Envoyez vos extensions à la liste de diffusion pgsql-hackers, elles
-   atterriront éventuellement dans le sous-répertoire contrib/.
-   
-    5.3) Comment faire pour écrire une fonction C qui renvoie un tuple ?
-    
-   Dans les versions de PostgreSQL à partir de 7.3, les fonctions qui
-   renvoient une table sont totalement supportées en C, PL/PgSQL, et SQL.
-   Voir le Guide du Programmeur pour plus d'information. Un exemple de
-   fonction renvoyant une table définie en C se trouve à
-   contrib/tablefunc.
-   
-    5.4) J'ai modifié un fichier source. Pourquoi ma recompilation ne voit-elle
-    pas les modifications ?
-    
-   Les Makefiles n'ont pas les dépendances adéquates pour les fichiers
-   d'en-tête. Il vous faut faire make clean puis un autre make. Si vous
-   utilisez GCC, vous pouvez utiliser l'option --enable-depend de
-   configure pour que le compilateur calcule les dépendances
-   automatiquement.
diff --git a/doc/FAQ_german b/doc/FAQ_german
deleted file mode 100644 (file)
index 1459e5a..0000000
+++ /dev/null
@@ -1,978 +0,0 @@
-
-                  Häufig gestellte Fragen (FAQ) zu PostgreSQL
-                                       
-   Current maintainer: Bruce Momjian (bruce@momjian.us).
-   
-   Deutsche Übersetzung von Ian Barwick (barwick@gmail.com).
-   
-   Letzte Aktualisierung der deutschen Übersetzung: Fr., den 19.10.2007,
-   17:00 MEZ
-   
-   Die aktuellste Version dieses Dokuments liegt auf der
-   PostgreSQL-Website:
-     * http://www.postgresql.org/docs/faqs.FAQ.html (engl.)
-     * http://www.postgresql.org/docs/faqs.FAQ_german.html (dt.)
-       
-   Übersetzungen dieses Dokuments in anderen Sprachen sowie plattform-
-   spezifische FAQs können unter http://www.postgresql.org/docs/faq/
-   eingesehen werden.
-     _________________________________________________________________
-   
-                             Allgemeine Fragen
-                                      
-   1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
-   1.2) Wer kontrolliert PostgreSQL?
-   1.3) Welchem Copyright unterliegt PostgreSQL?
-   1.4) Auf welchen Plattformen läuft PostgreSQL?
-   1.5) Woher bekomme ich PostgreSQL?
-   1.6) Was ist die neueste Version von PostgreSQL?
-   1.7) Wo bekomme ich Support für PostgreSQL?
-   1.8) Wie kann ich einen Fehlerbericht abgeben?
-   1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
-   1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
-   1.11) Wie kann ich SQL lernen?
-   1.12) Wie kann ich im Entwicklerteam mitarbeiten?
-   1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
-   1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in
-   verschiedenen Ländern klar?
-   
-                        Fragen zu Benutzerprogrammen
-                                      
-   2.1) Welche Schnittstellen gibt es für PostgreSQL?
-   2.2) Wie kann man PostgreSQL mit einer Website nutzen?
-   2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
-   
-                           Administrative Fragen
-                                      
-   3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
-   3.2) Wie regle ich Zugriffe von anderen Rechnern?
-   3.3) Wie kann ich eine bessere Performanz erreichen?
-   3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
-   3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
-   Verbindung aufzubauen versuche. Warum?
-   3.6) Wie wird PostgreSQL aktualisiert?
-   3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
-   
-                             Fragen zum Betrieb
-                                      
-   4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen
-   bzw. eine beliebige Zeile in einer Abfrage aus?
-   4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder
-   Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
-   verwendeten Abfragen?
-   4.3) Wie ändere ich den Datentyp einer Spalte?
-   4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine
-   Datenbank?
-   4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer
-   typischen Textdatei abzuspeichern?
-   4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht.
-   Warum?
-   4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
-   Abfrage auswertet?
-   4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei
-   einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden?
-   Wie verwende ich einen Index bei solchen Suchabfragen?
-   4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
-   4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
-   4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung
-   des Wertes?
-   4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
-   4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
-   4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
-   nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
-   Sequenz-/SERIAL-Spalte?
-   4.12) Was ist ein OID? Was ist ein CTID?
-   4.13) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
-   AllocSetAlloc()"?
-   4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
-   läuft?
-   4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
-   aktuelle Uhrzeit enthalten soll?
-   4.16) Wie führe ich eine OUTER JOIN durch?
-   4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
-   4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
-   zurückgeben lassen?
-   4.19) Warum bekomme ich eine Fehlermeldung wie
-   "relation with OID ##### does not exist" wenn ich temporäre Tabellen
-   in
-   PL/PgSQL-Funktionen benutze?
-   4.20) Welche Replikationslösungen gibt es?
-   4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage
-   nicht erkannt? Warum werden Großbuchstaben umgewandelt?
-     _________________________________________________________________
-   
-                             Allgemeine Fragen
-                                      
-  1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
-  
-   Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
-   Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt.
-   (Für diejenigen, die es interessiert: eine MP3-Datei mit der
-   amerikanischen Aussprache befindet sich hier:
-   http://www.postgresql.org/files/postgresql.mp3
-   
-   PostgreSQL ist ein objektrelationales Datenbanksystem, das die Vorzüge
-   von kommerziellen Datenbanksystemen mit zukunftsweisenden Innovationen
-   kombiniert. PostgreSQL ist freie Software und dessen kompletter
-   Quellcode ist öffentlich verfügbar.
-   
-   Die PostgreSQL-Entwicklung wird von einem Team von meist freiwilligen
-   Entwicklern durchgeführt. Dieses Team ist für die Gesamtentwicklung
-   von PostgreSQL verantwortlich. Es handelt sich um ein
-   Gemeinschaftsprojekt, das nicht von einer bestimmten Firma
-   kontrolliert wird. Lesen Sie die Entwickler-FAQ:
-   http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn Sie an einer
-   Mitarbeit interessiert sind.
-   
-  1.2) Wer kontrolliert PostgreSQL?
-  
-   Falls Sie nach dem Namen eines etwaigen Inhabers bzw. nach einem
-   allmächtigen Zentralkommittee suchen - sparen Sie sich die Mühe, sowas
-   existiert gar nicht. Es gibt zwar das "Core Committee" sowie
-   Entwickler, die CVS-Schreibberechtigung haben, jedoch haben diese
-   Gruppen eher nur eine administrative Rolle. Das Projekt wird durch die
-   Community gesteuert, die aus den Entwicklern sowie natürlich auch den
-   Nutzern besteht - jeder kann daran teilnehmen. (Lesen Sie die
-   Entwickler-FAQ: http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn
-   Sie an der PostgreSQL-Entwicklung teilnehmen möchten).
-   
-  1.3) Welchem Copyright unterliegt PostgreSQL?
-  
-   PostgreSQL wird unter der klassischen BSD-Lizenz herausgegeben. Im
-   Grunde genommen erlaubt diese den Nutzern, beliebig mit dem Code
-   umzugehen, auch der Weiterverkauf von Binärversionen ohne Quellcode
-   ist erlaubt. Die einzige Einschränkung besteht darin, dass PostgreSQL
-   auf keinen Fall für etwaige Probleme mit der Software haftet. Außerdem
-   muß der Copyright- Text in allen Kopien der Software enthalten sein.
-   Dies ist der Originaltext der BSD-Lizenz:
-   
-   PostgreSQL Data Base Management System
-   
-   Portions Copyright (c) 1996-2009, 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.
-   
-   Es gilt die Copyright-Klausel im Original!
-   
-  1.4) Auf welchen Plattformen läuft PostgreSQL?
-  
-   Normalerweise kann PostgreSQL auf jeder modernen UNIX-kompatiblen
-   Plattform eingesetzt werden. Diejenigen Plattformen, die bei der
-   jeweiligen Versionsfreigabe getestet wurden, sind in den
-   Installationsanleitungen aufgelistet.
-   
-   PostgreSQL läuft auch auf Microsoft NT-basierten Betriebssystemen wie
-   Windows 2000 SP4, XP und Server 2003. Ein vorgefertigtes
-   Installationspaket kann von http://pgfoundry.org/projects/pginstaller
-   heruntergeladen werden. DOS-basierte Windows-Versionen (Win95, Win98,
-   WinMe) können PostgreSQL nur mit Hilfe der Cygwin-Umgebung ausführen.
-   
-   Eine Portierung für Novell Netware 6 gibt es unter
-   http://forge.novell.com sowie eine OS/2 (eComStation) version unter
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F.
-   
-  1.5) Woher bekomme ich PostgreSQL?
-  
-   Per Web-Browser hier: http://www.postgresql.org/ftp/ und per FTP hier:
-   ftp://ftp.postgresql.org/pub/.
-   
-  1.6) Was ist die neueste Version von PostgreSQL?
-  
-   Die neueste Version von PostgreSQL ist 8.2.5.
-   
-   Die Freigabe einer neuen Hauptversion erfolgt in der Regel jährlich,
-   kleinere Korrekturversionen alle paar Monaten.
-   
-  1.7) Wo bekomme ich Support für PostgreSQL?
-  
-   Die PostgreSQL-Community bietet Unterstützung per Mailing-Liste. Die
-   Web-Seite http://www.postgresql.org/community/lists/ bietet einen
-   Überblick. Die Listen general und bugs bieten einen guten Einstieg.
-   
-   Eine deutschsprachige Mailing-Liste gibt es hier:
-   http://archives.postgresql.org/pgsql-de-allgemein/.
-   
-   Der wichtigsten IRC-Channel ist #postgresql auf Freenode
-   (irc.freenode.net). Unter UNIX/Linux können Sie mit z.B. irc -c
-   '#postgresql' "$USER" irc.freenode.net. daran teilnehmen. Auf Freenode
-   gibt es einen spanischsprachigen Channel #postgresql-es, einen
-   französischen, #postgresqlfr sowie einen brasilianischen,
-   #postgresql-br . Es gibt außerdem einen PostgreSQL-Channel bei EFNet.
-   
-   Eine Liste von Unternehmen, die Support für PostgreSQL auf
-   kommerzieller Basis leisten, kann unter
-   http://www.postgresql.org/support/professional_support eingesehen
-   werden.
-   
-  1.8) Wie kann ich einen Fehlerbericht abgeben?
-  
-   Nutzen Sie das Formular unter
-   http://www.postgresql.org/support/submitbug. Schauen Sie aber vorher
-   unter ftp://ftp.postgresql.org/pub/ nach, ob es mittlerweile eine
-   neuere PostgreSQL-Version gibt, in der der Fehler behoben wurde.
-   
-   Bugs, die über das Formular bzw. eine der Mailing-Listen
-   bekanntgegeben wurden, erhalten typischerweise einer der folgenden
-   Reaktionen:
-     * es ist kein Bug, der Grund wird benannt
-     * es ist ein bereits bekannter Bug, der bereits auf der TODO-Liste
-       aufgenommen wurde
-     * der Bug wurde in der aktuellen Version behoben
-     * der Bug wurde bereits behoben, befindet sich aber noch nicht in
-       einer offiziell veröffentlichten Version
-     * es wird um eingehendere Informationen gebeten, z.B.:
-          + Betriebssystem
-          + PostgreSQL-Version
-          + reproduzierbarer Fallbeispiel
-          + Debugging-Information
-          + Debugger-Backtrace-Ausgabe
-     * der Bug ist neu. Folgendes könnte passieren:
-          + ein Patch wird erstellt und in der nächsten Version
-            eingebaut;
-          + oder der Bug kann nicht sofort behoben werden und wird auf
-            die TODO-Liste gesetzt
-       
-  1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
-  
-   PostgreSQL unterstützt eine erweiterte Teilmenge von SQL:2003. Siehe
-   unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
-   für eine Auflistung der bekannten Bugs, fehlenden Features und
-   zukünftigen Pläne.
-   
-   Eine Anfrage nach einem neuen Feature führt normalerweise zu einer der
-   folgenden Antworten:
-     * das Feature ist bereits auf der TODO-Liste
-     * das Feature ist nicht wünschenswert, weil:
-          + es vorhandene Funktionalität dupliziert, welche bereits dem
-            SQL-Standard folgt
-          + es würde die Komplexität der Code-Basis erhöhen, ohne
-            nennenswerte Vorteile zu bringen
-          + es wäre unsicher bzw. unzuverlässig
-     * das neue Feature wird der TODO-Liste hinzugefügt
-       
-   PostgreSQL verwendet kein Bugtracking-System, da es sich als
-   effizienter erwiesen hat, E-Mails direkt zu beantworten und die
-   TODO-Liste aktuell zu halten. In der Praxis werden Bugs sehr schnell
-   beseitigt, und diejenigen Bugs, die Auswirkungen auf eine große Anzahl
-   von Nutzern haben, werden meist kurzfristig korrigiert. Der einzige
-   Überblick über alle Änderungen, Verbesserungen und Korrekturen in
-   einer PostgreSQL-Version befindet sich in den CVS-Log-Meldungen. Auch
-   die Release-Notes listen nicht jede Änderung in der Software auf.
-   
-  1.10) Welche Dokumentation ist für PostgreSQL verfügbar?
-  
-   PostgreSQL bietet umfangreiche Dokumentation, darunter ein großes
-   Handbuch, man-Pages und einige kleine Testprogramme. Siehe das /doc-
-   Verzeichnis. Ausserdem sind alle Handbücher online unter
-   http://www.postgresql.org/docs/ verfügbar.
-   
-   Zwei Bücher zu PostgreSQL sind online verfügbar unter
-   http://www.postgresql.org/docs/books/awbook.html und
-   http://www.commandprompt.com/ppbook/ .
-   
-   Eine Liste lieferbarer PostgreSQL-Bücher befindet sich unter
-   http://www.postgresql.org/docs/books Diverse technische Artikel
-   befinden sich unter http://www.postgresql.org/docs/techdocs .
-   
-   psql hat einige nützliche \d-Befehle, um Informationen über Typen,
-   Operatoren, Funktionen, Aggregate, usw. zu zeigen.
-   
-   Die PostgreSQL-Website enthält noch mehr Dokumentation.
-   
-  1.11) Wie kann ich SQL lernen?
-  
-   Die oben erwähnten PostgreSQL-spezifische Bücher bieten einen guten
-   Einstieg. Viele PostgreSQL-Anwender mögen "The Practical SQL Handbook"
-   (Bowman et al., Addison Wesley). Andere dagegen mögen "The Complete
-   Reference SQL" (Groff et al., McGraw-Hill).
-   
-   Es gibt ausserdem einige nützliche Online-Tutorials:
-     * http://www.intermedia.net/support/sql/sqltut.shtm
-     * http://sqlcourse.com
-     * http://www.w3schools.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12) Wie kann ich im Entwicklerteam mitarbeiten?
-  
-   Lesen Sie in der Entwickler-FAQ unter
-   http://www.postgresql.org/docs/faqs.FAQ_DEV.html nach.
-   
-  1.13) Wie läuft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
-  
-   Es gibt verschiedene Methoden, Software zu messen: Eigenschaften,
-   Performanz, Zuverlässigkeit, Support und Preis.
-   
-   Eigenschaften
-          PostgreSQL besitzt die meisten Eigenschaften - wie
-          Transaktionen, Unterabfragen (Subqueries), Trigger, Views,
-          referenzielle Integrität bei Fremdschlüsseln und verfeinertes
-          Locking - die bei großen kommerziellen DBMS vorhanden sind. Es
-          bietet außerdem einige anderen Eigenschaften, die diese nicht
-          immer haben, wie benutzerbestimmte Typen, Vererbung, Regeln,
-          und die Multi-Versionen-Steuerung zum Verringern
-          konkurrierender Locks.
-          
-   Performanz
-          Die Performanz von PostgreSQL ist mit der von kommerziellen und
-          anderen Open-Source-Datenbanken vergleichbar. In manchen
-          Bereichen ist es schneller, in anderen langsamer. In der Regel
-          beträgt der Unterschied +/-10%.
-          
-   Zuverlässigkeit
-          Es ist selbstredend, dass ein DBMS wertlos ist, wenn es nicht
-          zuverlässig arbeitet. Daher bemühen wir uns, nur streng
-          geprüften und beständigen Code freizugeben, der nur ein Minimum
-          an Programmfehlern aufweist. Jede Freigabe hat mindestens einen
-          Monat Betatest-Phase hinter sich, und unsere Freigabehistorie
-          beweist, dass wir stabile und solide Versionen freigeben, die
-          im Produktionsbetrieb genutzt werden können. Wir glauben, dass
-          wir im Vergleich mit anderer Datenbanksoftware vorteilhaft
-          dastehen.
-          
-   Support
-          Unsere Mailinglisten bieten die Möglichkeit, gemeinsam mit
-          einer großen Gruppe von Entwicklern und Benutzern mögliche
-          Probleme zu lösen. Wir können nicht immer eine Fehlerbehebung
-          garantieren, kommerzielle DBMS tun dies aber auch nicht. Der
-          direkte Kontakt zur Entwickler- und Benutzergemeinschaft und
-          der Zugriff auf die Handbücher und den Quellcode ermöglicht
-          einen im Vergleich zu anderen DBMS höherwertigeren Support. Es
-          gibt jedoch auch Anbieter von kommerziellen Support-Leistungen
-          (siehe FAQ-Punkt 1.7).
-          
-   Preis
-          PostgreSQL ist frei verfügbar, sowohl für die kommerzielle wie
-          auch für die nicht-kommerzielle Nutzung. Sie können den
-          PostgreSQL-Code ohne Einschränkungen (außer denjenigen, die in
-          der oben angegebene BSD-artigen Lizenz erwähnt werden) in Ihr
-          Produkt integrieren.
-          
-  1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in verschiedenen
-  Ländern klar?
-  
-   Änderungen bei der US-Sommerzeit sind ab PostgreSQL Version 8.0.4
-   berücksichtigt. Änderungen in Canada und Western Australia sind ab
-   8.0.10 bzw. 8.1.6 berücksichtigt. PostgreSQL-Versionen vor 8.0 nutzen
-   die Zeitzonendatenbank des Betriebssystems, um die Sommerzeit zu
-   berechnen.
-   
-                        Fragen zu Benutzerprogrammen
-                                      
-  2.1) Welche Schnittstellen gibt es für PostgreSQL?
-  
-   Die PostgreSQL-Installation stellt nur Schnittstellen für C und
-   Embedded C bereit. Alle weitere Schnittstellen sind unabhängige
-   Projekte, die einzeln heruntergeladen werden werden müssen. Diese
-   Trennung ermöglicht individuelle Entwickler-Teams und
-   Entwicklungszyklen für die jeweiligen Projekte.
-   
-   Einige Programmiersprachen wie PHP haben eine PostgreSQL-
-   Schnittstelle bereits eingebaut. Schnittstellen für Sprachen wie Perl,
-   TCL, Python und viele anderen sind unter http://gborg.postgresql.org
-   im Bereich Drivers/Interfaces verfügbar sowie per Internet-Suche.
-   
-  2.2) Wie kann man PostgreSQL in einer Website nutzen?
-  
-   Eine nette Einführung zu datenbank-gestützten Webseiten kann unter
-   http://www.webreview.com (engl.) eingesehen werden.
-   
-   Für die Web-Integration ist PHP eine ausgezeichnete Schnittstelle. PHP
-   gibt es bei http://www.php.net
-   
-   Für komplexere Aufgaben bietet sich die Perl-Schnittstelle mit CGI.pm
-   oder mod_perl.
-   
-  2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
-  
-   Es gibt eine große Anzahl von GUI-Programmen für PostgreSQL - sowohl
-   kommerziell als auch Open-Source. Eine ausführliche Liste befindet
-   sich unter http://www.postgresql.org/docs/techdocs.54 .
-     _________________________________________________________________
-   
-                           Administrative Fragen
-                                      
-  3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
-  
-   Bei der Ausführung von configure die Option --prefix mit dem
-   Zielverzeichnis angeben.
-   
-  3.2) Wie regle ich Zugriffe von anderen Rechnern?
-  
-   PostgreSQL ist standardmäßig so eingestellt, dass Verbindungen nur vom
-   lokalen Rechner über Unix Domain Sockets bzw. TCP/IP möglich sind.
-   Verbindungen von anderen Rechnern werden erst dann ermöglicht, wenn
-   Sie in der Datei postgresql.conf die Einstellung listen_addresses
-   anpassen, in der Datei $PGDATA/pg_hba.conf host-basierte
-   Authentifizierung einschalten und den Server neu starten.
-   
-  3.3) Wie kann ich eine bessere Performanz erreichen?
-  
-   Es gibt drei große Bereiche, in denen Performanzverbesserungen erzielt
-   werden können:
-   
-   Abfrageoptimierung
-          Die Modifizierung von Abfragen kann eine bessere Performanz
-          erzielen:
-          
-          + Erstellung von Indexen, einschliesslich partieller Indexe
-            sowie Expressionsindexe
-          + Einsatz von COPY anstelle multipler INSERT-Anweisungen
-          + Gruppierung von mehreren Abfragen innerhalb einer
-            Transaktion, um Aufwand beim Abschluss von Transaktionen
-            einzusparen
-          + Einsatz von CLUSTER beim Holen von einer großen Anzahl von
-            Datenreihen aus einem Index
-          + Einsatz von LIMIT, um eine Untermenge der Abfragen-
-            ergebnisse zurückzuliefern
-          + Einsatz von vorbereiteten Befehlen (prepared queries)
-          + Einsatz von ANALYZE, um die Datenbankstatistik für den
-            Abfragenplaner aktuell zu halten
-          + Regelmäßiger Einsatz von VACUUM bzw. pg_autovacuum
-          + Bei großen Datenveränderungen die Löschung von Indexen
-            
-   Server-Konfiguration
-          Einige Einstellungen in der Datei postgresql.conf wirken auf
-          die Performanz aus. Das Handbuch enthält unter
-          http://www.postgresql.org/docs/current/static/runtime-config.ht
-          ml eine komplette Auflistung. Kommentare zu den jeweiligen
-          Einstellungen gibt es unter
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
-          nf_e.html und
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-          
-   Hardware-Auswahl
-          Die Auswirkung von Hardware auf Performanz wird unter
-          http://momjian.us/main/writings/pgsql/hw_performance/index.html
-          und http://www.powerpostgresql.com/PerfList/ erläutert.
-          
-  3.4) Welche Debugging-Funktionen sind für PostgreSQL verfügbar?
-  
-   Unter den Optionen für die Server-Konfigurierung gibt es zahlreiche
-   log_*-Variablen, die die Ausgabe von Abfrage- und Prozessstatistiken
-   ermöglichen. Diese können für Debugging-Zwecke sowie Performanz-Tests
-   sehr nützlich sein.
-   
-  3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
-  Verbindung aufzubauen versuche. Warum?
-  
-   Ihr System hat die maximal zulässige Anzahl von Datenbankverbindungen
-   erreicht (Voreinstellung 100). Sie müssen die maximale Anzahl der
-   gleichzeitig ausführbaren Backend-Prozesse hochsetzen, indem Sie in
-   postgresql.conf den Wert max_connections ändern und den Server
-   neustarten.
-   
-  3.6) Wie wird PostgreSQL aktualisiert?
-  
-   Allgemeine Informationen zur Aktualisierung von PostgreSQL gibt es auf
-   der Seite http://www.postgresql.org/support/versioning. Detaillierte
-   technische Informationen gibt es auf der Seite
-   http://www.postgresql.org/docs/current/static/install-upgrading.html
-   
-  3.7) Welche Hardware eignet sich für den Betrieb mit PostgreSQL?
-  
-   PostgreSQL läuft auf fast jeder Hardware-Kombination. Im PC-Bereich
-   gibt es allerdings sehr große Abweichungen in der Qualität. Für einen
-   Arbeitsplatz- oder Entwicklungsrechner mag dies nicht so bedeutend
-   sein, im Server-Betrieb jedoch lohnt sich auf jeden Fall die
-   Investition in teurere Bestandteile (Stichwörter ECC-Speicher, SCSI,
-   Hauptplatinen und Netzteile von namhaften Herstellern). Nutzen Sie
-   unsere Mailing-Listen, um Hardware-Optionen zu diskutieren.
-     _________________________________________________________________
-   
-                             Fragen zum Betrieb
-                                      
-  4.1) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw. eine
-  beliebige Zeile in einer Abfrage aus?
-  
-   Wenn Sie bei der Ausführung der Abfrage die Anzahl der anzufordenden
-   Reihen bereits kennen, nutzen Sie LIMIT. Wenn die ORDER BY- Anweisung
-   mit einem Index verwendet wird, ist es möglich, dass die gesamte
-   Abfrage nicht ausgeführt werden muss. Wenn Sie die Anzahl der der
-   anzufordenden Reihen nicht kennen, verwenden Sie einen Cursor und
-   FETCH.
-   
-   Um eine beliebige Zeile auszuwählen, nutzen Sie ORDER BY random():
-       SELECT spalte
-         FROM tabelle
-     ORDER BY random()
-        LIMIT 1
-
-
-  4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder Benutzer
-  in der Datenbank definiert sind? Wie bekomme ich die von psql verwendeten
-  Abfragen?
-  
-   In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere
-   psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei
-   pgsql/src/bin/psql/describe.c mit dem Quellcode für psql ansehen. Sie
-   enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen.
-   Sie können psql auch mit der -E Option starten. Danach gibt psql die
-   Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem
-   biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das
-   Metainformation über die Datenbank zur Verfügung stellt.
-   
-   Mit psql -l können Sie alle Datenbanken anzeigen lassen.
-   
-   Die Datei pgsql/src/tutorial/syscat.source enthält außerdem viele
-   SELECT- Abfragen, mit deren Hilfe man Information über die
-   Systemtabellen erhalten kann.
-   
-  4.3) Wie ändere ich den Datentyp einer Spalte?
-  
-   Ab Version 8.0 kann der Datentyp einer Spalte mit ALTER TABLE ALTER
-   COLUMN TYPE geändert werden, sofern der neue Datentyp die Werte des
-   alten Datentype aufnehmen kann.
-   
-   Bei früheren Versionen gehen Sie wie folgt vor:
-       BEGIN;
-       ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
-       UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
-       ALTER TABLE tabelle DROP COLUMN alte_spalte;
-       COMMIT;
-
-
-   Um den Speicherplatz freizugeben, der von der gelöschten Spalte
-   verwendet wurde, führen Sie VACUUM FULL aus.
-   
-  4.4) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine Datenbank?
-  
-   Es bestehen folgende Obergrenzen:
-    Maximale Größe eine Datenbank?           unbeschränkt (es existieren
-                                               Datenbanken mit 32 TB)
-    Maximale Größe einer Tabelle?            32 TB
-    Maximale Größe einer Zeile?              400 GB
-    Maximale Größe einer Spalte?             1 GB
-    Maximale Anzahl von Zeilen in einer Tabelle?
-                                             unbeschränkt
-    Maximale Anzahl von Spalten in einer Tabelle?
-                                             250-1600 je nach Spaltentyp
-    Maximale Anzahl von Indexen für eine Tabelle?
-                                             unbeschränkt
-
-   Selbstverständlich sind dies theoretische Werte, die oft durch die
-   verfügbaren Platten- und Speicherressourcen beschränkt werden. Extreme
-   Größen können zu Leistungseinbußen führen.
-   
-   Die maximale Tabellengröße von 32 TB benötigt keine
-   Large-File-Unterstützung im Betriebssystem. Große Tabellen werden in
-   Dateien mit einer Größe von je 1 GB aufgeteilt, wodurch etwaige
-   dateisystem-bedingte Beschränkungen nicht relevant sind.
-   
-   Die maximale Tabellengröße und die maximale Anzahl von Spalten können
-   vervierfacht werden, indem man die Default-Blockgröße auf 32 KB
-   heraufsetzt. Die Tabellengröße kann auch durch Tabellenpartitionierung
-   vergrößert werden.
-   
-   Eine Einschränkung ist, dass Indexe nur auf Spalten erstellt werden
-   können, die bis etwa 2.000 Zeichen groß sind. Um auf größere Spalten
-   eine UNIQUE-Constraint setzen zu können, nutzen Sie einen funktionalen
-   Index mit dem MD5-Hash-Wert der Spalte. Um innerhalb einer großen, mit
-   Text belegten Spalte suchen zu können, verwenden Sie einen
-   Volltext-Index.
-   
-  4.5) Wieviel Plattenplatz wird benötigt, um die Daten aus einer typischen
-  Textdatei abzuspeichern?
-  
-   Eine PostgreSQL-Datenbank kann beim Abspeichern einer einfachen
-   Textdatei bis zu fünfmal mehr Platz gegenüber der eigentlichen Größe
-   der Datei beanspruchen.
-   
-   Betrachten wir eine Datei mit 100.000 Zeilen mit einem Integer und
-   einer Textbeschreibung pro Zeile. Gehen wir davon aus, dass die
-   durchschnittliche Länge der Textbeschreibung 20 Byte beträgt. Die
-   einfache Datei würde 2,8 MB groß sein. Die Größe der
-   PostgreSQL-Datenbankdatei, die diese Daten enthält, liegt ungefähr bei
-   5,2 MB:
-    24 Bytes: jeder Zeilenkopf (ungefähr)
-   +24 Bytes: ein Integer-Feld und ein Textfeld
-   + 4 Bytes: Zeiger auf der Datenseite auf den Tupel
-   -----------------------------------------------
-    52 Bytes pro Zeile
-
-   Die Größe einer Datenseite in PostgreSQL beträgt 8192 Bytes (8 KB),
-   also:
-   8192 Bytes pro Seite
-   ---------------------   =  146 Zeilen pro Seite (abgerundet)
-     52 Bytes pro Zeile
-
-   100.000 Datenzeilen
-   ------------------------  =  685 Datenbankseiten (aufgerundet)
-       158 Zeilen pro Seite
-
-   633 Datenbankseiten * 8192 Bytes pro Seite  =  5,185,536 bytes (5,2 MB)
-
-   Indexe beanspruchen nicht so viel Platz. Da sie jedoch die Daten
-   beinhalten, die sie indizieren, können auch sie sehr groß werden.
-   
-   NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
-   Platz in Anspruch nehmen.
-   
-  4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. Warum?
-  
-   Indexe werden nicht automatisch bei jeder Abfrage verwendet. Indexe
-   werden nur dann verwendet, wenn die abzufragende Tabelle eine
-   bestimmte Größe übersteigt, und die Abfrage nur eine kleine
-   Prozentzahl der Tabellenzeilen abfragt. Der Grund hierfür ist der,
-   dass die durch einen Index verursachten Festplattenzugriffe manchmal
-   länger dauern würden als ein einfaches Auslesen aller Tabellenzeilen
-   (sequentieller Scan).
-   
-   Um festzustellen, ob ein Index verwendet werden soll, braucht
-   PostgreSQL Statistiken über die Tabelle. Diese Statistiken werden
-   durch die Anweisungen VACUUM ANALYZE bzw. ANALYZE berechnet. Anhand
-   der Statistiken kennt der Abfragenoptimierer die Anzahl der
-   Tabellenzeilen und kann besser entscheiden, ob Indexe verwendet werden
-   sollen. Statistiken sind auch bei der Ermittlung der optimalen
-   JOIN-Reihenfolgen und -Methoden wertvoll. Daher sollten diese
-   regelmässig durchgeführt werden, da sich der Inhalt einer Tabelle ja
-   auch verändert.
-   
-   Indexe werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs
-   verwendet. Ein sequentieller Scan mit anschließendem explizitem
-   Sortiervorgang ist normalerweise schneller als ein Index-Scan einer
-   großen Tabelle. Jedoch wird bei einer Abfrage, in der LIMIT zusammen
-   mit ORDER BY verwendet wird, oftmals ein Index verwendet, da nur ein
-   kleiner Abschnitt der Tabelle zurückgeliefert wird.
-   
-   Sollte es danach aussehen, also ob der Optimierer irrtümlich einen
-   sequentiellen Scan ausführt, führen Sie SET enable_seqscan TO 'off'
-   aus und prüfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
-   
-   Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, können Indexe
-   nur unter bestimmten Umständen verwendet werden:
-     * Das Suchmuster muss sich an Anfang des Strings befinden, d.h.:
-          + LIKE-Suchmuster dürfen nicht mit % anfangen;
-          + ~ (reguläre Ausdrücke) müssen mit ^ anfangen.
-     * Das Suchmuster darf nicht mit einer Zeichenklasse (z.B. [a-e])
-       beginnen.
-     * Suchmuster, die Gross- und Kleinschreibung nicht berücksichtigen
-       (z.B. ILIKE bzw. ~*), verwenden keine Indexe. Stattdessen können
-       funktionale Indexe verwendet werden, die im Punkt 4.8 beschrieben
-       werden.
-     * Die Standard-Locale "C" muss während der Datenbank-Initialisierung
-       mit initdb verwendet worden sein, da andere locales den
-       nächstgrößten Wert nicht ermitteln können. Es ist allerdings
-       möglich, einen besonderen text_pattern_ops-Index für solche Fälle
-       zu erstellen.
-       
-   In Versionen vor 8.0 werden Indexe oft nicht benutzt, wenn die
-   jeweiligen Datentypen nicht genau übereinstimmen. Dies gilt besonders
-   für Indexe auf Spalten mit den Datentypen INT2, INT8 und NUMERIC
-   
-  4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
-  Abfrage auswertet?
-  
-   Vgl. die EXPLAIN Man-Page.
-   
-  4.8) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer
-  Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende
-  ich einen Index bei solchen Suchabfragen?
-  
-   Der Operator ~ wendet einen regulären Ausdruck an und ~* wendet ihn
-   an, ohne die Groß- und Kleinschreibung zu beachten. Ebenso beachtet
-   LIKE die Groß- und Kleinschreibung, und ILIKE nicht.
-   
-   Gleichheitsvergleiche, die Groß- und Kleinschreibung ignorieren,
-   werden in der Regel so ausgedruckt:
-      SELECT *
-        FROM tabelle
-       WHERE LOWER(spalte) = 'abc'
-
-   Hier wird kein normaler Index benutzt. Legt man hingegen einen
-   funktionalen Index an, so wird er auf jeden Fall verwendet:
-      CREATE INDEX tabelle_index ON tabelle (LOWER(spalte))
-
-   Falls der obige Index als einen UNIQUE-Index angelegt wird, können
-   keine Werte in die Spalte eingefügt werden, die sich nur durch ihre
-   Groß- und Kleinschreibung unterscheiden. Um Fehler zu vermeiden muß
-   ein CHECK-Constraint oder ein Trigger eingesetzt werden.
-   
-  4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? Kann nach der
-  NULL-Belegung sortiert werden?
-  
-   Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL.
-      SELECT *
-        FROM tabelle
-       WHERE spalte IS NULL
-
-   Um die Spalte danach zu sortieren, ob sie mit NULL belegt ist oder
-   nicht, verwenden Sie die Bedingungen IS NULL bzw. IS NOT NULL in der
-   ORDER BY-Klausel. Da Bedingungen, die wahr sind, höher als das
-   Gegenteil sortiert werden, bewirkt die folgende Abfrage, dass die
-   NULL-Spalten zuerst gelistet werden:
-      SELECT *
-        FROM tabelle
-    ORDER BY (spalte IS NOT NULL)
-
-  4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
-  
-Typ           interner Name   Bemerkungen
--------------------------------------------------
-VARCHAR(n)    varchar         die Größe legt die Maximallänge fest; kein
-                              Auffüllen mit Leerzeichen
-CHAR(n)       bpchar          mit Leerzeichen gefüllt bis zur angegebenen Länge
-TEXT          text            keine obere Schranke für die Länge
-BYTEA         bytea           Bytearray mit variabler Länge (auch für
-                              '\0'-Bytes geeignet)
-"char"        char            1 Zeichen
-
-   Der interne Name kommt vor allem in den Systemkatalogen und in manchen
-   Fehlermeldungen vor.
-   
-   Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
-   geben die Länge an, gefolgt von den Daten). Daher ist der tatsächlich
-   belegte Platz immer etwas mehr als die deklarierte Feldgröße.
-   Allerdings wird unter Umständen auf diese Datentypen Datenkompression
-   durch das TOAST- Verfahren angewendet, womit der tatsächlich belegte
-   Platz auch geringer als erwartet ausfallen kann.
-   
-   Für die Speicherung von Zeichenketten variabler Länge empfiehlt sich
-   VARCHAR(n). Die maximale Länge eines VARCHAR(n)-Felds wird bei der
-   Tabellendefinition festgelegt. TEXT setzt keine Längengrenze,
-   allerdings gibt es eine systembedingte Obergrenze von 1 GB.
-   
-   CHAR(n) ist geeignet für die Speicherung von Zeichenketten, die alle
-   die gleiche Länge haben. Bitte beachten Sie, dass CHAR(n) automatisch
-   Zeichenketten bis zur definierten Feldlänge mit Leerzeichen ausfüllt,
-   während bei VARCHAR(n) nur die tatsächlich eingegebene Zeichenkette
-   gespeichert wird.
-   
-   BYTEA ist für binäre Daten, besonders für Werte, die NULL-Bytes haben.
-   
-   Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften
-   auf.
-   
-  4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
-  Wert?
-  
-   PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
-   eine Sequenz auf die angegebene Spalte. Zum Beispiel:
-      CREATE TABLE person (
-          id   SERIAL,
-          name TEXT
-      )
-
-   wird automatisch in:
-      CREATE SEQUENCE person_id_seq;
-      CREATE TABLE person (
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-      );
-
-   umgewandelt.
-   
-   Die create_sequence Man-Page liefert weitere Informationen über
-   Sequenzen.
-   
-  4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
-  
-   Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten
-   SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer
-   INSERT-Anweisung anzufordern und ihn dann explizit in die
-   INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.11.1
-   könnte dieser Vorgang in einer Pseudosprache so aussehen:
-    new_id = output of execute("SELECT nextval('person_id_seq')");
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-   Danach stünde der neue Wert in der Variablen new_id für die Verwendung
-   in weiteren Abfragen zur Verfügung, zum Beispiel als Fremdschlüssel
-   zur Tabelle 'person'). Bitte beachten Sie, dass der Name des
-   automatisch erstellten SEQUENCE-Objektes folgenden Name hat:
-   «table»_«serialcolumn»_seq wobei 'table' und 'serialcolumn' die Namen
-   der jeweils betreffenden Tabelle / Spalte darstellen.
-   
-   Als weitere Möglichkeit können Sie nach einer INSERT-Anweisung den
-   automatisch eingefügten SERIAL-Wert mit der currval()-Funktion
-   zurückgeben lassen:
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-    new_id = output of execute("SELECT currval('person_id_seq')");
-
-  4.11.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
-  
-   Nein. currval() liefert einen Wert zurück, der von Ihrer
-   Datenbank-Session bestimmt wird, und der anderen Sessionen nicht zur
-   Verfügung steht.
-   
-  4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
-  zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
-  Sequenz-/SERIAL-Spalte?
-  
-   Um die gleichzeitige Abarbeitung von Transaktionen zu verbessern,
-   werden Sequenzen gerade nicht für andere Transaktionen gesperrt,
-   sondern die Sequenznummern werden den laufenden Transaktionen sofort
-   zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene
-   Transaktionen verursacht.
-   
-  4.12) Was ist ein OID? Was ist ein CTID?
-  
-   Jede Zeile, die in PostgreSQL erzeugt wird, bekommt eine eindeutige
-   OID, sofern die Tabelle nicht mit der Option WITHOUT OIDS angelegt
-   wurde. OIDs sind automatisch zugewiesene 4-Byte-Integer, die innerhalb
-   der gesamten Datenbank einmalig sind. Allerdings laufen sie bei einem
-   Wert von ungefähr 4 Milliarden über. PostgreSQL verwendet OIDs, um
-   seine interne Systemtabellen zu verbinden.
-   
-   Um einmalige Idenfikatoren in Datentabellen zu erstellen, wird
-   allerdings empfohlen, statt OIDs Werte zu verwenden, die vonSERIAL-
-   Sequenzen erzeugt werden. SERIAL-Sequenzen sind innerhalb einer
-   Tabelle einmalig und daher weniger anfällig für Überläufe. Außerdem
-   können 8-Byte-Sequenzwerte mit SERIAL8 erzeugt werden.
-   
-   CTIDs werden benutzt, um bestimmte physikalische Zeilen durch Block
-   und Offset Werte zu identifizieren. CTIDs verändern sich, sobald
-   Zeilen verändert oder zurückgeladen werden. Sie werden in
-   Indexeinträgen benutzt um auf die physikalischen Zeilen zu zeigen.
-   
-  4.13) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
-  AllocSetAlloc()"?
-  
-   Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System
-   oder Ihr Kernel hat niedrige Höchstgrenzen für bestimmte Ressourcen.
-   Probieren Sie vor dem Start von postmaster folgendes:
-      ulimit -d 262144
-      limit datasize 256m
-
-   Je nach benutzter Shell wird nur einer dieser Befehle erfolgreich
-   ausgeführt werden. Auf jedem Fall wird die Grenze des Datensegments
-   für Prozesse erhöht werden und eventuell die erfolgreiche Ausführung
-   der Abfrage ermöglichen. Falls Sie ein Problem mit dem SQL-CLient
-   haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie
-   dies vor dem Start des SQL-Clients.
-   
-  4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft?
-  
-   Geben Sie in psql SELECT VERSION(); ein.
-   
-  4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
-  aktuelle Uhrzeit enthalten soll?
-  
-   Dazu verwenden Sie CURRENT_TIMESTAMP:
-      CREATE TABLE test (x INT, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) Wie führe ich eine OUTER JOIN durch?
-  
-   PostgreSQL unterstützt OUTER JOINs nach dem SQL- Standardsyntax. Hier
-   zwei Beispiele:
-      SELECT *
-        FROM tabelle_1 t1
-             LEFT OUTER JOIN tabelle_2 t2 ON (t1.spalte = t2.spalte)
-
-   bzw.:
-      SELECT *
-        FROM tabelle_1 t1
-             LEFT OUTER JOIN tabelle_2 t2 USING (spalte)
-
-   Diese identischen Abfragen verknüpfen tabelle_1 mit tabelle_2 über die
-   Spalte 'spalte' und geben außerdem alle unverknüpften Zeilen in
-   tabelle_1 (diejenigen, die keine Entsprechung in tabelle_2 haben)
-   zurück. Ein RIGHT JOIN würde hingegen alle unverknüpften Zeilen in
-   tabelle_2 hinzufügen und ein FULL JOIN würde alle verknüpften Zeilen
-   sowie jeweils alle unverknüpften Zeilen aus den beiden Tabellen
-   zurückliefern. Die Angabe von OUTER ist nicht zwingend und kann in
-   LEFT, RIGHT und FULL-Verknüpfungen weggelassen werden. Normale
-   Verknüpfungen sind INNER JOINs.
-   
-  4.17) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
-  
-   Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine
-   Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische
-   Systemkataloge lädt, ist eine datenbankübergreifende Abfrage nicht
-   möglich.
-   
-   contrib/dblink ist eine Erweiterung, die datenbankübergreifende
-   Abfragen über Funktionsaufrufe ermöglicht.
-   
-  4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion zurückgeben
-  lassen?
-  
-   Funktionen können mehrere Zeilen und Spalten zurückgeben, vgl.:
-   http://www.postgresql.org/docs/techdocs.17.
-   
-  4.19) Warum bekomme ich eine Fehlermeldung wie "relation with OID ##### does
-  not exist" wenn ich temporäre Tabellen in PL/PgSQL-Funktionen benutze?
-  
-   In PostgreSQL-Versionen vor 8.3 verarbeitet PL/PgSQL Funktionen in
-   einer Cache. Dies hat eine unangenehme Nebenwirkung, nämlich dass wenn
-   eine PL/PgSQL-Funktion auf eine temporäre Tabelle zugreift, und diese
-   Tabelle anschließend gelöscht bzw. neu erstellt wird, die Funktion
-   fehlschlagen wird, da die gecachten Funktionsinhalte noch auf die alte
-   temporäre Tabelle zeigen. Die Lösung für diese Probleme besteht darin,
-   in der PL/PgSQL- Funktion mittels EXECUTE auf temporäre Tabellen
-   zuzugreifen. Dies bewirkt, dass bei jedem Funktionsruf die betreffende
-   Abfrage neu geparst wird.
-   
-   Dieses Problem taucht in PostgreSQL 8.3 und späteren Versionen nicht
-   mehr auf.
-   
-  4.20) Welche Replikationslösungen gibt es?
-  
-   Der Begriff "replikation" umfasst mehrere verschiedene Technologien,
-   jede mit eigenen Vor- und Nachteilen.
-   
-   Mit "Master/slave"-Replikation werden Änderungen in einer
-   Hauptdatenbank durchgeführt und an "Sklaven" verteilt, die im
-   Nur-Lese-Modus arbeiten. Die populärste Lösung für PostgreSQL ist
-   Slony-I.
-   
-   "Multi-master replication" ermöglicht sowohl lesende als auch
-   schreibende Zugriffe über mehrere Datenbank-Server hinweg. Allerdings
-   hat diese Art von Replikation eine negative Auswirkung auf die
-   Performanz durch die Notwendigkeit, Änderungen zwischen Servern zu
-   synchronisieren. Pgcluster ist die populärste freie Lösung für
-   PostgreSQL.
-   
-   Es gibt auch einige kommerzielle und hardware-basierte
-   Replikationslösungen für verschiedene Arten der Replikation.
-   
-  4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage nicht
-  erkannt? Warum werden Großbuchstaben umgewandelt?
-  
-   Die häufigste Ursache ist die Verwendung von Gänsefüßchen bei der
-   Anlegung von Tabellen, z.B.:
-       CREATE TABLE "Tabelle"
-                   ("SPALTE1" INT)
-
-   Dadurch werden Tabellen- und Spaltennamen (sog. Identifikatoren) in
-   genau der Schreibweise gespeichert (vgl. Dokumentation), was dazu
-   führt, dass man sie danach immer in Gänsefüßchen angeben muss. Im
-   obigen Beispiel muss man also immer etwa SELECT * FROM "Tabelle"
-   verwenden. Um dieses Problem zu vermeiden, müssen Sie immer eines der
-   folgenden Punkte beachten:
-     * bei der Tabellenanlegung keine Gänsefüßchen verwenden;
-     * in Identifikatoren nur Kleinschreibung verwenden;
-     * immer Identifikatoren mit Gänsefüßchen versehen
-     _________________________________________________________________
-   
-  Anmerkungen des Übersetzers
-  
-   Die englische Vorlage dieser FAQ wird ständig überarbeitet. Daher
-   liegt die Übersetzung nicht immer auf dem aktuellsten Stand.
-   
-   Die aktuellste Version der deutschen Übersetzung befindet sich immer
-   unter http://sql-info.de/de/postgresql/FAQ_german.html. Diese
-   "Arbeitsversion" enthält eventuell Änderungen, die noch nicht auf der
-   PostgreSQL-Website eingebunden worden sind.
-   
-   Über Verbesserungshinweise und Korrekturvorschläge sowie
-   Verständnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch
-   allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
-   die Mailing-Listen als schnelle und zuverlässige Anlaufstellen.
diff --git a/doc/FAQ_hungarian b/doc/FAQ_hungarian
deleted file mode 100644 (file)
index 99f5ba4..0000000
+++ /dev/null
@@ -1,1234 +0,0 @@
-                                PostgreSQL GyIK
-
- Utolso modosítás dátuma: 2005 május 9.
-
- Fordítás aktualizálása: 2005 június
-
- A GyIK karbantartoja: Bruce Momjian (pgman@candle.pha.pa.us)
-
- Fordíto: Hornyák Lászlo
- (laszlo.hornyak.nospam@gmail.com)
-
- A legfrissebb verzio itt érhetõ el (angol):
-
- http://www.PostgreSQL.org/docs/faq-english.html.
-
- Legfrissebb magyar nyelvû verzio:
-
- http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
-
- Platform specifikus kérdések:
-
- http://www.PostgreSQL.org/users-lounge/docs/faq.html.
-
-     ----------------------------------------------------------------------
-
-Általános kérdések
-
-   1.1 Mi a PostgreSQL? Hogy kell kimondani?
-   1.2 Mik a PostgreSQL felhasználási feltételei?
-   1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
-   1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
-   1.5 Hogyan tudok PostgreSQL-t szerezni?
-   1.6 Hogyan kapok terméktámogatást?
-   1.7 Melyik a legfrissebb kiadás?
-   1.8 Milyen dokumentácio áll rendelkezésre?
-   1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
-   1.10 Hogy tanuljam meg az SQL nyelvet?
-   1.11 A PostgreSQL 2000. év kompatibilis?
-   1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
-   1.13 Hogyan küldjek hibajelentést?
-   1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
-   1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
-   1.16 Ki irányítja a PostgreSQL-t?
-
-Felhasználoi kliens kérdések
-
-   2.1 Van ODBC meghajto PostgreSQL-hez?
-   2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
-   2.3 Van a PostgreSQL-hez grafikus felhasználoi felület ? Riport generátor?
-   Beágyazott lekérdezõ nyelv felület?
-   2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
-
-Adminisztrácios kérdések
-
-   3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
-   installálni?
-   3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
-   dump-ot kapok. Miért?
-   3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
-   kapok. Miért?
-   3.4 Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
-   hibákat kapok. Miért?
-   3.5 Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
-   3.6 Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
-   3.7 Milyen hibakeresõ lehetõségek érhetõek el?
-   3.8 Miért kapok "Sorry, too many clients" hibát csatlakozásnál?
-   3.9 Mi van pgsql_tmp könyvtárban?
-   3.10 Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
-
-Mûködtetési kérdések
-
-   4.1 Mi a különbség a bináris és a normál kurzorok között?
-   4.2 Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
-   4.3 Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
-   4.4 Hogyan tudok eltávolítani egy oszlopot egy táblábol?
-   4.5 Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
-   4.6 Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
-   tárolásához?
-   4.7 Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
-   felhasználok vannak definiálva?
-   4.8 A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
-   4.9 Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo a
-   lekérdezésem?
-   4.10 Mi az R-tree index?
-   4.11 Mi a Genetic Query Optimizer?
-   4.12 Hogyan tudok regexp keresést és case-insensitive regexp keresést
-   használni? Hogyan tudok indexet használni case-insensitive kereséshez?
-   4.13 Hogyan tudom észlelni egy lekérdezésban, ha egy mezõ NULL?
-   4.14 Mi a különbség a különbözõ karaktertípusok között?
-   4.15.1 Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
-   4.15.2 Hogyan kaphatom meg egy SERIAL beszúrás értékét?
-   4.15.3 A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
-   a felhasználok között?
-   4.15.4 Miért nem használodnak fel újra a sequence számok tranzakcio abort
-   esetén? Miért vannak problémák a serial oszlopok számozásával?
-   4.16 Mi a OID? Mi a TID?
-   4.17 Mi a PostgreSQL-ben használt kifejezések jelentése?
-   4.18 Miért kapom ezt a hibát: "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.19 Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
-   4.20 Miért kapok "invalid large obj descriptor" hibát nagy objektumok
-   kezelésénél?
-   4.21 Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
-   jelenlegi idõ?
-   4.22 Miért olyan lassúak az al-lekérdezéseim IN-nel?
-   4.23 Hogyan tudok outer join-t végrehajtani?
-   4.24 Hogyan tudok több adatbázison végrehajtani lekérdezést?
-   4.25 Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
-   funkciobol?
-   4.26 Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
-   táblákat a PL/pgSQL funkciokban?
-   4.27 Milyen replikácios lehetõségek vannak?
-   4.28 Milyen kodolási lehetõségek vannak?
-
-A PostgreSQL kiterjesztése
-
-   5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
-   amikor használom?
-   5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
-   disztribúciohoz?
-   5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza? (több
-   soros több oszlopos eredmények)
-   5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
-   újrafordítás után?
-
-     ----------------------------------------------------------------------
-
-Általános kérdések
-
-   1.1 Mi a PostgreSQL? Hogy kell kimondani?
-
-   Így ejstd ki: Post-Gres-Q-L.
-
-   (Vagy talán inkább töltsd le a kis mp3-at a PostgreSQL homepage-rõl)
-
-   A PostgreSQL a POSTGRES adatbázis management rendszer egy kiegészítése,
-   ami egy következõ generácios DBMS kutatási prototípus. Megtartja a
-   POSTGRES adatmodellét és gazdag adattípus választékát, de a PostQuel
-   lekérdezõ nyelvet az SQL egy kiterjesztett verziojával helyettesíti. A
-   PostgreSQL szabad és a teljes forráskod hozzáférhetõ.
-
-   A PostgreSQL fejlesztését egy csapat végzi, amelynek minden tagja
-   megtalálhato a PostgreSQL fejlesztõi levelezési listán. A jelenlegi
-   koordinátor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
-   felelõs minden fejlesztésért. <>A PostgreSQL 1.01 alkotoi Andrew Yu és
-   Jolly Chen voltak. Sokan járultak hozzá portolással, teszteléssel,
-   hibakereséssel és fejlesztéssel. Az eredeti Postgres kod, amibõl a
-   PostgreSQL származik Michael Stonebraker professzor irányítása alatt
-   fejlesztettek az egyetem programozoi, tanuloi és végzett tanuloi. <>
-
-   A szoftver eredeti neve Postgres volt. Amikor SQL funkcionalítással
-   egészítették ki 1995-ben, a nevét Postgres95-re változtatták. 1996 végén
-   kapta mai nevét.
-
-   1.2 Mik a PostgreSQL felhasználási feltételei?
-
-    Az eredeti angol copyright szöveg:
-
-    --------------------
-
-    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.
-
-    --------------------
-
-   Ami nagyon leegyszerûsítve azt jelenti, hogy jogod van használni a
-   szoftvert mindenféle ellenszolgáltatás (pénz, stb) nélkül, a forrás kodot
-   modosíthatod, és továbbadhatod, DE semmilyen, a szoftver használatábol
-   következõ károsodásért nem vállal garanciát a fejlesztõ. A fenti a BSD
-   licensz, egy klasszikus nyilt-forráskod licensz. Nem tartalmaz
-   megszorításokat arra, hogy a forráskodot hogyan használod fel.
-
-   Kedveljük ezt a licensz formát és nem áll szándékunkban megváltoztatni.
-
-   1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
-
-   Általában minden UNIX-kompatibilis operácios rendszer képes arra hogy
-   futtassa a PostgreSQL-t. Azokat a platformokat, amiken tesztelték a
-   kiadást megtalálhatod a installácios utasítások között.
-
-   1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
-
-   Kliens
-
-   A libpq C függvénykönyvtárat, a psql-t és más felületeket le lehet úgy
-   fordítani, hogy fussanak MS Windows operácios rendszereken. Ebben az
-   esetben a kliens MS Windows-on fut és TCP/IP segítségével kommunikál a
-   Unixon futo szerverrel. A "win32.mak" állomány a kiadás része, ennek
-   segítségével lehet Win32 platformokra lefordítani a libpq-t és a psql-t. A
-   PostgreSQL ODBC kliensekkel is képes kommunikálni.
-
-   Szerver
-
-   <>Az adatbázis szerver Cygwin segítségével fut Windows NT és Win2k
-   rendszereken. További informácio találhato a pgsql/doc/FAQ_MSWIN
-   állományban és a MS Windows FAQ-ban a következõ helyen:
-   http://www.PostgreSQL.org/docs/faq-mswin.html.  Natív MS Windows
-   NT/2000/XP portok jelenleg fejlesztés alatt állnak.
-
-   1.5 Hogyan tudok PostgreSQL-t szerezni?
-
-   Az elsõdleges anonim ftp oldal: ftp://ftp.PostgreSQL.org/pub.
-
-   A tükör oldalak listája megtalálhato a fõ weboldalunkon.
-
-   1.6 Hogyan kapok terméktámogatást?
-
-   Az elsõdleges lista a pgsql-general@postgresql.org. Ez használhato a
-   PostgreSQL-lel kapcsolatos párbeszédekre. Ha fel szeretnél íratkozni,
-   küldj egy levelet a következõ tartalommal (nem tárggyal) a
-   pgsql-general-request@postgresql.org címre:
-
- subscribe
-
- end
-
-   Van egy hibákkal kapcsolatos levelezési lista is:
-   pgsql-bugs-request@PostgreSQL.org a következõ tartalommal:
-
- subscribe
-
- end
-
-   A fejleszto"i levelezési lista: pgsql-hackers-request@PostgreSQL.org a
-   következõ tartalommal:
-
- subscribe
-
- end
-
-   Egyéb levelezési listák találhatoak a weboldalunkon:
-   http://www.PostgreSQL.org
-
-   Van egy IRC csatorna is #PostgreSQL néven ahol felteheted kérédseid. A
-   következõ unix paranccsal csatlakozhatsz:
-
-   irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
-
-   A kereskedelmi terméktámogatást nyújto cégek listája elérhetö itt:
-   http://www.PostgreSQL.org/users-lounge/commercial-support.html
-
-   Magyar nyelvu" levelezési lista nincs, de ha tudok segiteni a fenit e-mail
-   cimemen elérheto" vagyok.
-
-   1.7 Melyik a legfrissebb kiadás?
-
-   A legfrissebb PostgreSQL kiadás a 8.0.
-
-   A tervek szerint minden évben lesz egy nagyobb fejlesztéseket tartalmazo
-   kiadás, míg a kisebb fejlesztéseket néhány havonta adjuk ki.
-
-   1.8 Milyen dokumentácio áll rendelkezésre?
-
-   Számos kézikönyv, man oldalak és kis teszt példák találhatoak a kiadásban
-   a doc/ könyvtár alatt. Az interneten is olvashatod a dokumentáciot a
-   következõ címen:
-
-   http://www.PostgreSQL.org/users-lounge/docs/.
-
-   Két PostgreSQL könyv érhetõ el az interneten a
-   http://www.PostgreSQL.org/docs/awbook.html és a
-   http://www.commandprompt.com/ppbook/ címeken. A megvásárolhato könyvek
-   listája itt találhato: http://www.ca.PostgreSQL.org/books/. A
-   PostgreSQL-lel kapcsolatos technikai jellegû cikkek gyûjteménye:
-   http://techdocs.PostgreSQL.org/.
-
-   A psql parancs rendelkezik néhány \d utasítással, amellyekkel listázhatoak
-   az operátorok, a funkciok, stb.
-
-   A website is tartalmaz további dokumentáciokat.
-
-   1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
-
-   A PostgreSQLaz SQL-92 szabvány egy kiegészítése. Nézd meg a TODO listákat
-   ha érdekelnek az ismert hibák.
-
-   1.10 Hogy tanuljam meg az SQL nyelvet?
-
-   A PostgreSQL könyv a http://www.PostgreSQL.org/docs/awbook.html címen
-   tartalmaz SQL alapokat. Elérhetõ egy másik SQL könyv is a
-   http://www.commandprompt.com/ppbook címen. Egy szép oktato anyag találhato
-   a http://www.intermedia.net/support/sql/sqltut.shtm, a
-   http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM és a
-   http://sqlcourse.com oldalakon.
-
-   Egy másik lehetõség a "Tanítsd magad 21 nap alatt SQL-re, második kiadás"
-   a http://members.tripod.com/er4ebus/sql/index.htm.
-
-   Sok felhasználonak tetszett a gyakorlati SQL könyv ("The Practical SQL
-   Handbook").
-
-   1.11 A PostgreSQL 2000. év kompatibilis?
-
-   Igen, könnyedén kezeli a 2000 utáni és idõszámításunk elött 2000 elötti
-   dátumokat is.
-
-   1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
-
-   Elösször is töltsd le a forráskodot, és olvasd el a PostgreSQL
-   fejlesztõi dokumnetáciot a web oldalunkon vagy a kiadásban. Ezután
-   íratkozz fel a pgsql-hackers és a pgsql-patches levelezési listákra.
-   Végül pedig küldj be magas szinvonalú patch-eket a pgsql-patches listára.
-
-   Van egy pár ember, akiknek commit privilégiumuk a PostgreSQL CVS fán.
-   Õk olyan sok magas szinvonalú patch-et küldtek be, hogy az addigi
-   csapat már nem tudta követni, és nem volt kétségünk arrol, hogy a
-   patch-ek amiket õk küldenek jo minõségû.
-
-   1.13 Hogyan küldjek hibajelentést?
-
-   Látogass el a BugTool oldalra:
-   http://www.PostgreSQL.org/bugs/bugs.php
-   Itt megtalálod követendõ utasításokat.
-
-   Ellenõrizd az ftp oldalunkon is, hogy nincs-e újabb verzio vagy folt.
-   ftp://ftp.PostgreSQL.org/pub
-
-   1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
-
-   Számos nézõpontbol lehet vizsgálni a szoftvert: képességek, teljesítmény
-   megbízhatoság, támogatottság és ár.
-
-   Képességek: A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
-   képességeivel: tranzakciok, al-lekérdezések, triggerek, nézetek, külsõ
-   kulcsok, integrítás és kifinoult zármechanizmusok. Van néhány képessége,
-   ami a kereskedelmi adatbázisokbol hiányzik, mint például a felhasználo
-   által definiált típusok, öröklõdés, szabályok és verzio kontroll a
-   zárolási viták redukálásáért.
-
-   Teljesítmény: A PostgreSQL teljesítménye hasonlít a kereskedelmi és más
-   nyílt adatbázis szerverekéhez. Lehet bizonyos esetekben lassabb, másokban
-   gyorsabb. A MySQL nevû tanulo RDBMS például gyorsabban hajt végre
-   insert/update mûveleteket, mivel a tranzakciokat elsumákolja. Persze a
-   MySQL nem rendelkezik a képességek részben felsoroltak nagy részével. Mi a
-   megbízhatoságra és a képességekre építünk, bár a teljesítmény is nõ minden
-   kiadással. Van egy érdekes oldal a MySQL és a PostgreSQL
-   összehasonlításával a http://openacs.org/philosophy/why-not-mysql.html
-   címen.
-
-   Megbízhatoság: Tudjuk hogy ha egy DBMS nem megbízhato, akkor teljesen
-   haszontalan. Igyekszünk jol tesztelt, stabil kodot kiadni, amiben a lehetõ
-   legkevesebb hiba van. Minden kiadás elött eltellik legalább 1 honap béta
-   teszt, és a kiadási történet is azt mutatja, hogy stabil kodot adunk ki,
-   ami készen áll a produktív felhasználásra. Úgy gondoljuk, felülmúlunk más
-   adatbázis szoftvereket ezen a téren.
-
-   Támogatás: A levelezési listáink kapcsolatot teremtenek a fejlesztõk és
-   felhasználok csoportjával , akik segítenek a problémák megoldásában. Bár
-   nem tudjuk garantálni hogy ki tudjuk javítani a hibát, más, kereskedelmi
-   adatbázis cégek sem tudják. A fejlesztõ csoport közvetlen elérési
-   lehetõsége, a közösség, a dokumentácio és a forráskod gyakran támogatást
-   biztosít, mint más adatbázisoknál. Van kereskedelmi, alkalmi támogatás
-   azoknak, akiknek szüksége van rá (lásd: 1.6).
-
-   Ár: A PostgreSQL szabad bármilyen felhasználásra, akár kereskedelmire is.
-   A termékhez hozzáadhatod a saját forráskodjaidat korlátozás nélkül.
-
-   1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
-
-   A PostgreSQL elsõ osztályú infrastruktúrával rendelkezik, amit 1996-ban
-   indítottunk el. Mindent Marc Fourniernek köszönhetünk, aki létrehozta és
-   karbantartja a rendszert.
-
-   A minõségi infrastruktúra nagyon fontos egy nyilt forrású szoftver
-   esetében. Megvéd az olyan fennakadásoktol, amelyek komoly késéseket
-   okoznak a fejlesztésekben. Természetesen ez az infrastruktúra nem olcso.
-   Számos havi és állando kiadásunk van. Ha a cégednek van pénze, amivel
-   támogatná erõfeszítéseinket, kérlek látogass el a
-   http://store.pgsql.com/shopping/ oldalra.
-
-   Bár a weboldal "PostgreSQL, Inc"-ként említi, a hozzájárulások kizárolag a
-   PostgreSQL fejlesztésre értendoek, és nem egy meghatározott cégnek. Ha
-   jobban tetszik, küldhetsz csekket is a kapcsolati címek bármelyikére.
-
-   1.16 Ki irányítja a PostgreSQL-t?
-
-   Ha központi bizottságot, ellenörzo" céget keresel a PostgreSQL mögött, add
-   fel, nincs ilyesmi. Létezik egy mag és CVS commiter csoport, de ez inkáb
-   adminisztrativ mint ellenörzo" célú. A projectet fejleszto"k és
-   felhasználok közössége irányítja, amihez bárki csatlakozhat. Csupán annyit
-   kell tenned hogy felíratkozol a levelezo"listékra és részt veszel a
-   beszélgetésekben.
-
-     ----------------------------------------------------------------------
-
-Felhasználoi kliens kérdések
-
-   2.1 Van ODBC meghajto PostgreSQL-hez?
-
-   Két ODBC meghajto érhetõ el: PsqlODBC és a OpenLink ODBC.
-
-   A PsqlODBC a PostgreSQL kiadás része. További informácio találhato a 
-   ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
-
-   Az OpenLink ODBC-t a http://www.openlinksw.com címrõl töltheted le. Ez az
-   õ szabványos ODBC kliens szoftverükkel mûködik, így minden
-
-   általuk támogatott platformon (Win, Mac, Unix, VMS) elérhetõ lesz  a
-   PostgreSQL szerver.
-
-   Talán olyan vevõknek fogják eladni, akik kereskedelmi minõségû terméket
-   szeretnének kapni, de a freeware verzio mindig elérhetõ lesz. Kérdéseidet
-   a termékkel kapcsolatban a postgres95@openlink.co.uk címen teheted fel.
-
-   Olvasd el az ODBC fejezetet is a programozok kézikönyvében!
-
-   2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
-
-   Egy szép bemutato olvashato az adatbázissal támogatott web oldalanrol a
-   http://www.webreview.com weboldalon.
-
-   A web integráciohoz a PHP egy kivállo szoftver. Letölthetõ a
-   http://www.php.net címrõl.
-
-   Komplexebb esetekre sokan használják a Perl felületet és a CGI.pm vagy a
-   mod_perl-t.
-
-   2.3 Van a PostgreSQL-hez grafikus felhasználoi felület?
-
-   Van egy szép PgAccess nevû grafikus felületünk, ami riport generátorként
-   is használhato. A weboldalát megtalálod a http://www.pgaccess.org/ címen.
-
-   A http://techdocs.postgresql.org/guides/GUITools oldalon találhatsz egy
-   pontos és részltes listát.
-
-   2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
-
-   A következök:
-
-     * C (libpq)
-     * C++ (libpq++)
-     * Embedded C (ecpg)
-     * Java (jdbc)
-     * Perl (DBD::Pg and perl5)
-     * ODBC (odbc)
-     * Python (PyGreSQL)
-     * TCL (libpgtcl)
-     * C Easy API (libpgeasy)
-     * PHP ('pg_' functions, Pear::DB)
-   További programozási felületek érhetõek el a
-   http://www.PostgreSQL.org/interfaces.html és a
-   http://gborg.PostgreSQL.org oldalakon.
-
-     ----------------------------------------------------------------------
-
-Adminisztrácios kérdések
-
-   3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
-   installálni?
-
-   A configure script --prefix paraméterének használatával.
-
-   3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
-   dump-ot kapok. Miért?
-
-   Számos probléma lehet, de legelösször ellenõrizd le, hogy a kerneled
-   System V kiegészítésekkel rendelkezik-e. A PostgreSQL használja a kernel
-   osztott memoria és szemafor API-ját.
-
-   3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
-   kapok. Miért?
-
-   Vagy nincs megfelelõen konfigurálva a kerneled osztott memoria támogatása
-   vagy meg kell nagyobbítanod a maximális osztott memoria méretet.
-
-   A pontos méret szükséglet függ az architektúrádtol és attol hogy hány
-   buffert és processzt konfigurálsz a postmasternek. Legalább 1 MB területre
-   szükséged van. A PostgreSQL Adminisztrácio kézikönyvben olvashatsz
-   részletesebb informáciokat az osztott memoriárol és a szemaforokrol.
-
-   3.4) Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
-   hibákat kapok. Miért?
-
-   Ha a hibaüzenet ez: " IpcSemaphoreCreate: semget failed (No space left on
-   device)", akkor a kerneled konfigurácioja nem tesz lehetõvé elegendõ
-   szemafort. A PostgreSQL szerver processzenként 1 szemafort igényel. Egy
-   átmeneti megoldás lehet az hogy a postmastert kevesebb maximális processz
-   számmal inditod el. Használd a -D paramétert. Egy sokkal megfelelõbb
-   megoldás az ha növeled a kerneled SEMMNS és SEMMNI paramétereit.
-
-   A hibás szemaforok is adatázis lerobbanásához is vezethet nagy terhelés
-   esetén.Ha a hibaüzenet valami más, lehet hogy nincs szemaforok támogatás
-
-   forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrátorok
-   kézikönyvében az osztott memoriárol és a szemaforokrol szolo fejezetet.
-
-   3.5) Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
-
-   Alapértelmezésben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
-   valosítja meg. Más gépek nem lesznek képesek csatlakozni, ha nem
-   engedélyezed azt -i opcioval a postmasternek, és nem állítod be host a
-   alapú azonosítást a pg_hba.conf állományban. Ezzel válnak lehetõvé a
-   TCP/IP kapcsolatok.
-
-   3.6) Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
-
-   Az indexelés feltétlenül gyorsítja a lekérdezéseket. Az EXPLAIN parancs
-   lehetõvé teszi hogy lásd, hogy a PostgreSQL miként interpretálja a
-   lekérdezést és melyik indexet használja.
-
-   Ha sok INSERT mûveletet hajtassz végre, csináld nagy kötegekben a COPY
-   paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Másodszor:
-   Azok a mûveletek, amelyek nincsenek tranzakcio blokkon belül, azok saját
-   tranzakciot indítanak. Sok mûveletet érdemes egy tranzakcion belül
-   végrehajtani. Ez csökkenti a tranzakcio kezelés többletidejét. Az
-   indexeket javasolt a nagy adatváltozások elött eltávolítani, majd újra
-   létrehozni.
-
-   Számos teljesítmény javíto lehetõség van. Kikapcsolhatod az fsync()
-   mûveletet a postmaster -o -F opciokval valo indításakor. Így nem fog az
-   amugy lassú fsync() függvény meghívodni minden tranzakcio végén.
-
-   Használhatod a postmaster -B opcioját is az osztott memoria szegmens
-   méretének növeléséhez. Ha az értéket túl magasra állítod, lehet hogy a
-   postmaster nem indul el, mert túllépted az operácios rendszer által 
-   megengedett méretet. Minden buffer 8K méretû és alapértelmezésban 64
-   buffer van.
-
-   A -S opcioval növelheted a szerver átmeneti rendezésekre fenntartott
-   memoria területét. Az értéket kilobyteban add meg. Az alapértelmezett
-   érték 512K.
-
-   Használhatod a CLUSTER utasítást is, hogy a táblákat egy indexnek
-   megfelelõen csoportosítsd. Olvasd el a CLUSTER kézikönyv oldalt további
-   részletekért.
-
-   Hardver kiválasztásában segíthet:
-   http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html és
-   http://www.powerpostgresql.com/PerfList/.
-
-   A postgresql.conf beállitásaival kapcsolatos tudnivalok:
-   http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
-   és http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
-   3.7) Milyen hibakeresõ lehetõségek érhetõek el?
-
-   A PostgreSQL számos lehetöséggel rendelkezik ami értékes lehet a
-   hibakeresésnél.
-
-   Elösször is, futtathatod a configure scriptet --enable-cassert opcioval,
-   sok assert() funkciohivás ellenörzi a program futását és megállitja ha
-   valami vératlan hiba történik.
-
-   Mind a postmaster és a postgres számos hibakeresö lehetüséggel
-   rendelkezik. Mindig amikor elinditod a postmastert, gyözödj meg rola, hogy
-   a kimenetet log állományba küldöd. Igy:
-
-   cd /usr/local/pgsql
-
-   ./bin/postmaster >server.log 2>&1 &
-
-   Ez egy server.log állományt hoz létre a felsö PostgreSQL könyvtárban. Ez
-   az állomány tartlamaz majd számos hasznos informáciot a szerverrel
-   kapcsolatos problémákrol és hibákrol. A postmaster -d opciojával lehet
-   részletesebb hibakeresö informáciot kapni. A -d opciohoz meg kell
-   határozni egy hiba szintet. Vigyázz, a magas hibakeresö szint nagy log
-   állományt okozhat.
-
-   Ha a postmaster nem fut, akkor futtathatod a postgres szervert
-   parancssorbol is, és az SQL kifejezést közvetlenül ennek adhatod át. Ez
-   csak hibakeresés esetében javasolt. Az új sor a kifejezés végét jelenti,
-   nem a pontosvesszö. Ha hibakeresö opciokkal forditottad a szervert,
-   használhatsz egy debuggert is hogy lásd hogy mi történik. Mivel igy a
-   szervert nem a postmaster inditotta, nem többfelhasználos környezetként
-   fut, igy a zárolási és a szerverek közötti kommunikácios hiba jelenségek
-   nem jelentkeznek.
-
-   Ha már fut a postmaster, indits egy psql-t, és nézd meg a szerver processz
-   PID-jét! Egy debuggert használhatsz a processzhez csatlakozáshoz.
-   Beállithatsz töréspontokat és elindithatsz lekérdezéseket. Ha a postgres
-   inditásban keresel hibát, a PGOPTIONS környezeti változot állitsd be "-W
-   n" értékre. Ez n másodperc várakozást idéz elö, igy tudsz csatlakozni a
-   processzhez, el tdsz hejezni töréspontokat, majd folytathatod a indítást.
-
-   A postgres program -s, -A és -t opcioi is nagyon hasznosak lehetnek
-   hibakeresésnél és teljesítmény mérésnél.
-
-   Profiling lehtöséggel is fordithatod a szervert, hogy lásd melyik funkciok
-   foglalják el a futási idõt. A szerver profile állományai a
-   pgsql/data/base/dbname könzvtárba kerülnek, a kliens profile állományok az
-   aktuális könyvtárba. Linuxon ehhez szükséges a -DLINUX_PROFILE fordítási
-   direktiva.
-
-   3.8) Miért kapok "Sorry, too many clients" (Túl sok kliens)
-   hibát csatlakozásnál?
-
-   Növelned kell a postmaster egyidejûleg futtatott szerver processz szám
-   korlátját.
-
-   Az alapértelmezett korlát 32 processz. Ezt növelhetjed úgy, hogy
-   újrainditod a postmastert és -N opcioval meghatárotod az új értéket, vagy
-   modositod a postgresql.conf-ot.
-
-   Ne felejtsd el, hogy ha növeled a szerver processzek maximális számát,
-   akkor bufferek számát is növelned kell, legalább a processzek számának
-   kétszeresére. Nagy processz számokesetében valoszinüleg a Unix
-   konfigurácios paramétereken is növelni kell. Ellenörizd a SHMMAX (az
-   osztott memoria szegmensek maximális mérete), a SEMMNS és a SEMMNI (a
-   szemaforok maximális száma), az NPROC (a processzek maximális száma), a
-   MAXUPRC (felhasználonkénti maximális processz szám) és a NFILE és NINODE
-   (a megnzitott állománzok maximális száma) paramétereket. A PostgreSQL
-   azért korlátozza külön a processz számot, hogy a rendszeredet ne
-   terhelhesse meg túlságosan.
-
-   A PostgreSQL 6.5 verzioban a maximális szerver processz szám 64 volt és a
-   modositáshoz bele kellett irni a include/storage/sinvaladt.h állományba és
-   újra kellett forditani a servert.
-
-   3.9) Mi van pgsql_tmp könyvtárban?
-
-   Ez a könyvtár a lekérdezés végrehajto által létrehezott átmeneti
-   állományokat tartalmazza. Például ha egy rendezést kell végrehajtani egy
-   ORDER BY kifejezés miatt és a m?velet több memoriát vesz igénybe, mint
-   amennyit a -S paraméter megenged, akkor az átmeneti könyvtárban hoz létre
-   egy állományt a fennmarado adat tárolására.
-
-   Az átmeneti állományok többnyire törl?dnek, de meg is maradhat ha például
-   váratlan hibával leáll a szerver egy rendezés közben. Inditáskor és
-   leállitáskor ezeket az állományokat törli a postmaster.
-
-   3.10) Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
-
-   A PostgreSQL csapat csak aprobb változtatásokat hajt végre a kisebb
-   kiadások között, igy ha 7.2 verziorol állsz át 7.2.1 verziora, akkor nem
-   szükséges kidumplonod az adatbázist. A nagy kiadások esetében (például
-   verziorol 7.3-ra áttérésnél) változik a belsiõ adatstruktúrák és
-   adatállományok formátuma. Ezek a változások gyakran nagyon összetettek,
-   ezért inkáb nem tartunk fenn visszafelé kompatibilitást. A dump az adatot
-   általános formátumban irja ki, majd az új formátumban lehet azt
-   visszatöleni.
-
-   Azokban a kiadásokban, amelyek között az adat formátum nem változik, a
-   pg_upgrade program használhato dumpolás és helyreállitás nélkül.
-
-     ----------------------------------------------------------------------
-
-Mûködtetési kérdések
-
-   4.1) Mi a különbség a bináris és a normál kurzorok között?
-
-   Nézd meg a DECLARE dokumentácioját.
-
-   4.2) Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
-
-   Olvasd el a FETCH dokumentácioját, vagy használd a SELECT LIMIT-et.
-
-   Az egész lekérdezést végre kell hajtani, még akkor is, ha csak az elsõ pár
-   sort akarod megkapni. Gondolj arra, hogy a lekérdezésben lehet ORDER BY
-   is. Ha van olyan index, ami megfelel az ORDER BY kifejezésednek, a
-   PostgreSQL képes lehet az elsö néhány rekord visszaadására, vagy a teljes
-   lekérdezésnek le kell futnia, amig a kért rekordok le nem generálodnak.
-
-   4.3) Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
-
-   Elolvashatod a psql forrás kodjában a pgsql/src/bin/psql/describe.c
-   állományban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
-   állitják elö, amiket a per jellel kezdödö parancsok adnak vissza.
-
-   4.4) Hogyan tudok eltávolítani egy oszlopot egy táblábol?
-
-   Ez a funkcionalitás a 7.3 verziotül kezdve érhetö el az ALTER TABLE DROP
-   COLUMN -nal. A régebbi vertiokban igy lehet végrehajtani:
-
- BEGIN;
-
- LOCK TABLE old_table;
-
- SELECT ... -- minden oszlopot, kivétel amit törölni szeretnél
-
- INTO TABLE new_table
-
- FROM old_table;
-
- DROP TABLE old_table;
-
- ALTER TABLE new_table RENAME TO old_table;
-
- COMMIT;
-
-    4.5) Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
-
-   A korlátok:
-
-     * adatbázis: korlátlan (1 TB az általunk ismert lagnagyobb)
-
-     * tábla: 16 TB
-
-     * rekord/sor 1.6TB
-
-     * mezö 1 GB
-
-     * a tábla sorainak száma: korlátlan
-
-     * a tábla oszlopainak száma: 250-1600 az oszlop nevektõl függöen
-
-     * A tábla indexeinek száma: korlátlan
-
-   Természetesen nem igazán korlátlan, de a tárterület, memoria és egyéb
-   külsö tényezök korlátozzák. A teljesitmény romolhat, ha ezek az értékek
-   szokatlanul nagyok.
-
-   A 16 TB-os legnagyobb tábla méret nem igényel nagy állomány támogatást. A
-   nagy táblák több 1 GB méretü állományba kerölnek, igy az állomány rendszer
-   korlátai nem lényegesek.
-
-   A maximális tábla méret és az oszlopok maximális oszlop szám növelhetö, ha
-   az alapértelmezett blokkméretet 32k-ra növeled.
-
-   4.6) Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
-   tárolásához?
-
-   A PostgreSQL akár a szöveg állomány helyigényének ötszörösét is
-   elfoglalhatja.
-
-   Képzelj el például, egy 100.000 soros szöveget, aminek minde sora egy
-   számbol és egy szövegbõl áll. Tegyük el, hogy átlagosan 20 byte hosszú
-   szövegek. Ez a szövegállomány körülbelül 2.8 MB helyet foglalna el. A
-   tábla ami a fenti adatszerkezetet eltárolná, körülbelül 6.4 MB-os lenne.
-   Ezt a következöképpen számolhatjuk ki:
-
-   36 byte: sor fejléc
-
- 24 byte: egy int mezö + egy szöveg mezö
-
- 4 byte: mutato
-
- ---------------------------------------
-
- 64 byte soronkent.
-
-   Az adat oldal mérete a PostgreSQL-ben 8192 byte, igy 8192 / 64 = 128
-   rekord adatbázis oldalanként (lefelé kerekitve).
-
- 100000 rekord / 128 rekord oldalanként = 782 adat oldal
- (felelé kerekitve).
-
- 782 adatbázis oldal * 8192 byte olalanként = 6,406,144
- byte (6.4 MB)
-
-   Az indexek nem foglalnak túl sokat, de tartalmazzák az indexelt adatot,
-   igy ezek is lehetnek nagyok.
-
-   A NULL értékek bittérképben vannak tárolva, igy kevés helyet foglanak.
-
-   4.7) Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
-   felhasználok
-
-   vannak definiálva?
-
-   A psql-ben találsz számos '\' karakterrel kezdödö utasítást az ilyen
-   informáciok listázására. A '\?' segitségével tudot kilistázni ezeketa
-   parancsokat. Ezen kivül vannak rendszer táblák, amelyek nevei 'pg_'-vel
-   kezdödnek.
-
-   Probáld ki a pgsql/src/tutorial/syscat.source állományt is. Ez sok példát
-   tartalmaz az rendszertáblákon végrehajtott SELECT-ekröl.
-
-   4.8) A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
-
-   Az indexeket nem használja a szerver minden lekérdezésnél automatikusan.
-   Csak akkor használ indexet, ha a tábla mérete egy megadott also határ
-   felett van, és a lekérdezés csak a sorok egy kis részét érinti. Ez azért
-   van, mert a véletlen hozzáférés még mindig lassabb lehet mint az tábla
-   szekvenciális olvasása.
-
-   Hogy a PostgreSQL meg tudja határozni hogy kell-e indexet használni,
-   léteznie kell egy statisztikának a táblárol. Ez a statisztikai adatok a
-   VAACUM ANALYZE vagy az egyszerû ANALYZE mûveletek során jönnek létre. A
-   statisztikai adatok felhasználásával az optimalizálo meg tudja határozni,
-   hogy hány sor van a táblában, és el tudja dönteni, hogy használjon-e
-   indexet. A statisztiaki adatgyüjtést idõnként végre kell hajtani, ahogy a
-   tábla adatai változnak.
-
-   Az indexeket normális esetben nem használja az ORDER BY vagy az OUTER
-   JOIN. A szekvenciális olvasás általában gyorsabb, mint az index keresés
-   egy nagy táblában. Bár a LIMIT az ORDER BY-val kombinálva használhat
-   indexet, mert a tábla csak kis része érintett. Bár a MIN és MAX SQL
-   funkciok sem használják az indexeket, ezeket az értékeket egy ORDER BY +
-   LIMIT lekérdezéssel is le lehet kérdezni:
-
- SELECT col
-
- FROM tab
-
- ORDER BY col [ DESC ]
-
- LIMIT 1;
-
-   Amikor helyettesítõ jel operátorokat használsz, mint a LIKE kulcsszo vagy
-   a ~, az indexeket csak bizonyos körülmények között lehet használni:
-
-   A keresõ string kezdete a keresési minta elején kell hogy legyen. Például:
-
-     * A LIKE minták nem kezdõdhetnek % jellel.
-     *  ~ (regexp) kifejezések nem kezdõdhetnek ^ jellel.
-     * A keresési kifejezés nem kezdõdhet karakter osztállyal.
-     * A case-insensitive keresés (ILIKE, ~*) nem használnak indexet ehelyett
-       funkcionális indexet használnak, amit a 4.12 pontban találhatsz.
-     * Az alapértelmezett C hellyel kell futtatni az initdb-t.
-   4.9) Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo
-   a lekérdezésem?
-
-   Olvasd el a dokumentácio EXPLAIN-rol szolo részét.
-
-   4.10) Mi az R-tree index?
-
-   Az R-tree index a térbeli adat indexelésére alkalmas. Egy hash index nem
-   képes tartomány keresésekre. A B-tree index csak egy dimenzion kezeli a
-   tartomány kereséseket. Például ha az indexet egy pont (point adattípus)
-   típusú mez.re építjük, gyorsabban kezeli az olyan jellegü lekérdezéseket,
-   mint egy adott körben
-
-   találhato pontok.
-
-   Az R-tree tervezési mintát eredetileg leíro szöveg: 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.
-
-   Ezt olvashatod Stonebraker "Readings in Database Systems" c. könyvében.
-
-   A beépített R-tree kezelni tudják a sokszögeket (polygon adattípus) és a
-   dobozokat (box). Elméletileg, az R-tree kiterjeszthetõ további dimenziokra
-   is. Gyakorlatilag ezen dolgoznod kell egy kicsit, és még nincs
-   dokumentácionk arrol hogy az hogyan mûködik.
-
-   4.11) Mi a Genetic Query Optimizer?
-
-   A GEQO modul a lekérdezés optimalizácio sebességét növeli nagy mennyiségû
-   tábla összekapcsolása esetén. Lehetõvé teszi a nagy lekérdezések
-   végrehajtását nem teljes kereséssel.
-
-   4.12) Hogyan tudok regexp keresést és case-insensitive regexp keresést
-   használni? Hogyan tudok indexet használni case-insensitive kereséshez?
-
-   A ~ operátor hajt végre reguláris kifejezés (regexp) értelmezést, a ~*
-   ennek case-insensitive változata. A LIKE case-insensitive változata az
-   ILIKE.
-
-   A case-insensitive egyenlõség mûveleteket általában igy hajtjuk végre:
-
-   SELECT *
-
- FROM tab
-
- WHERE lower(col) = 'abc';
-
-   Ez nem fog indexet használni, bár létrehozhatsz egy funkcio indexet:
-
- CREATE INDEX tabindex ON tab (lower(col));
-
-   4.13) Hogyan tudom észlelni egy lekérdezésben, ha egy mezõ NULL?
-
-   Használd "IS NULL"-t és az "IS NOT NULL"-t.
-
-   4.14) Mi a különbség a különbözõ karaktertípusok között?
-
-     * "char" egy karakter hosszú string
-     * CHAR(n) bpchar üres hellyel a megadott n hosszúságig
-     * VARCHAR(n) varchar méret maximális hossz meghatározásával, a lefogllat
-       terület is változo hosszú lesz
-     * TEXT nincs meghatározott felso" korlát
-     * BYTEA változo hosszúságú byte-tömb
-
-   Látni fogod a belsõ elnevezésüket, ha tanulmányozod a rendszertáblákatés
-   néhány hibaüzenetet.
-
-   Az utobbi négy a "varlena" típusok, ami a tárolásuk modjára utal: az elsõ
-   4 byte a lemezen a hosszúság, a többi az adat. A valodi méret tehát
-   nagyobb mint a deklarált hosszúság.Ezek azadatok tömöritve tárolodnak el,
-   igy kevesebb helyet foglalnek el az elöre számitottnál.
-
-   A CHAR(n) a legjobb megoldás, ha stabil hosszúságú stringet tárolsz. A
-   VARCHAR(n) jo arra az esetekre, ha a hosszúság változik, de van felsõ
-   korlátja. A TEXT típus korlátlan hosszúságú (1 GB-ig) szövegek tárolására
-   alklamas. A BYTEA bináris adatok tárolására van. A teljesitmény mutatoi
-   hasonloak ezenek a típusoknak.
-
-   4.15.1) Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
-
-   A PostgreSQL rendelkezik egy SERIAL adattípussal. Ez egy szekvenciát és
-   egy indexet hoz létre az oszlopon. Például ez:
-
- CREATE TABLE person (
-
- id SERIAL,
-
- name TEXT
-
- );
-
-   ugyanezt jelenti:
-
- 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 );
-
-   A szekvenciákkal kapcsolatban olvasd el a create_sequence man oldalt. A
-   sor OID-jét is használhatod egyedi azonositoként, bár ebben az esetben
-   figyelj a pg_gump használatánál a -o opciora (COPY WITH OIDS, másolás
-   OID-dal), hogy meg?rizd az értékeket.
-
-   4.15.2) Hogyan kaphatom meg egy SERIAL beszúrás értékét?
-
-   Egy megoldás erre az, ha a nextval() funkcioval megszerzed az értéket még
-   mielött beszúrnád az adatot a táblába. Erre itt láthatsz egy példát:
-
- new_id = execute("SELECT nextval('person_id_seq')");
-
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise
- Pascal')");
-
-   Esetleg lekérdezheted a szekvencia állapotát a sor beszúrása után.
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-
- new_id = execute("SELECT currval('person_id_seq')");
-
-   Végül pedig, használhatod a visszaadott OID értéket is, bár ez a lehetõ
-   legkevésbé portolhato. Perl DBI-ben, Edmund Mergl DBD::Pg moduljában az
-   OID érték használhato a $sth->execute() után ($sth->{pg_oid_status}).
-
-   4.15.3) A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
-   a felhasználok között?
-
-   Nem. A currval() funkcio a szerver processzed által adott értéket adja
-   vissza, nem pedig a többi szerver processz által adottat.
-
-   4.15.4) Miért nem használodnak fel újra a sequence számok tranzakcio abort
-   esetén?
-
-   Miért vannak problémák a serial oszlopok számozásával?
-
-   A párhuzamosság fejlesztése érdekében a sorozat számokat kérésre adja ki a
-   szerver futo tranzakcioknak, és azokat nem zárja, amig a tranzakcio véget
-   nem ér. Ez jukakat okoz a számozásokban a visszaforditott tranzakciok
-   miatt.
-
-   4.16) Mi a OID? Mi a TID?
-
-   Az OID a PostgreSQL egyedi sor azonositoja. Minden sor, ami létrejön a
-   szerveren, kap egy OID-t. Minden OID, amit az initdb alatt jön létre 16384
-   alatt van (lásd include/access/transam.h). Minden, felhasználo által
-   létrehozott OID legalább ennyi. Alapértelmezésben, az OID nem csak a
-   táblában vagy az adatbázisban egyedi, hanem a teljes PostgreSQL adatbázis
-   rendszerben.
-
-   A PostgreSQL az OID-okat a belsö tábláiban használja a sorok táblák között
-   összekapcsolásához. Ezek az OID-k használhatoak a rekordok azonositására
-   is amikor táblákat csatol össze a szerver (JOIN). Az OID-ot használhatod
-   mezö típusként is, és indexelheted is.
-
-   Az OID érték egy központi területröl származik, amit minden szerver
-   processz használ. Ha az OID-ot valami másra szeretnéd cserélni:
-
-   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';
-
-   Az OID 4 byte-os integer értékként tárolodik, igy 4 milliárdnál
-   túlcsordul. Még soha senki nem jelezte hogy ez történt volna, és ezt a
-   korlátot igyekszünk eltávolitani, még mielött bárki észrevenné.
-
-   A TID a fizikai sorok blokk és offszet címmel valo azonositására szolgál.
-   A TID változik minden rekord modositás és törlés alkalmával. Ezeket az
-   indexek használják hogy a fizikai sort gyorsan megtalálják.
-
-   4.17) Mi a PostgreSQL-ben használt kifejezések jelentése?
-
-   Néhol a forrás kodban és a dokumnetácioban találhatoak kifejezések,
-   amelyek általánosabb jelentéssel bírnak. Itt van néhány:
-
-     * tábla (table), relácio (relation), osztály (class)
-     * sor (row), rekord (record), tuple (nincs magyar jelentés)
-     * oszlop (column), mezö (field), attributum (attribute)
-     * retrieve, select
-     * helyettesit (replace), modosit (update)
-     * hozzáfûz (append), beszúr (insert)
-     * OID, sorozat érték (serial value)
-     * portal, cursor
-     * range variable, tábla név, tábla alias
-   Az általános adatbázis kifejezések összefoglaloját itt olvashato:
-
-   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-
-   4.18) Miért kapom ezt a hibát: "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-
-   Lehet hogy elfogyott a virtuális memoriád, vagy a kerneled erõforrás
-   korlátai alacsonyak. Probáld ki ezt mielött elinditanád a postmastert:
-
- ulimit -d 262144
-
- limit datasize 256m
-
-   A shelltõl függõen ezek közül csak az egyik fut majd le, de a processzek
-   adatszegmensét sokkal magasabbra állitja, ami talán elég lesz a lekérdezés
-   végrehajtásához. Ez az utasítás a jelenlegi processzre (a shelled)
-   érvényes, és minden általa létrehozott processzre. Ha problémád van az SQL
-   klienssel, mert a szerver túl nagy adatot küld vissza, probáld meg e
-   klienssel is ugyanezt.
-
-   4.19) Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
-
-   A psql programban select version();
-
-   4.20) Miért kapok "invalid large obj descriptor" hibát nagy objektumok
-   kezelésénél?
-
-   A nagy objektumok kezelését egy tranzakcios blokkban helyezd el. (BEGIN és
-   COMMIT között)
-
-   Jelenleg a PostgreSQL ezt a szabályt azzal teszi kötelezõvé, hogy a
-   tranzakcio végén a nagy objektumokat lezárja, igy a tranzakcio után az
-   elsõ mûvelet amit az objektumon végrahajtanál hibás lesz.
-
-   Ha olyan programozási felületet használsz mint az ODBC vagy a JDBC akkor
-   valoszinûleg ki kell kapcsolnod az auto-commit-ot.
-
-   4.21) Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
-   jelenlegi idõ?
-
-   Használd a CURRENT_TIMESTAMP -ot:
-
- CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-   4.22) Miért olyan lassúak az al-lekérdezéseim IN-nel?
-
-   Jelenleg az al-lekérdezéseket a külsõ lekérdezéshez csatoljuk. Ha az
-   allekérdezés csak kevés sort eredményez és a külsõ lekérdezés sokat, akkor
-   az IN is gyors. Az EXISTS kulcsszo használatával gyorsithatod a
-   lekérdezéseket.
-
-   SELECT *
-
- FROM tab
-
- WHERE col IN (SELECT subcol FROM subtab);
-
-   EXISTS használatával:
-
- SELECT *
-
- FROM tab
-
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-
-   Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
-   legyen. Reméljük ezt a korlátot sikerül hamarosan legyõznünk.
-
-   4.23) Hogyan tudok outer join-t végrehajtani?
-
-   A PostgreSQL a szabványos SQL szintaktikát követi. Itt van két példa:
-
-   SELECT *
-
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   vagy
-
- SELECT *
-
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   Ezek az identikus lekérdezések összekapcsolják a t1.col és a t2.col
-   mezõket, és a t1 bármelyik kapcsolatlan sorát is visszadják. A RIGHT JOIN
-   a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig a kapcsolt,
-   és mindkét tábla kapcsolatlan sorait adja. Az OUTER kulcsszo opcionális, a
-   LEFT, RIGHT és FULL JOIN szintaktikailag helyes. Az átlagos
-   összekapcsolásokat INNER JOIN-nak nevezzük.
-
-   Az elõzõ kiadásokban a OUTER JOIN lekérdezéseket UNION és NOT IN
-   kulcsszavakkal lehetett szimulálni. Például a tab1 és a tab2
-   összekapcsolása:
-
- 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) Hogyan tudok több adatbázison végrehajtani lekérdezést?
-
-   Arra nincs lehetõség, hogy más adatbázisbol kérdezz le adatot.Mivel a
-   PostgreSQL adatbázis specifikus rendszer táblákat töltbe, bizonytalan hogy
-   egy adatbázisok közötti lekérdezésnek hogyankellene viselkednie.
-
-   A contrib/dblink könyvtárban találsz egy megoldást erre, ami funkcio
-   hivások segitségével mûködik. Persze, a kliens hozhat létreszimultán
-   kapcsolatot több adatbázissal, és összefésülheti az eredményeket.
-
-   4.25) Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
-   funkciobol?
-
-   A PL/pgSQL tárolt eljárás nyelvvel refcursor használatával. Részletesen
-   itt:
-
-   http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
-
-   4.26) Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
-   táblákat a PL/pgSQL funkciokban?
-
-   A PL/pgSQL cacheli a funkciok tartalmát, aminek az a szerencsétlen
-   mellékhatása, hogy ha egy PL/pgSQL funkcio használ egy átmeneti táblát,
-   ami késo"bb törlõdik majd ujra létrejön, akkor az újra lefuto funkcio nem
-   fogja megtalálni a táblát, mert a cache változat a régi táblára tartalmaz
-   mutatot. A megoldás erre az EXECUTE használata az átmeneti táblák
-   kezelésére PL/pgSQL-ben. Ez a lekérdezés újrafordítását fogja elõidézni
-   minden alkalommal.
-
-   4.27) Milyen replikácios lehetõségek vannak?
-
-   Bár a replikácio egyetlen terület, több technologia létezik replikáciora,
-   természetesen mindnek meg vannak a maga elo"nyei és hátrányai.
-
-   A master/slave replikácios megoldással a master adatbázison hajthatunk
-   végre modosításokat, míg a slave adatbázisokon csak lekérdezéseket. A
-   PostgreSQL legnépszeru"bb master/slave replikácios megoldása a Solny-I.
-
-   Számos más master/slave replikácios lehetõség létezik.Egy Listát
-   olvashatsz ezekrõl itt:
-
-   http://gborg.PostgreSQL.org/genpage?replication_research
-
-   A multi-master replikácio leheto"vé teszi több master adatbázis
-   használatát, bár ez a technologia drasztikusan csökkenti az adatbázis
-   teljesítményét a sok szinkornizácio miatt. A PGCluster a legelterjedtebb
-   ilyen megoldás.
-
-   Egy többfelhasználos replikácios rendszer készül itt:
-
-   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
-   4.28) Milyen kodolási lehetõségek vannak?
-
-     * A contrib/pgcrypto tartlamaz számos SQL lekérdezésben használhato
-       kodolást.
-     * A kliens-szerver kommunikácio rejtjelezésére a hostssl használhato.
-       Ezt a pg_hba.conf-ben engedélyeztheted.
-     * Az adatbázis felhsználok jelszavait tároláskor kodolja a rendszer. 
-     * Régebbi verziokban a PASSWORD_ENCRYPTION opcioval lehetett
-       bekapcsolni.
-     * A szerveren használhatsz kodolt fájrendszert.
-
-     ----------------------------------------------------------------------
-
-A PostgreSQL kiterjesztése
-
-   5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
-   amikor használom?
-
-   Számos probléma lehet. Elöbb probáld ki a funkciodat egy különállo
-   alkalmazásban.
-
-   5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
-   disztribúciohoz?
-
-   Küldd el a kiegészítéseid a pgsql-hackers levelezési listára és a
-   forráskodjaid végül a contrib-ban kötnek ki.
-
-   5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza?
-
-   A 7.3 verziotol kezdve a PostgreSQL támogatja a táblázatokat viszzaado
-   funkciokat C, PL/pgSQL és SQL nyelveken. Bõvebb dokumentáciot a Programozo
-   kézikönyvben találsz. Egy C példa funkcio találhato a contrib/tablefunc
-   könyvtárban.
-
-   5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
-   újrafordítás után?
-
-   A Makefile-ok nem ismerik a include állományok megfelelõ függõségeit.
-   Végre kell hajtanod egy make clean-t, majd újra egy make-t. Ha GCC-t
-   használsz felhasználhatod a configure script --enable-depend opcioját, így
-   a compiler maga fogja ellenõrizni a függõségeket.
diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese
deleted file mode 100644 (file)
index ca2618f..0000000
+++ /dev/null
@@ -1,1126 +0,0 @@
-PostgreSQL(¥Ý¥¹¥È¥°¥ì¥¹¡¦¥­¥å¡¼¡¦¥¨¥ë)¤Ë¤Ä¤¤¤Æ¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤Î²òÅú(FAQ)
-
-¸¶Ê¸ºÇ½ª¹¹¿·Æü: Thu Jan 01 14:01:00 EDT 2009
-
-¸½ºß¤Î°Ý»ý´ÉÍý¼Ô: Bruce Momjian (bruce@momjian.us)
-Maintainer of Japanese Translation: Jun Kuwamura (juk at postgresql.jp)
-
-¤³¤Îʸ½ñ¤ÎºÇ¿·ÈǤϠhttp://www.postgresql.org/docs/faqs.FAQ.html ¤Ç¸«¤ë¤³¤È¤¬¤Ç
-¤­¤Þ¤¹¡£
-
-¥×¥é¥Ã¥È¥Û¡¼¥à¤ËÆÃÍ­¤Î¼ÁÌä¤Ë¤Ä¤¤¤Æ¤Ï: http://www.postgresql.org/docs/faq/
-¤Ë²òÅú¤¬¤¢¤ê¤Þ¤¹¡£
-
-(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ­¤·¤Þ¤¹¡£)
-[ÌõÃí¡§
-        ÆüËܸìÈǤÎFAQ¤Ï¡¢
-                http://www.postgresql.org/docs/faqs.FAQ_japanese.html
-        ¤Ë¤¢¤ê¤Þ¤¹¡£
-        ºÇ¿·¤ÎÆüËܸìÈǤˤĤ¤¤Æ¤Ï¡¢¤³¤Îʸ½ñ¤ÎºÇ¸å¤Ë¤¢¤ë¡ÖÆüËܸìÈǤˤĤ¤¤Æ¡×¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-]
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-                                 °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡©¤½¤Î¸Æ¤ÓÊý¤Ï¡© Postgres¤È¤Ï¡©
-1.2) Ã¯¤¬ PostgreSQL ¤ò¥³¥ó¥È¥í¡¼¥ë¤·¤Æ¤¤¤Þ¤¹¤«¡©
-1.3) PostgreSQL¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
-1.4) PostgreSQL¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
-1.5) PostgreSQL¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹¤«¡©
-1.6) ºÇ¿·¤Î¥ê¥ê¡¼¥¹¤Ï¤É¤ì¤Ç¤¹¤«¡©
-1.7) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
-1.8) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
-1.10) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
-1.11) SQL¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
-1.12) ¥Ñ¥Ã¥Á¤òÄ󶡤·¤¿¤ê¡¢³«È¯¥Á¡¼¥à»²²Ã¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
-1.13) Â¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL ¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡© PostgreSQL¤òÁȤ߹þ¤ß¤Ë»È¤¨
-¤Þ¤¹¤«¡©
-1.14) PostgreSQL¤Ï¹ñËè¤ÎºÇ¿·¤Î²Æ»þ´Ö¤ÎÊѹ¹¤ò°·¤¤¤Þ¤¹¤«¡©
-1.15) PostgreSQL¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹ØÆÉ¤ò¤ä¤á¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©¤Þ¤¿
-¡¢ÅŻҥ᡼¥ë¤ò½ÅÊ£¤·¤Æ¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-                          ¥æ¡¼¥¶¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Ë¤Ï¤É¤ó¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬»È¤¨¤Þ¤¹¤«¡©
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-
-                                 ´ÉÍý¾å¤Î¼ÁÌä
-
-3.1) ¤É¤¦¤¹¤ì¤Ð¡¢PostgreSQL¤ò/usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Þ¤¹
-¤«¡©
-3.2) Â¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
-3.3) ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤·¤Þ¤¹¤«
-¡©
-3.4) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
-3.5) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤­¤Ë 'Sorry, too many clients' ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-3.6) PostgreSQL¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¼ê½ç¤Ï¤É¤¦¤Ê¤ê¤Þ¤¹¤«¡©
-3.7) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
-                                 Áàºî¾å¤Î¼ÁÌä
-
-4.1) ºÇ½é¤Î¤¤¤¯¤Ä¤«¤Î¥í¥¦¤Î¤ß¤ò select ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-4.2) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
-4.3) ¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.4) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-4.5) °ìÈÌŪ¤Ê¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎÌ
-¤Ï¤É¤Î¤¯¤é¤¤É¬ÍפǤ¹¤«¡©
-4.6) ¥¯¥¨¥ê¤¬ÃÙ¤¤¤Î¤Ï¤Ê¤¼¤Ç¤·¤ç¤¦¡©¤Ê¤¼¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-4.7) ¥¯¥¨¥ê¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬¡¢¤É¤Î¤è¤¦¤Ë¥¯¥¨¥ê¤òɾ²Á¤·¤Æ¤¤¤«¤ò¡¢¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ
-¤¹¤«¡©
-4.8) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½
-¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È¤¤
-¤Þ¤¹¤«¡©
-4.9) ¥¯¥¨¥ê¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-NULL¤Î²ÄǽÀ­¤Î¤¢¤ë¤â¤Î¤ò¤É¤Î¤è¤¦¤¹¤ì¤ÐÏ¢·ë¤Ç¤­¤Þ¤¹¤«? ¥Õ¥£¡¼¥ë¥É¤¬NULL¤«¤É¤¦¤«
-¤Ç¤É¤Î¤è¤¦¤Ë¥½¡¼¥È¤¬¤Ç¤­¤Þ¤¹¤«¡©
-4.10) ¤¤¤í¤¤¤í¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-4.11.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-4.11.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
-4.11.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-4.11.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤­¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤­¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-4.12) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-4.13) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-4.14) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤Î¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.15) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-4.16) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
-4.17) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤­¤Þ¤¹¤«¡©
-4.18) ´Ø¿ô¤«¤éÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.19) PL/PgSQL ¤Î´Ø¿ô¤ÎÃæ¤Ç°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¤­¡¢¤É¤¦¤·¤Æ "relation
-with OID ##### does not exist" ¤È¤¤¤¦¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
-4.20) ¤É¤Î¤è¤¦¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¤«¡©
-4.21) ¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¤¬¥¯¥¨¥ê¡¼¤ÎÃæ¤Çǧ¼±¤µ¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¤Ê¤¼Âç
-ʸ»ú²½(¥­¥ã¥Ô¥¿¥é¥¤¥º)¤Ï²¹Â¸¤µ¤ì¤Ê¤¤¤Î¤Ç¤¹¤«?
-
-                              ÆüËܸì¤Ë´Ø¤¹¤ë¼ÁÌä
-
-5.1) ÆüËܸ줬¤¦¤Þ¤¯°·¤¨¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-5.2) psql ¤ÇWindows¤«¤é¥¢¥¯¥»¥¹¤·¤¿¤È¤­¤Ë¡¢ÆüËܸ줬ʸ»ú²½¤±¤¹¤ë¤Î¤Ç¤¹¤¬¡©
-5.3) PostgreSQL¤ÇÆüËܸì¤ÎÁ´Ê¸¸¡º÷¤Ï¤Ç¤­¤Þ¤¹¤«¡©
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-                                 °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡©¤½¤Î¸Æ¤ÓÊý¤Ï¡© Postgres¤È¤Ï¡©
-
-PostgreSQL¤ÏPost-Gres-Q-L(¥Ý¥¹¥È¡¦¥°¥ì¥¹¡¦¥­¥å¡¼¡¦¥¨¥ë) ¤Èȯ²»¤·¤Þ¤¹¤¬¡¢²ñÏäÎ
-Ãæ¤Ç¤Ïñ½ã¤Ë Postgres ¤È¸Æ¤Ð¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£¡Ê"PostgreSQL"¤ò¤É¤¦È¯²»¤¹¤ë¤«
-µ¤¤Ë¤Ê¤ë¿Í¤Î¤¿¤á¤Ë¡¢²»À¼¥Õ¥¡¥¤¥ë¤òÍѰդ·¤Æ¤¢¤ê¤Þ¤¹¡£
-
-PostgreSQL ¤Ï¥ª¥Ö¥¸¥§¥¯¥È-¥ê¥ì¡¼¥·¥ç¥Ê¥ë¥Ç¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ç¡¢ÅÁÅýŪ¤Ê¾¦ÍÑ¥Ç
-¡¼¥¿¥Ù¡¼¥¹¥·¥¹¥Æ¥à¤Ë¡¢¼¡À¤ÂåDBMS¥·¥¹¥Æ¥à¤Ë¸«¤é¤ì¤ë¤è¤¦¤Ê²þÎɤ¬»Ü¤µ¤ì¤¿ÆÃħ¤òÍ­
-¤·¤Þ¤¹¡£PostgreSQL¤Ï¡¢ÌµÎÁ¤Ç´°Á´¤Ê¥½¡¼¥¹¥³¡¼¥É¤ò¼ê¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-PostgreSQL ¤Î³«È¯¤Ï¡¢¤Û¤È¤ó¤É¤¬¡¢À¤³¦Ãæ¤Ë¤Ò¤í¤¬¤Ã¤¿¥Ü¥é¥ó¥Æ¥£¥¢¤Î³«È¯¼Ô¤Ë¤è¤Ã¤Æ
-¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤òÄ̤·¤¿¥³¥ß¥å¥Ë¥±¡¼¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¥³¥ß¥å¥Ë¥Æ¥£
-¤Ë¤è¤ë¥×¥í¥¸¥§¥¯¥È¤Ç¤¢¤ë¤¿¤á¡¢¤É¤Î´ë¶È¤ÎÀ©¸æ¤â¤¦¤±¤Þ¤»¤ó¡£³«È¯¤Ë»²²Ã¤·¤¿¤±¤ì¤Ð
-¡¢ http://www.postgresql.org/docs/faqs.FAQ_DEV.html ¤Ë¤¢¤ë³«È¯¼Ô¤ÎFAQ¤ò¸«¤Æ¤¯¤À
-¤µ¤¤¡£
-
-Postgres¤ÏPostgreSQL¤Î¹­¤¯»È¤ï¤ì¤Æ¤¤¤ë°¦¾Î¤Ç¤¹¡£¤Þ¤¿¡¢¥Ð¡¼¥¯¥ì¡¼¤Ç¤Î¥×¥í¥¸¥§¥¯
-¥È¤Ç¤â¤È¤â¤È»È¤ï¤ì¤Æ¤¤¤¿Ì¾Á°¤Ç¡¢¤Û¤«¤Î¤¤¤º¤ì¤Î°¦¾Î¤ËÈæ¤Ù¤Æ¤âÍÚ¤«¤Ë¹¥¤Þ¤·¤¤¤Ç¤¹
-¡£'PostgreSQL' ¤Îȯ²»¤¬Æñ¤·¤¤¤È»×¤¦¤Î¤Ç¤¢¤ì¤Ð¡¢¤½¤Î¤«¤ï¤ê¤Ë 'Postgres' ¤È¸Æ¤Ö¤è
-¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£
-
-1.2) Ã¯¤¬ PostgreSQL ¤ò¥³¥ó¥È¥í¡¼¥ë¤·¤Æ¤¤¤Þ¤¹¤«¡©
-
-PostgreSQL¤ÎÌçÈÖ¡¢Ãæ±û°Ñ°÷²ñ¡¢¤¢¤ë¤¤¤Ï¡¢¥³¥ó¥È¥í¡¼¥ë¤ò¤¹¤ë²ñ¼Ò¤òõ¤½¤¦¤È¤·¤Æ¤â
-¡¢Äü¤á¤¶¤ë¤ò¤¨¤º ---- Â¸ºß¤·¤Ê¤¤¤Î¤Ç¤¹¡£²æ¡¹¤Ï¡¢Ãæ¿´¤È¤Ê¤ë¥³¥ß¥Ã¥Æ¥£¤ÈCVS¥³¥ß¥Ã
-¥¿¤ò»ý¤Á¤Þ¤¹¤¬¡¢¤³¤ì¤é¤Î¥°¥ë¡¼¥×¤Ï¥³¥ó¥È¥í¡¼¥ë¤¹¤ë¤¿¤á¤È¤¤¤¦¤è¤ê¤â¡¢´ÉÍý¾å¤Î¤â
-¤Î¤Ç¤¹¡£¤³¤³¤Ç¤Ï¡¢¥×¥í¥¸¥§¥¯¥È¤Ï¡¢¤À¤ì¤Ç¤â»²²Ã¤¬¤Ç¤­¤ë³«È¯¼Ô¤È¥æ¡¼¥¶¤Î¥³¥ß¥å¥Ë
-¥Æ¥£¤Ë¤è¤êÊý¸þÉÕ¤±¤é¤ì¤Þ¤¹¡£ÆÉ¼Ô¤¬¤ä¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ï¡¢¥á¡¼¥ê¥ó¥°¥ê¥¹¥È
-¤ò¥µ¥Ö¥¹¥¯¥é¥¤¥Ö¤·¤Æ¡¢µÄÏÀ¤Ë»²²Ã¤¹¤ë¤³¤È¤Ç¤¹¡£¡ÊDeveloper's FAQ¤Ë¤Ï¡¢PostgreSQL
-³«È¯¤Ë²Ã¤ï¤êÊý¤Ë¤Ä¤¤¤Æ¤Î¾ðÊ󤬤¢¤ê¤Þ¤¹¡£¡Ë
-
-1.3) PostgreSQL ¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Ï²¼µ­¤ÎÃøºî¸¢¤Ë½¾¤¤¤Þ¤¹¡£
-
-PostgreSQL¤Ï¸Å¤¯¤«¤é¤ÎBSD¥é¥¤¥»¥ó¥¹¤Î²¼¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ì¤Ï´ðËÜŪ¤Ë¤Ï¡¢Íø
-ÍѼԤ¬¤½¤Î¥³¡¼¥É¤ò¹¥¤­¾¡¼ê¤ËÍøÍѤ¹¤ë¤³¤È¤¬µö¤µ¤ì¤Æ¤¤¤Þ¤¹¡£À©¸Â¤¬¤¢¤ë¤È¤¹¤ì¤Ð¡¢
-¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ëȼ¤¦¤¤¤«¤Ê¤ëÌäÂê¤Ë¤ª¤¤¤Æ¤âˡŪ¤ËÀÕǤ¤ò²æ¡¹¤ËÉé¤ï¤»¤ë¤³¤È¤¬¤Ç
-¤­¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤Þ¤¿¡¢¤³¤ÎÃøºî¸¢É½¼¨¤¬¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤¹¤Ù¤Æ¤ÎÊ£À½¤Ëɽ
-¼¨¤¹¤ë¤³¤È¤âɬÍפǤ¹¡£°Ê²¼¤Ë¡¢²æ¡¹¤¬¼ÂºÝ¤Ë»È¤Ã¤Æ¤¤¤ëBSD»ÈÍѵöÂú½ñ¤ò¼¨¤·¤Þ¤¹¡§
-
-    [ÌõÃí¡§
-        ÀµÊ¸¤Ï±Ñ¸ì¤Ç¤¹¡£»²¹Í¤È¤·¤Æ¡¢Ìõʸ¤òÊ»µ­·ÇºÜ¤·¤Þ¤¹¡£
-    ]
-
-
-PostgreSQL Data Base Management System
-
-Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group Portions
-Copyright (c) 1994-1996 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.
-
-        POSTGRESQL ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à
-
-        ÉôÊ¬ÅªÃøºî¸¢ (c) 1996-2009, PostgreSQL¹ñºÝ³«È¯¥°¥ë¡¼¥×
-        ÉôÊ¬ÅªÃøºî¸¢ (c) 1994-1996 ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³ØËܹ»
-
-
-          ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ­¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï
-        ¤ª¤è¤Ó¤³¤ì¤Ë³¤¯Æó¤Ä¤ÎÃÊÍÁ´¤Æ¤ÎÊ£À½¤ËźÉÕ¤µ¤ì¤Æ¤¤¤ë¸Â¤ê¤Ë¤ª¤¤
-        ¤Æ¡¢»ÈÍÑ¡¢Ê£À½¡¢½¤Àµ¤ª¤è¤ÓÇÛÉդεö²Ä¤ò¡¢¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤Ã¤Æ¤â¡¢
-        Ìµ½þ¤Ç¤«¤ÄƱ°Õ½ñ̵¤·¤Ë¹Ô¤Ê¤¨¤ë¤³¤È¤ò¤³¤³¤Ëǧ¤á¤Þ¤¹¡£
-
-          ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¤¤¤«¤Ê¤ëÅö»ö¼Ô¤Ë¤¿¤¤¤·¤Æ¤â¡¢Íø±×¤Î²õ¼º¤ò
-        ´Þ¤à¡¢Ä¾ÀÜŪ¡¢´ÖÀÜŪ¡¢ÆÃÊÌ¡¢¶öÁ³¤¢¤ë¤¤¤ÏɬÁ³Åª¤Ë¤«¤«¤ï¤é¤ºÀ¸¤¸¤¿
-        Â»³²¤Ë¤Ä¤¤¤Æ¡¢¤¿¤È¤¨¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤¬¤³¤ì¤é¤Î»³²¤Ë¤Ä¤¤¤ÆÁÊÄÉ
-        ¤ò¼õ¤±¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£
-
-          ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¾¦ÍÑÌÜŪ¤Ë¤ª¤±¤ë°ÅÌÛ¤ÎÊݾڤȡ¢ÆÃÄêÌÜŪ¤Ç
-        ¤ÎŬ¹çÀ­¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´þ¤¹
-        ¤ë¤³¤È¤òÌÀ¸À¤·¤Þ¤¹¡£°Ê²¼¤ËÍѰդµ¤ì¤¿¥½¥Õ¥È¥¦¥§¥¢¤Ï¡Ö¤½¤Î¤Þ¤Þ¡×¤ò
-        ´ðËܸ¶Íý¤È¤·¡¢¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¤½¤ì¤ò°Ý»ý¡¢»Ù±ç¡¢¹¹¿·¡¢²þÎɤ¢
-        ¤ë¤¤¤Ï½¤Àµ¤¹¤ëµÁ̳¤òÉ餤¤Þ¤»¤ó¡£
-
-    [ÌõÃí¡§
-        Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ­¤Î±Ñ¸ì¤Ë¤è¤ëɽµ­¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç
-        »²¹ÍÄøÅ٤Ȥ·¤Æ¤¯¤À¤µ¤¤¡£
-    ]
-
-
-1.4) PostgreSQL¤ò¥µ¥Ý¡¼¥È¤¹¤ë¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
-
-°ìÈÌŪ¤Ë¡¢ºÇ¶á¤ÎUnix¸ß´¹¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç¤¢¤ì¤ÐPostgreSQL¤ò²ÔƯ¤µ¤»¤é¤ì¤ë¤Ï¤º¤Ç
-¤¹¡£¥ê¥ê¡¼¥¹¤Î»þÅÀ¤Ç¼ÂºÝ¤Ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤Ã¤¿¤³¤È¤ÎÊó¹ð¤¬¤Ê¤µ¤ì¤¿¥×¥é¥Ã¥È¥Û¡¼¥à¤Ë
-¤Ä¤¤¤Æ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¼ê°ú½ñ¤ËÎóµó¤·¤Æ¤¢¤ê¤Þ¤¹¡£
-
-PostgreSQL ¤Ï¡¢Win2000 SP4, WinXP, ¤½¤·¤Æ¡¢Win2003 ¤Ê¤É Microsoft Windows NT¥Ù
-¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¡¢¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ê¤Þ¤¹¡£¤¢¤é¤«¤¸¤á¥Ñ¥Ã¥±¡¼¥¸¤Ë
-¤µ¤ì¤¿¥¤¥ó¥¹¥È¡¼¥é¤¬ http://www.postgresql.org/download/windows ¤«¤é¥À¥¦¥ó¥í¡¼
-¥É¤Ç¤­¤Þ¤¹¡£ MSDOS¥Ù¡¼¥¹¤ÎWindows¤Î¥Ð¡¼¥¸¥ç¥ó(Win95, Win98, WinMe)¤Ç¤Ï¡¢Cygwin
-¤ò»È¤Ã¤Æ PostgreSQL ¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-    [ÌõÃí
-        ÆüËܸì¤Ç¤Î¾ðÊó¤Ï¡¢¼¡¤Î WindowsÈǤ˴ؤ¹¤ëFAQ¤ÎÏÂÌõ¤ò¤´¤é¤ó¤¯¤À¤µ
-    ¤¤¡Ê¤ä¤ä¸Å¤¤¤Ç¤¹¡Ë¡£
-        http://old.postgresql.jp/wg/jpugdoc/FAQ_windows.ja.html
-    ]
-
-
-¼¡¤Î¥µ¥¤¥È¤Ë Novell Netware 6 ¤Ø¤Î°Ü¿¢ÈǤ⤢¤ê¤Þ¤¹¡£ http://
-developer.novell.com/wiki/index.php/Postgresql ¤Þ¤¿¡¢OS/2 (eComStation) ¥Ð¡¼¥¸
-¥ç¥ó¤Ï¡¢ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=
-postgreSQL&stype=all&sort=type&dir=%2F¤Ë¤¢¤ê¤Þ¤¹¡£
-
-
-1.5) PostgreSQL ¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤­¤Þ¤¹¤«¡©
-
-Web¥Ö¥é¥¦¥¶·Ðͳ¤À¤È¡¢ http://www.postgresql.org/ftp/¡¢¤½¤ì¤«¤é¡¢ftp·Ðͳ¤À¤È¡¢
-ftp://ftp.postgresql.org/pub/ ¤ò»È¤¤¤Þ¤¹¡£
-
-1.6) ºÇ¿·¤Î¥ê¥ê¡¼¥¹¤Ï¤É¤ì¤Ç¤¹¤«¡©
-
-PostgreSQL ¤ÎºÇ¿·ÈǤϥС¼¥¸¥ç¥ó 8.3.5 ¤Ç¤¹¡£
-
-²æ¡¹¤Ï¡¢1ǯËè¤Ë¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¡¢¿ô¥õ·î¤´¤È¤Î¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ò¹Ô¤Ê¤¦¤³¤È¤ò·×
-²è¤·¤Æ¤¤¤Þ¤¹¡£
-
-    [ÌõÃí
-        ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Î x.y.z ¤ÎºÇ½é¤Î x.y ¤¬¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ÎÈÖ¹æ¤ËÁê
-        Åö¤·¡¢ºÇ¸å¤Î z ¤¬¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ÎÈÖ¹æ¤Ë¤Ê¤ê¤Þ¤¹¡£¥á¥¸¥ã¡¼¥ê¥ê¡¼
-        ¥¹¤ÎÈֹ椬Ʊ¤¸¤Ç¤¢¤ì¤Ð¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¯¥é¥¹¥¿¤Ë¸ß´¹À­¤¬¤¢¤ê¤Þ¤¹¡£
-    ]
-
-
-1.7) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
-
-PostgreSQL ¥³¥ß¥å¥Ë¥Æ¥£¤Ï¿¤¯¤Î¥æ¡¼¥¶¤Î¤¿¤á¤Ë¡¢ÅŻҥ᡼¥ë·Ðͳ¤Î»Ù±ç¤òÄ󶡤·¤Æ¤¤
-¤Þ¤¹¡£ÅŻҥ᡼¥ë¥ê¥¹¥È¤ò¥µ¥Ö¥¹¥¯¥é¥¤¥Ö¤¹¤ë¤¿¤á¤Î¥á¥¤¥ó¤È¤Ê¤ë¥¦¥§¥Ö¥µ¥¤¥È¤Ï
-http://www.postgresql.org/community/lists/¤Ç¤¹¡£¤³¤ì¤«¤é¡¢»Ï¤á¤ë¤Î¤Ç¤¢¤ì¤Ð
-general ¤Þ¤¿¤Ï¡¢bugs ¤È¤¤¤Ã¤¿¥ê¥¹¥È¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£
-
-¥á¥¸¥ã¡¼¤ÊIRC ¥Á¥ã¥ó¥Í¥ë¤Ï¡¢Freenode (irc.freenode.net)¤Î #postgresql ¤È¤¤¤¦¥Á
-¥ã¥ó¥Í¥ë¤Ç¤¹¡£UNIX ¥³¥Þ¥ó¥É¤Ç¤Ï¡¢ irc -c '#PostgreSQL' "$USER" irc.freenode.net
-¤ò»È¤Ã¤Æ»²²Ã¤Ç¤­¤Þ¤¹¡£Æ±¤¸¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¡¢¥¹¥Ú¥¤¥ó¸ì¤Î¥Á¥ã¥ó¥Í¥ë (#
-postgresql-es)¡¢¥Õ¥é¥ó¥¹¸ì¤Î¥Á¥ã¥ó¥Í¥ë (#postgresqlfr)¡¢¥Ö¥é¥¸¥ë¸ì¥Á¥ã¥ó¥Í¥ë (#
-postgresql-br) ¤â¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢EFNet¤Ë¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Þ¤¹¡£
-
-    [ÌõÃí:
-          1999ǯ7·î23Æü¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¡¢Î¬¾ÎJPUG¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£
-        JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
-        (2006ǯ ÆÃÄêÈó±ÄÍø³èư(NPO)Ë¡¿ÍÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
-        Web²ñ°÷¤ÈÀµ²ñ°÷¤Î²ñÈñ¤Ï̵ÎÁ¤Ç¤¹¤¬¡¢¶¨»¿²ñ°÷¤Î²ñÈñ¤È²ñ°÷¤Î¹×¸¥¤Ç
-          ²ñ¤Ï±¿±Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£)
-        ¾Ü¤·¤¯¤Ï¡¢JPUG ¤ÎWeb ¥µ¥¤¥È:
-                http://www.postgresql.jp/
-        ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-        ÆüËܸì¤ÎIRC¥Á¥ã¥ó¥Í¥ë '#PostgreSQL:*.jp' ¤â¸ºß¤·¤Þ¤¹¡£
-    ]
-
-
-¾¦ÍÑ¥µ¥Ý¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ï http://www.postgresql.org/support/
-professional_support¤Ë¤¢¤ê¤Þ¤¹¡£
-
-1.8) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
-
-http://www.postgresql.org/support/submitbug ¤ÎPostgreSQL ¥Ð¥°¥Õ¥©¡¼¥à¤òˬ¤ì¤Æ¤¯
-¤À¤µ¤¤¡£¥Ð¥°¥ì¥Ý¡¼¥È¤òÄó½Ð¤¹¤ë»ÅÊý¤Ë¤Ä¤¤¤Æ¤Î¼ê°ú¤È»Ø¿Ë¤¬¤¢¤ê¤Þ¤¹¡£
-
-¤½¤ì¤ÈƱ»þ¤Ë ftp ¥µ¥¤¥È ftp://ftp.postgresql.org/pub/ ¤Ç¡¢ºÇ¿·¥Ð¡¼¥¸¥ç¥ó¤Î
-PostgreSQL ¤òõ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
-
-PostgreSQL¤Ï³ÈÄ¥¤µ¤ì¤¿SQL:2003¤Î¥µ¥Ö¥»¥Ã¥È¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£²æ¡¹¤Î¥Ú¡¼¥¸¤Î TODO
-¥ê¥¹¥È¤Ë¡¢´ûÃΤΥХ°¤ä·çÍǽ¤ä¾­Íè·×²è¤Ë¤Ä¤¤¤Æ¤Îµ­½Ò¤¬¤¢¤ê¤Þ¤¹¡£
-
-ÆÃħ¤ÎÍ×µá¤ÏÉáÄ̼¡¤Î¤¤¤º¤ì¤«¤Î²òÅú¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡§
-
- ¡¦ ´û¤Ë¤³¤³¤Ë¤¢¤ëµ¡Ç½¤Ï¡¢ TODO ¥ê¥¹¥È¤Ç¤¹
- ¡¦ ¼¡¤Î¤è¤¦¤Êµ¡Ç½¤ÏÌÜÏÀ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤½¤ì¤Ï¡§
-     ¢¢ SQLµ¬³Ê¤Ë½à¤º¤ë´û¸¤Îµ¡Ç½¤È½ÅÊ£¤¹¤ë¤â¤Î
-     ¢¢ ¥³¡¼¥É¤ÎÊ£»¨À­¤Ð¤«¤ê¤ò¹â¤á¤Æ¡¢ÆÀ¤ë¤â¤Î¤¬¾¯¤Ê¤¤µ¡Ç½
-     ¢¢ °ÂÁ´À­¤¬³Î¤á¤é¤ì¤Ê¤¤µ¡Ç½
- ¡¦ ¿·¤·¤¤µ¡Ç½¤Ï¡¢ TODO ¤Î¥ê¥¹¥È¤Ë²Ã¤¨¤é¤ì¤é¤ì¤Þ¤¹¡£
-
-²æ¡¹¤Ï¡¢PostgreSQL ¤Ë´Ø¤·¤Æ¡¢ÅŻҥ᡼¥ë¤ÇľÀÜÂбþ¤·¤Æ TODO ¥ê¥¹¥È¤òºÇ¿·¤Ë¹¹¿·¤·
-¤Æ¤æ¤¯¤Û¤¦¤¬¤è¤ê¸ú²ÌŪ¤Ç¤¢¤ë¤³¤È¤òÃΤäƤ¤¤Þ¤¹¤Î¤Ç¡¢¥Ð¥°ÄÉÀ×¥·¥¹¥Æ¥à¤Ï»È¤¤¤Þ¤»
-¤ó¡£¸½¼Â¤Ë¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤ÎÃæ¤Ç¥Ð¥°¤Ï¤½¤ì¤Û¤ÉŤ¯¤Ï¤¤Â³¤±¤Þ¤»¤ó¤·¡¢Â¿¤¯¤Î¥æ
-¡¼¥¶¤Ë±Æ¶Á¤¹¤ë¥Ð¥°¤ÏÁáµÞ¤Ë½¤Àµ¤µ¤ì¤Þ¤¹¡£PostgreSQL¤Î¥ê¥ê¡¼¥¹¤Ç¡¢¤¹¤Ù¤Æ¤ÎÊѹ¹ÅÀ
-¡¢²þÎÉÅÀ¡¢¤½¤·¤Æ¡¢½¤ÀµÅÀ¤òÃΤꤿ¤±¤ì¤Ð¡¢ CVS ¤Î¥í¥°¥á¥Ã¥»¡¼¥¸¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¥ê
-¥ê¡¼¥¹¥Î¡¼¥È¤Ë¤µ¤¨¡¢¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ë²Ã¤¨¤é¤ì¤¿¤¹¤Ù¤Æ¤ÎÊѹ¹ÅÀ¤ÏÌÖÍ夵¤ì¤Æ¤¤¤Þ
-¤»¤ó¡£
-
-1.10) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-ÇÛÉÕ¤ÎÃæ¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥Þ¥Ë¥å¥¢¥ë¤È¥ª¥ó¥é¥¤¥ó¡¦¥Þ¥Ë¥å¥¢¥ë(¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸)¤ª
-¤è¤Ó¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥Æ¥¹¥ÈÎãÂ꤬´Þ¤Þ¤ì¤Þ¤¹¡£ /doc¥Ç¥£¥ì¥¯¥È¥ê¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-¤Þ¤¿¡¢¥Þ¥Ë¥å¥¢¥ë¤Ï¡¢ http://www.postgresql.org/docs/¤Ç¥ª¥ó¥é¥¤¥ó¤Ç¤â±ÜÍ÷¤Ç¤­¤Þ
-¤¹¡£
-
-    [ÌõÃí:
-        JPUG Ê¸½ñ¡¦½ñÀÒ´ØÏ¢Ê¬²Ê²ñ¤ÇËÝÌõ¤µ¤ì¤¿¥Þ¥Ë¥å¥¢¥ë¤â¤¢¤ê¤Þ¤¹¡£
-
-        http://www.postgresql.jp/document/pg830doc/
-        ¥¤¥ó¥×¥ì¥¹¤«¤é¡¢
-
-        PostgreSQL¥ª¥Õ¥£¥·¥ã¥ë¥Þ¥Ë¥å¥¢¥ë¤È¤·¤Æ½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
-    ]
-
-
-¥ª¥ó¥é¥¤¥ó¤Ç»²¾È¤Ç¤­¤ë PostgreSQL ¤ÎËܤâ2ºý¤¢¤ê¤Þ¤¹¡£ http://www.postgresql.org
-/docs/books/awbook.html
-
-    [ÌõÃí:
-        ¤³¤ÎËܤϡ¢JPUG¡ÖPostgreSQL BookËÝÌõʬ²Ê²ñ¡×
-        ¤ÇËÝÌõ¤µ¤ì¡¢¥Ô¥¢¥½¥ó¤«¤é
-        ¡Ö¤Ï¤¸¤á¤Æ¤ÎPostgreSQL¡×¤È¤·¤Æ½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
-    ]
-
-
-¤ª¤è¤Ó¡¢ http://www.commandprompt.com/ppbook/¤Ç¤¹¡£
-
-    [ÌõÃí:
-        Ë®Ìõ¤Ï¡Ö¼ÂÁ© PostgreSQL¡×
-        ¤¬¥ª¥é¥¤¥ê¡¼¤«¤é½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
-    ]
-
-
-¹ØÆþ²Äǽ¤Ê½ñÀÒ¤ÎÌÜÏ¿¤Ï¡¢http://www.postgresql.org/docs/books/ ¤Ë¤¢¤ê¤Þ¤¹¡£
-PostgreSQL µ»½Ñ¾ðÊóµ­»ö¤â¡¢http://wiki.postgresql.org/wiki/
-Community_Generated_Articles%2C_Guides%2C_and_Documentation ¤Ë¤¢¤ê¤Þ¤¹¡£
-
-    [ÌõÃí:
-        ÆüËܸì¤Î½ñÀÒÅù¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤Î¡¢http://www.postgresql.jp/PostgreSQL/references.html
-        ¤â¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-    ]
-
-
-¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥àpsql ¤Ë¤â¡¢·¿¡¢±é»»»Ò¡¢´Ø¿ô¡¢½¸Ì󡢤½¤Î¾
-¤Î¾ðÊó¤òÄ´¤Ù¤ë¤¿¤á¤Ë¡¢ÁÇÀ²¤é¤·¤¤ \d ¥³¥Þ¥ó¥É¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ \? ¤òÆþÎϤ¹¤ë
-¤ÈÍøÍѲÄǽ¤Ê¥³¥Þ¥ó¥É¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
-
-²æ¡¹¤Î Web ¥µ¥¤¥È¤Ë¤Ï¡¢¤µ¤é¤ËÂô»³¤Îʸ½ñ¤¬¤¢¤ê¤Þ¤¹¡£
-
-    [ÌõÃí:
-        2008ǯ11·î18Æü¡¢PostgreSQLÉáµÚ¤Î¤¿¤á¤Ë°ìÈ̸þ¤±¤Î¾ðÊó¤ò°·¤¦
-        ¡ÖLet's Postgres¡×¤È¤¤¤¦¥Ý¡¼¥¿¥ë¥µ¥¤¥È¤¬¥ª¡¼¥×¥ó¤·¤Þ¤·¤¿¡£http://lets.postgresql.jp/
-    ]
-
-
-1.11) SQL ¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
-
-¤Þ¤º¡¢¾åµ­¤Ç½Ò¤Ù¤¿ PostgreSQL ¤Ë¤Ä¤¤¤Æ¤ÎËܤòÆÉ¤à¤³¤È¤ò¸¡Æ¤¤·¤Æ¤¯¤À¤µ¤¤¡£ The
-Practical SQL Handbook, Bowman Judith S. et al., Addison-Wesley ¤â¿¤¯¤Î¥æ¡¼¥¶
-¤Ë¹¥É¾¤Ç¤¹¡£¤Û¤«¤Ç¤Ï¡¢The Complete Reference SQL, Groff et al., McGraw-Hill ¤â
-¹¥É¾¤Ç¤¹¡£
-
-ÁÇÀ²¤é¤·¤¤¼ê°ú½ñ¤Ï¡¢
-http://www.intermedia.net/support/sql/sqltut.shtm
-http://sqlcourse.com
-http://www.w3schools.com/sql/default.asp
-http://mysite.verizon.net/Graeme_Birchall/id1.html
-http://sqlzoo.net ¤Ë¤¢¤ê¤Þ¤¹¡£
-
-    [ÌõÃí:
-         ÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤ÎÆüËܸì¤Î»²¹Íʸ¸¥¤Î¾Ò²ð¥Ú¡¼¥¸
-
-http://www.postgresql.jp/PostgreSQL/references.html
-        ¤¬¤¢¤ê¤Þ¤¹¡£
-         ËÙÅÄÎѱѻá¤Î¡ÖPostgreSQLÆüËܸì¥Þ¥Ë¥å¥¢¥ë¡×
-                http://www.net-newbie.com/
-        ¤Ç¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¸¡º÷¤¬¤Ç¤­¤Þ¤¹¡£
-         ´Ý»³ÉÔÆóÉ×»á¤ÎUNIX ¥Ç¡¼¥¿¥Ù¡¼¥¹ÆþÌç
-                http://www.wakhok.ac.jp/DB/DB.html
-        ¤â¥ª¥ó¥é¥¤¥ó¤ÇÆÉ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-         Nikkei BP IT Pro ¤Ë¤¢¤ëÀаæÃ£É×»á¤Î PostgreSQL ¥¦¥©¥Ã¥Á
-        ¤Ç¤ÏËè²ó¿·¤·¤¤¾ðÊó¤ò¤È¤ê¤¢¤²¤Æ¤¤¤Þ¤¹¡£
-    ]
-
-
-1.12) ¥Ñ¥Ã¥Á¤òÄ󶡤·¤¿¤ê¡¢³«È¯¥Á¡¼¥à»²²Ã¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
-¡Ê³«È¯¼Ô¸þ¤±¤Î¡ËDeveloper's FAQ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-1.13) Â¾¤ÎDBMS¤ÈÈæ¤ÙPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡© PostgreSQL¤òÁȤ߹þ¤ß¤Ë»È¤¨¤Þ¤¹
-¤«¡©
-
-¥½¥Õ¥È¥¦¥§¥¢¤òɾ²Á¤¹¤ëÊýË¡¤Ë¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£µ¡Ç½¤ÈÀ­Ç½¤È¿®ÍêÀ­¤È¥µ¥Ý¡¼¥È¤È
-²Á³Ê¤Ç¤¹¡£
-
-µ¡Ç½(Features)
-    PostgreSQL¤Ï¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¢¥µ¥Ö¥¯¥¨¥ê¡¢¥È¥ê¥¬¡¼¡¢¥Ó¥å¡¼¡¢³°Éô¥­¡¼À°¹ç
-    À­»²¾È¡¢¤ª¤è¤Ó¡¢ÀöÎý¤µ¤ì¤¿¥í¥Ã¥¯µ¡¹½¤Ê¤É¡¢Â絬ÌϾ¦ÍÑ DBMS¤¬»ý¤Äµ¡Ç½¤ò¤Û¤È¤ó
-    ¤É»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë PostgreSQL¤Ï¡¢¥æ¡¼¥¶ÄêµÁ·¿¡¢·Ñ¾µ¡¢¥ë¡¼¥ë¡¢¤½¤ì¤«¤é¡¢
-    ¥í¥Ã¥¯¶¥¹ç¤ò½Ì¾®¤¹¤ë¥Þ¥ë¥Á¥Ð¡¼¥¸¥ç¥óƱ»þÀ­À©¸æ¤Ê¤É¡¢¾¦ÍÑDBMS¤â»ý¤Á¹ç¤ï¤»¤Ê
-    ¤¤¤è¤¦¤Êµ¡Ç½¤ò¤¤¤¯¤Ä¤«»ý¤Á¹ç¤ï¤»¤Æ¤¤¤Þ¤¹¡£
-À­Ç½(Performance)
-    PostgreSQL¤Ï¾¤Î¾¦ÍѤ¢¤ë¤¤¤Ï¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤È¸ß³Ñ¤ÎÀ­Ç½¤â»ý¤Á
-    ¤Þ¤¹¡£¤¢¤ëÌ̤ǤϤè¤êÁᤫ¤Ã¤¿¤ê¡¢¤Û¤«¤ÎÌ̤ǤϤè¤êÃÙ¤«¤Ã¤¿¤ê¤·¤Þ¤¹¡£Â¾¤Î¥Ç¡¼
-    ¥¿¥Ù¡¼¥¹¤ËÈæ¤Ù¤¿À­Ç½¤Ï¡¢¤Õ¤Ä¤¦ +/-10% ¤¯¤é¤¤¤Ç¤·¤ç¤¦¡£
-¿®ÍêÀ­(Reliability)
-    ²æ¡¹¤Ï¡¢DBMS¤Î¿®ÍêÀ­¤¬¹â¤¯¤Ê¤¯¤Æ¤Ï¤½¤Î²ÁÃͤ¬Ìµ¤¤¤³¤È¤òÍý²ò¤·¤Æ¤Þ¤¹¡£½½Ê¬¥Æ
-    ¥¹¥È¤·¤Æ¡¢°ÂÄꤷ¤¿¥³¡¼¥É¤ò¥Ð¥°¤òºÇ¾®¤Ë¤·¤Æ¤«¤é¥ê¥ê¡¼¥¹¤¹¤ë¤è¤¦¤ËÅØ¤á¤Æ¤Þ¤¹
-    ¡£¤½¤ì¤¾¤ì¤Î¥ê¥ê¡¼¥¹¤Ï¾¯¤Ê¤¯¤È¤â1 ¥«·î°Ê¾å¤Î¥Ù¡¼¥¿¡¦¥Æ¥¹¥È¤ò¹Ô¤Ê¤¤¡¢¤³¤ì¤Þ
-    ¤Ç¤Î¥ê¥ê¡¼¥¹¤ÎÍúÎò¤¬¡¢À½ÉÊÈǤȤ·¤Æ°ÂÄꤷ¤¿·ø¸Ç¤Ê¥ê¥ê¡¼¥¹¤Ç¤¢¤ë¤³¤È¤òʪ¸ì¤Ã
-    ¤Æ¤¤¤Þ¤¹¡£¤³¤ÎʬÌî¤Ç¤Ï¡¢Â¾¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÈÈæ¤Ù¤Æ¤â½¿§¤¬¤Ê¤¤¤³¤È¤Ë¼«¿®¤ò»ý
-    ¤Ã¤Æ¤¤¤Þ¤¹¡£
-¥µ¥Ý¡¼¥È(Support)
-    ²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¡¢Áø¶ø¤¹¤ë¤¤¤«¤Ê¤ëÌäÂê¤Ë¤Ä¤¤¤Æ¤â²ò·è¤Ø¤Î¼ê½õ¤±¤ò¤·
-    ¤Æ¤¯¤ì¤ë¡¢³«È¯¼Ô¤ä¥æ¡¼¥¶¤ÎÂ礭¤Ê½¸¤Þ¤ê¤Ø¤ÎÀÜÅÀ¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£²æ¡¹¤ÏÌäÂê
-    ¤Î²ò·è¤òÊݾڤ¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢¾¦Íѥǡ¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤Ã¤Æ¤â¾ï¤Ë²ò·è¤µ¤ì
-    ¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£³«È¯¼Ô¤ä¡¢¥æ¡¼¥¶¡¦¥³¥ß¥å¥Ë¥Æ¥£¡¢¥Þ¥Ë¥å¥¢¥ëÎà¡¢¤½¤ì¤Ë
-    ¡¢¥½¡¼¥¹¥³¡¼¥É¤Ê¤É¤ØÄ¾ÀÜ¥¢¥¯¥»¥¹¤Ç¤­¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢PostgreSQL¤Î¥µ¥Ý¡¼¥È¤Ï
-    ¡¢Â¾¤ÎDBMS ¥µ¥Ý¡¼¥È¤è¤ê¤âÍ¥¤ì¤¿¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¸æÍ×˾¤ËÅú¤¨¤Æ¡¢»öÊÁËè¤Î
-    ¾¦ÍÑ¥µ¥Ý¡¼¥È¤Ê¤É¤â¤¢¤ê¤Þ¤¹¡ÊFAQ1.7Àá¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡Ë¡£
-²Á³Ê(Price)
-    PostgreSQL¤ÎÍøÍѤϡ¢¾¦ÍѤǤâÈó¾¦ÍѤǤ⡢¤¹¤Ù¤ÆÌµÎÁ¤Ç¤¹¡£¾åµ­¤Ë¼¨¤·¤Æ¤¢¤ëBSD
-    ¥¹¥¿¥¤¥ë¤Î»ÈÍѵöÂú¤Ë³°¤ì¤Ê¤¤¸Â¤ê¡¢PostgreSQL¤Î¥³¡¼¥É¤òÀ©¸Â̵¤·¤Ç¾¦ÉʤËÁȤß
-    ¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-PostgreSQL¤Ï¥¯¥é¥¤¥¢¥ó¥È¡¿¥µ¡¼¥Ð¡¦¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ÇÀ߷פµ¤ì¤Æ¤¤¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È
-¤È¥µ¡¼¥Ð¤ª¤è¤Ó¤½¤ì¤òÊä½õ¤¹¤ë¤¤¤í¤¤¤í¤Ê¥×¥í¥»¥¹¤¬ÊÌ¡¹¤ËÁö¤ë¤³¤È¤¬Í׵ᤵ¤ì¤Þ¤¹¡£
-¿¤¯¤ÎÁȤ߹þ¤ß¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ï¤³¤Î¤è¤¦¤ÊÍ×µá¤ò¥µ¥Ý¡¼¥È²Äǽ¤Ç¤¹¡£¤·¤«¤·¡¢¤ª»È¤¤
-¤Ë¤Ê¤Ã¤Æ¤¤¤ëÁȤ߹þ¤ß¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ë¤è¤Ã¤Æ¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð¤¬¥¢¥×¥ê¥±¡¼¥·
-¥ç¥ó¡¦¥×¥í¥»¥¹¤ÎÃæ¤ÇÁö¤ë¤³¤È¤òÍ׵ᤵ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¡¢Postgres¤ò»È¤¦¤³¤È¤Ï¤Ç¤­¤Ê
-¤¤¤Î¤Ç¡¢·ÚÎ̤Υǡ¼¥¿¥Ù¡¼¥¹¥½¥ê¥å¡¼¥·¥ç¥ó¤òÁªÂò¤¹¤Ù¤­¤Ç¤¹¡£
-
-1.14) PostgreSQL¤Ï¹ñËè¤ÎºÇ¿·¤Î²Æ»þ´Ö¤ÎÊѹ¹¤ò°·¤¤¤Þ¤¹¤«¡©
-
-¹ç½£¹ñ¤Î²Æ»þ´Ö¤ÎÊѹ¹¤Ï¡¢PostgreSQL¤Î¥ê¥ê¡¼¥¹8.0.4°Ê¹ß[4+]¤È¡¢¤½¤Î¸å¤Î¥á¥¸¥ã¡¼¥ê
-¥ê¡¼¥¹¡¢¤¿¤È¤¨¤Ð 8.1 ¤Ë¤Ï´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥«¥Ê¥À¤È¥ª¡¼À¾Éô¥¹¥È¥é¥ê¥¢¤ÎÊѹ¹¤Ï¡¢
-8.0.[10+], 8.1.[6+] ¤ª¤è¤Ó¡¢¤½¤Î¸å¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Î¤¹¤Ù¤Æ¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£8.0¤è
-¤êÁ°¤ÎPosrgreSQL¤Ç¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î¥¿¥¤¥à¥¾¡¼¥ó¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò²Æ»þ´Ö
-¾ðÊó¤Î¤¿¤á¤Ë»È¤Ã¤Æ¤¤¤Þ¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-1.15) PostgreSQL¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹ØÆÉ¤ò¤ä¤á¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©¤Þ¤¿
-¡¢ÅŻҥ᡼¥ë¤ò½ÅÊ£¤·¤Æ¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-PostgreSQL¤ÎMajordomo ¥Ú¡¼¥¸¤«¤é¡¢PostgreSQL¤Ë´Ø¤¹¤ëÊ£¿ô¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Î¹Ø
-ÆÉ¤Î³«»Ï¤ÈÃæ»ß¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¡Ê¥í¥°¥¤¥ó¤¹¤ë¤¿¤á¤Ë¤ÏMajaordomo¤«¤é
-Á÷¤é¤ì¤ë¸æËܿͤΥѥ¹¥ï¡¼¥É¤¬É¬Íפˤʤê¤Þ¤¹¡£¡Ë
-
-PostgreSQLno¤¹¤Ù¤Æ¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ç¤Ï¡¢ÊÖ¿®¤Ï¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤È¤«¤Ä¸µ¤Î¥á¡¼
-¥ë¤ÎÅê¹Æ¼Ô¤ØÁ÷¤é¤ì¤ë¤è¤¦¤Ë¹½À®¤·¤Æ¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ë¤êÍøÍѼԤϡ¢¤â¤Ã¤È¤â¿×®¤Ë¥á
-¡¼¥ë¤Ø¤ÎÊÖ¿®¤ò¼õ¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£´û¤ËľÀܼõ¤±¼è¤Ã¤Æ¤¤¤ë¥á¡¼¥ë¤ò¡¢¥ê
-¥¹¥È¤«¤é½ÅÊ£¤·¤Æ¼õ¤±¼è¤ê¤¿¤¯¤Ê¤¤¾ì¹ç¤Ï¡¢Majordomo ¤ÎChange Settings¥Ú¡¼¥¸¤«¤é¡¢
-eliminatecc¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£¤Þ¤¿¡¢selfcopy¤Î¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤¹¤³¤È¤Ç¡¢¼«Ê¬¤ÎÁ÷¤Ã
-¤¿¥á¡¼¥ë¤Î¥³¥Ô¡¼¤ò¼õ¤±¼è¤é¤Ê¤¤¤è¤¦¤Ë¤â¤Ç¤­¤Þ¤¹¡£
-
-                          ¥æ¡¼¥¶¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Ë¤Ï¤É¤ó¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬»È¤¨¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤Ë´Þ¤Þ¤ì¤ëʪ¤ÏC¤ÈÁȹþ¤ß C¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤À¤±¤Ç¤¹¡£
-¤½¤Î¾¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÏÆÈΩ¤·¤¿¥×¥í¥¸¥§¥¯¥È¤Ç¡¢ÊÌ¡¹¤Ë¥À¥¦¥ó¥í¡¼¥É¤µ¤ì¤Þ¤¹¡£
-ʬ¤«¤ì¤ë¤³¤È¤Ç¡¢¤½¤ì¤¾¤ì¤Î³«È¯¥Á¡¼¥à¤¬ÆÈ¼«¤Î¥ê¥ê¡¼¥¹¥¹¥±¥¸¥å¡¼¥ë¤ò»ý¤Ä¤³¤È¤¬µö
-¤µ¤ì¤Þ¤¹¡£
-
-PHP ¤Î¤è¤¦¤Ê¤¤¤¯¤Ä¤«¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ï¡¢ PostgreSQL¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò´Þ¤ó
-¤Ç¤¤¤Þ¤¹¡£Perl, TCL, Python, ¤½¤·¤Æ¡¢¤½¤Î¤Û¤«¤ÎÍøÍѲÄǽ¤Ê¸À¸ì¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
-¤Ï¡¢http://pgfoundry.org ¤Î Drivers/Interfaces ¤ÎÀá¤ÎÃæ¤È¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Î¸¡º÷¤Ç
-¤ß¤Ä¤±¤é¤ì¤Þ¤¹¡£
-
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò΢¤Ë»ý¤Ä Web ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¤ÎÁÇÀ²¤é¤·¤¤¾Ò²ð¤¬¡¢
-http://www.webreview.com¤Ë¤¢¤ê¤Þ¤¹¡£
-
-Web ¤Ø¤Î³ÈÄ¥¤Î¤¿¤á¤Ë¤Ï¡¢PHP(http://www.php.net/) ¤¬Âî±Û¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤Ê
-¤Ã¤Æ¤¤¤Þ¤¹¡£
-
-    [ÌõÃí:
-          PHP¤Ë´Ø¤¹¤ëÆüËܸì¤Î¾ðÊó¤Ï¡¢2000ǯ4·î19Æü¤Ëȯ­¤·¤¿ÆüËÜPHP¥æ¡¼¥¶²ñ¤Î¥µ¥¤¥È
-                http://www.php.gr.jp/
-        ¤¢¤ë¤¤¤Ï¡¢×¢Àî Îव¤ó¤Î¥µ¥¤¥È
-                http://www.geocities.jp/rui_hirokawa/php/
-        ¤Ë¤«¤Ê¤ê¤Þ¤È¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£
-    ]
-
-
-½èÍý¤¬Ê£»¨¤Ê¾ì¹ç¡¢Â¿¤¯¤Î¿Í¤Ï Perl ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È CGI.pm ¤« mod_perl ¤ò»È¤¤
-¤Þ¤¹¡£
-
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-
-¾¦ÍѤȥª¡¼¥×¥ó¥½¡¼¥¹³«È¯¼Ô¤Ë¤è¤ë¤â¤ÎξÊý¤Ç¡¢PostgreSQL¤Ë¤Ï¿¤¯¤ÎGUI¥Ä¡¼¥ë¤¬ÍøÍÑ
-²Äǽ¤Ç¡¢¾ÜºÙ¤Ê¥ê¥¹¥È¤Ï¡¢ PostgreSQL GUI ¥Ä¡¼¥ë¤Ë¤Ä¤¤¤Æ¤Î¥³¥ß¥å¥Ë¥Æ¥£¥¬¥¤¥É¤Ë¤Æ
-¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-    [ÌõÃí:
-        pgAdmin3 ¤ÏPostgreSQLɸ½àGUI´ÉÍý¥Ä¡¼¥ë¤Ç¡¢WindowsÈÇ(PostgreSQL
-        for Windows) ¤ËƱº­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¾Ü¤·¤¤¾ðÊó¤Ï¡¢
-        http://www.pgadmin.org/¤Ë¤¢¤ê¤Þ¤¹¡£
-    ]
-
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-                                 ´ÉÍý¾å¤Î¼ÁÌä
-
-3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤­¤Þ¤¹¤«¡©
-
-´Êñ¤ÊÊýË¡¤Ï¡¢ configure ¤òÁö¤é¤»¤ë¤È¤­¤Ë --prefix ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹
-¡£
-
-3.2) Â¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
-
-´ûÄêÃͤǤϡ¢PostgreSQL ¤Ï Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¡¢¤Þ¤¿¤Ï¡¢TCP/IPÀܳ¤Î¥í¡¼¥«¥ë¥Þ
-¥·¥ó¤«¤é¤ÎÀܳ¤·¤«µö¤·¤Þ¤»¤ó¡£postgresql.conf ¤ÎÃæ¤Î listen_addresses ¤ò½¤Àµ¤·
-¡¢¤«¤Ä¡¢$PGDATA/pg_hba.conf ¥Õ¥¡¥¤¥ë¤òŬÀڤ˾¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¥µ¡¼¥Ð¤òºÆµ¯Æ°¤·
-¤Æ¡¢¥Û¥¹¥È¥Ù¡¼¥¹¤Îǧ¾Ú¤òÍ­¸ú¤Ë¤·¤Ê¤¤¤«¤®¤ê¤Ï¡¢Â¾¤Î¥Þ¥·¥ó¤«¤é¤ÏÀܳ¤Ç¤­¤Ê¤¤¤Ç¤·
-¤ç¤¦¡£
-
-3.3) ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤·¤Þ¤¹¤«
-¡©
-
-À­Ç½²þÁ±¤Î²ÄǽÀ­¤Î¤¢¤ê¤½¤¦¤Ê¼ç¤ÊÎΰ褬3¤Ä¤¢¤ê¤Þ¤¹¡§
-
-¥¯¥¨¥ê¤ÎÊѹ¹
-    ¥¯¥¨¥ê¤ò½¤Àµ¤·¤Æ¤è¤êÎɤ¤À­Ç½¤òÆÀ¤ë¤³¤È¤ò´Þ¤ß¤Þ¤¹¡§
-     ¢¢ ¼°¤ª¤è¤ÓÉôʬ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò´Þ¤à¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®
-     ¢¢ Ê£¿ô¤ÎINSERT¤Î¤«¤ï¤ê¤ËCOPY¤ò»ÈÍÑ
-     ¢¢ Ê£¿ô¤Îʸ¤ò¥°¥ë¡¼¥×²½¤·¡¢1¤Ä¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¤·¤Æ¥³¥ß¥Ã¥È¤Î¥ª¡¼¥Ð¥Ø¥Ã
-        ¥É¤òºï¸º
-     ¢¢ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤«¤é¤«¤éÂô»³¤Î¥í¥¦¤ò¼è¤ê½Ð¤¹¤È¤­¤ÏCLUSTER¤ò»ÈÍÑ
-     ¢¢ ¥¯¥¨¥ê¤Î½ÐÎϤΥµ¥Ö¥»¥Ã¥È¤òÊÖ¤¹¤¿¤á¤ËLIMIT¤ò»ÈÍÑ
-     ¢¢ ½àÈ÷¤µ¤ì¤Æ¤¤¤ë¥¯¥¨¥ê¤ò»ÈÍÑ
-     ¢¢ ¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤ÎÀµ³Î¤ÊÅý·×¤ò°Ý»ý¤¹¤ë¤¿¤á¤ËANALYZE¤ò»ÈÍÑ
-     ¢¢ VACUUM ¤Þ¤¿¤Ï pg_autovacuum ¤Î¾ïÍÑ
-     ¢¢ Â礭¤Ê¥Ç¡¼¥¿Êѹ¹¤Î¤¢¤ë¤È¤­¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºï½ü
-
-
-¥µ¡¼¥Ð¹½À®
-    postgresql.conf¤ÎÀßÄê¤Î¤¤¤¯¤Ä¤«¤ÏÀ­Ç½¤Ë±Æ¶Á¤·¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¡¢
-    Administration Guide/Server Run-time Environment/Run-time Configuration ¤Î
-    Á´·ï¥ê¥¹¥È¤ò¤´¤é¤ó¤¯¤À¤µ¤¤( JPUG¥µ¥¤¥È¤ÎÆüËܸìÈÇ¡¢¥µ¡¼¥Ð¤Î¹½À®)¡£¤½¤·¤Æ¡¢²ò
-    Àâ¤È¤·¤Æ¡¢ http://www.varlena.com/varlena/GeneralBits/Tidbits/
-    annotated_conf_e.html ¤ª¤è¤Ó¡¢ http://www.varlena.com/varlena/GeneralBits/
-    Tidbits/perf.html ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-¥Ï¡¼¥É¥¦¥§¥¢¤ÎÁªÄê
-    À­Ç½¤Ë¤ª¤±¤ë¥Ï¡¼¥É¥¦¥§¥¢¤Î±Æ¶Á¤Ï http://www.powerpostgresql.com/PerfList/
-    ¤È¡¢ http://momjian.us/main/writings/pgsql/hw_performance/index.html (JPUG
-    ¥µ¥¤¥È¤ÎÆüËܸìÈÇ) ¤Ë½Ò¤Ù¤é¤ì¤Æ¤¤¤Þ¤¹¡£
-
-
-    [ÌõÃí:
-      JPUGÍý»öŤÎÊÒ²¬ÍµÀ¸»á¤Ë¤è¤ë¡¢¡Öº£¤¹¤°¤Ç¤­¤ëPostgreSQL¥Á¥å¡¼¥Ë¥ó¥°¡×
-      ¤È¤¤¤¦¥³¡¼¥Ê¡¼¤¬ ThinkIT ¥µ¥¤¥È¤Ë¤¢¤ê¡¢¼Âºî¶È¤Î»²¹Í¤Ë¤Ê¤ê¤Þ¤¹¡£
-        http://www.thinkit.co.jp/free/tech/10/1/1.html
-    ]
-
-
-3.4) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
-
-¥µ¡¼¥Ð¹½À®ÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢ href="http://www.postgresql.org/docs/current/
-interactive/runtime-config-logging.html">http://www.postgresql.org/docs/current
-/interactive/runtime-config-logging.html ¤Ë¼¨¤µ¤ì¤ë¤è¤¦¤Ë¿¤¯¤Î log_* ¤¬¤¢¤ê¡¢
-¥¯¥¨¥ê¤È¥×¥í¥»¥¹¤ÎÅý·×¾ðÊó¤ò½ÐÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢¥Ç¥Ð¥°¤äÀ­Ç½Â¬Äê¤Ë¤Ï¤È¤Æ¤âÊØÍø
-¤Ç¤¹¡£
-
-3.5) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤­¤Ë 'Sorry, too many clients' ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-´ûÄê¤Ç¤ÎÀ©¸Â¤Ç¤¢¤ë 100 ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¥»¥Ã¥·¥ç¥ó¤Ë㤷¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£¥µ¡¼¥Ð¡¼
-¤ÎƱ»þÀܳ¤Ç¤­¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ÎÀ©¸ÂÃͤòÁý¤ä¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
-postgresql.conf ¤ÎÃæ¤Îmax_connections ¤ÎÃͤòÊѹ¹¤·¤Æ¥µ¡¼¥Ð¤òºÆµ¯Æ°¤¹¤ë¤³¤È¤Ç²Ä
-ǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-3.6) PostgreSQL¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¼ê½ç¤Ï¤É¤¦¤Ê¤ê¤Þ¤¹¤«¡©
-
-¥Ð¡¼¥¸¥ç¥óÈÖ¹æÉÕ¤±¤ÎÊý¿Ë¤Ë¤Ä¤¤¤Æ¡¢¹¹¿·Á´È̤ˤĤ¤¤Æ¤Î²òÀâ¤Ïhttp://
-www.postgresql.org/support/versioning ¤ò¡¢¤½¤·¤Æ¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ä¤¤¤Æ¤Î°ìÈÌ
-Ū¤ÊÀâÌÀ¤Ï http://www.postgresql.org/docs/current/static/install-upgrading.html
-¤ò¤´Í÷¤¯¤À¤µ¤¤¡£
-
-[ÌõÃí¡§
-   ¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ä¤¤¤Æ¤ÎÏÂÌõÈǤϲ¼µ­¤Ë¤¢¤ê¤Þ¤¹¡£
-  http://www.postgresql.jp/document/current/html/install-upgrading.html
-]
-
-[ÌõÃí¡§
-   ¸¶Ê¸¤Ç¤Ï¡¢²¼µ­¤ÎÆâÍÆ¤ÏÆÈΩ¤·¤¿¥Ú¡¼¥¸¤Ë°Ü¤µ¤ì¡¢ºï½ü¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-
-¿·¤·¤¤µ¡Ç½¤òÀ¹¤ê¹þ¤àPostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Ï¤À¤¤¤¿¤¤Ç¯¤Ë1²óÄøÅٹԤʤ¤¤Þ¤¹
-¡£¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤Ï¡¢¤¿¤È¤¨¤Ð¡¢8.1¤«¤é8.2¤Ø¤Î¤è¤¦¤Ë¡¢¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Î1ÈÖÌܤ«2
-ÈÖÌܤÎÉôʬ¤òÁý¤ä¤·¤Æ¤æ¤­¤Þ¤¹¡£
-
-PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ÏÄ̾¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤È¥Ç¡¼¥¿¤ÎÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È
-¤òÊѹ¹¤·¤Þ¤¹¡£¤³¤ì¤é¤ÎÊѹ¹¤Ï¤¿¤¤¤Æ¤¤¤ÏÊ£»¨¤Ê¤Î¤Ç¤Ç¡¢¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¸åÊý¸ß´¹À­
-¤ò°Ý»ý¤·¤¿¤ê¤Ï¤·¤Þ¤»¤ó¡£¥á¥¸¥ã¡¼¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥À¥ó¥×/
-¥ê¥í¡¼¥É¤¬É¬Íפˤʤê¤Þ¤¹¡£
-
-¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ï¡¢¤¿¤È¤¨¤Ð¡¢8.1.5 ¤«¤é8.1.6¤Ø¤Î¤è¤¦¤Ë¡¢¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤Î3ÈÖÌÜ
-¤ÎÃͤòÁý¤ä¤·¤Þ¤¹¡£PostgreSQL¥Á¡¼¥à¤Ï¡¢¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤ËÂФ·¤Æ¤Ï¡¢¥Ð¥°¥Õ¥£¥¯¥¹
-¤·¤«¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ï¡¢¤Ç¤­¤ë¤À¤±ºÇ¿·¤Î¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ë¹¹¿·¤¹¤Ù
-¤­¤Ç¤¹¡£¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¡¢¾ï¤Ë¥ê¥¹¥¯¤¬¤Ä¤­¤â¤Î¤Ç¤¹¤«¤é¡¢PostgreSQL¤Î¥Þ¥¤¥Ê¡¼
-½¤Àµ¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢ÉÑÈˤËȯÀ¸¤·¤¿¤ê¡¢¥»¥­¥å¥ê¥Æ¥£¤Ë´Ø·¸¤·¤¿¤ê¡¢¥Ç¡¼¥¿¤¬¤Ä¤Ö¤ì¤ë
-¥Ð¥°¤À¤±¤ò½¤Àµ¤·¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Î¥ê¥¹¥¯¤òºÇ¾®¸Â¤Ë¤È¤É¤á¤Þ¤¹¡£²æ¡¹¤Î¥³¥ß¥å¥Ë¥Æ
-¥£¤Ç¤Ï¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤¹¤ë¥ê¥¹¥¯¤è¤ê¤â¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤Ê¤¤¥ê¥¹¥¯¤Î¤Û¤¦¤¬¹â¤¤
-¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£
-
-¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ÎɬÍפϤʤ¯¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹
-¥µ¡¼¥Ð¤òÄä»ß¤·¤Æ¡¢¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿¥Ð¥¤¥Ê¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¥µ¡¼¥Ð¤ò¥ê¥¹¥¿¡¼
-¥È¤·¤Þ¤¹¡£
-
-]
-
-3.7) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
-PC¥Ï¡¼¥É¥¦¥§¥¢¤Ï¤Û¤È¤ó¤É¸ß´¹À­¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤Û¤È¤ó¤É¤Î¿Í¤Ï¡¢¤¹¤Ù¤Æ¤ÎPC¥Ï¡¼¥É
-¥¦¥§¥¢¤¬Æ±¤¸ÉʼÁ¤À¤È»×¤¤¹þ¤à·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤ì¤Ï´Ö°ã¤¤¤Ç¤¹¡£ECC RAM¡¢
-SCSI¡¢¤ª¤è¤Ó¡¢¹âÉʼÁ¥Þ¥¶¡¼¥Ü¡¼¥É¤Ï¡¢°Â¤¤¥Ï¡¼¥É¥¦¥§¥¢¤ËÈæ¤Ù¤ë¤È¡¢¤è¤ê¿®ÍêÀ­¤¬¹â
-¤¯¡¢¤è¤êÀ­Ç½¤âÎɤ¤¤Î¤Ç¤¹¡£ PostgreSQL ¤Ï¤Û¤È¤ó¤É¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç²ÔƯ¤·¤Þ¤¹¤¬¡¢
-¿®ÍêÀ­¤äÀ­Ç½¤¬½ÅÍפʾì¹ç¤Ï¡¢»ÈÍÑÃæ¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤ÆÄ´ºº¤¹¤ë¤³
-¤È¤¬¸­ÌÀ¤Ç¤¹¡£¥Ð¥Ã¥Æ¥ê¡¼¥Ð¥Ã¥¯¥¢¥Ã¥×ÉÕ¤­¤Î¥­¥ã¥Ã¥·¥å¤ò»ý¤Ä¥Ç¥£¥¹¥¯¥³¥ó¥È¥í¡¼¥é
-¤âÌò¤ËΩ¤Á¤Þ¤¹¡£²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¾å¤Ç¤â¥Ï¡¼¥É¥¦¥§¥¢¥ª¥×¥·¥ç¥ó¤Î¥È¥ì¡¼¥É¥ª
-¥Õ¤Ë¤Ä¤¤¤ÆµÄÏÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-                                 Áàºî¾å¤Î¼ÁÌä
-
-4.1) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò SELECT¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-
-¼èÆÀ¤·¤¿¤¤¥í¥¦¤¬¤Û¤ó¤Î¿ô¹Ô¤Ç¡¢SELECT ¤Î¼Â¹Ô»þ¤Ë¼èÆÀ¤¹¤ë¥í¥¦¤Î¿ô¤¬Ê¬¤«¤Ã¤Æ¤¤¤ì¤Ð
-LIMIT ¤ò»È¤¤¤Þ¤·¤ç¤¦¡£¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ ORDER BY ¤È¥Þ¥Ã¥Á¤¹¤ì¤Ð¡¢¥¯¥¨¥êÁ´ÂΤò(´Ý¤´
-¤È)¼Â¹Ô¤·¤Ê¤¯¤Æ¤âºÑ¤à¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£SELECT ¤¹¤ë»þÅÀ¤Ç¥í¥¦¤Î¿ô¤¬ÉÔÌÀ¤Ê¤é¡¢¥«¡¼
-¥½¥ë¤ò»È¤Ã¤Æ FETCH ¤·¤Þ¤·¤ç¤¦¡£
-
-¥é¥ó¥À¥à¤Ë¥í¥¦¤òSELECT¤¹¤ë¤Ë¤Ï¡¢¼¡¤Îʸ¤ò»È¤¤¤Þ¤¹¡§
-
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-
-4.2) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©psql¤Ç»È¤ï¤ì¤Æ¤¤¤ë¥¯¥¨¥ê¤òɽ¼¨¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-psql ¤ÎÃæ¤Ç \dt¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£psql¤ÎÃæ¤Ç \? ¤ò»È
-¤Ã¤Æ¡¢¥³¥Þ¥ó¥É¤ÎÁ´¥ê¥¹¥È¤òÄ´¤Ù¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£°ìÊý¤Ç¡¢psql ¤Î¥½¡¼¥¹¥³¡¼¥É¤Ç¡¢
-¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥³¥Þ¥ó¥É¤ò½ÐÎϤ¹¤ë pgsql/src/bin/psql/describe.c ¥Õ¥¡¥¤¥ë¤òÆÉ¤à
-¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤½¤ÎÃæ¤Ë¤Ï¡¢ SQL ¥³¥Þ¥ó¥É¤òÀ¸À®¤¹¤ëÉôʬ¤â´Þ¤Þ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢ -E
-¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ psql ¤ò³«»Ï¤¹¤ë¤È¡¢ÆþÎϤµ¤ì¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Î¥¯¥¨¥ê
-¤ò°õ»ú½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ PostgreSQL¤Ï SQL ½àµò¤Î INFORMATION SCHEMA ¥¤¥ó
-¥¿¡¼¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¤Î¤Ç¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÌ䤤¹ç¤ï¤»¤ë¤³¤È¤â¤Ç
-¤­¤Þ¤¹¡£
-
-pg_ ¤Ç»Ï¤Þ¤ë¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤Ç¤â¤³¤ì¤é¤òµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-psql -l¤ò»È¤¦¤ÈÁ´¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£
-
-¤½¤ì¤È¡¢pgsql/src/tutorial/syscat.source ¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤½¤³¤Ë¤Ï¡¢¥Ç¡¼¥¿
-¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤«¤é¾ðÊó¤òÆÀ¤ë¤¿¤á¤ËɬÍפʠSELECT Ê¸¤¬Âô»³¤¢¤ê¤Þ¤¹¡£
-
-4.3) ¥«¥é¥à¤Î¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-¥«¥é¥à¤Î¥Ç¡¼¥¿·¿¤ÎÊѹ¹¤Ï 8.0 °Ê¹ß¤Ç¤Ï¡¢ ALTER TABLE ALTER COLUMN TYPE ¤ò»È¤¦¤³
-¤È¤Ë¤è¤ê´Öñ¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
-
-¤½¤ì¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹:
-
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-
-¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ý¤¹¤ë¤¿¤á¤Ë
-VACUUM FULL tab¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-
-4.4) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-
-À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹:
-
-    ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º?        À©¸Â̵¤· (32 TB ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â¸ºß¤·¤Þ
-                                     ¤¹)
-    ¥Æ¡¼¥Ö¥ë¤ÎºÇÂ祵¥¤¥º?            32 TB
-    ¥í¥¦¤ÎºÇÂ祵¥¤¥º?                400 GB
-    ¥Õ¥£¡¼¥ë¥É¤ÎºÇÂ祵¥¤¥º?          1 GB
-    ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂç¥í¥¦¿ô?        À©¸Â̵¤·
-    ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祫¥é¥à¿ô?      ¥«¥é¥à¤Î·¿¤Ë¤è¤Ã¤Æ 250-1600
-    ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祤¥ó¥Ç¥Ã¥¯¥¹   À©¸Â̵¤·
-    ¿ô?
-
-¤â¤Á¤í¤ó¡¢¤³¤ì¤é¤Ï¼ÂºÝ¤Ï̵À©¸Â¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥£¥¹¥¯ÍÆÎ̤ȥá¥â¥ê¡¼¤ä¥¹¥ï¥Ã¥×¥¹¥Ú¡¼
-¥¹¤ÎÂ礭¤µ¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Þ¤¹¡£À­Ç½¤Ï¤³¤ì¤é¤ÎÃͤ¬¤³¤È¤Î¤Û¤«Â礭¤Ê»þ¤ËÀú¤ê¤ò¼õ¤±
-¤Þ¤¹¡£
-
-ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Î32TB¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤ëµðÂç¥Õ¥¡¥¤¥ë¤Î¥µ¥Ý¡¼¥È
-¤ÏɬÍפȤ·¤Þ¤»¤ó¡£µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤ÏÊ£¿ô¤Î1GB¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¤ÆÊݸ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
-¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ï½ÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£
-
-¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò32k¤ËÁý²Ã¤¹¤ë¤³¤È¤Ç¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤È¹Ô¥µ¥¤¥º¤È
-ºÇÂ祫¥é¥à¿ô¤È¤ò4Çܤˤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Ï¥Æ¡¼¥Ö¥ë¥Ñ¡¼
-¥Æ¥£¥·¥ç¥ó¤ò»È¤Ã¤ÆÁý¤ä¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
-
-¤Ò¤È¤Ä¤ÎÀ©¸Â¤Ï¡¢Ìó2,000ʸ»ú°Ê¾å¤ÎŤµ¤Î¥«¥é¥à¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Ê
-¤¤¤³¤È¤Ç¤¹¡£¹¬¤¤¤Ë¤â¡¢¤½¤Î¤è¤¦¤Ê¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¼ÂºÝ¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£Ä¹¤¤¥«¥é¥à
-¤ÎMD5¥Ï¥Ã¥·¥å¤Î´Ø¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï°ì°ÕÀ­¤¬¤Ê¤Ë¤è¤ê¤ÎÊݸ±¤Ç¡¢¤Þ¤¿¡¢¥Õ¥ë¥Æ¥­¥¹¥È¤Î
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¥«¥é¥àÆâ¤Îñ¸ì¤ò¸¡º÷¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-4.5) °ìÈÌŪ¤Ê¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎÌ
-¤Ï¤É¤Î¤¯¤é¤¤É¬ÍפǤ¹¡©
-
-ÉáÄ̤Υƥ­¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤÎ
-¥Ç¥£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Þ¤¹¡£
-
-ÎãÂê¤È¤·¤Æ¡¢³Æ¹Ô¤ËÀ°¿ô¤È¥Æ¥­¥¹¥Èµ­½Ò¤ò»ý¤Ä 100,000¹Ô¤Î¥Õ¥¡¥¤¥ë¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç
-¤¦¡£¥Æ¥­¥¹¥È¤Îʸ»úÎó¤ÎÊ¿¶ÑŤµ¤ò20¥Ð¥¤¥È¤È²¾Äꤹ¤ë¤È¡¢¥Õ¥é¥Ã¥È¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ
-¤ÏÌó2.8MB ¤Ç¤¹¡£¤³¤Î¥Ç¡¼¥¿¤ò´Þ¤à PostgreSQL ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Ï¼¡¤Î
-¤è¤¦¤ËÌó5.2MB¤È¸«ÀѤâ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡§
-
-    24 bytes: ³Æ¥í¥¦¤Î¥Ø¥Ã¥À(³µ»»)
-    24 bytes: À°¿ô(int)¥Õ¥£¡¼¥ë¥É¤È¥Æ¥­¥¹¥È(text)¥Õ¥£¡¼¥ë¥É
-   + 4 bytes: ¥Ú¡¼¥¸¾å¤Î¥¿¥Ã¥×¥ë¤Ø¤Î¥Ý¥¤¥ó¥¿
-   ----------------------------------------
-    52 bytes per row
-
-   PostgreSQL ¤Î¥Ç¡¼¥¿¥Ú¡¼¥¸¥µ¥¤¥º¤Ï 8192¥Ð¥¤¥È(8KB)¤Ê¤Î¤Ç:
-
-   8192 bytes per page
-   -------------------   =  146 rows per database page (ÀÚ¤ê¼Î¤Æ)
-     52 bytes per row
-
-   100000 data rows
-   --------------------  =  633 database pages (ÀÚ¤ê¾å¤²)
-      158 rows per page
-
-  633 database pages * 8192 bytes per page  =  5,185,536 bytes (5.2 MB)
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤³¤ì¤Û¤É¤Î¥ª¡¼¥Ð¥Ø¥Ã¥É¤ÏÍ׵ᤷ¤Þ¤»¤ó¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ¤±¤µ¤ì¤ë
-¥Ç¡¼¥¿¤ò´Þ¤à°Ê¾å¡¢¤½¤ì¤Ê¤ê¤ËÂ礭¤¯¤Ê¤ê¤Þ¤¹¡£
-
-NULL¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤¬¤ï¤º¤«¤Ë¥¹¥Ú¡¼¥¹¤ò»È¤¤¤Þ¤¹¡£
-
-4.6) ¥¯¥¨¥ê¤¬ÃÙ¤¤¤Î¤Ï¤Ê¤¼¤Ç¤·¤ç¤¦¡©¤Ê¤¼¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤¹¤Ù¤Æ¤Î¥¯¥¨¥ê¤Ç»È¤ï¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Æ¡¼¥Ö¥ë¤¬ºÇ¾®¥µ¥¤
-¥º¤è¤êÂ礭¤¯¡¢¥¯¥¨¥ê¤Ç¤½¤Î¤ï¤º¤«¤Ê¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¥í¥¦¤òÁªÂò¤¹¤ë»þ¤À¤±¡¢¥¤¥ó¥Ç
-¥Ã¥¯¥¹¤Ï»È¤ï¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥­¥ã¥ó¤Ë¤è¤êµ¯¤³¤µ¤ì¤ë¥é¥ó¥À¥à¤Ê¥Ç¥£¥¹
-¥¯¥¢¥¯¥»¥¹¤Ï¡¢¥Æ¡¼¥Ö¥ë¤ò¥¹¥È¥ì¡¼¥È¤ËÆÉ¤à½ç¼¡Áöºº¤è¤ê¤âÃÙ¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¤«¤é¤Ç
-¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤¤Æ¤ÎÅý·×¾ðÊó¤ò
-»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ÎÅý·×¾ðÊó¤Ï¡¢ VACUUM ANALYZE¤Þ¤¿¤Ï¡¢Ã±¤Ë ANALYZE ¤ò
-»È¤Ã¤Æ¼ý½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Åý·×¾ðÊó¤ò»È¤Ã¤Æ¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤Ï¥Æ¡¼¥Ö¥ë¤ÎÃæ¤Ë¤¢
-¤ë¥í¥¦¿ô¤òÃΤꡢ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ù¤­¤«¤Î·èÄê¤ò¤è¤êÀµ¤·¤¯¤Ç¤­¤Þ¤¹¡£Åý·×¾ðÊó¤Ï
-ºÇŬ¤Ê·ë¹ç½ç¤ä·ë¹çÊýË¡¤ò·è¤á¤ë¾å¤Ç¤âµ®½Å¤Ê¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Åý·×¾ðÊó¤Î¼ý½¸¤Ï¡¢¥Æ
-¡¼¥Ö¥ë¤ÎÆâÍÆ¤¬ÊѤï¤ëËè¤Ë·«ÊÖ¤·¤Ê¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï ORDER BY ¤ä·ë¹ç¤ò¹Ô¤Ê¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£½ç¼¡¥¹¥­¥ã¥ó
-¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥­¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹
-¡£
-
-¤·¤«¤·¡¢ORDER BY¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿LIMIT ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó
-¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦¡£
-
-¤â¤·¡¢¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬´Ö°ã¤Ã¤Æ¥·¡¼¥±¥ó¥·¥ã¥ë¥¹¥­¥ã¥ó¤òÁªÂò¤·¤¿¤³¤È¤Ëµ¿¤¤¤¬¤Ê¤±
-¤ì¤Ð¡¢SET enable_seqscan TO 'off'¤ËÀßÄꤷ¤Æ¡¢¥¯¥¨¥ê¤ò¤â¤¦°ìÅټ¹Ԥ·¡¢¥¤¥ó¥Ç¥Ã¥¯
-¥¹¥¹¥­¥ã¥ó¤¬¤Þ¤Á¤¬¤¤¤Ê¤¯Â®¤¯¤Ê¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-LIKE ¤¢¤ë¤¤¤Ï ~ ¤Î¤è¤¦¤Ê¥ï¥¤¥ë¥É¥«¡¼¥É±é»»»Ò¤ÏÆÃÊ̤ʴĶ­¤Ç¤·¤«»È¤¨¤Þ¤»¤ó¡§
-
- ¡¦ ¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤­¤­¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡§
-     ¢¢ LIKE ¥Ñ¥¿¡¼¥ó¤¬%¤Ç»Ï¤Þ¤é¤Ê¤¤
-     ¢¢ ~ (Àµµ¬É½¸½) ¥Ñ¥¿¡¼¥ó¤Ï^¤Ç»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
- ¡¦ ¸¡º÷ʸ»úÎó¤òʸ»ú¥¯¥é¥¹¤«¤é»Ï¤á¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢[a-e]¡£
- ¡¦ ILIKE ¤ä ~* ¤Î¤è¤¦¤ÊÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Ï»È¤¨¤Þ¤»¤ó¡£¤½¤Î¤«¤ï¤ê
-    ¡¢¤³¤ÎFAQ¤Î4.8Àá¤ÇÀâÌÀ¤¹¤ë¼°¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤¨¤Þ¤¹¡£
- ¡¦ initdb ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇC¥í¥±¡¼¥ë¤¬»È¤ï¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤½¤ÎÍý
-    Í³¤Ï¡¢C¥í¥±¡¼¥ë°Ê³°¤Ç¤Ï¼¡¤ËÂ礭¤Êʸ»ú¤òÃΤ뤳¤È¤¬¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦
-    ¤Ê¾ì¹ç¡¢
-
-    LIKE
-
-    ¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±Æ¯¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Ê
-
-    text_pattern_ops
-
-    ¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤½¤ì¤òÁ´Ê¸¸¡º÷¤Î¥Õ¥ë¥Æ¥­¥¹¥È¤Î
-    ¥¤¥ó¥Ç¥Ã¥¯¥¹ºîÀ®¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-4.7) Ì䤤¹ç¤ï¤»¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤Î¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦
-¤·¤Þ¤¹¤«¡©
-
-¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç EXPLAIN ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
-
-4.8) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½
-¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È¤¤
-¤Þ¤¹¤«¡©
-
-~±é»»»Ò¤ÏÀµµ¬É½¸½¾È¹ç¤ò¹Ô¤Ê¤¤¡¢~* ¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
-(case-insensitive)Àµµ¬É½¸½¾È¹ç¤ò¹Ô¤¤¤Þ¤¹¡£Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ LIKE ±é»»
-»Ò¤ò ILIKE ¤È¤¤¤¤¤Þ¤¹¡£
-
-Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ÅùÃÍÈæ³Ó¤Ï¼¡¤Î¤è¤¦¤Ëɽ¸½¤Ç¤­¤ë¡§
-
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-ɸ½à¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï»È¤ï¤ì¤º¡¢¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·¡¢¼°¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤Ã¤¿¤Ê¤é¤½
-¤ì¤¬»È¤ï¤ì¤ë¤Ç¤·¤ç¤¦¡£
-
-    CREATE INDEX tabindex ON tab (lower(col));
-
-¾åµ­¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬UNIQUE¤ÇºîÀ®¤µ¤ì¤¿¾ì¹ç¡¢¥«¥é¥à¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò³ÊǼ¤Ç¤­¤Þ
-¤¹¤¬¡¢¤½¤Î°ã¤¤¤¬Ê¸»ú¥±¡¼¥¹¤À¤±¤Ç¤¢¤Ã¤Æ¤âƱ°ì¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤¢¤¨¤ÆÆÃÄê¤Îʸ»ú¥±
-¡¼¥¹¤ò¥«¥é¥à¤Ë³ÊǼ¤¹¤ë¤Ë¤Ï CHECKÀ©Ì󤫡¢¥È¥ê¥¬¡¼¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
-
-4.9) ¥¯¥¨¥ê¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡© NULL
-¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥Õ¥£¡¼¥ë¥É¤¬NULL¤«¤É¤¦¤«¤Ç¤É¤Î¤è¤¦¤Ë¥½¡¼
-¥È¤¬¤Ç¤­¤Þ¤¹¤«¡©
-
-°Ê²¼¤Î¤è¤¦¤Ë¡¢IS NULL ¤È IS NOT NULL¤Ç¡¢¤½¤Î¥«¥é¥à¤ò¥Æ¥¹¥È¤·¤Æ¤ß¤Þ¤¹¡§
-
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-NULL¤Î²ÄǽÀ­¤Î¤¢¤ë¤â¤Î¤òÏ¢·ë¤¹¤ë¤Ë¤Ï¡¢COALESCE()¤ò¼¡¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¡£
-
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-
-NULL¾õÂ֤ǥ½¡¼¥È¤¹¤ë¤Ë¤Ï¡¢IS NULL ¤È IS NOT NULL ¤Î½¤¾þ»Ò¤ò ORDER BY ¶ç¤ÎÃæ¤Ç»È
-¤Ã¤Æ¤ß¤Þ¤¹¡£true ¤Î¤â¤Î¤Ï false ¤Î¤â¤Î¤è¤ê¤â¹â¤¤ÃͤȤ·¤ÆÊ¤٤é¤ì¤Þ¤¹¤Î¤Ç¡¢¼¡¤Î
-Îã¤Ç¤Ï NULL ¤Îµ­ºÜ¤¬·ë²Ì¥ê¥¹¥È¤Î¾åÉô¤ËÃÖ¤«¤ì¤Þ¤¹¡£
-
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL)
-
-4.10) ¤¤¤í¤¤¤í¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-
-        ·¿     ÆâÉô̾                      È÷¹Í
-    VARCHAR(n) varchar ºÇÂçĹ¤Î¥µ¥¤¥º¤ò»ØÄꤹ¤ë¡¢µÍ¤áʪ̵¤·
-    CHAR(n)    bpchar  »ØÄꤵ¤ì¤¿¸ÇÄêĹ¤È¤Ê¤ë¤è¤¦¤Ë¶õÇò¤¬µÍ¤á¤é¤ì¤ë
-    TEXT       text    Ä¹¤µ¤ËÆÃÊ̤ʾå¸Â¤Ï̵¤·
-    BYTEA      bytea   ²ÄÊÑĹ¤Î¥Ð¥¤¥ÈÇÛÎó(null-byte safe)
-    "char"     char    1ʸ»ú
-
-ÆâÉô̾¤Ë¤ªÌܤˤ«¤«¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥«¥¿¥í¥°¤òÄ´¤Ù¤ë¤È¤­¤ä¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò
-¼õ¤±¼è¤ë¤È¤­¤Ç¤¹¡£
-
-¾åµ­¤Î·¿¤Î¤¦¤ÁºÇ½é¤Î£´¤Ä¤Î·¿¤Ï "varlena" ·¿¤Ç¤¹(¤¹¤Ê¤ï¤Á¡¢¥Ç¥£¥¹¥¯¤ÎºÇ½é¤Î£´¥Ð
-¥¤¥È¤¬¥Ç¡¼¥¿Ä¹¤Ç¡¢¤½¤ì¤Î¸å¤Ë¼ÂºÝ¤Î¥Ç¡¼¥¿¤¬Â³¤­¤Þ¤¹)¡£¤³¤Î¤è¤¦¤Ë¼ÂºÝ¤Î¶õ´Ö¤ÏÀë¸À
-¤µ¤ì¤¿Â礭¤µ¤è¤ê¤â¾¯¤·Â礭¤¯¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Ä¹¤¤Ãͤϰµ½Ì¤µ¤ì¤ë¤Î¤Ç¡¢¥Ç¥£¥¹¥¯
-¾å¤Î¶õ´Ö¤Ï»×¤Ã¤¿¤è¤ê¤â¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡£
-
-VARCHAR(n) ¤Ï²ÄÊÑŤÎʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¤¬¡¢Êݸ¤Ç¤­¤ëʸ»úÎó¤ÎŤµ¤ËÀ©
-¸Â¤¬¤¢¤ê¤Þ¤¹¡£TEXT ¤ÏŤµ¤ËÀ©¸Â¤Î̵¤¤Ê¸»úÎó¤ÎÊݸ¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢ºÇÂç¤Ç 1¥®¥¬¥Ð
-¥¤¥È¤Ç¤¹¡£ CHAR(n)¤Ï¡¢VARCHAR(n)¤¬Í¿¤¨¤é¤ì¤¿Ê¸»ú¤À¤±¤òÊݸ¤¹¤ë¤Î¤ËÂФ·¡¢¥Ö¥é¥ó
-¥¯¤òµÍ¤á¹þ¤ó¤Ç¤¤¤Ä¤âƱ¤¸Ä¹¤µ¤Çʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¡£BYTEA¤Ï¡¢ÉôʬŪ¤Ë
-NULL ¤Î¥Ð¥¤¥È¤ò´Þ¤à¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¥¿¥¤¥×¤ÏƱ¤¸
-¤¯¤é¤¤¤ÎÀ­Ç½ÆÃÀ­¤ò¤â¤Á¤Þ¤¹¡£
-
-4.11.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Ï SERIAL ¥Ç¡¼¥¿·¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¥«¥é¥à¾å¤Ë¥·¡¼¥±¥ó¥¹¤ò¼«Æ°ºîÀ®¤·
-¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
-
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
-
-¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËÝÌõ¤µ¤ì¤Þ¤¹:
-
-    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 );
-        ¤Ï¡¢ 7.3 °Ê¹ß¤Ï¼«Æ°Åª¤Ë¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
-    ]
-
-
-¼«Æ°Åª¤Ë¤Ä¤¯¤é¤ì¤ëÄÌÈ֤ϡ¢ <table>_<serialcolumn>_seq ¤È̾ÉÕ¤±¤é¤ì¤Æ¤¤¤Æ¡¢table
-¤È serialcolumn ¤Ï¡¢¤½¤ì¤¾¤ì¥Æ¡¼¥Ö¥ë¤È SERIAL ¥«¥é¥à¤Î̾Á°¤Ç¤¹¡£ÄÌÈ֤ˤĤ¤¤Æ¤Ï
-¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Çcreate_sequence ¤ò¤´¤é¤ó¤¯¤À¤µ¤¤¡£
-
-4.11.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
-
-ºÇ¤â´Êñ¤ÊÊýË¡¤Ï¡¢³ä¤êÅö¤Æ¤é¤ì¤¿SERIALÃͤò RETURNING¤È¤·¤Æ¼èÆÀ¤¹¤ë¤³¤È¤Ç¤¹¡£
-4.11.1¤ÎÎãÂê¥Æ¡¼¥Ö¥ë¤ò»È¤¦¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-    INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
-4.11.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-
-¤½¤ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£currval() ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢ÆÉ¼Ô¤Î¥»¥Ã¥·¥ç
-¥ó¤ËÍ¿¤¨¤é¤ì¤¿¸½ºß¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
-
-4.11.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤­¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤­¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-Ʊ»þÀ­¤ò²þÁ±¤¹¤ë¤¿¤á¤Ë¡¢¼Â¹ÔÃæ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¡¢É¬Íפ˱þ¤¸¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç
-¥ó¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¥í¥Ã¥¯¤µ¤ì¤Ê¤¤¤è¤¦¥·¡¼¥±¥ó¥¹ÃͤòÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¥È¥é¥ó¥¶
-¥¯¥·¥ç¥ó¤¬ÃæÃǤµ¤ì¤ë¤ÈÈÖ¹æ³ä¤êÅö¤Æ¤Ë¥®¥ã¥Ã¥×¤òÀ¸¤¸¤Þ¤¹¡£
-
-4.12) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© CTID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-
-¥Æ¡¼¥Ö¥ë¤¬WITH OIDS¤Ç¤Ä¤¯¤é¤ì¤¿¾ì¹ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥í¥¦¤Ë°ì°Õ¤ÊOID¤¬¼è¤é¤ì¤Þ¤¹¡£
-OID¤Ï¼«Æ°Åª¤Ë4¥Ð¥¤¥È¤ÎÀ°¿ô¤ÇÍ¿¤¨¤é¤ì¡¢¤½¤ì¤Ï¡¢Á´¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤òÄ̤·¤Æ°ì°Õ
-¤ÊÃͤȤʤê¤Þ¤¹¡£¤·¤«¤·¡¢Ìó40²¯¤Ç¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¡¢¤½¤·¤Æ¡¢OID¤Ï½ÅÊ£¤ò¤·¤Ï¤¸¤á¤Þ
-¤¹¡£PostgreSQL¤ÏÆâÉô¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤ò°ì½ï¤Ë¥ê¥ó¥¯¤¹¤ë¤¿¤á¤ËOID ¤ò»È¤¤¤Þ¤¹¡£
-
-¥æ¡¼¥¶¤Î¥Æ¡¼¥Ö¥ë¤Î¥«¥é¥à¤Ë°ì°Õ¤ÎÈÖ¹æ¤òÉÕ¤±¤ë¤¿¤á¤Ë¤Ï¡¢ OID ¤Ç¤Ï¤Ê¤¯ SERIAL ¤ò»È
-¤¦¤Î¤¬ºÇ¤â¤è¤¤¤Ç¤·¤ç¤¦¡£SERIAL¤ÎÏ¢ÈÖ¤Ï1¤Ä¤Î¥Æ¡¼¥Ö¥ëÆâ¤Ç¤Î¤ß°ì°Õ¤Ë¤Ê¤ë¤«¤é¤Ç¡¢¥ª
-¡¼¥Ð¡¼¥Õ¥í¡¼¤òµ¯¤³¤·¤Ë¤¯¤¤¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£ 8¥Ð¥¤¥È¤Î¥·¡¼¥±¥ó¥¹ÃͤòÊݸ¤¹¤ë¤¿¤á
-¤Ë¡¢SERIAL8¤¬¤¢¤ê¤Þ¤¹¡£
-
-CTID ¤Ï¡¢ÆÃÄê¤ÎʪÍý¥í¥¦¤ò¥Ö¥í¥Ã¥¯¤È¥ª¥Õ¥»¥Ã¥È¤ÎÃͤǼ±Ê̤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£
-CTID¤Ï¡¢¥í¥¦¤¬½¤Àµ¤µ¤ì¤¿¤êºÆÆÉ¹þ¤ß¤µ¤ì¤¿¤È¤­¤ËÊѤï¤ê¤Þ¤¹¡£¤Þ¤¿¡¢ÊªÍý¥í¥¦¤òº¹¤¹
-¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤Îµ­ºÜ¤Ë»È¤ï¤ì¤Þ¤¹¡£
-
-4.13) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-
-¤ª¤½¤é¤¯¡¢¥·¥¹¥Æ¥à¤Î²¾ÁÛ¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤¤²Ì¤¿¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë¤«¡¢
-¥«¡¼¥Í¥ë¤¬¤¢¤ë¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤â¤ÄÀ©¸ÂÃͤ¬Ä㤹¤®¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¥µ¡¼¥Ð¤ò»Ï
-ư¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡§
-
-    ulimit -d 262144
-    limit datasize 256m
-
-¥·¥§¥ë¤Ë¤è¤Ã¤Æ¡¢¤É¤Á¤é¤«¤Ò¤È¤Ä¤¬À®¸ù¤¹¤ë¤Ç¤·¤ç¤¦¤¬¡¢¤³¤ì¤Ï¥×¥í¥»¥¹¤Î¥Ç¡¼¥¿¥»¥°
-¥á¥ó¥ÈÀ©¸Â¤ò¤è¤ê¹â¤¯ÀßÄꤷ¡¢¤¿¤Ö¤ó¥¯¥¨¥ê¤¬´°·ë¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£¤³¤Î¥³¥Þ
-¥ó¥É¤Ï¸½¹Ô¤Î¥×¥í¥»¥¹¤È¡¢¤³¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤¿¸å¤Ëºî¤é¤ì¤ëÁ´¤Æ¤Î¥µ¥Ö¥×¥í¥»¥¹¤Ë
-¤Ä¤¤¤ÆÅ¬ÍѤµ¤ì¤Þ¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¤È¤Æ¤â¿¤¯¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤¿¤á¤ËSQL ¥¯¥é¥¤¥¢¥ó
-¥È¤ÇÌäÂ꤬³¤¤¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À
-¤µ¤¤¡£
-
-4.14) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-psql ¤«¤é SELECT version(); ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£
-
-4.15) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-
-CURRENT_TIMESTAMP¤ò»È¤¤¤Þ¤¹:
-
-    CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-4.16) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
-
-PostgreSQL ¤Ï SQL É¸½à¹½Ê¸¤ò»È¤¦³°Éô·ë¹ç(¥¢¥¦¥¿¡¼¥¸¥ç¥¤¥ó)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³
-¤³¤Ë 2¤Ä¤ÎÎãÂ꤬¤¢¤ê¤Þ¤¹¡£
-
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-¤¢¤ë¤¤¤Ï
-
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-¤³¤ì¤é¤Î¾ÝħŪ¤Ê¥¯¥¨¥ê¤Ç¤Ï t1.col ¤ò t2.col ¤È·ë¹ç¤·¤Æ¡¢t1 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í
-¥¦(t2 ¤È°ìÃפ·¤Ê¤«¤Ã¤¿¥í¥¦)¤âÊÖ¤·¤Æ¤¤¤Þ¤¹¡£RIGHT ·ë¹ç¤Ï t2 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í
-¥¦¤ò²Ã¤¨¤ë¤Ç¤·¤ç¤¦¡£FULL ·ë¹ç¤Ï¡¢°ìÃפ·¤¿¥í¥¦¤Ë t1 ¤È t2 ¤«¤é¤Ï·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿
-¥í¥¦¤òÊÖ¤¹¤Ç¤·¤ç¤¦¡£OUTER ¤È¤¤¤¦¸ÀÍդϥª¥×¥·¥ç¥ó¤Ç LEFT, RIGHT, ¤Þ¤¿¤Ï FULL ¤Ê
-¤É¤Î·ë¹ç¤ò²¾Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£Ä̾·ë¹ç¤ÏINNER·ë¹ç¤È¸Æ¤Ð¤ì¤Þ¤¹¡£
-
-4.17) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤­¤Þ¤¹¤«¡©
-
-¸½¹Ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹°Ê³°¤Ø¤ÎÌ䤤¹ç¤ï¤»¤ÎÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤È¤¤¤¦¤Î¤âPostgreSQL¤¬
-¥Ç¡¼¥¿¥Ù¡¼¥¹»ÅÍͤΥ·¥¹¥Æ¥à¥«¥¿¥í¥°¤òÆÉ¤ß¹þ¤à¤¿¤á¤Ç¡¢¤½¤³¤Ë¤Ï¡¢¤¿¤È¤¨¤½¤Î¤Õ¤ê¤ò
-¤¹¤ë¤À¤±¤Ë¤·¤í¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò±Û¤¨¤ÆÌ䤤¹ç¤ï¤»¤ò¤¹¤ë¤¹¤Ù¤¬¤¢¤ê¤Þ¤»¤ó¡£
-
-contrib/dblink ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹´Ö(cross-database)¤ÎÌ䤤¹ç¤ï¤»¤ò´Ø¿ô¸Æ½Ð¤·¤Ë¤è¤êµö
-¤·¤Þ¤¹¡£¤â¤Á¤í¤ó¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏƱ»þ¤ËÀܳ¤òÊ̤Υǡ¼¥¿¥Ù¡¼¥¹¤Ø¤âÄ¥¤é¤Ê¤¯¤Æ¤Ï¤Ê
-¤é¤º¡¢·ë²Ì¤ò¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¥Þ¡¼¥¸¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
-
-4.18) ´Ø¿ô¤«¤éÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-½¸¹ç¤òÊÖ¤¹´Ø¿ô(Set Returning Functions): http://wiki.postgresql.org/wiki/
-Return_more_than_one_row_of_data_from_PL/pgSQL_functions ¤ò»È¤¦¤È´Êñ¤Ç¤¹
-
-¡£
-
-4.19) PL/PgSQL ¤Î´Ø¿ô¤ÎÃæ¤Ç°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¤­¡¢¤É¤¦¤·¤Æ "relation
-with OID ##### does not exist" ¤È¤¤¤¦¥¨¥é¡¼¤ò¼õ¤±¼è¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
-
-¥Ð¡¼¥¸¥ç¥ó8.3¤è¤êÁ°¤Î PostgreSQL ¤Ç¤Ï¡¢PL/PgSQL ¤Ï´Ø¿ô¥¹¥¯¥ê¥×¥È¤ò¥­¥ã¥Ã¥·¥å¤·
-¤¿¤¿¤á¡¢±¿°­¤¯¤½¤ÎÉûºîÍѤ¬¤¢¤ê¤Þ¤·¤¿¡£PL/PgSQL ´Ø¿ô¤¬°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤·¤Æ
-¸å¤Ç¤½¤Î¥Æ¡¼¥Ö¥ë¤ò¾Ã¤·¤Æºî¤ê¤·¤¿¾ì¹ç¤Ë¡¢´Ø¿ô¤¬¤â¤¦°ìÅٸƤӽФµ¤ì¤¿¤È¤­¤Ï¡¢¤½¤Î
-´Ø¿ô¤Î¥­¥ã¥Ã¥·¥å¤·¤Æ¤¤¤¿ÆâÍÆ¤¬¤Þ¤À¸Å¤¤°ì»þ¥Æ¡¼¥Ö¥ë¤ò»Ø¤·¼¨¤·¤¿¤Þ¤Þ¤À¤Ã¤¿¤«¤é¤Ç
-¤¹¡£¤³¤Î¡¢²ò·èºö¤È¤·¤Æ¡¢PL/PgSQL¤ÎÃæ¤Ç EXECUTE ¤ò°ì»þ¥Æ¡¼¥Ö¥ë¤Ø¤Î¥¢¥¯¥»¥¹¤Î¤¿¤á
-¤Ë»È¤¤¤Þ¤¹¡£¤½¤¦¤¹¤ë¤È¡¢¥¯¥¨¥ê¤ÏËè²ó¥Ñ¡¼¥¹¤ò¤ä¤êľ¤·¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-¤³¤ÎÌäÂê¤Ï¡¢ PostgreSQL ¥Ð¡¼¥¸¥ç¥ó8.3 °Ê¹ß¤Ç¤Ïµ¯¤­¤Þ¤»¤ó¡£
-
-4.20) ¤É¤Î¤è¤¦¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-¡Ö¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¡×¤È°ì¸À¤Ç¤¤¤¤¤Þ¤¹¤¬¡¢¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤¹¤ë¤¿¤á¤Îµ»½Ñ¤Ï¤¤¤¯
-¤Ä¤«¤¢¤ê¡¢¤½¤ì¤¾¤ì¡¢ÍøÅÀ¤È·çÅÀ¤¬¤¢¤ê¤Þ¤¹¡£
-
-¥Þ¥¹¥¿¡¿¥¹¥ì¡¼¥Ö¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢ÆÉ¤ß¡¿½ñ¤­¤Î¥¯¥¨¥ê¤ò¼õ¤±¼è¤ë¥·¥ó¥°¥ë¥Þ¥¹
-¥¿¤¬²Äǽ¤Ç¡¢¥¹¥ì¡¼¥Ö¤Ç¤ÏÆÉ¤ß¡¿SELECT¤ÎÌ䤤¹ç¤ï¤»¤À¤±¤ò¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹
-¡£ºÇ¤â¿Íµ¤¤¬¤¢¤ë¡¢¥Õ¥ê¡¼¤ÇÍøÍѤǤ­¤ë¡¢¥Þ¥¹¥¿¡Ý¥¹¥ì¡¼¥Ö¤ÎPostgreSQL¥ì¥×¥ê¥±¡¼¥·
-¥ç¥ó¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢ Slony-I ¤Ç¤¹¡£
-
-¥Þ¥ë¥Á¡Ý¥Þ¥¹¥¿¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢ÆÉ¤ß¡¿½ñ¤­¤Î¥¯¥¨¥ê¤ò¼õ¤±¤È¤ê¡¢Ê£¿ô¤Î¥ì¥×¥ê
-¥±¡¼¥È¤µ¤»¤ë¥³¥ó¥Ô¥å¡¼¥¿¤ËÁ÷¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥µ¡¼¥Ð´Ö¤ÎÊѹ¹¤ÎƱ´ü
-¤¬É¬Íפʤ¿¤á¡¢À­Ç½¤Ë½ÅÂç¤Ê¾×·â¤òÍ¿¤¨¤Þ¤¹¡£ PGCluster ¤Ï¡¢¤³¤Î¤è¤¦¤Ê¥½¥ê¥å¡¼¥·¥ç
-¥ó¤È¤·¤ÆPostgreSQL¤Î¤¿¤á¤Ë¥Õ¥ê¡¼¤ÇÍøÍѤǤ­¤ë¤â¤Î¤È¤·¤Æ¡¢ºÇ¤â¿Íµ¤¤¬¤¢¤ê¤Þ¤¹¡£
-
-¤³¤Î¾¤Ë¤â¡¢¾¦ÍѤä¥Ï¡¼¥É¥¦¥§¥¢¡Ý¥Ù¡¼¥¹¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥ê¥å¡¼¥·¥ç¥ó¤¬¤¤¤í¤¤
-¤í¤Ê¥ì¥×¥ê¥±¡¼¥·¥ç¥ó¥â¥Ç¥ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£
-
-4.21)¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¤¬¥¯¥¨¥ê¡¼¤ÎÃæ¤Çǧ¼±¤µ¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¤Ê¤¼Âçʸ
-»ú²½(¥­¥ã¥Ô¥¿¥é¥¤¥º)¤Ï²¹Â¸¤µ¤ì¤Ê¤¤¤Î¤Ç¤¹¤«?
-
-̾Á°¤¬Ç§¼±¤µ¤ì¤Ê¤¤¡¢ºÇ¤â°ìÈÌŪ¤Ê¸¶°ø¤Ï¡¢¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ëºÝ¤Ë¡¢¥Æ¡¼¥Ö¥ë¤ä¥«¥é
-¥à¤ò°Ï¤¦Æó½Å°úÍÑÉä¤Î»ÈÍѤǤ¹¡£Æó½Å°úÍÑÉä¤ò»È¤¦¤È¡¢¥Æ¡¼¥Ö¥ë¤È¥«¥é¥à¤Î̾Á°¡Ê¼±ÊÌ
-»Ò¤È¤¤¤¤¤Þ¤¹¡Ë¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤Î¶èÊ̤ò¤·¤Æ³ÊǼ¤µ¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢pgAdmin¤Î¤è
-¤¦¤Ë¥Æ¡¼¥Ö¥ëºîÀ®¤Î¤È¤­¤Ë¼«Æ°Åª¤ËÆó½Å°úÍÑÉä¤ò»È¤¦¤â¤Î¤Ï¥¯¥¨¥ê¤ÎÃæ¤Ç¤½¤ì¤é¤Î̾Á°
-¤ò»È¤¦¤È¤­¤ËÆó½Å°úÍÑÉä¤òÉÕ¤±¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢¼±ÊÌ»Ò
-¤òǧ¼±¤µ¤»¤ë¤¿¤á¤Ë¤Ï°Ê²¼¤Î¤¤¤º¤ì¤«¤ò¿´¤¬¤±¤Þ¤¹¡£
-
- ¡¦ ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤È¤­¤ËÆó½Å°úÍÑÉä¤Ç¼±Ê̻Ҥò°Ï¤¦¤³¤È¤òÈò¤±¤ë
- ¡¦ ¼±Ê̻ҤˤϾ®Ê¸»ú¤À¤±¤ò»È¤¦
- ¡¦ ¥¯¥¨¥ê¤ÎÃæ¤Ç»²¾È¤¹¤ë¤È¤­¤ÏÆó½Å°úÍÑÉä¤Ç¼±Ê̻Ҥò°Ï¤¦
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-                              ÆüËܸì¤Ë´Ø¤¹¤ë¼ÁÌä
-
-5.1)ÆüËܸ줬¤¦¤Þ¤¯°·¤¨¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-createdb -E¥³¥Þ¥ó¥É¥ª¥×¥·¥ç¥ó¤Ë UTF8 ¤¢¤ë¤¤¤Ï EUC_JP ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ
-¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤¹¤ë¤«¡¢¼¡¤Î¤è¤¦¤Ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò
-ºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£
-
-        CREATE DATABASE dbname WITH ENCODING 'UTF8';
-    ¤â¤·¤¯¤Ï¡¢
-        CREATE DATABASE dbname WITH ENCODING 'EUC_JP';
-
-5.2) psql ¤ÇWindows¤«¤é¥¢¥¯¥»¥¹¤·¤¿¤È¤­¤Ë¡¢ÆüËܸ줬ʸ»ú²½¤±¤¹¤ë¤Î¤Ç¤¹¤¬¡©
-
-psql¤ÎÃæ¤Ç¥¯¥é¥¤¥¢¥ó¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
-
-        SET client_encoding TO 'SJIS'
-
-PostgreSQL¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ë»È¤¨¤ëÆüËܸìʸ»ú¥³¡¼¥É¤Ï EUC_JP ¤«
-UTF-8(UNICODE) ¤Ç¤¢¤ë¤¿¤á¡¢Shift-JISɽ¼¨¤Î¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤«¤é¤Ï¡¢
-client_encoding¤òÀßÄꤷ¤Æ¤ª¤«¤Ê¤¤¤È¡¢ÆüËܸì¤òɽ¼¨¤¹¤ëºÝ¤Ëʸ»ú²½¤±¤¬¤ª¤­¤Þ¤¹¡£
-
-5.3) PostgreSQL¤ÇÆüËܸì¤ÎÁ´Ê¸¸¡º÷¤Ï¤Ç¤­¤Þ¤¹¤«¡©
-
-¥Ð¡¼¥¸¥ç¥ó8.3¤Ç¤Ï¡¢TSearch2Á´Ê¸¸¡º÷µ¡Ç½¤¬ËÜÂΤËÁȤ߹þ¤Þ¤ì¤Þ¤·¤¿¤¬¡¢¤½¤Î¤Þ¤Þ¤Ç¤Ï
-ÆüËܸì¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë»ö¤¬Æñ¤·¤¤¾õ¶·¤Ç¤¹¡£¤³¤ì¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¡¢Takahiro
-Itagaki»á¤Ë¤è¤Ã¤Æ¡¢Mecab¤È¤¤¤¦·ÁÂÖÁDzòÀÏ¥×¥í¥°¥é¥à¤òÍøÍѤ¹¤ëÆüËܸìÁ´Ê¸¸¡º÷¥â¥¸
-¥å¡¼¥ë textsearch_ja ¤¬³«È¯¤µ¤ì¤Þ¤·¤¿¡£TSearch2Âбþ¤ÎÀ½Éʤò¤ï¤º¤«¤Ë²þ½¤¤¹¤ë¤³¤È
-¤ÇÆüËܸìÂбþ¤Ë¤­¤Þ¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
-¡ÖÆüËܸìÈǤˤĤ¤¤Æ¡×
-
-[ÌõÃí¡§
-  ÆüËܸìÈǤÎÀ½ºî¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
-
-  ºÇ½ª¹¹¿·Æü:   2008ǯ10·î8Æü
-  ËÝÌõ¼Ô:       ·¬Â¼ ½á (Jun KUWAMURA <juk at postgresql.jp>)
-
-  ¤³¤ÎFAQ¤ÎÏÂÌõ¤ÎºîÀ®¤Ë¤¢¤¿¤ê¶¨ÎϤò¤·¤Æ¤¯¤À¤µ¤Ã¤¿Êý¡¹(·É¾Î¤Ïά¤µ¤»¤Æ¤¤¤¿¤À¤­¤Þ¤¹):
-
-                ÅÄÃç Ì­(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>)
-                Àаæ Ã£É×(Tatsuo ISHII <ishii at sraoss.co.jp>)
-                óîÆ£ ÃοÍ(Tomohito SAITOH <tomos at elelab.nsc.co.jp>)
-                ÇϾ젠ȥ(Hajime BABA <baba at kusastro.kyoto-u.ac.jp>)
-                ²¬ËÜ °ì¹¬(Kazuyuki OKAMOTO <kaz-okamoto at hitachi-system.co.jp>)
-                ¾®¿û ¾¼°ì(Shoichi Kosuge <s-kosuge at str.hitachi.co.jp>)
-                »³²¼ µÁÇ·(Yoshiyuki YAMASHITA <dica at eurus.dti.ne.jp>)
-                ¶­ ¿¿ÂÀϺ(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>)
-                À¸±Û ¾»¸Ê(Masami OGOSHI <ogochan at zetabits.com>)
-                ÀÐÀî ½Ó¹Ô(Toshiyuki ISHIKAWA <tosiyuki at gol.com>)
-                ËÜÅÄ Ìй­(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>)
-                ¤»¤» ¤¸¤å¤ó(Jun SESE <sesejun at linet.gr.jp>)
-                ¿À렱ѹ§(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>)
-                ¿û¸¶ ÆØ(Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>)
-                °ðÍÕ ¹áÍý(Kaori Inaba <i-kaori at sraoss.co.jp>)
-                Ë§²ì Ì÷»Ë(Yasufumi Haga <yasufumi.haga at nifty.com>)
-
-  ¤ò¤Ï¤¸¤á¡¢¥Ý¥¹¥È¥°¥ì¥¹¤Ë´Ø¤¹¤ëÏÃÂêË­ÉÙ¤ÊÆüËܸìPostgreSQL¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¡¢
-  ÏÂÌõ¤Î¤­¤Ã¤«¤±¤òºî¤Ã¤Æ¤¯¤ì¤¿¤ê¡¢¤¤¤Ä¤â¥Á¥§¥Ã¥¯¤ò¤·¤Æ¤¯¤ì¤ë
-   JF(Linux Japanese FAQ)¥×¥í¥¸¥§¥¯¥È¡¢FreeBSD ¥É¥­¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¥×¥í¥¸¥§¥¯¥È
-  ¤ÎÊý¡¹¡¢¤½¤ì¤«¤é¡¢Ä¾Àܤ¢¤ë¤¤¤Ï´ÖÀÜŪ¤Ë¤«¤«¤ï¤Ã¤Æ¤¯¤À¤µ¤ë¤¹¤Ù¤Æ¤Î¥ª¡¼¥×¥ó¥½¡¼¥¹
-  ¥³¥ß¥å¥Ë¥Æ¥£¤Î¤ß¤Ê¤µ¤Þ¤Ë´¶¼Õ¤¤¤¿¤·¤Þ¤¹¡£
-
-
-  ¤³¤ÎËÝÌõʸ½ñ¤Ï ËܲȠ"Frequently Asked Questions"  ¤Î¥Ú¡¼¥¸¤Ë "Japanese FAQ"
-  ¤È¤¤¤¦¹àÌܤǤ¢¤ê¤Þ¤¹¡£
-
-  ¤Þ¤¿¡¢ºÇ¿·ÈǤϰʲ¼¤Î¥µ¥¤¥È¤Ë¤¢¤ê¤Þ¤¹¡£
-        http://www.postgresql.jp/wg/jpugdoc/ ¡ÖJPUGʸ½ñ¡¦½ñÀÒ´ØÏ¢Ê¬²Ê²ñ¡×
-        http://www.linux.or.jp/JF/JFdocs/INDEX-database.html ¡ÖLinux JF¥×¥í¥¸¥§¥¯¥È¡×   http://www.linet.gr.jp/~juk/pgsql/ ¡ÖPostgreSQL Notes for Japanese¡×¡ÊËÝÌõ¼Ô¥Ú¡¼¥¸¡Ë
-
-  ¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¡¦¤´¼ÁÌä¤Ï(juk at postgresql.jp)¤Þ¤Ç¤ª´ó¤»¤¯¤À¤µ¤¤¡£
-  ¡Ê¢¨ ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î " at " ¤ÏŬÀڤ˾¤·¤Æ¤¯¤À¤µ¤¤¡£È¾³Ñ¤Î "@" ¤Ç¤¹¡£¡Ë
-]
-
diff --git a/doc/FAQ_polish b/doc/FAQ_polish
deleted file mode 100644 (file)
index ff50ec2..0000000
+++ /dev/null
@@ -1,1279 +0,0 @@
-
-                 Frequently Asked Questions (FAQ) o PostgreSQL
-                                       
-   Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
-   
-   Ostatnia aktualizacja tl/umaczenia: Piatek Marzec 5 19:31:12 EST 2004
-   
-   Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-   
-   Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl)
-   
-   Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem:
-   http://www.PostgreSQL.org/docs/faqs/FAQ.html.
-   
-   Odpowiedzi na pytania dotyczace konkretnych systemów operacyjnych
-   mozna znalezc pod adresem: http://www.PostgreSQL.org/docs/index.html.
-     _________________________________________________________________
-   
-                               Pytania ogólne
-                                      
-   1.1) Co to jest PostgreSQL? Jak to wymawiac?
-   1.2) Jaka licencja chroniony jest PostgreSQL?
-   1.3) Na jakich systemach Unixowych dzial/a PostreSQL?
-   1.4) Na jakich nie-Unixowych systemach dzial/a PostgreSQL?
-   1.5) Skad moge sciagnac PostgreSQL?
-   1.6) Gdzie mozna szukac wsparcia technicznego?
-   1.7) Jaka jest ostatnia dostepna wersja?
-   1.8) Jaka dokumentacja jest dostepna?
-   1.9) Gdzie moge znalezc informacje o znanych bl/edach czy brakujacych
-   rozwiazanich?
-   1.10) Jak moge sie nauczyc SQL?
-   1.11) Czy PostgreSQL ma rozwiazany problem Y2K?
-   1.12) Jak moge sie przyl/aczyc do grupy osób bezposrednio pracujacych
-   nad rozwojem PostgreSQL?
-   1.13) Jak moge zgl/aszac bl/edy?
-   1.14) Jak mozna porównac PostgreSQL w stosunku do innych DBMS?
-   1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
-   
-                            Pytania uzytkowników
-                                      
-   2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
-   2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL
-   przez www?
-   2.3) Czy istnieje jakies GUI dla PostgreSQL?
-   2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
-   PostgreSQL?
-   
-                      Pytania dotyczace administracji
-                                      
-   3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
-   /usr/local/pgsql?
-   3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call
-   lub "core dumped". Dlaczego?
-   3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
-   IpcMemoryCreate. Dlaczego?
-   3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
-   IpcSemaphoreCreate. Dlaczego?
-   3.5) W jaki sposób moge kontrolowac pol/aczenia z innych hostów?
-   3.6) Jak powinienem skonfigurowac system baz danych aby uzyskac lepsza
-   wydajnosc?
-   3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
-   3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas
-   próby pol/aczenia sie z baza danych?
-   3.9) Jakie pliki znajduja sie w pg_temp?
-   3.10) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
-   skryptów dump i restore?
-   
-                       Pytania dotyczace uzytkowania
-                                      
-   4.1) Jaka jest róznica pomiedzy kursorami binarnymi (binary cursors) i
-   zwykl/ymi kursorami (normal cursors)?
-   4.2) Jak moge pobrac za pomoca SELECT jedynie kilka pierwszych wyników
-   zapytania?
-   4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod
-   psql?
-   4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
-   4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
-   4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac
-   dane ze zwyczajnego pliku tekstowego?
-   4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i
-   uzytkownicy sa utworzeni?
-   4.8) Moje zapytania sa wolne lub nie uzywaja kluczy. Dlaczego?
-   4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
-   zapytanie?
-   4.10) Co to jest "R-tree index"?
-   4.11) Co to jest "Genetic Query Optimizer"?
-   4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
-   case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów
-   dla zapytan case-insensitive?
-   4.13) Jak sprawdzic w zapytaniu czy pole ma wartosc NULL?
-   4.14) Jaka jest róznica pomiedzy róznymi typami tekstowymi (character
-   types)?
-   4.15.1) Jak moge utworzyc pole typu int, które samo zwieksza swoja
-   wartosc?
-   4.15.2) Jak pobrac wartosc pola typu SERIAL po wykonaniu insert'u?
-   4.15.3) Czy uzycie currval() i nextval() nie doprowadzi do "race
-   condition" z innymi uzytkownikami?
-   4.15.4) Dlaczego numery sekwencji nie sa ponownie uzywane przy
-   przerwaniu transakcji? Skad sie biora luki w numerowaniu kolumny
-   tabeli sekwencjami/SERIALem?
-   4.16) Co to jest OID? Co to jest TID?
-   4.17) Jakie jest znaczenie niektórych terminów w PostgreSQL?
-   4.18) Skad bierze sie ten bl/ad: "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.19) Jak sprawdzic jakiej wersji PostgreSQL uzywam?
-   4.20) Dlaczego operacje, które wykonuje na duzych obiektach
-   "large-object" zwracaja komunikat: "invalid large obj descriptor"?
-   4.21) Jak stworzyc kolumne której domyslna wartoscia bedzie biezacy
-   czas?
-   4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
-   4.23) Jak wykonac "outer join"?
-   4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
-   4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
-   4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel
-   tymczasowych w funkcjach PL/PgSQL?
-   4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
-   4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
-   
-                           Rozwijanie PostgreSQL
-                                      
-   5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program
-   zrzuca pamiec (dump core)?
-   5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
-   5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
-   5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac
-   zmiany?
-     _________________________________________________________________
-   
-                               Pytania ogólne
-                                      
-    1.1) Co to jest PostgreSQL? Jak to wymawiac?
-    
-   PostgreSQL wymawia sie Post-Gres-kju-el. Czesto podczas rozmów uzywany
-   jest termin "Postgres"
-   
-   PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych -
-   POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze
-   PostgreSQL zachowal/ bardzo dobrze zbudowany model danych (data model)
-   i bogaty zestaw typów danych POSTGRES'a, zastapil/ PostQuel'owy jezyk
-   zapytan z rozbudowanym podzbiorem jezyka SQL. PostgreSQL jest
-   oprogramowaniem darmowym z dostepnymi cal/ymi zródl/ami.
-   
-   Rozwój PostgreSQL jest prowadzony przez grupe ludzi z Internetu,
-   komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL.
-   Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org).
-   (Zobacz pytanie 1.6 jak sie przyl/aczyc). Ta grupa ludzi jest
-   odpowiedzialna za cal/y rozwój PostgreSQL. PostgreSQL jest projektem
-   nie kontrolowanym przez zadna firme, aby wziac udzial/ w jego rozwoju
-   sprawdz, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
-   
-   Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych
-   osób pomogl/o przy portowaniu, testowaniu, debugowaniu i rozwijaniu
-   kodu. Oryginalny kod Postgresa, na którym zostal/ oparty PostgreSQL,
-   byl/ wysil/kiem studentów oraz pracowników pracujacych pod
-   kierownictwem profesora Michael'a Stonebraker'a z University of
-   California w Berkeley.
-   
-   Oryginalna nazwa oprogramowania w Berkeley byl/ Postgres. Po dodaniu
-   obsl/ugi SQL w 1995, nazwa zostal/a zmieniona na Postgres95. Pod
-   koniec roku 1996 nazwa zostal/a zmieniona na PostgreSQL.
-   
-    1.2) Jaka licencja chroniony jest PostgreSQL?
-    
-   PostgreSQL objety jest nastepujaca licencja:
-   
-   PostgreSQL Data Base Management System
-   
-   Portions Copyright (c) 1996-2009, 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.
-   
-   Tekst powyzej, jest klasyczna licencja BSD. Nie posiada ona zadnych
-   restrykcji co do uzywania kodu zródl/owego. Podoba nam sie i nie
-   zamierzamy jej zmieniac.
-   
-    1.3) Na jakich systemach Unixowych dzial/a PostreSQL?
-    
-   PostgreSQL powinien dzial/ac na wszystkich nowych Unix-podobnych
-   systemach. Platformy, które zostal/y szczegól/owo przetestowane
-   podczas publikowania PostgreSQL sa wymienione w dokumentacji
-   opisujacej instalacje.
-   
-    1.4) Na jakich nie-Unixowych systemach dzial/a PostgreSQL?
-    
-   Klient
-   
-   Mozliwa jest kompilacja bibliteki C libpq, psql oraz innych
-   interfejsów i uruchamianie ich na platformie MS Windows. W tym wypadku
-   klient jest uruchamiany na MS Windows a z serwerem komunikuje sie
-   poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie
-   Unixowej. Plik win32.mak jest dol/aczony do zródel/, aby mozna byl/o
-   stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku
-   Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC.
-   
-   Serwer
-   
-   Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek
-   Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w
-   zródl/ach lub pod adresem:
-   http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych
-   stronach.
-   
-   Obecnie prowadzone sa prace nad stworzeniem wersji dla MS Win
-   NT/200/XP. Jesli chcesz sie dowiedziec o obecnym statusie tych prac
-   zobacz http://techdocs.postgresql.org/guides/Windows and
-   http://momjian.postgresql.org/main/writings/pgsql/win32.html.
-   
-   Istnieje takze port pod Novell Netware 6 dostepny pod adresem
-   http://forge.novell.com.
-   
-    1.5) Skad mozna sciagnac PostgreSQL?
-    
-   Gl/ówny serwer ftp z dostepem "anonymous" dla PostgreSQL znajduje sie
-   ftp://ftp.PostgreSQL.org/pub. jesli szukasz mirrorów sprawdz nasza
-   gl/ówna strone www.
-   
-    1.6) Gdzie mozna szukac wsparcia technicznego?
-    
-   Adres gl/ównej listy mailowej: pgsql-general@PostgreSQL.org. Jest ona
-   przeznaczona dyskusjom dotyczacym spraw zwiazanych z PostgreSQL. Zeby
-   zapisac sie na liste, wyslij email z nastepujacymi liniami w tresci
-   maila (nie w temacie):
-    subscribe
-    end
-
-   na adres: pgsql-general-request@PostgreSQL.org.
-   
-   Dostepna jest takze lista wysyl/ajaca digesty. Aby zapisac sie na nia,
-   wyslij email na adres: pgsql-general-digest-request@PostgreSQL.org z
-   trescia maila zawierajaca:
-    subscribe
-    end
-
-   Digesty sa wysyl/ane do czl/onków listy, kiedy na gl/ówna liste dotrze
-   ok 30k wiadomosci.
-   
-   Dostepna jest takze lista poswiecona bl/edom znalezionym w PostgreSQL.
-   Aby zapisac sie na nia wyslij email na adres:
-   pgsql-bugs-request@PostgreSQL.org z trescia maila zawierajaca:
-    subscribe
-    end
-
-   Lista poswiecona dyskusjom developerów jest dostepna pod adresem:
-   pgsql-hackers-request@PostgreSQL.org Aby sie na nia zapisac wyslij na
-   jej adres mail z trescia:
-    subscribe
-    end
-
-   Dodatkowe informacje o listach mailowych dotyczacych PostgreSQL mozna
-   znalezc na stronach WWW PostgreSQL pod adresem:
-   
-     http://www.PostgreSQL.org
-     
-   W sieci EFNet istnieje kanal/ IRC #PostgreSQL. Ja, do pol/aczenia sie
-   z kanal/em uzywam Unixowego polecenia irc -c '#PostgreSQL' "$USER"
-   irc.phoenix.net.
-   
-   Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie
-   pod adresem: http://techdocs.postgresql.org/companies.php.
-   
-    1.7) Jaka jest ostatnia dostepna wersja?
-    
-   Ostatnia dostepna wersja PostgreSQL to 7.4.1.
-   
-   Planujemy publikowanie kolejnych wersji co szesc do osmiu miesiecy.
-   
-    1.8) Jaka dokumentacja jest dostepna?
-    
-   Kilka manuali, stron podecznika man, oraz kilka przykl/adów do
-   testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w
-   katalogu /doc. Manual moze byc takze przegladany poprzez strony www
-   pod adresem http://www.PostgreSQL.org/docs.
-   
-   Istnieja takze dwie ksiazki dostepne online pod adresami
-   http://www.PostgreSQL.org/docs/awbook.html i
-   http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL,
-   które mozna kupic znajduje sie pod adresem
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Zbiór
-   technicznych artykul/ów o PostgreSQL znajduje sie pod adresem
-   http://techdocs.postgresql.org/.
-   
-   psql posiada kilka wbudowanych polecen \d, za pomoca których mozna
-   sprawdzic informacje dotyczace typów, operatorów, funkcji, agregatów
-   itd.
-   
-   Na naszej stronie mozna znalezc duzo wiecej dokumentacji.
-   
-    1.9) Gdzie mozna znalezc informacje o znanych bl/edach czy brakujacych
-    rozwiazanich?
-    
-   PostgreSQL wspiera rozszerzony podzbiór standardu SQL-92. Sprawdz
-   nasza liste TODO aby znalezc informacje o znanych problemach,
-   brakujacych rozwiazaniach czy przyszl/ych planach.
-   
-    1.10) Jak moge sie nauczyc SQL?
-    
-   Ksiazka o PostgreSQL http://www.PostgreSQL.org/docs/awbook.html uczy
-   SQL. Jest jeszcze inna ksiazka o PostgreSQL dostepna pod adresem:
-   http://www.commandprompt.com/ppbook. Dobry tutorial mozesz znalezc pod
-   adresem: http://www.intermedia.net/support/sql/sqltut.shtm, oraz
-   http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
-   i http://sqlcourse.com.
-   
-   Jeszcze inny to "Teach Yourself SQL in 21 Days, Second Edition" pod
-   adresem: http://members.tripod.com/er4ebus/sql/index.htm
-   
-   Wielu z naszych uzytkowników poleca The Practical SQL Handbook,
-   Bowman, Judith S., et al., Addison-Wesley. Inni polecaja The Complete
-   Reference SQL, Groff et al., McGraw-Hill.
-   
-    1.11) Czy PostgreSQL ma rozwiazany problem Y2K?
-    
-   Tak, bez problemu radzimy sobie z datami po roku 2000 AD, oraz przed
-   rokiem 2000 BC.
-   
-    1.12) Jak moge sie przyl/aczyc do grupy osób bezposrednio pracujacych nad
-    rozwojem PostgreSQL?
-    
-   Przede wszystkim sciagnij ostatnie dostepne zródl/a i przeczytaj
-   dokumentacje przeznaczona dla developerów na naszej stronie www lub
-   dostepna takze w zródl/ach PostgreSQL. Nastepnie zapisz sie na listy
-   mailowe pgsql-hackers i pgsql-patches. I na koniec, wysyl/aj nam
-   wysokiej jakosci patch'e na liste pgsql-patches.
-   
-   Jest okol/o 12 osób, które maja uprawnienia do commit'owania w CVS
-   PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci
-   patchy, ze stal/o sie niemozliwe dla obecnych commiterów byc z nimi na
-   biezaco, wiec musielismy im ufac i miec pewnosc, ze ich poprawki sa
-   wysokiej jakosci.
-   
-    1.13) Jak moge zgl/aszac bl/edy?
-    
-   Zajrzyj na strone PostgreSQL BugTool, na której opisane sa wskazówki
-   jak zgl/aszac informacje o bl/edach.
-   
-   Zajrzyj takze na nasz ftp ftp://ftp.PostgreSQL.org/pub, aby sprawdzic
-   czy nie ma nowszych wersji PostgreSQL czy patchy.
-   
-    1.14) Jak mozna porównac PostgreSQL w stosunku do innych DBMS?
-    
-   Jest kilka sposobów oceny softwaru: mozliwosci, wydajnosc, stabilnosc,
-   wsparcie i cena.
-   
-   Mozliwosci
-          PostgreSQL posiada mozliwosci dostepne w duzych, komercyjnych
-          systemach DBMS, takie jak transakcje, podzapytania
-          (subselects), triggery, widoki, klucze obce, referential
-          integrity, oraz wyrafinowany system blokowania. Mamy takze
-          wl/asciowsci których inni nie posiadaja, jak typy definiowane
-          przez uzytkownika, dziedziczenie, rules, multi-version
-          concurrency control, która redukuje problemy z blokowaniem
-          (lock contention).
-          
-   Wydajnosc
-          Wydajnosc PostgreSQL jest podobna do innych komercyjnych i open
-          source baz danych. W niektórych sytuacjach jest szybszy w
-          niektórych wolniejszy. W porównianiu do MySQL lub mniejszych
-          baz danych jestesmy szybsi przy wielu uzytkownikach,
-          skomplikowaych zapytaniach i duzym obciazeniu podczas. MySQL
-          jest szybszy dla prostych SELECTów wykonywanych przez niewielu
-          uzytkowników. Spowodowane jest to narzutem, który sie pojawia
-          przy transakcjach. Oczywiscie MySQL nie ma wiekszosci z
-          rozwiazan opisanych powyzej w sekcji Mozliwosci . PostgreSQL
-          zostal/ stworzony z mysla o stabilnosci, oraz szerokiej gamie
-          mozliwosci, ale mimo to staramy sie w kazdej wersji poprawiac
-          jego wydajnosc. Ciekawe porównanie PostgreSQL i MySQL mozna
-          znalezc pod adresem
-          http://openacs.org/philosophy/why-not-mysql.html Dodatkowo,
-          MySQL jest firma, która dystrybuuje jej produkty poprzez zasade
-          Open Source i wymaga wykupienia licencji w przypadku tworzenia
-          close-source software, co ie ma miejsca w przypadku PostgreSQL.
-          
-   Stabilnosc
-          Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym
-          wypadku jest bez wartosci. Staramy sie publikowac kod stabilny,
-          dobrze przetestowany, z minimum mozliwych bl/edów. Kazde
-          wydanie poprzedza co najmniej miesiac testów wersji beta.
-          Patrzac na historie wydan PostgreSQL widac, ze dostarczamy
-          stabilne, dobrze sprawdzone wersje, które sa gotowe do uzycia w
-          srodowisku produkcyjnym. Myslimy, ze proces publikowania
-          kolejnych wersji opracowany przez nas jest jednym z lepszych
-          wsród innych twórców oprogramowania bazodanowego.
-          
-   Wsparcie
-          Dzieki naszym listom mailowym masz dostep do duzej liczby
-          programistów i uzytkowników, którzy pomagaja rozwiazac kazdy
-          napotkany problem. Chociaz nie mozemy gwarantowac znalezienia
-          rozwiazania danego problemu, nie róznimy sie w tym od innych
-          komercyjnych systemów DBMS. Bezposredni kontakt z
-          programistami, uzytkownikami, dokumentacja i kodem zródl/owym
-          sprawiaja, ze wsparcie oferowane PostgreSQL niejednokrotnie
-          jest lepsze niz w innych systemach DBMS. Istnieje takze
-          mozliwosc skorzystania z komercyjnego wsparcia dla tych,
-          których takiego rozwiazania potrzebuja. (Sprawdz ten punkt
-          FAQ.)
-          
-   Cena
-          Korzystanie z PostgreSQL jest darmowe, zarówno w przypadku
-          komercyjnym jak i niekomercyjnym. Mozesz korzystac z naszego
-          kodu zródl/owego w Twoim produkcie bez zadnych ograniczen, poza
-          tymi wymienionymi w licencji BSD przytoczonej powyzej.
-          
-    1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
-    
-   PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku
-   istnienia projektu, czyli roku 1996 kiedy rozpoczelismy prace.
-   Wszystko to zawdzieczamy Marc'owi Fournier'owi, który stworzyl/ ta
-   infrastrukture i zarzadza nia od lat.
-   
-   Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu
-   open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek
-   przestojom.
-   
-   Oczywiscie korzystanie z wysokiej jakosci infrastruktury nie jest
-   tanie. Istnieje wiele róznych miesiecznych, czy jednorazowych
-   wydatków, które trzeba ponosic aby wszystko dzial/al/o jak nalezy.
-   Jesli Ty, badz Twoja firma moze wspomóc finansowo rozwój PostgreSQL
-   odwiedz adres: http://store.pgsql.com/shopping/ gdzie opisane jest jak
-   to zrobic.
-   
-   Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa
-   przeznaczone jedynie na rozwój projektu PostgreSQL i nie sa
-   przeznaczane na finansowanie jakiejkolwiek firmy. Jesli wolisz, mozesz
-   wysl/ac czek na adres kontaktowy.
-     _________________________________________________________________
-   
-   Jesli mozesz sie pochwalic udanymi wdrozeniami PostgreSQL, prosimy
-   abys zgl/osil/ nam to na stronie: http://advocacy.postgresql.org.
-   
-                           User Client Questions
-                                      
-    2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
-    
-   Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
-   
-   Mozesz pobrac PsqlODBC z adresu
-   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
-   
-   OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com.
-   Wspól/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w
-   ten sposób mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej
-   pltaformie która wspiera (Win, Mac, Unix, VMS).
-   
-   Autorzy beda prawdopodobnie sprzedawac ten produkt osobom które
-   wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze
-   dostepna. Wszystkie pytania mozesz wysyl/ac na adres:
-   postgres95@openlink.co.uk.
-   
-    2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez
-    www?
-    
-   Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez
-   www mozesz znalezc pod adresem: http://www.webreview.com
-   
-   Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc
-   wiecej informacji na ten temat pod adresem http://www.php.net.
-   
-   Wiele osób w przypadku skomplikowanych rozwiazan uzywa Perl'a i
-   modul/u CGI.pl lub mod_perl.
-   
-    2.3) Czy istnieje jakies GUI dla PostgreSQL?
-    
-   Tak, istnieje kilka interfejsów graficznych dla PostgreSQL. Wsród nich
-   PgAccess ( http://www.pgaccess.org), PgAdmin III
-   (http://www.pgadmin.org), RHDB Admin (http://sources.redhat.com/rhdb/
-   ) oraz Rekall ( http://www.thekompany.com/products/rekall/,
-   komercyjny). Istnieje takze PHPPgAdmin (
-   http://phppgadmin.sourceforge.net/ ), webowy interfejs dla PostgreSQL.
-   
-   Wiecej informacji na ten temat znajduje sie pod adresem See
-   http://techdocs.postgresql.org/guides/GUITools.
-   
-    2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
-    PostgreSQL?
-    
-   Najbardziej popularne jezyki posiiadaja wl/asny interfejs dla
-   PostgreSQL. Sprawdz liste rozszerzen dla intersujacego Ciebie jezyka
-   programowania.
-   
-   Ze zródl/ami PostreSQL dystrubuowane sa interfejsy dla nastepujacych
-   jezyków programowania:
-     * C (libpq)
-     * Embedded C (ecpg)
-     * Java (jdbc)
-     * Python (PyGreSQL)
-     * TCL (libpgtcl)
-       
-   Inne interfejsy sa dostepne pod adresem: http://gborg.postgresql.org w
-   sekcji Drivers/Interfaces.
-     _________________________________________________________________
-   
-                      Pytania dotyczace administracji
-                                      
-    3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
-    /usr/local/pgsql?
-    
-   Uzyj opcji --prefix podczas uruchamiania skryptu configure.
-   
-    3.2) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie: Bad
-    System Call lub "core dumped". Dlaczego?
-    
-   Ten bl/ad moze byc wynikiem wielu problemów, ale na poczatek sprawdz
-   czy masz zainstalowane rozszerzenia systemu V w jadrze systemu.
-   PostgreSQL wymaga do pracy zainstalowanej obsl/ugi pamieci dzielonej i
-   semaforów.
-   
-    3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
-    IpcMemoryCreate. Dlaczego?
-    
-   Albo nie masz poprawnie skonfigurowanej obsl/ugi pamieci dzielonej w
-   jadrze systemu, albo musisz zwiekszyc jej dostepny rozmiar. Dokl/adna
-   ilosc jaka potrzebujesz jest zalezna od architektury systemu na jakim
-   pracujesz, jak duzo buforów oraz jak duzo procesów backendu
-   skonfigurowal/es dla postmaster'a. Dla wiekszosci systemów, z domyslna
-   liczba buforów i procesów potrzebujesz minimum w przyblizeniu 1MB.
-   Zobacz PostgreSQL Administrator's Guide gdzie szczegól/owo zostal/o
-   opisane wykorzystanie pamieci dzielonej i semaforów.
-   
-    3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
-    IpcSemaphoreCreate. Dlaczego?
-    
-   Jesli tresc bl/edu brzmi: IpcSemaphoreCreate: semget failed (No space
-   left on device) oznacza to, ze jadro systemu nie jest skonfigurowane
-   do obsl/ugi wystarczajacej liczby semaforów. Postgres wymaga jednego
-   semafor'a na potencjalny jeden proces backend. Tymczasowym
-   rozwiazaniem jest uruchomienie programu postmaster z mniejsza
-   maksymalna liczba procesów backend. Uzyj opcji -N z parameterem
-   mniejszym od domyslnego - 32. Bardziej trwal/ym rozwiazaniem jest
-   zwiekszenie parametrów SEMMNS i SEMMNI jadra twojego systemu.
-   
-   Niedzial/ajace semafory moga spowodowac niepoprawne zamkniecie systemu
-   w czasie intensywnego korzystania z bazy.
-   
-   Jesli tresc bl/edu jest inna, moze to oznaczac, ze obsl/uga semaforów
-   nie zostal/a wl/aczona do jadra wcale. Zobacz PostgreSQL
-   Administrator's Guide po bardziej szczegól/owe informacje o pamieci
-   dzielonej i semaforach.
-   
-    3.5) W jaki sposób moge kontrolowac pol/aczenia z innych hostów?
-    
-   Domyslnie PostgreSQL pozwala jedynie na pol/aczenia za pomoca socketów
-   Unixowych z lokalnego hosta. Inne hosty nie beda mogl/y sie pol/aczyc
-   z serwerem dopóki nie zostanie dodana opcja -i do postmaster'a, oraz
-   nie umozliwi sie autoryzacji na podstawie adresu hostów modyfikujac
-   odpowiednio plik $PGDATA/pg_hba.conf. To zmiany pozwola na pol/aczenia
-   TCP/IP.
-   
-    3.6) Jak powinienem skonfigurowac system baz danych aby uzyskac lepsza
-    wydajnosc?
-    
-   Indeksy bez watpienia moga przyspieszyc wykonywanie zapytan. Polecenie
-   EXPLAIN pozwala zobaczyc jak PostgreSQL interpretuje Twoje zapytanie i
-   które indeksy sa uzywane.
-   
-   Jesli wykonujesz bardzo duzo INSERTów, moze warto je wykonac za pomoca
-   jednego duzego pliku uzywajac polecenia COPY. Jest to duzo szybsze niz
-   pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku
-   okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako
-   pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w
-   jednym bloku transakcji. To redukuje narzut nakl/adany przez
-   transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na
-   nowo indeksy.
-   
-   Jest kilka opcji pozwalajacych na poprawienie wydajnosci. Mozesz
-   wyl/aczyc fsync() poprzez uruchomienie postmaster'a z opcjami -o -F.
-   To spowoduje, ze fsync() nie bedzie zrzucal/ danych na dysk po kazdej
-   transakcji.
-   
-   Mozesz takze uruchomic postmaster'a z opcja -B aby zwiekszyc wielkosc
-   pamieci dzielonej uzywanej przez procesy backendów. Jesli ustawisz ta
-   wartosc zbyt wysoko i przekroczysz limity ustawione przez kernel na
-   pamiec dzielona, postmaster moze sie nie uruchomic. Kazdy bufor
-   zajmuje 8K a domyslna ilosc buforów to 64.
-   
-   Mozesz takze uzyc opcji -S dla backendu aby zwiekszyc maksymalna
-   wartosc pamieci uzywana przez proces backendu podczas sortowania.
-   Opcja -S jest ustawiana wartoscia podawana w kilobajtach, domyslna
-   wartosc to 512K.
-   
-   Mozesz takze uzyc polecenia CLUSTER aby pogrupowac dane w tabelach wg
-   indeksu. Zobacz opis polecenia CLUSTER w manualu zeby dowiedziec sie
-   wiecej.
-   
-    3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
-    
-   PostgreSQL ma kilka mozliwosci na raportowanie informacji o jego
-   statusie, które moga byc przydatne przy debugowaniu procesu.
-   
-   Przede wszystkim uruchom skrypt configure z opcja --enable-cassert,
-   wiele funkcji assert() monitoruja postep procesu backend i zatrzymuja
-   program kiedy wydarzy sie cos nieoczekiwanego.
-   
-   Zarówno postmaster jak i postgres maja kilka opcji do debugowania. Za
-   kazdym razem kiedy uruchamiasz postmaster'a, upewnij sie, ze wysyl/asz
-   standardowe wyjscie i error do pliku z logami, np. w ten sposób:
-    cd /usr/local/pgsql
-    ./bin/postmaster >server.log 2>&1 &
-
-   To utworzy plik server.log w gl/ównym katalogu PostgreSQL. Ten plik
-   zawiera pozyteczne informacje o problemach i bl/edach, które
-   wydarzyl/y sie podczas pracy serwera. Postmaster posiada opcje -d,
-   która pozwala na raportowanie bardzo szczególowych informacji. Do
-   opcji -d podajemy liczbe, która okresla szczegól/owosc wysyl/anych
-   informacji. Musisz miec swiadomosc, ze wysoki poziom logowania bedzie
-   powodowal/ tworzenie bardzo duzych plików z logami.
-   
-   Jesli postmaster nie zostal/ uruchomiony, mozesz uruchomic
-   postgres'owy backend z linii polecen, i uruchomic Twoje polecenie SQL
-   bezposrednio na nim. Taki sposób jest polecany jedynie w przypadku
-   debugowania. Zwróc uwage, ze w tym wypadku zapytanie konczy znak nowej
-   linii a nie srednik. Jesli skompilowal/es z opcjami debugowania mozesz
-   uzyc debuggera aby sprawdzic co sie dzieje. Poniewz backend nie
-   zostal/ uruchomiony przez postmaster'a, nie dzial/a w identycznym
-   srodowisku, co oznacza ze powtórzenie warunków w jakich wystapil/y
-   problemy moze byc problemem.
-   
-   Jesli postmaster dzial/a, uruchom psql w jednym z okien, nastepnie
-   znajdz PID procesu postgres uzywanego przez psql. Uzyj debuggera aby
-   do PID'u postgres'a. Mozesz ustawiac pul/apki (breakpoints) w
-   debuggerze i wykonywac zapytania z psql. Jesli debugujesz uruchamianie
-   postgres'a, mozesz ustawic zmienna PGOPTIONS="-W n", nastepnie
-   uruchomic psql. Opcja ta pozwoli spowolnic uruchomienie na n sekund
-   abys mógl/ sie pol/aczyc z procesem za pomoca debugera, ustawic
-   jakiekolwiek pul/apki i kontynuowac proces uruchamiania.
-   
-   postgres moze byc uruchamiany z opcjami -s, -A i -t, które moga byc
-   bardzo przydatne przy debuggowaniu i ocenie wydajnosci.
-   
-   Mozesz takze skompilowac z profilingiem aby zobaczyc jakie funkcje ile
-   czasu wykonuja sie. Pliki profilowane dla backendu zostana umieszczone
-   w katalogu pgsql/data/base/dbname. Pliki profilu klienta zostana
-   umieszczone w biezacym katalogu klienta. Linux wymaga aby kompilowac z
-   opcja -DLINUX_PROFILE aby profilowanie odbywal/o sie poprawnie.
-   
-    3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas próby
-    pol/aczenia sie z baza danych?
-    
-   Musisz zwiekszyc limit ilosci jednoczesnych procesów bacekendu dla
-   procesu postmaster'a.
-   
-   Domyslny limit to 32 procesy. Mozesz go zwiekszyc przez restart
-   postmaster z odpowiednia wartoscia ustawiana opcje -N w pliku
-   postgresql.conf.
-   
-   Wez pod uwage, ze jesli zwiekszysz wartosc podana w opcji -N na wiecej
-   niz 32 musisz takze zwiekszyc wartosc w opcji -B ponad jej domyslna
-   wartosc 64; wartosc -B musi byc co najmniej dwa razy wieksza od
-   wartosci podanej w opcji -N, a prawdopodobnie powinna byc w
-   rzeczywistosci jeszcze wieksza dla optymalnej wydajnosci. Dla duzej
-   liczby procesów backendu na pewno zauwazysz, ze trzeba zwiekszyc rózne
-   parametry jadra Unixa. Rzeczy, które pownienes sprawdzic to maksymalna
-   liczba bloków pamieci dzielonej, SHMMAX; maksymalna liczba semaforów,
-   SEMMNS oraz SEMMNI; maksymalna liczba procesów, NPROC; maksymalna
-   liczba procesów na jednego uzytkownika, MAXUPRC; i maksymalna liczba
-   otwartych plików, NFILE oraz NINODE. Powód dla którego PostgreSQL ma
-   limit na maksymalna liczbe procesów backendu to obawa o wyczerpanie
-   zasobów systemu.
-   
-    3.9) Jakie pliki znajduja sie w pg_temp?
-    
-   Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
-   przykl/adu, jesli jakas operacja sortowania jest wymagana do wykonania
-   ORDER BY, a samo sortowanie wymaga wiecej miejsca niz parametr
-   backendu -S ustawil/ do wykorzystania, wtedy tymczasowe pliki sa
-   uzywane do przechowywania tych danych.
-   
-   Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to
-   nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie
-   poprawnie podczas operacji sortowania. Jesli w danym momencie nie
-   dzial/aja zadne procesy backendów mozesz spokojnie usunac pliki
-   pg_tempNNN.NN.
-   
-    3.9) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
-    skryptów dump i restore?
-    
-   Twórcy PostgreSQL dokonuja jedynie mal/ych zmian pomiedzy mal/ymi
-   upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
-   korzystania z dump i restore. Przy wiekszych zmianach, np. z wersji
-   7.2 do 7.3, czesto zmianymaja wpl/yw na format przechowywanych danych.
-   Zmiany te sa na tyle skomplikowane, ze nie utrzymujemy zgodosci z
-   poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
-   takiej postaci, w której l/atwe jest ich zaimportowanie do nowszych
-   wersji bez kl/opotu.
-   
-   W wydaniach gdzie zmiany nie dotycza formatu danych na dysku, mozna
-   wykorzystac skryptu pg_upgrade, do upgradu bez uzycia dump/restore.
-   Dokumentacja do danego wydania zawiera informacje czy mozliwe jest
-   uzycie pg_upgrade.
-     _________________________________________________________________
-   
-                         Pytania dotyczace uzywania
-                                      
-    4.1) Jaka jest róznica pomiedzy kursorami binarnymi (binary cursors) i
-    zwykl/ymi kursorami (normal cursors)?
-    
-   Zobacz w manualu opis polecenia DECLARE.
-   
-    4.2) Jak moge pobrac za pomoca SELECT jedynie kilka pierwszych wyników
-    zapytania?
-    
-   Zobacz w manualu opis polecenia FETCH lub uzyj polecenia SELECT ...
-   LIMIT....
-   
-   Nawet jesli chesz pobrac kilka pierwszych rzedów z wyniku zapytania,
-   cal/e zapytanie musi zostac wykonane. Byc moze powinienes skorzystac z
-   polecenia ORDER BY. Jesli istnieje indeks który odpowiada polom
-   okreslonym przez ORDER BY, PostgreSQL moze wykorzystac jedynie kilka
-   pierwszych rzedów, byc moze bedzie koniecznosc wykonania zapytania do
-   momentu az zostana znalezione pozadane wyniki.
-   
-   Aby otrzymac losowy rzad, uzyj:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-        
-
-    4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql?
-    
-   Mozesz sprawdzic zawartosc zródel/ psql, a konkretnie plik
-   pgsql/src/bin/psql/describe.c. Zawiera on polecenia SQL które generuja
-   wyniki komend z backslashem. Mozesz takze uruchomic psql z opcja -E
-   wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie
-   zapytanie, które w rzeczywistosci jest wykonywane.
-   
-    4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
-    
-   DROP COLUMNT zostal/o dodane w wersji 7.3 przy poleceniu ALTER TABLE
-   DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
-         BEGIN;
-         LOCAL TABLE old_table;
-    SELECT ...  -- wybierz wszystkie kolumny poza ta jedna której chcesz sie pozbyc
-    INTO TABLE new_table
-    FROM old_table;
-    DROP TABLE old_table;
-    ALTER TABLE new_table RENAME TO old_table;
-
-   Aby zmienic typ danych kolumny mozesz zrobic tak:
-   BEGIN;
-   ALTER TABLE tab ADD COLUMN new_col new_data_type;
-   UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-   ALTER TABLE tab DROP COLUMN old_col;
-   COMMIT;
-        
-    4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
-    
-   Oto wszystkie ograniczenia:
-    Maksymalny rozmiar dla bazdy danych?     nieograniczony ( istnieja
-         bazy danych o wielkosci 32 TB databases )
-    Maksymalny rozmiar dla tabeli?           32 TB
-    Maksymalny rozmiar dla rzedu?            1.6 TB
-    Maksymalny rozmiar pola?                 1 GB
-    Maksymalna liczba rzedów w tabeli?       nieograniczona
-    Maksymalna liczba kolumn w tabeli?       250-1600 w zalezonosci od typów kolumn
-    Makasymalna liczba indeksów na tabeli?   nieograniczona
-
-   Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
-   ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa.
-   Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci.
-   
-   Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
-   operacyjnego wsparcia dla duzych plików. Duze tabele sa przechowywane
-   jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plików
-   narzucone przez system plików nie sa istotne.
-   
-   Masymalny rozmiar tabeli i maksymalna liczba kolumn moze byc
-   zwiekszona jesli zwiekszymy domyslny rozmiar bloku (block size) do
-   32k.
-   
-    4.6) Jak duzo miejsca w bazie danych jest konieczne aby przechowywac dane
-    ze zwyczajnego pliku tekstowego?
-    
-   Baza danych PostgreSQL moze potrzebowac do pieciu razy wiecej miejsca
-   na przechowywanie danych z plików tekstowych niz ich objetosc.
-   
-   Jako przykl/ad mozemy rozwazyc plik skl/adajacy sie z 100,000 linii
-   zbudowanych z liczby cal/kowitej oraz opisu tekstowego w kazdej.
-   Zal/ózmy, ze srednio kazdy l/ancuch tekstu w linii zajmuje 20 bajtów.
-   Cal/y plik powinien zajmowac ok. 2.8 MB. Rozmiar pliku bazy danych w
-   PostgreSQL zawierajacego te dane mozna oszacowac na okol/o 6.4MB:
-    36 bajtów: nagl/ówek kazdego rzedu w przyblizeniu)
-    24 bajty:  jedno pole int i jedno pole typu text
-   + 4 bajty:  wkaznik na stronie do krotki
-   --------------------------------------------------
-    64 bajty w jednym rzedzie
-
-        Strona danych w PostgreSQL zajmuje 8192 bajtów (8 KB), wiec:
-
-   8192 bajtów na strone
-   ---------------------   =  128 rzedów na jedna strone w bazie (zaokraglone w dól/)
-     64 bajtów na rzad
-
-   100000 rzedów danych
-   -----------------------  =  782 stron w bazie danych (zaokraglone w góre)
-      128 rzedów na strone
-
-782 stron w bazie * 8192 bajtów na strone  =  6,406,144 bajtów (6.4 MB)
-
-   Indeksy nie powoduja duzego narzutu na zajmowane miejsce, ale
-   zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem
-   duze.
-   
-   NULLe sa przechowywane jako mapy bitowe, wiec uzywaja bardzo mal/o
-   miejsca.
-   
-    4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa
-    utworzeni?
-    
-   psql ma cal/kiem duza ilosc polecen z backslashem aby wydobyc takie
-   informacje. Wprowadz \? aby zobaczyc ich spis. Istnieja takze tablice
-   systemowe rozpoczynajace sie od pg_, zawierajace interesujace Ciebie
-   informacje. Wykonanie psql -l pokaze spis wszystkich baz danych.
-   
-   Obejrzyj takze plik pgsql/src/tutorial/syscat.source. Zawiera on wiele
-   z zapytan typu SELECT, które sa potrzebne aby wydobyc informacje z
-   tablic systemowych.
-   
-    4.8) Moje zapytania sa wolne lub nie uzywaja kluczy. Dlaczego?
-    
-   Indeksy nie sa uzywane automatycznie przez kazde z zapytan. Ideksy sa
-   uzywane jedynie gdy tabela jest odpowiedniego rozmiaru, wiekszego niz
-   wymagany minimalny, a zapytanie wybiera jedynie mal/y procent
-   zawartosci tabeli. Wynika to z tego, ze losowy dostep do dysku
-   powodowany przez ideksowane poszukiwanie jest czasami wolniejsze niz
-   poszukiwanie sekwencyjne bez uzycia kluczy.
-   
-   Zeby zdecydowac czy indeks powinien byc uzywany, PostgreSQL musi miec
-   statystyki dotyczace danej tabeli. Sa one gromadzone przez uzycie
-   polecenia VACUUM ANALYZE, lub poprostu ANALYZE. uzywajac statystyk,
-   optymalizator wie ile rzedów jest w tabeli i moze lepiej okreslic czy
-   indeksy powinny byc uzyte. Statystyki moga byc takze pomocne w
-   okresleniu najlepszej kolejnosci wykonania zl/aczenia (join) i jego
-   sposobu. Gromadzenie statystyk powinno sie odbywac w okreslonych
-   interwal/ach czasu poniewaz dane w tabelach zmieniaja sie.
-   
-   Indeksy nie sa zazwyczaj uzywane przez ORDER BY lub przy wykonywaniu
-   zl/aczen (join). Sekwencyjne przeszukiwanie po którym nastepuje
-   sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
-   na duzej tabeli.
-   
-   Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
-   indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
-   rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksów, mozliwe
-   jest aby zwrócic te wartosci uzywajac indeksów poprzez uzycie ORDER BY
-   i LIMIT.
-    SELECT col
-    FROM tab
-    ORDER BY col [ DESC ]
-    LIMIT 1;
-        
-   Jesli uwazasz, ze optimizer myli sie wybierajac sequential scan, uzyj
-   SET enable_seqscan TO 'off' i uruchom testy aby sprawdzic czy wtym
-   wypadku zapytanie bedzie szybciej wykonywane.
-   
-   Kiedy uzywa sie operatorów dopasujacych takich jak LIKE lub ~, indeksy
-   beda uzywane jedynie w pewnych wypadkach:
-     * Poczatek wyszukiwania jest oparty na poczatku l/ancucha tekstu.
-          + wzorce LIKE nie moga sie zaczynac %
-          + dopasowania operatorem ~ (dopasowania regularne) musza sie
-            zaczynac znakiem specjalnym ^.
-     * Poczatek wyszukiwania nie moze sie zaczynac od klas znaków, np.
-       [a-e].
-     * Case-insensitive searches such as ILIKE and ~* do not utilise
-       indexes. Instead, use functional indexes, which are described in
-       section 4.12.
-     * Standardowe locale C musi byc uzyte przy wykonywaniu initdb
-       
-    4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
-    zapytanie?
-    
-   Zobacz manual dla polecenia EXPLAIN.
-   
-    4.10) Co to jest "R-tree index"?
-    
-   Indeks R-tree jest uzywany do indeksowania danych przestrzennych.
-   Indeks hasuujacy nie nadaje sie do wyszukiwania odlegl/osci. Natomiast
-   indeks typu B-tree moze wyszukiwac odleglosci jedynie w
-   jednowymiarowych przestrzeniach. R-tree indeks radzi sobie z
-   przestrzeniami wielo-wymiarowymi. Dla przykl/adu, jesli zostanie
-   zal/ozony indeks typu R-tree na polu typu point, system moze bardziej
-   wydajnie odpowiadac na zapytania typu "select all points within a
-   bounding rectangle."
-   
-   Zródl/owym dokumentem opisujacym oryginalnie projektowanie R-tree
-   indeksów jest:
-   
-   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.
-   
-   Ten dokument mozesz znalezc takze w pracy Stonebraker'a "Readings in
-   Database Systems".
-   
-   Wbudowane indeksy R-trees radza sobie w wielobokami i boxes.
-   Teoretycznie, indeksy R-tree moga byc rozszerzone o mozliwosci
-   indeksowania w wiecej wymiarowych przestrzeniach. W praktyce,
-   rozbudowa indeksów R-tree wymaga troche pracy, a w tej chwili nie
-   dysponujemy jakakolwiek dokumentacja jak to zrobic.
-   
-    4.11) Co to jest "Genetic Query Optimizer"?
-    
-   Modul/ GEQO ma za zadanie przyspieszenie optymalizacji zapytan l/aczac
-   wiele tabel za pomoca algorytmów genetycznych (Genetic Algorithm
-   (GA)). Pozwala na uzywanie duzych zapytan l/aczacych tabele (join
-   queries) bez wykorzystywania zasobozernego wyszukiwania.
-   
-    4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
-    case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów dla
-    zapytan case-insensitive?
-    
-   Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen
-   regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami
-   regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE.
-   
-   Porównania case-insensitive sa zazwyczaj wykonywane w nastepujacy
-   sposób:
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc'
-
-   W tym wypadku standardowe indeksy nie beda uzywane. Mozesz utworzyc
-   indeks funkcyjny, poprzez:
-    CREATE INDEX tabindex on tab (lower(col));
-
-    4.13) Jak sprawdzic w zapytaniu czy pole ma wartosc NULL?
-    
-   Mozesz to sprawdzic, testujac wartosc kolumny warunkiem IS NULL albo
-   IS NOT NULL.
-   
-    4.14) Jaka jest róznica pomiedzy róznymi typami tekstowymi (character
-    types)?
-    
-Type            Nazwa wewnetrzna   Uwagi
---------------------------------------------------
-VARCHAR(n)      varchar            rozmiar okresla maksymalna dl/ugosc, nie matutaj wypel/niania
-CHAR(n)         bpchar             wypel/niane pustymi znakami do podanej dl/ugosci
-TEXT            text               bez limitu na dl/ugosc l/ancucha
-BYTEA           bytea              zmiennej dl/ugosci tablica bajtów (null-byte safe)
-"char"          char                      1 znak
-
-   Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
-   czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi.
-   
-   Pierwsze cztery typy powyzej to tzw typy "varlena" (np. pierwsze
-   cztery bajty na dysku to dl/ugosc, po których jest data). Dlatego
-   faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz
-   zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
-   przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
-   na dysku moze byc mniejsze niz oczekiwane.
-   
-   VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchów o
-   róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
-   najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przekraczajacej
-   1GB.
-   
-   CHAR(n) jast najlepszym typem do przechowywania l/ancuchów o tej samej
-   dl/ugosci. CHAR(n) wypel/nia dane do zadanej dl/ugosci, podczas gdy
-   VARCHAR(n) przechowuje jedynie dane dostarczone. BYTEA sl/uzy do
-   przechowywania danych binarnych, w szczególnosci dla danych
-   zawierajacych NULL bajty. Wszystkie typy opisane tutaj maja podobne
-   charakterystyki jesli chodzi o wydajnosc.
-   
-    4.15.1) Jak moge utworzyc pole które samo zwieksza swoja wartosc?
-    
-   PostgreSQL ma zaimplementowany typ SERIAL. Automatycznie tworzy
-   sekwencje i indeks na tej kolumnie. Dla przykladu:
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
-
-   zostanie automatycznie prztl/umaczone na:
-    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 );
-
-   Wiecej informacji o sekwencjach znajdziesz w manualu o
-   create_sequence. Mozesz takze uzyc pola OID jako unikalnej wartosci
-   dla kazdego rzedu danych. Jesli bedziesz potrzebowal/ z backupowac
-   dane robiac dump bazy i odtworzyc ja, musisz uzyc pg_dump z opcja -o
-   lub polecenia COPY WITH OIDS aby zachowac OIDy.
-   
-    4.15.2) Jak pobrac wartosc pola typu SERIAL po wykonaniu insert'u?
-    
-   Jednym z podejsc jest pobranie kolejnej wartosci typu SERIAL z
-   sekwencji za pomoca funkcji nextval() zanim zostanie wstawiona, a
-   pózniej nalezy jej uzyc. Uzywajac przykl/adu z tabeli z punktu 4.15.1,
-   moze to wygladac w Perlu na przykl/ad w ten sposób:
-    new_id = output of "SELECT nextval('person_id_seq')"
-    INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
-
-   Bedziesz mial/ wtedy ta wartosc przechowana w zmiennej new_id do
-   uzytku w innych zapytaniach (np. jako klucz obcy do tabeli person).
-   Warto zwrócic uwage, ze nazwa automatycznie utworzonej sekwencji
-   SEQUENCE bedzie nastepujaca: <tabela>_<kolumnatypuserial>_seq, gdzie
-   tabela i kolumnatypuserial sa nazwami Twojej tabeli i Twojej kolumny
-   typu SERIAL.
-   
-   Inne rozwiazanie to uzycie funkcji currval() na pola typu SERIAL po
-   dodaniu nowej wartosci do rzedu zawierajacego kolumne typu SERIAL z
-   wstawiona domyslnie wartoscia, np.
-    INSERT INTO person (name) VALUES ('Blaise Pascal');
-    new_id = output of "SELECT currval('person_id_seq')";
-
-   Ostatecznie mozesz uzyc OID zwracanej po wykonaniu INSERT, chociaz to
-   jest najmniej przenosne rozwiazanie. W Perlu, wykorzystujac biblioteke
-   DBI z modul/em Edmunda Mergla DBD::Pg, oid jest dostepny poprzez
-   $sth->{pg_oid_status} po wykonaniu $sth->execute().
-   
-    4.15.3) Czy uzycie currval() i nextval() nie doprowadzi do race condition z
-    innymi uzytkownikami?
-    
-   Nie. currval() zwraca biezaca wartosc przypisana przez Twój backend, a
-   nie przez wszystkich uzytkowników.
-   
-    4.15.4) Dlaczego numery sekwencji nie sa ponownie uzywane przy przerwaniu
-    transakcji? Skad sie biora luki w numerowaniu kolumny tabeli
-    sekwancjami/SERIALem?
-    
-   Aby poprawic zbieznosc (concurrency), wartosci sekwencji sa podawane
-   dzial/ajacym transakcjom kiedy tego potrzebuja i nie sa blokowane
-   dopóki transakcja sie nie zakonczy. To spowoduje przerwy w numerowaniu
-   z przerwanych transakcji.
-   
-    4.16) Co to jest OID? Co to jest TID?
-    
-   OID sa PostgreSQL'owym rozwiazaniem problemu unikalnych numerów
-   rzedów. Kazdy rzad tworzony przez PostgreSQL otrzymuje unikalny OID.
-   Wszystkie OIDy generowane podczas procesu uruchamianego przez skrypt
-   initdb maja mniejsza wartosc niz 16384 (na podstawie pliku
-   backend/access/transam.h). Wszystkie OIDy tworzone przez uzytkownika
-   sa równe lub wieksze podanej wczesniej wartosci. Domyslnie wszystkie
-   OIDy sa unikalne nie tylko w pojedynczej tabeli czy bazie danych ale w
-   cal/ej instalacji PostgreSQL.
-   
-   PostgreSQL uzywa OIDów w swoim wewnetrznym systemie tabel, aby mozna
-   byl/o je l/aczyc. Te OIDy moga byc uzywane aby identyfikowac rzedy w
-   tabelach i wykorzystywac je w zl/aczeniach tych tabel. Zaleca sie abys
-   uzywal/ typu OID aby przechowywac wartosci OID. Mozesz utworzyc indeks
-   na polu OID aby dostep do niego byl/ szybszy.
-   
-   OID sa przypisane do wszystkich rzedów z jednego gl/ównego miejsca i
-   uzywane sa przez wszystkie bazy danych. Jesli chcial/bys zmienic OID
-   na cos innego, lub jesli chcial/bys zrobic kopie tabeli, z orginalnymi
-   OIDami nie ma zadnego przeciwwskazania abys to zrobil/:
-        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';
-
-   OIDy sa przechowywane jako cztero-bajtowe liczby cal/kowite i skoncza
-   sie po osiagnieciu czterech miliardów. Nikt jak dotad nie zgl/osil/
-   aby cos takiego sie stalo, ale mamy zamiar pozbyc sie tego
-   ograniczenia zanim ktos to zgl/osi.
-   
-   TID sa uzywane aby zidentyfikowac konkretne rzedy z blokami i
-   wartoscia ofsetów. TIDy zmieniaja sie wraz ze zmianami rzedów. Sa
-   uzywane przez indeksy, aby wskazywac do fizycznych rzedów.
-   
-    4.17) Jakie jest znaczenie niektórych terminów w PostgreSQL?
-    
-   W czesci kodu zródl/owego i starszej dokumentacji uzywamy terminów,
-   które maja bardziej ogólne znaczenie. Oto niektóre z nich:
-     * 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
-       
-   Liste terminów zwiazanych z bazami danych mozesz znalezc pod tym
-   adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/
-   glossary/glossary.html.
-   
-    4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in
-    AllocSetAlloc()"?
-    
-   Prawdopodobnie wyczerpal/a Ci sie pamiec wirtualna (virtual memory) w
-   systemie lub Twój kernel ma zbyt nisko ustawione limity dla pewnych
-   zasobów. Spróbuj wykonac nastepujace polecenia zanim uruchomisz
-   postmaster'a:
-    ulimit -d 262144
-    limit datasize 256m
-
-   W zaleznosci od shell'a jakiego uzywasz jedno z tych polecen moze nie
-   zadzial/ac, ale to ustawienie pozwoli ustawic segment danych dla
-   procesu znacznie wiekszy i byc moze pozwoli wykonac zapytanie. To
-   polecenie zadzial/a dla biezacego procesu oraz wszytkich podprocesów
-   utworzonych po wykonaniu polecenia. Jesli ten problem wystepuje z
-   klientem SQL, poniewaz backend zwraca zbyt duzo danych, spróbuj
-   wykonac to polecenie przed uruchomieniem klienta.
-   
-    4.19) Jak sprawdzic jakiej wersji PostgreSQL uzywam?
-    
-   W psql, wpisz select version();
-   
-    4.20) Dlaczego operacje, które wykonuje na duzych obiektach "large-object"
-    zwracaja komunikat: "invalid large obj descriptor"?
-    
-   Musisz uzyc BEGIN WORK i COMMIT przed i po uzyciu uchwytu do duzego
-   obiektu, tzn. musisz nimi otoczyc funkcje lo_open ... lo_close.
-   
-   Obecnie PostgreSQL uzywjac "rule" zamyka uchwyt do duzego obiektu przy
-   kazdym wywol/aniu "commit". Wiec pierwsze próba zrobienia czegokolwiek
-   z uchwytem spowoduje wypisanie: invalid large obj descriptor. Kod,
-   który do tej pory dzial/al/ (przynajmniej wiekszosc razy) bedzie teraz
-   generowal/ informacje o bl/edzie jesli nie bedziesz korzystal/ z
-   transakcji.
-   
-   Jesli uzywasz interfejsu klienta jak ODBC byc moze bedziesz musial/
-   ustawic auto-commit off.
-   
-    4.21) Jak stworzyc kolumne której domyslna wartoscia bedzie biezacy czas?
-    
-   Uzyj CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-    4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
-    
-   W wersjach wczesniejszych niz 7.4 l/aczymy podzapytania w outer
-   queries poprzez sekwencyjne przeszukiwanie wyników podzapytania dla
-   kazdego rzedu z outer query. Jesli podzapytanie zwraca jedynie kilka
-   rzedów a zewnetrzne zapytanie zwraca ich wiele, IN jest najszybsze.
-   Aby przyspieszyc inne zapytania mozna zastapic IN przez EXISTS:
-SELECT *
-    FROM tab
-    WHERE col IN (SELECT subcol FROM subtab)
-
-   na:
-SELECT *
-    FROM tab
-    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
-
-   Aby to rozwiazanie byl/o szybkie, subcol powinna byc kolumna
-   indeksowana.
-   
-   W wersji 7.4 i pózniejszych, IN w rzeczywistosci uzywa tej samej
-   wyrafinowanej techniki l/aczenia jak normalne zapytania i jest
-   preferowane nad uzywaniem EXISTS.
-   
-    4.23) Jak wykonac "outer join"?
-    
-   PostgreSQL ma zaimplementowane outer join wykorzystujac standardowa
-   skl/adnie SQL. Ponizej dwa przykl/ady:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   or
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col,
-   ale takze zwróca niepol/aczone rzedy w t1 (te, które nie pasuja w t2).
-   RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join
-   zwrócil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2.
-   Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT,
-   RIGHT, i FULL join'ach. Zwykl/e join'y sa nazywane INNER joins.
-   
-   W poprzednich wersjach "outer joins" moga byc zasymulowane poprzez
-   uzycie slowa kluczowego UNION i NOT IN. Dla przykl/adu, l/aczac tabele
-   tab1 i tab2, nastepujace zapytanie wykonuje outer join:
-    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) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
-    
-   Nie ma takiej mozliwosci aby w zapytaniu odpytawac inna baze danych
-   poza biezaca. Poniewaz PostgreSQL l/aduje specyficzne dla bazy danych
-   katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy
-   róznymi bazami danych powinno sie zachowywac.
-   
-   contrib/dblink pozwala na wykonywanie zapytan poprzez rózne bazy
-   danych wywol/ujac odpowiednie funkcje. Oczywiscie klient moze l/aczyc
-   sie z róznymi bazami danych i l/aczyc informacje w ten sposób uzyskana
-   po stronie klienta.
-   
-    4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
-    
-   Mozesz w l/atwy sposób zwracac wiele rzedów lub kolumn uzywajac
-   funkcji z:
-   http://techdocs.postgresql.org/guides/SetReturningFunctions.
-   
-    4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel tymczasowych w
-    funkcjach PL/PgSQL?
-    
-   PL/PgSQL przechowuje w cache zawartosc funkcji, niepozadanym efektem
-   tego jest to, ze gdy taka funkcja korzysta z tabel tymczasowych, które
-   sa pózniej kasowane i odtwarzane, a funkcja wywol/ywana jest
-   ponownie,jej wywol/anie nie powiedzie sie poniewaz cachowana funkcja
-   wciaz bedzie wskazywac na stara tablice tymczasowa. Rozwiazaniem tego
-   problemu jest uzywanie EXECUTE aby korzystac z tabel tymczasowych w
-   PL/PgSQL. To spowoduje, ze zapytanie bedzie parsowane przy kazdym
-   wywol/aniu funkcji.
-   
-    4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
-    
-   Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ
-   pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a slave
-   moze jedynie te zmiany odczytywac. Na stronie
-   http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie
-   ich lista. Replikacja typu multi-master jest w trakcie prac, opis
-   projektu znajduje sie pod adresem:
-   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-   
-    4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
-    
-     * contrib/pgcrypto zawiera wiele funkcji za pomoca, których mozemy
-       uzywac kryptografii w zapytaniach SQL.
-     * Aby szyfrowac transmisje od klienta do serwera, ten musi miec
-       ustawiona opcje ssl na true w pliku postgresql.conf, odpowiedni
-       wpis host lub hostssl musi wystepowac w pliku pg_hba.conf, oraz
-       sslmode nie moze byc wyl/aczone w kliencie. (Warto zwrócic uwage,
-       ze mozliwe jest takze uzywanie transportów szyfrujaców przez
-       strony trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem
-       dla SSL przez PostgreSQL).
-     * Hasl/a uzytkowników bazy danych sa automatycznie szyfrowane od
-       wersji 7.3. W poprzednich wersjach, nalezy ta funkcjonalnosc
-       poprzez wl/aczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
-     * Serwer moze dzial/ac uzywajac szyfrowanego systemu plików.
-       
-                           Rozwijanie PostgreSQL
-                                      
-    5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
-    pamiec (dump core)?
-    
-   Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj
-   najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym
-   programie.
-   
-    5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
-    
-   Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
-   prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
-   
-    5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
-    
-   W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w
-   pelni wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby
-   uzyskac wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej
-   tabele zostal/ umieszczony w contrib/tablefunc.
-   
-    5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany?
-    
-   Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla
-   plików nagl/ówkowych (include files). Wykonaj najpierw make clean, a
-   nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji
-   --enable-depend przy wykonywaniu configure aby kompilator mógl/
-   okreslic zaleznosci samodzielnie.
diff --git a/doc/FAQ_russian b/doc/FAQ_russian
deleted file mode 100644 (file)
index a361767..0000000
+++ /dev/null
@@ -1,988 +0,0 @@
-
-               Otvety na chasto zadavaemye voprosy po PostgreSQL
-                                       
-   Data poslednego obnovleniya: Sreda 25 iyunya 23:54:14 EDT 2008
-   
-   Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
-   (bruce@monjian.us)
-   
-   Pereviol na russkij: Viktor Vislobokov (admin@postgresql.ru.net)
-   
-   Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
-   http://www.postgresql.org/files/documentation/faqs/FAQ.html.
-   
-   Samuyu svezhuyu russkuyu versiyu dokumenta mozhno najti na
-   http://postgresql.ru.net/docs/FAQ_russian.html.
-   
-   Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
-   na http://www.postgresql.org/docs/faq/.
-     _________________________________________________________________
-   
-                              Obschie voprosy
-                                      
-   1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto
-   takoe Postgres?
-   1.2) Kto upravlyaet PostgreSQL?
-   1.3) Kakovy avtorskie prava na PostgreSQL?
-   1.4) Na kakih platformah rabotaet PostgreSQL?
-   1.5) Gde mozhno vzyat' PostgreSQL?
-   1.6) Kakaya versiya naibolee svezhaya?
-   1.7) Gde poluchit' podderzhku?
-   1.8) Kak mne soobschit' ob oshibke?
-   1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
-   vozmozhnostyah?
-   1.10) Kakaya dokumentaciya imeetsya v nalichii?
-   1.11) Kak nauchit'sya SQL?
-   1.12) Kak mne otpravit' ispravlenie ili prisoedinitsya k komande
-   razrabotchikov?
-   1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL
-   byt' vstroennoj?
-   1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
-   stranyh, kasayuschimisya dnevnogo vremeni?
-   1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak
-   izbezhat' polucheniya dubliruyuschihsya soobschenij?
-   
-                 Voprosy pol'zovatelej po klientskoj chasti
-                                      
-   2.1) Kakie interfejsy est' dlya PostgreSQL?
-   2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
-   cherez Web?
-   2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
-   
-                         Voprosy administrirovaniya
-                                      
-   3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
-   /usr/local/pgsql?
-   3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
-   3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
-   proizvoditel'nosti?
-   3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
-   3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
-   pytayus' podklyuchit'sya k baze?
-   3.6) Kak vypolnit' obnovlenie PostgreSQL?
-   3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
-   
-                           Voprosy `ekspluatacii
-                                      
-   4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
-   zaprosa? Dlya proizvol'noj stroki?
-   4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
-   suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
-   polucheniya `etoj informacii?
-   4.3) Kak izmenit' tip dannyh kolonki?
-   4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy
-   dannyh?
-   4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
-   sohraneniya dannyh iz obychnogo tekstovogo fajla?
-   4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut
-   moi indeksy?
-   4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
-   4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk
-   nezavisimyj ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne
-   ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
-   4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose
-   ravno NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat'
-   polya NULL ili net?
-   4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
-   4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
-   4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
-   4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
-   nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
-   4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
-   snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
-   v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
-   4.12) CHto takoe OID? CHto takoe CTID?
-   4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
-   AllocSetAlloc()"?
-   4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
-   4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
-   tekuschee vremya?
-   4.16) Kak vypolnit' vneshnee svyazyvanie?
-   4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
-   4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
-   4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne
-   suschestvuet", kogda obraschayuts' k vremennym tablicam v funkciyah
-   PL/PgSQL?
-   4.20) Kakie est' resheniya dlya replikacii?
-   4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom
-   zaprose? Pochemu ne sohranyayutsya zaglavnye bukvy?
-     _________________________________________________________________
-   
-                              Obschie voprosy
-                                      
-  1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto takoe
-  Postgres?
-  
-   PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El). (Dlya
-   osobo lyubopytstvuyuschih kak proiznosit' "PostgreSQL", suschestvuet
-   audio-fajl).
-   
-   PostgreSQL - `eto ob"ektno-relyacionnaya sistema upravleniya bazami
-   dannyh (SUBD), kotoraya imeet tradicionnye vozmozhnosti kommercheskih
-   SUBD s rasshireniyami, kotorye est' v SUBD novogo pokoleniya.
-   PostgreSQL - `eto svobodnoe i polnost'yu otkrytoe programmnoe
-   obespechenie.
-   
-   Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, razbrosannaya
-   po vsemu miru i svyazannaya cherez Internet. Razrabotka yavlyaetsya
-   obschestvennym proektom i ne upravlyaetsya kakoj-libo kompaniej.
-   Podrobnosti smotrite v FAQ dlya razrabotchikov,
-   http://www.postgresql.org/docs/faqs.FAQ_DEV.html
-   
-   Postgres -- `eto shiroko ispol'zuemoe sokraschenie dlya PostgreSQL.
-   Pervonachal'nym imenem proekta v Berkli bylo Postgres i `etot nik
-   teper' naibolee populyaren v razgovorah o PostgreSQL po sravneniyu s
-   drugimi. Esli vam trudno polnost'yu progovarivat' 'PostgreSQL', mozhno
-   prosto govorit' 'Postgres'.
-   
-  1.2) Kto upravlyaet PostgreSQL?
-  
-   Esli vy ischite kakogo-to osobennogo cheloveka, central'nyj komitet
-   ili upravlyayuschuyu kompaniyu, to naprasno --- ih net. U nas est'
-   yadro komiteta i razrabotchikov, rabotayuschih s CVS, no `eti gruppy
-   sluzhat bol'she dlya administrativnyh celej, chem dlya upravleniya.
-   Proekt napryamuyu funkcioniruet s pomosch'yu soobschestva
-   razrabotchikov i pol'zovatelej, k kotoromu mozhet prisoedinitsya
-   kazhdyj. Vsio chto nuzhno -- `eto podpisat'sya na spiski rassylki i
-   uchastvovat' v diskussiyah. (Podrobnosti o tom kak vklyuchit'sya v
-   razrabotku PostgreSQL smotrite v FAQ dlya razrabotchikov.)
-   
-  1.3) Kakovy avtorskie prava na PostgreSQL?
-  
-   PostgreSQL rasprostranyaetsya po klassicheskoj licenzii BSD. `Eta
-   licenziya ne soderzhit ogranichenij na to, kak budet ispol'zovat'sya
-   ishodnyj kod. Nam nravitsya `eta licenziya i u nas net namerenij eio
-   menyat'. Vot `eta licenziya BSD, kotoruyu my ispol'zuem:
-   
-   Sistema Upravleniya Bazami Dannyh PostgreSQL
-   
-   Portions copyright (c) 1996-2008, PostgreSQL Global Development Group
-   Portions Copyright (c) 1994-1996 Regents of the University of
-   California
-   
-   Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
-   rasprostranenie dannogo programmnogo obespecheniya i ego dokumentacii
-   dlya lyubyh celej, besplatno i bez podpisaniya kakogo-libo
-   soglasheniya, pri uslovii chto dlya kazhdoj kopii budut predostavleny
-   dannoe vyshe zamechanie ob avtorskih pravah, tekuschij paragraf i dva
-   sleduyuschih paragrafa.
-   
-   KALIFORNIJSKIJ UNIVERSITET NE NESET NIKAKOJ OTVETSTVENNOSTI ZA LYUBYE
-   POVREZHDENIYA, VKLYUCHAYA POTERYU DOHODA, NANESENNYE PRYAMYM ILI
-   NEPRYAMYM, SPECIAL'NYM ILI SLUCHAJNYM ISPOL'ZOVANIEM DANNOGO
-   PROGRAMMNOGO OBESPECHENIYA ILI EGO DOKUMENTACII, DAZHE ESLI
-   KALIFORNIJSKIJ UNIVERSITET BYL IZVESCHEN O VOZMOZHNOSTI TAKIH
-   POVREZHDENIJ.
-   
-   KALIFORNIJSKIJ UNIVERSITET SPECIAL'NO OTKAZYVAZYVAETSYA PREDOSTAVLYAT'
-   LYUBYE GARANTII, VKLYUCHAYA, NO NE OGRANICHIVAYAS' TOL'KO `ETIMI
-   GARANTIYAMI: NEYAVNYE GARANTII PRIGODNOSTI TOVARA ILI PRIGODNOSTI DLYA
-   OTDEL'NOJ CELI. DANNOE PROGRAMMNOE OBESPECHENIE PREDOSTAVLYAETSYA NA
-   OSNOVE PRICIPA "KAK EST'" I KALIFORNIJSKIJ UNIVERSITET NE OBYAZAN
-   PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
-   ILI IZMENENIYA.
-   
-  1.4) Na kakih platformah rabotaet PostgreSQL?
-  
-   Obychno, PostgreSQL mozhet rabotat' na lyuboj sovremennoj platforme
-   sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
-   platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
-   momentu vyhoda dannoj versii.
-   
-   PostgreSQL takzhe rabotaet na operacionnyh sistemah Microsoft Windows,
-   osnovannyh na NT, takih kak Win2000 SP4, WinXP i Win2003. Paket
-   installyatora dostupen po adresu
-   http://www.postgresql.org/download/windows. Versii Windows, osnovannye
-   na MS-DOS (Win95, Win98, WinMe) mogut zapuskat' PostgreSQL s
-   pomosch'yu Cygwin.
-   
-   Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
-   http://developer.novell.com/wiki/index.php/Postgresql, i versiya dlya
-   OS/2 (eComStation) na
-   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
-   SQL&stype=all&sort=type&dir=%2F.
-   
-  1.5) Gde mozhno vzyat' PostgreSQL?
-  
-   CHerez brauzer, ispol'zuya http://www.postgresql.org/ftp/ i cherez
-   ftp, ispol'zuya ftp://ftp.postgresql.org/pub/.
-   
-  1.6) Kakaya versiya naibolee svezhaya?
-  
-   Poslednij vypusk PostgreSQL - `eto versiya 8.3.3
-   
-   My planiruem vypuskat' novye starshie versii kazhdyj god, a mladshie
-   versii kazhdye neskol'ko mesyacev.
-   
-  1.7) Gde poluchit' podderzhku?
-  
-   Soobschestvo PostgreSQL predostavlyaet pomosch' mnozhestvu
-   pol'zovatelej cherez E-mail. Osnovnoj web-sajt dlya podpiski na spiski
-   rassylki po E-mail `eto: http://www.postgresql.org/community/lists/.
-   Horoshim mestom dlya togo, chtoby nachat' zadavat' voprosy
-   yavlyayutsya spiski general (obschie voprosy) ili bugs (oshibki).
-   
-   Glavnym IRC kanalom yavlyaetsya #postgreql, raspolozhennyj na servere
-   Freenode (irc.freenode.net). CHtoby podklyuchit'sya, vy mozhete
-   ispol'zovat' v Unix vyzov programmy irc -c '#postgresql' "$USER"
-   irc.freenode.net ili lyuboj drugoj IRC klient. Na `etom zhe servere
-   suschestvuyut kanaly na ispanskom (#postgresql-es), francuzskom
-   (#postgresqlfr) i brazil'skom (#postgresql-br) yazykah. Takzhe
-   suschestvuet kanal po PostgreSQL na servere EFNet.
-   
-   Spisok kommercheskoj podderzhki kompanij dostupen na
-   http://www.postgresql.org/support/professional_support.
-   
-  1.8) Kak mne soobschit' ob oshibke?
-  
-   Posetite stranichku so special'noj formoj otchiota ob oshibke v
-   PostgreSQL po adresu: http://www.postgresql.org/support/submitbug.
-   Takzhe prover'te nalichie bolee svezhej versii PostgreSQL na nashem
-   FTP sajte ftp://ftp.postgresql.org/pub/.
-   
-   Na oshibki, uvedomlenie o kotoryh byli sdelany cherez special'nuyu
-   formu ili otpravlennye v kakoj-libo spisok rassylki PostgreSQL,
-   obychno generiruetsya odin iz sleduyuschih otvetov:
-     * `Eto ne oshibka i pochemu
-     * `Eto izvestnaya oshibka i ona uzhe est' v spiske TODO
-     * Dannaya oshibka byla ispravlena v tekuschem vypuske
-     * Dannaya oshibka byla ispravlena, no ispravlenie poka ne popalo v
-       oficial'nyj vypusk
-     * Zaprashivaetsya bolee detal'naya informaciya:
-          + Operacionnaya sistema
-          + Versiya PostgreSQL
-          + Test, vosproizvodyaschij oshibku
-          + Otladochnaya informaciya
-          + Vyvod backtrace otladchika
-     * `Eto novaya oshibka. Mozhet proizojti sleduyuschee:
-          + Budet sozdano ispravlenie, kotoroe budet vklyucheno v
-            sleduyuschij vypusk
-          + Oshibka ne mozhet byt' ispravlena nemedlenno i budet
-            dobavlena v spisok TODO
-       
-  1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
-  vozmozhnostyah?
-  
-   PostgreSQL podderzhivaet rasshirennyj podklass SQL:2003. Smotrite nash
-   spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih
-   vozmozhnostej i buduschih planov.
-   
-   Na zapros kakoj-libo vozmozhnosti obychno prihodyat sleduyuschie
-   otvety:
-     * Dannaya vozmozhnost' uzhe est' v spiske TODO
-     * Dannaya vozmozhnost' nezhelatel'na potomu chto:
-          + Ona dubliruet suschestvuyuschuyu funkcional'nost', kotoraya
-            sleduet standartu SQL
-          + Dannaya vozmozhnost' sil'no uslozhnila by kod, no dala by
-            malen'kuyu vygodu
-          + Dannaya vozmozhnost' nebezopasna ili nenadiozhna
-     * Dannaya novaya vozmozhnost' dobavlena v spisok TODO
-       
-   PostgreSQL ne ispol'zuet kakuyu-libo sistemu otslezhivaniya oshibok,
-   potomu chto my obnaruzhili, chto ispol'zovanie pryamogo obrascheniya
-   po `elektronnoj pochte i obnovlyaemogo spiska TODO yavlyaetsya bolee
-   `effektivnym. Na praktike, oshibki v programmnom obespechenii
-   sohranyayutsya ochen' nedolgo, a oshibki, kotorye vazhny bol'shomu
-   kolichestvu pol'zovatelej ispravlyayutsya momental'no. Est' tol'ko
-   odno mesto, gde mozhno najti vse izmeneniya, uluchsheniya i
-   ispravleniya, sdelannye v vypuske PostgreSQL - `eto zhurnaly
-   soobschenij sistemy kontrolya versij CVS. Dazhe zamechaniya k vypuskam
-   ne soderzhat vse izmeneniya, sdelannye v programmnom obespechenii.
-   
-  1.10) Kakaya dokumentaciya imeetsya v nalichii?
-  
-   PostgreSQL soderzhit mnogo dokumentacii, vklyuchaya bol'shoe
-   rukovodstvo, stranicy `elektronnogo rukovodstva man i nekotorye
-   malen'kie testovye primery. Smotrite v katalog /doc. Vy takzhe mozhete
-   prosmatrivat' dokumentaciyu v Internet po adresu
-   http://www.postgresql.org/docs.
-   
-   Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
-   http://www.PostgreSQL.org/docs/books/awbook.html i
-   http://www.commandprompt.com/ppbook/. Est' neskol'ko knig po
-   PostgreSQL, kotorye mozhno kupit'. Odnu iz naibolee populyarnyh
-   napisal Korri Duglas (Korry Douglas). Spisok obzorov po `etim knigam
-   dostupen po adresu http://www.postgresql.org/docs/books/. Krome togo,
-   po adresu
-   http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides
-   %2C_and_Documentation vy mozhete najti kollekciyu tehnicheskih statej,
-   posveschennyh PostgreSQL.
-   
-   Klient komandnoj stroki psql imeet neskol'ko komand \d dlya
-   otobrazheniya informacii po tipam, operatoram, funkciyam, agregatam i
-   t.d. - ispol'zujte \? dlya polucheniya spiska dostupnyh komand.
-   
-   Nash sajt soderzhit esche bol'she informacii.
-   
-  1.11) Kak mne nauchit'sya SQL?
-  
-   Vo-pervyh, voz'mite odnu iz knig po PostgreSQL, o kotoryh govorilos'
-   vyshe. Mnogim iz nashih pol'zovatelej takzhe nravitsya kniga The
-   Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley.
-   Drugim nravitsya The Complete Reference SQL, Groff et al.,
-   McGraw-Hill.
-   
-   Suschestvuet takzhe mnozhestvo prekrasnyh uchebnikov dostupnyh v
-   online:
-     * http://www.intermedia.net/support/sql/sqltut.shtm,
-     * http://sqlcourse.com.
-     * http://www.w3school.com/sql/default.asp
-     * http://mysite.verizon.net/Graeme_Birchall/id1.html
-       
-  1.12) Kak mne prislat' ispravlenie ili prisoedinitsya k komande
-  razrabotchikov?
-  
-   Smotrite FAQ dlya razrabotchikov.
-   
-  1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL byt'
-  vstroennym?
-  
-   Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
-   vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
-   
-   Vozmozhnosti
-          PostgreSQL imeet bol'shinstvo vozmozhnostej predstavlennyh v
-          bol'shih kommercheskih SUBD, takie kak: tranzakcii, podzaprosy,
-          triggery, predstavleniya, ssylochnoj celostnosti vtorichnogo
-          klyucha i raznye blokirovki. U nas est' nekotorye vozmozhnosti,
-          kotoryh net u nih: tipy, opredelyaemye pol'zovatelem, mehanizm
-          nasledovaniya, pravila i konkuretnoe mnogoversionnoe upravlenie
-          dlya raboty s soderzhimym blokirovok.
-          
-   Proizvoditel'nost'
-          Proizvoditel'nost' PostgreSQL shodna s drugimi kommercheskimi
-          SUBD i s SUBD s otkrytym ishodnym kodom. V kakih-to veschah my
-          bystree, v kakih-to medlennee. Nasha proizvoditel'nosti obychno
-          +/-10% po sravneniyu s drugimi SUBD.
-          
-   Nadezhnost'
-          My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
-          nichego ne budet stoit'. My staraemsya vypuskat' horosho
-          proverennyj, stabil'nyj kod, kotoryj soderzhit minimum oshibok.
-          Kazhdyj vypusk prohodit stadiyu beta-testirovaniya po krajnej
-          mere v techenii odnogo mesyaca i nasha istoriya vypuskov
-          pokazyvaet chto my mozhem predostavlyat' stabil'nye, monolitnye
-          vypuski, kotorye gotovy k produktivnomu ispol'zovaniyu. My
-          verim, chto my proizvodim proverku ne huzhe, chem u drugih
-          SUBD.
-          
-   Podderzhka
-          Nash spisok rassylki predostavlyaet vozmozhmozhnost' obscheniya
-          s bol'shoj gruppoj razrabotchikov i pol'zovatelej, kotorye
-          mogut pomoch' reshit' lyubye voznikshie problemy. V to zhe
-          vremya, my ne garantiruem kakie-libo ispravleniya, no i
-          razrabotchiki kommercheskih SUBD ne vsegda delayut
-          ispravleniya. Pryamoj dostup k razrabotchikam, soobschestvu
-          pol'zovatelej, rukovodstvam i ishodnym tekstam chasto delayut
-          podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
-          Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
-          incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
-          (Smotrite Sekciyu 1.7.)
-          
-   Cena
-          Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
-          kommercheskogo ispol'zovaniya. Vy mozhete dobavlyat' svoj kod v
-          nash produkt bez ogranichenij, za isklyucheniem teh, chto
-          opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
-          vyshe.
-          
-   PostgreSQL razrabatyvaetsya po arhitekture klient/server, kotoraya
-   trebuet otdel'nyh processov dlya kazhdogo klienta i servera, a takzhe
-   neskol'ko vspomogatel'nyh processov. Mnogie vstraivaemye arhitektury
-   mogut sootvetstvovat' takim trebovaniyam. Odnako, esli vasha
-   vstraivaemaya arhitektura trebuet server baz dannyh dlya zapuska
-   vnutri prikladnogo processa, vy ne mozhete ispol'zovat' Postgres i vam
-   luchshe by vybrat' dlya bazy dannyh kakoe-libo drugoe oblegchennoe
-   reshenie.
-   
-  1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
-  stranyh, kasayuschimisya dnevnogo vremeni?
-  
-   Izmeneniya v sohranenii dnevnogo vremeni v SSHA vklyucheny v
-   PostgreSQL versii 8.0.[4+] i vo vse sleduyuschie vypuski, naprimer v
-   8.1. Izmeneniya po Kanade i Zapadnoj Avstralii vklyucheny v 8.0.[10+],
-   8.1.[6+] i vse sleduyuschie vypuski. Vypuski PostgreSQL do 8.0
-   ispol'zuyut informaciyu o sohranenii dnevnogo vremeni iz bazy dannyh
-   vremennyh zon v operacionnoj sisteme.
-     _________________________________________________________________
-   
-  1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak izbezhat'
-  polucheniya dubliruyuschih soobschenij?
-  
-   Stranica Majordomo na sajte PostgreSQL pozvolyaet podpisat'sya ili
-   otpisat'sya ot lyubogo iz spiskov rassylki PostgreSQL. (Vam mozhet
-   ponadobitsya vash parol' dlya Majordomo, kotoryj otpravlyaetsya na
-   vash E-mail, chtoby vojti v upravlenie vashimi podpiskami.)
-   
-   Vse spiski rassylki PostgreSQL nastarivayutsya tak, chtoby gruppovoj
-   otvet uhodil na adres spiska i na adres avtora soobscheniya. Tak
-   sdelano, chtoby pol'zovateli poluchali otvety na E-mail kak mozhno
-   bystree. Esli vy ne hotite poluchat' dubliruyuschie E-mail
-   soobscheniya iz spiska, v sluchayah kogda vy uzhe poluchili `eti
-   soobscheniya napryamuyu, ustanovite flazhok eliminatecc na stranice
-   Change Settings v Majordomo. Vy takzhe mozhete izbezhat' polucheniya
-   kopij svoih soobschenij dlya samogo sebya, esli snimite flazhok
-   selfcopy.
-     _________________________________________________________________
-   
-                 Voprosy pol'zovatelej po klientskoj chasti
-                                      
-  2.1) Kakie interfejsy est' dlya PostgreSQL?
-  
-   Ustanovka PostgreSQL vklyuchaet tol'ko C i vstroennyj (embedded) C
-   interfejsy. Vse drugie interfejsy yavlyayutsya nezavisimymi proektami
-   i zagruzhayutsya otdel'no; samostoyatel'nost' proektov pozvolyaet im
-   organizovat' sobstvennoe raspisanie vypuskov novyh versij i imet'
-   sobstvennuyu komandu razrabotchikov.
-   
-   Nekotorye yazyki programmirovaniya, takie kak PHP vklyuchayut v sebya
-   interfejs k PostgreSQL. Interfejsy dlya takih yazykov kak Perl, TCL,
-   Python i mnogih drugih, dostupny na http://pgfoundry.org.
-   
-  2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
-  Web?
-  
-   Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
-   na: http://www.webreview.com
-   
-   Dlya integracii s Web, PHP http://www.php.net yavlyaetsya neplohim
-   interfejsom.
-   
-   V slozhnyh sluchayah, mnogie pol'zuyutsya Perl i DBD::Pg s CGI.pm ili
-   mod_perl.
-   
-  2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
-  
-   Dlya PostgreSQL suschestvuet bol'shoe kolichestvo instrumentov s
-   graficheskim interfejsom kak kommercheskih, tak i otkrytyh.
-   Podrobnosti mozhno najti v Dokumentacii soobschestva dlya GUI
-   istrumentov PostgreSQL
-     _________________________________________________________________
-   
-                         Voprosy administrirovaniya
-                                      
-  3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot /usr/local/pgsql?
-  
-   Zadajte opciyu --prefix kogda zapuskaete configure.
-   
-  3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
-  
-   Po umolchaniyu, PostgreSQL razreshaet tol'ko soedineniya na lokal'noj
-   mashine cherez sokety domena Unix ili TCP/IP soedineniya. Dlya togo,
-   chtoby drugie mashiny smogli podklyuchit'sya k baze vy dolzhny
-   izmenit' listen_addresses v postgresql.conf, razreshit'
-   host-avtorizaciya v fajle $PGDATA/pg_hba.conf i perestartovat' server
-   SUBD.
-   
-  3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya proizvoditel'nosti?
-  
-   Suschestvuet tri glavnyh oblasti, kotorye potencial'no mogut
-   uvelichit' proizvoditel'nost':
-   
-   Izmenenie zaprosa
-          `Eto oznachaet modifikaciyu zaprosov dlya polucheniya luchshej
-          proizvoditel'nosti:
-          
-          + Sozdanie indeksov, vklyuchaya indeksy vyrazhenij i
-            chastichnye indeksy
-          + Ispol'zovanie COPY vmesto mnozhestva INSERT
-          + Gruppirovka neskol'kih operatorov v edinuyu tranzakciyu dlya
-            umen'sheniya nagruzki pri vypolnenii zaversheniya tranzakcii
-          + Ispol'zovanie CLUSTER, kogda iz indeksa beriotsya mnozhestvo
-            strok
-          + Ispol'zovanie LIMIT dlya togo, chtoby vozvraschalas' tol'ko
-            chast' vyvoda ot zaprosa
-          + Ispol'zovanie Podgotovlennyh (Prepared) zaprosov
-          + Ispol'zovanie ANALYZE dlya obsluzhivaniya statistiki
-            optimizatora
-          + Regulyarnoe ispol'zovanie VACUUM ili pg_autovacuum
-          + Udalenie indeksov vo vremya bol'shih izmenenij dannyh
-            
-   Nastrojka servera
-          Nekotorye ustanovki v postgresql.conf vliyayut na
-          proizvoditel'nost'. Podrobnyj polnyj spisok ustanovok sm. v
-          Administration Guide/Server Run-time Environment/Run-time
-          Configuration, a kommentarii sm. v
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
-          nf_e.html i
-          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-          
-   Vybor "zheleza" - apparatnogo obespecheniya
-          Vliyanie "zheleza" na proizvoditel'nost' podrobno opisano v
-          http://www.powerpostgresql.com/PerfList/ i
-          http://momjian.us/main/writings/pgsql/hw_performance/index.html
-          .
-          
-  3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
-  
-   Est' mnozhestvo ustanovok v nastrojkah servera, nachinayuschihsya na
-   log_* na
-   http://www.postgresql.org/docs/current/interactive/runtime-config-logg
-   ing.html, pozvolyayuschih protokolirovat' zaprosy i statistiku raboty
-   processa, kotoraya ochen' polezna dlya otladki i izmereniya
-   proizvoditel'nosti.
-   
-  3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
-  pytayus' podklyuchit'sya k baze?
-  
-   Vy dostigli ustanovlennogo po umolchaniyu ogranicheniya v 100 sessij
-   podklyucheniya k baze dannyh. Vam neobhodimo uvelichit' limit na
-   kolichestvo konkurentnyh backend processov dlya vashego servera BD,
-   izmeniv znachenie max_connections v fajle postgresql.conf i
-   perestartovat' server BD.
-   
-  3.6) Kak vypolnit' obnovlenie PostgreSQL?
-  
-   Sm. informaciyu ob obnovlenii v
-   http://www.postgresql.org/support/versioning i special'nye instrukcii
-   v
-   http://www.postgresql.org/docs/current/static/install-upgrading.html.
-   
-  3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
-  
-   Poskol'ku "zhelezo" personal'nyh komp'yuterov yavlyaetsya naibolee
-   sovmestimym, lyudi sklonny verit', chto takoe "zhelezo" imeet
-   odinakovoe kachestvo. `Eto ne tak. Pamyat' ECC, SCSI i kachestvennye
-   materinskie platy yavlyayutsya bolee nadiozhnymi i imeyut bolee
-   luchshuyu proizvoditel'nost', chem menee dorogoe "zhelezo". PostgreSQL
-   budet rabotat' na lyubom "zheleze", no esli dlya vas vazhny
-   nadiozhnost' i proizvoditel'nost', to s vashej storony budet mudro
-   postavit' sootvetstvuyuschee "zhelezo". Obsudit' raznoe "zhelezo"
-   mozhno v nashih spiskah rassylki.
-     _________________________________________________________________
-   
-                           Voprosy `ekspluatacii
-                                      
-  4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
-  Proizvol'noj stroki?
-  
-   Dlya polucheniya tol'ko neskol'kih strok, esli vy znaete ih
-   kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT.
-   Esli est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to
-   vozmozhno, chto ves' zapros vypolnen i ne budet. Esli vy ne znaete
-   kolichestva neobhodimyh strok na moment vypolneniya SELECT,
-   ispol'zujte kursor i FETCH.
-   
-   To SELECT a random row, use:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
-
-  4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
-  suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
-  polucheniya `etoj informacii?
-  
-   CHtoby prosmatrivat' tablicy v psql, ispol'zujte komandu \dt. Polnyj
-   spisok komand v psql vy mozhete poluchit', ispol'zuya \?. Krome togo,
-   vy mozhete posmotret' ishodnyj kod psql v fajle
-   pgsql/src/bin/psql/describe.c. On soderzhit komandy SQL kotorye
-   generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
-   kosoj cherty. Vy takzhe mozhete zapustit' psql s opciej -E tak, chtoby
-   `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
-   vypolneniya zadannyh vami komand. PostgreSQL takzhe predostavlyaet SQL
-   sovmestimyj s INFORMATION SCHEMA interfejs, s pomosch'yu kotorogo, vy
-   mozhete sformirovat' zapros na poluchenie informacii o baze dannyh.
-   
-   Takzhe suschestvuyut sistemnye tablicy, nachinayuschiesya s pg_.
-   
-   Ispol'zujte psql -l dlya polucheniya spiska vseh baz dannyh.
-   
-   Takzhe posmotrite fajl pgsql/src/tutorial/syscat.source. On pokazyvaet
-   mnogie iz operatorov SELECT neobhodimyh dlya polucheniya informacii iz
-   sistemnyh tablic bazy dannyh.
-   
-  4.3) Kak izmenit' tip dannyh kolonki?
-  
-   V 8.0 i bolee pozdnih versiyah, izmenenie tipa kolonki vypolnyaetsya
-   ochen' legko cherez ALTER TABLE ALTER COLUMN TYPE.
-   
-   V bolee rannih versiyah sdelajte tak:
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-
-  4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy dannyh?
-  
-   Suschestvuyut sleduyuschie ogranicheniya:
-   
-   Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na 32 TB)
-   Maksimal'nyj razmer tablicy? 32 TB
-   Maksimal'nyj razmer stroki? 400 Gb
-   Maksimal'nyj razmer polya? 1 GB
-   Maksimal'noe kolichestvo strok v tablice? neogranicheno
-   Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot
-   tipa
-   Maksimal'noe kolichestvo indeksov v tablice? neogranicheno
-   
-   Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
-   dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
-   znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
-   postradat' proizvoditel'nost'.
-   
-   Maksimal'nyj razmer tablicy v 32 TB ne trebuet chtoby operacionnaya
-   sistema podderzhivala fajly bol'shih razmerov. Bol'shie tablicy
-   hranyatsya kak mnozhestvo fajlov razmerom v 1 GB, tak chto
-   ogranicheniya, kotorye nakladyvaet fajlovaya sistema ne vazhny.
-   
-   Maksimal'nyj razmer tablicy i maksimal'noe kolichestvo kolonok mogut
-   byt' uvelicheny v chetyre raza, esli razmer bloka po umolchaniyu budet
-   uvelichen do 32k.
-   
-   Suschestvuet ogranichenie, po kotoromu indeksy ne mogut sozdavat'sya
-   dlya kolonok dlinnee chem 2,000 simvolov. K schast'yu takie indeksy
-   vryad li dejstvitel'no komu-to nuzhny. Unikal'nost' garantiruetsya
-   nailuchim obrazom, s pomosch'yu funkcional'nogo indeksa iz h`esha MD5
-   dlinnoj kolonki, a polnotekstovoe indeksirovanie pozvolyaet iskat'
-   slova vnutri kolonki.
-   
-  4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
-  dannyh iz obychnogo tekstovogo fajla?
-  
-   SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
-   bol'she dlya sohraneniya dannyh iz prostogo tekstovogo fajla.
-   
-   V kachestve primera, rassmotrim fajl v 100,000 strok v kazhdoj, iz
-   kotoryh celoe chislo i tekstovoe opisanie. Pri `etom dlina teksta, v
-   srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
-   Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
-   priblizitel'no 5.2 MB iz kotoryh:
-    24 bajt: na kazhdyj zagolovok stroki v tablice (priblizitel'no)
-  + 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
-  +  4 bajta: ukazatel' na stranice dlya vsej tablichnoj stroki
-   ----------------------------------------
-    56 bajt na stroku v tablice
-
-   Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
-
-   8192 bajt na stranicu
-   ---------------------   =  158 strok v tablice na stranicu BD (okruglionno)
-     52 bajt na stroku v tablice
-
-     100000 strok dannyh
-   ----------------------- =  633 stranic v BD (okruglionno)
-   158 strok v tablice na stranicu
-
-   633 stranic BD * 8192 bajt na stranicu = 5,185,536 bajt (5.2 MB)
-
-   Indeksy ne trebuyut tak mnogo, no poskol'ku oni sozdayutsya dlya
-   bol'shogo kolichestva dannyh, oni takzhe mogut byt' veliki.
-   
-   Znacheniya NULL hranyatsya kak bitovye karty i po`etomu oni zanimayut
-   ochen' malo mesta.
-   
-  4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut moi
-  indeksy?
-  
-   Indeksy ne ispol'zuyutsya dlya kazhdogo zaprosa. Oni ispol'zuyutsya
-   tol'ko esli tablica bol'she minimal'nogo razmera i zapros vybiraet
-   tol'ko malen'kij procent strok v tablice. Tak ustroeno, potomu chto
-   dostup k disku s primeneniem randomizacii pri skanirovanii indeksov
-   mozhet byt' medlennee, chem prostoe chtenie tablicy ili ee
-   posledovatel'noe skanirovanie.
-   
-   CHtoby opredelit' neobhodimost' ispol'zovaniya indeksa dlya kakoj-libo
-   tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
-   statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
-   ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
-   strok v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
-   prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
-   optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya. Pri
-   izmenenii soderzhimogo tablicy dolzhen periodicheski vypolnyatsya sbor
-   statistiki.
-   
-   Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
-   svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
-   sortirovkoj obychno bystree, chem poisk po indeksam v bol'shoj
-   tablice. Odnako, ORDER BY chasto kombiniruetsya s LIMIT i v `etom
-   sluchae indeks budet ispol'zovat'sya, poskol'ku pri vypolnenii budet
-   vozvraschat'sya nebol'shaya chast' tablicy.
-   
-   Esli vam kazhetsya, chto optimizator nekorrektno vybiraet
-   posledovatel'nyj perebor, ispol'zujte SET enable_seqscan TO 'off' i
-   zapustite zapros snova, chtoby uvidet', dejstvitel'no li skanirovanie
-   indeksov bystree.
-   
-   Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~,
-   indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah:
-     * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki,
-       t.e.:
-          + LIKE shablony ne dolzhny nachinat'sya s %..
-          + ~ shablony regulyarnyh vyrazhenij dolzhna nachinat'sya na ^.
-     * Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
-       [a-e].
-     * Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
-       indeksy. Vmesto nego, ispol'zujte indeksy vyrazhenij, kotorye
-       opisyvayutsya v sekcii 4.8.
-     * Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C,
-       potomu chto ne suschestvuet vozmozhnosti uznat' sleduyuschij
-       naibol'shij simvol dlya ne-C lokali. Vy mozhete dlya takih
-       sluchaev sozdat' special'nyj indeks text_pattern_ops kotoryj
-       rabotaet tol'ko dlya LIKE indeksirovaniya. Dlya poiska slov takzhe
-       mozhno ispol'zovat' polnotekstovyj indeks.
-       
-  4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
-  
-   Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
-   
-  4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk nezavisimyj ot
-  registra bukv poisk regulyarnogo vyrazheniya? Kak mne ispol'zovat' indeks
-  dlya poiska nezavisimogo ot registra bukv?
-  
-   Operator ~ proizvodit poisk regulyarnogo vyrazheniya, a operator ~*
-   proizvodit nezavisimyj ot registra bukv poisk regulyarnogo
-   vyrazheniya. Nezavisimyj ot registra variant LIKE nazyvaetsya ILIKE.
-   
-   Nezavisimoe ot registra sravnenie obychno vyrazhaetsya tak:
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
-
-   `Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
-   esli vy sozdadite indeks vyrazheniya, on budet ispol'zovan:
-    CREATE INDEX tabindex ON tab (lower(col));
-
-   Esli vysheukazannyj indeks sozdaiotsya kak UNIQUE, to kolonka, dlya
-   kotoroj on sozdaiotsya mozhet hranit' simvoly i v verhnem, i v nizhnem
-   registre, indes ne mozhet imet' identichnyh znachenij, kotorye
-   otlichayutsya tol'ko registrom. CHtoby v kolonke mozhno bylo hranit'
-   simvoly tol'ko v opredelionnom registre, ispol'zujte ogranichenie
-   CHECK ili proverku cherez trigger.
-   
-  4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose ravno
-  NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat' polya NULL ili
-  net?
-  
-   Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL, kak zdes':
-   SELECT *
-   FROM tab
-   WHERE col IS NULL;
-
-   CHtoby soedinit' s vozmozhnymi znacheniyami NULL, ispol'zujte
-   COALESCE() kak zdes':
-   SELECT COALESCE(col1, '') || COALESCE(col2, '')
-   FROM tab
-
-   CHtoby otsortirovat' dannye po znacheniyu ispol'zujte modifikatory IS
-   NULL i IS NOT NULL v vyrazhenii ORDER BY. Kogda oni budut generirovat'
-   znacheniya istina, to pri sortirovke oni budut vyshe, chem znacheniya
-   lozh', tak chto zapisi s NULL budut v otsortirovannom spiske sverhu:
-   SELECT *
-   FROM tab
-   ORDER BY (col IS NOT NULL);
-
-  4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
-  
-   Tip Vnutrennee imya Zamechaniya
-   VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolneniya
-   CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
-   TEXT text net zadavaemogo verhnego ogranicheniya ili dliny
-   BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zovat'
-   null-bajt bez opaski)
-   "char" char odin simvol
-   
-   Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
-   i v nekotoryh soobscheniyah ob oshibkah.
-   
-   Pervye chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye
-   chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut
-   dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she,
-   chem oboznachennyj razmer. Odnako, dlinnye znacheniya takzhe
-   szhimayutsya, tak chto zanimaemoe diskovoe prostranstvo mozhet takzhe
-   byt' i men'she, chem ozhidalos'.
-   VARCHAR(n) - `eto luchshee reshenie, kogda nuzhno hranit' stroki
-   peremennoj dliny, ne prevyshayuschie opredelennogo razmera. TEXT -
-   `eto luchshee reshenie dlya strok neogranichennoj dliny, s maksimal'no
-   dopustimoj dlinoj v 1 gigabajt.
-   
-   CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno
-   imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj
-   dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh
-   sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh,
-   znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
-   zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
-   
-  4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
-  
-   PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
-   posledovatel'nost'. Naprimer:
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
-
-   avtomaticheski transliruetsya v:
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person (
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-    );
-
-   Avtomaticheski sozdannaya posledovatel'nost' imeet imya vida
-   <tablica>_<kolonka_serial>_seq, gde tablica i kolonka_serial - `eto
-   sootvetstvenno imena tablicy i kolonki s tipom SERIAL. Smotrite
-   podrobnosti o posledovatel'nostyah na stranice rukovodstva
-   posvyaschennoj create_sequence.
-   
-  4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
-  
-   Prostejshij sposob poluchit' naznachennoe znachenie SERIAL `eto
-   ispol'zovat' RETURNING. Ispol'zuya dlya primera tablicu v 4.11.1, `eto
-   mozhet vyglyadet' tak:
-    INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
-   Vy takzhe mozhete vyzvat' nextval() i ispol'zovat' `eto znachenie v
-   INSERT ili vyzvat' currval() posle INSERT.
-   
-  4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
-  nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
-  
-   Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashej
-   sessiej, a ne drugimi sessiyami.
-   
-  4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova pri
-  otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke, gde
-  ya ispol'zuyu posledovatel'nost'/SERIAL?
-  
-   Dlya realizacii konkuretnosti, znacheniya posledovatel'nostej, pri
-   neobhodimosti vydayutsya vo vremya zapuska tranzakcij i ne
-   blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
-   razryvy v numeracii pri otmene tranzakcij.
-   
-  4.12) CHto takoe OID? CHto takoe CTID?
-  
-   Esli tablica sozdana s WITH OIDS, to kazhdaya stroka poluchaet
-   unikal'nyj indentifikator OID. OID - `eto avtomaticheski naznachaemoe
-   unikal'noe 4-h bajtovoe celoe chislo, kotoroe unikal'no dlya vsej
-   ustanovlennoj SUBD. Odnako, posle togo kak ego znachenie prevysit 4
-   milliarda, znacheniya OID nachinayut dublirovat'sya. PostgreSQL
-   ispol'zuet OID dlya svyazyvaniya svoih vnutrennih tablic.
-   
-   Dlya unikal'nogo znacheniya v strokah tablicy pol'zovatelya, luchshim
-   sposobom yavlyaetsya ispol'zovanie SERIAL vmesto OID, potomu chto
-   posledovatel'nosti SERIAL unikal'ny tol'ko vnutri tablicy i takim
-   obrazom men'she podverzheny perepolneniyu. Dlya hraneniya znachenij
-   8-mi bajtnoj posledovatel'nosti dostupen tip SERIAL8.
-   
-   CTID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej
-   s blochnymi i offset znacheniyami. CTID izmenyaetsya posle togo kak
-   stroki v tablice byli izmeneny ili peregruzheny.
-   
-   TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
-   fizicheskie zapisi.
-   
-  4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
-  AllocSetAlloc()"?
-  
-   Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
-   vashe yadro imeet malen'kij limit na opredelennye resursy. Popytajtes'
-   pered zapuskom servera BD vypolnit' sleduyuschie komandy:
-    ulimit -d 262144
-    limit datasize 256m
-
-   V zavisimosti ot komandnogo interpretatora shell, tol'ko odna iz
-   dannyh komand vypolnitsya uspeshno, no ona pozvolit vam ustanovit'
-   bol'shij segment dannyh processa i vozmozhno reshit problemu. `Eta
-   komanda izmenyaet parametry tekuschego processa i vseh ego potomkov,
-   sozdannyh posle eio zapuska. Esli u vas voznikla problema s SQL
-   klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
-   dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
-   
-  4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
-  
-   Iz psql, naberite SELECT version();
-   
-  4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
-  tekuschee vremya?
-  
-   Ispol'zujte CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
-  4.16) Kak mne vypolnit' vneshnee svyazyvanie?
-  
-   PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
-   sintaksis SQL. Vot dva primera:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-   ili
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-   `Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
-   vozvraschayut lyubye nesvyazannye stroki v t1 (kotorye ne sovpadayut s
-   t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye stroki t2. FULL
-   svyazyvanie dolzhno vozvratit' sovpavshie stroki plyus vse
-   nesvyazannye stroki iz t1 i t2. Slovo OUTER yavlyaetsya
-   neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
-   Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
-   
-  4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
-  
-   Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
-   tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
-   specifichnye dlya bazy dannyh, neponyatno dazhe, kak dolzhen sebya
-   vesti takoj mezhbazovyj zapros.
-   
-   contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
-   funkcij. Razumeetsya, klient mozhet odnovremenno takzhe ustanavlivat'
-   soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
-   informaciyu iz nih.
-   
-  4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
-  
-   Vy mozhete legko ispol'zovat' funkcii, vozvraschayuschie spisok,
-   http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_
-   PL/pgSQL_functions.
-   
-  4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne suschestvuet",
-  kogda obraschayuts' k vremennym tablicam v funkciyah PL/PgSQL?
-  
-   V PostgreSQL do versii 8.3, PL/PgSQL k`eshiruet scenarii funkcii i
-   odin iz negativnyh `effektov `etogo sostoit v tom, chto esli funkciya
-   PL/PgSQL obraschaetsya k vremennoj tablice i `eta tablica pozdnee
-   udalyaetsya i peresozdaetsya, a funkciya zatem vyzyvaetsya snova, to
-   ee vyzov privedet k oshibke, potomu chto sk`eshirovannoe soderzhimoe
-   funkcii soderzhit ukazatel' na staruyu vremennuyu tablicu. CHtoby
-   reshit' `etu problemu, ispol'zujte EXECUTE dlya dostupa k vremennym
-   tablicam v PL/PgSQL. Ispol'zovanie `etogo operatora zastavit zapros
-   peregenerirovat'sya kazhdyj raz.
-   
-   V PostgreSQL 8.3 i pozdnee, `etoj problemy net.
-   
-  4.20) Kakie est' resheniya dlya replikacii?
-  
-   Hotya "replikaciya" -- `eto edinyj termin, est' neskol'ko raznyh
-   tehnologij dlya vypolneniya replikacij s raznymi osobennostyami dlya
-   kazhdoj.
-   
-   Replikaciya Master/slave pozvolyaet imet' odin glavnyj (master) server
-   dlya vypolneniya zaprosov chteniya/zapisi, v to vremya kak
-   podchinionnye (slave) servera mogut proizvodit' tol'ko zaprosy
-   chteniya/SELECT. Naibolee populyarnym resheniem dlya replikacii
-   master-slave v PostgreSQL yavlyaetsya Slony-I.
-   
-   Replikaciya Multi-master pozvolyaet vypolnyat' zaprosy chteniya/zapisi
-   na neskol'kih, repliciruemyh drug s drugom komp'yuetrah. `Eta
-   osobennost' takzhe privodit k potere proizvoditel'nosti, potomu chto
-   neobhodima sinhronizaciya izmenenij mezhdu neskol'kimi serverami.
-   Naibolee populyarnym resheniem dlya takoj replikacii v PostgreSQL
-   yavlyaetsya PGcluster.
-   
-  4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom zaprose?
-  Pochemu ne sohranyayutsya zaglavnye bukvy?
-  
-   Naibolee chasto imena neraspoznayutsya iz-za ispol'zovaniya dvojnyh
-   kavychek v imeni tablicy ili kolonki pri sozdanii tablicy. Pri
-   ispol'zovanii dvojnyh kavychek, imya tablicy i kolonki (kotorye
-   nazyvayut identifikatorami) sohranyayutsya v registro-zavisimom vide;
-   `eto oznachaet, chto vy dolzhny ispol'zovat' dvojnye kavychki, kogda
-   ukazyvaete `eti imena v zaprose. Nekotorye interfejsy, takie kak
-   pgAdmin, vo vremya sozdaniya tablicy dobavlyayut dvojnye kavychki
-   avtomaticheski. Takim obrazom, chtoby identifikatory raspoznavalis' vy
-   dolzhny sledovat' odnomu iz sleduyuschih pravil:
-     * Izbegat' ispol'zovaniya dvojnyh kavychek pri sozdanii tablic
-     * Ispol'zovat' v identifikatorah tol'ko simvoly nizhnego registra
-     * Ispol'zovat' dvojnye kavychki dlya identifikatorov v zaprosah
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish
deleted file mode 100644 (file)
index d1c886d..0000000
+++ /dev/null
@@ -1,1192 +0,0 @@
-
-                  PostgreSQL için Sýkça Sorulan Sorular (SSS)
-                                       
-   Son güncelleme : 15 Kasým 2004 Pazartesi - 15:03:23
-   
-   Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-   
-   Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
-   Nicolai Tufar (ntufar@tdmsoft.com)
-   Volkan YAZICI (volkany@phreaker.net)
-   
-   Bu belgenin en güncel hali,
-   http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
-   http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
-   görülebilir.
-   
-   Platforma özel sorularýnýz, http://www.PostgreSQL.org/docs/index.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ýþý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 ulaþabilirim?
-   1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
-   1.10) Nasýl SQL öðrenebilirim?
-   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, diðer VTYS(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 için 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?
-   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'ý baþlattýðýmda Bad System Call ya da core dumped
-   mesajý alýyorum. Neden?
-   3.3) Postmaster'ý baþlattýðýmda, IpcMemoryCreate hatasý alýyorum.
-   Neden?
-   3.4) Postmaster'ý, 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. Neden?
-   3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
-   3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload
-   iþlemi gerçekleþtirmek zorundayým?
-   3.11) Nasýl bir donaným kullanmalýyým?br>
-   
-                             Ýþletimsel Sorular
-                                      
-   4.1) Binary cursor ve normal cursor arasýndaki fark nedýr?
-   4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
-   4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini
-   nasýl alabilirim?
-   4.4) Bir tablodan bir kolonu nasýl kaldýrabilirim?
-   4.5) Bir satýr, tablo ve veritabaný için 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 index'lerin tanýmlandýðýný nasýl
-   görebilirim?
-   4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
-   4.9) Query-optimizer'ýn sorgularýmý nasýl deðerlendirdiðini, 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ý nasýl yapabilirim? Bu büyük/küçük harfe
-   duyarlý aramalar için index'i nasýl 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 subquery'lerim ç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 þ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ðiþiklik 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þtirilmiþ
-   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 (scrappy@PostgreSQL.org). (Bu takýma nasýl
-   katýlacagýnýzý öðrenmek 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ýþýnda bir kaç kisi de uyarlama, hata ayýklama ve kodun
-   geliþtirilmesi için çalýsmýþtý. PostgreSQL'in türediði orijinal
-   Postgres kodu, lisans, lisansüstü ve akademisyenler tarafýndan,
-   Professor Michael Stonebraker (University of California, Berkeley)
-   koordinatörlügünde yazýlmýþtý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-2009, 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ýþý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?
-    
-   PostgreSQL 8.0 sürümü ile , PostgreSQL artýk Win2000, WinXP ve Win2003
-   gibi Microsoft Windows NT tabanlý iþletim sistemlerinde doðal olarak
-   çalýþmaya baþlamýþtýr. Paketlenmiþ bir kurulum programý,
-   http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
-   
-   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
-   adresidir. Yansýlar için, ana web sayfamýza bakabilirsiniz.
-   
-    1.6) Nereden destek alabilirim?
-    
-   Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
-   konusundaki tartýþmalara açýktýr. Üye olmak için, aþaðýdaki satýrlarý
-   e-postanýzýn body kýsmýna (konu kýsmýna deðil) yazýp,
-   pgsql-general-request@PostgreSQL.org adresine gönderin:
-subscribe
-end
-
-   Ayný zamanda, bir digest listesi bulunmaktadýr. Bu listeye üye olmak
-   için, pgsql-general-digest-request@PostgreSQL.org 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 ulaþtýðýnda üyelere
-   gönderilmektedir.
-   
-   Bug'lar için bir e-posta listesi bulunmaktadýr. Bu listeye üye olmak
-   için, pgsql-bugs-request@PostgreSQL.org adresine, body kýsmýnda
-subscribe
-end
-
-   yazan bir e-posta atmanýz yeterli olacaktýr.
-   
-   Ayný zamanda, geliþtiriciler için tartýþma listesi bulunmaktadýr. Bu
-   listeye üye olmak için, pgsql-hackers-request@PostgreSQL.org adresine,
-   body kýsmýnda
-subscribe
-end
-
-   yazan bir e-posta atmanýz yeterli olacaktýr.
-   
-   Bunun dýþý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 IRC 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 ulaþbilirsiniz.
-   
-    1.7) En son sürüm nedir?
-    
-   PostgreSQL'in son sürümü 7.4.6'dýr.
-   
-   Her 6-8 ayda ana sürüm çýkarýlmasý planlanmaktadýr.
-   
-    1.8) Hangi belgelere ulaþabilirim?
-    
-   Daðýtýmýn içinde, kitapçýklar, kitapçýk sayfalarý ve bazý küçük
-   örnekler verilmektedir. /doc dizinine bakýnýz. Ayrýca, 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,
-   aggregate'ler, vb. ile ilgili güzel komutlarý vardýr.
-   
-   Web sitemiz daha fazla belgeyi içermektedir.
-   
-    1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaþabilirim?
-    
-   PostgreSQL SQL-92 uyumluluðu içindedir, 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". Bazýlarý ise "The
-   Complete Reference SQL, Groff et al., McGraw-Hill" kitabýný
-   önermektedirler.
-   
-    1.11) PostgreSQL 2000 yýlýna uyumlu mudur?
-    
-   Evet.
-   
-    1.12) Geliþtirme takýmýna nasýl katýlabilirim?
-    
-   Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
-   daðýtýmýn içindeki PostgreSQL Developer belgesini okuyun. Ardýndan,
-   pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da,
-   pgsql-pacthes listesine yüksek kalitede yamalar gönderin.
-   
-   PostgreSQL CVS arþivine eriþim izni olan, 10 kadar geliþtirici
-   bulunmaktadýr. Hepsi defalarca, diðer kiþilerin yaptýðýndan çok daha
-   yüksek-kaliteli yamalar göndermiþlerdir. Ayrýca biz de bu
-   geliþtiricilerin ekledikleri yamalarýn yüksek kalitede olduðuna
-   güveniyoruz.
-   
-    1.13) Bir hata raporunu nasýl gönderebilirim?
-    
-   PostgreSQL BugTool sayfasýna gidiniz. O sayfada bir bug bildirmek için
-   neleri yapmanýz gerektiði anlatýlmýþtýr.
-   
-   Ayrýca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
-   PostgreSQL sürümü ya da yamasý olup olmadýðýni kontrol ediniz.
-   
-    1.14) PostgreSQL, diger DBMS'lerle nasýl karþýlastýrýlabilir?
-    
-   Bir yazýlýmýn gücünü ölçmek için çeþitli yollar vardýr: Yazýlýmýn
-   özellikleri, baþarýmý, güvenilirliði, desteði ve ücreti.
-   
-   Özellikler:
-   
-   PostgreSQL mevcut büyük ticari veritabanlarýnýn, transaction,
-   subselect, trigger, view, foreign key referential integrity ve
-   sophisticated locking gibi (user-defined types), rules, inheritance ve
-   lock cakýþmalarýný düþürmek için multi-version uyumluluk özellikleri
-   bulunmaktadýr.
-   
-   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 iþlemlerinde, 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ýþ durumdayýz. PostgreSQL'i MySQL ile karþýlaþtýran þu web
-   sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
-   
-   Güvenilirlik:
-   
-   DBMS'lerin güvenilir olmasý gerketiði, yoksa deðerleri olmayacaðýný
-   düþünüyoruz. Çok iyi test edilmiþ, dengeli çalýsan minimum sayýda hata
-   içeren kod sunmaya çalýþý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 sunduðumuzu görebilirsiniz. Bu
-   alanda, diðer veritabaný yazýlýmlarýna üstünlüðümüz olduðuna
-   inanmaktayýz.
-   
-   Destek:
-   
-   E-posta listemiz, oluþan herhangi bir sorunu çözebilecek büyük sayýda
-   kullanýcý ve geliþtirici 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 eriþebilme,
-   PostgreSQL desteðini, diðer DBMS'lere 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 sahiptir. Bunun
-   için, yýllar boyu çalýþýp bu altyapýyý oluþturup yöneten Marc
-   Fournier'e teþekkü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 deðildir. Ýþlerin yürümesi için çeþitli yýlýk
-   ve anlýk harcamalarýmýz olmaktadýr. Eðer siz ya da þirketinizin bu
-   çabamýza baðýþta bulunabilecek parasý varsa, lütfen
-   http://store.pgsql.com/ adresine gidiniz ve baðýþta, hibede bulununuz.
-   
-   Web sayfasýnýn 'PostgreSQL Inc.' den bahsetmesine raðmen, "katkýda
-   bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
-   desteklemek içindir ve belirli bir þirketin para kaynaðý deðildir.
-   isterseniz, baðlantý adresine bir çek gönderebilirsiniz.
-     _________________________________________________________________
-   
-                         Kullanýcý/Ýstemci 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
-   postgres95@openlink.co.uk 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 giriþ seviyesinde bilgi bulunmaktadýr.
-   
-   Web ile bütünleþme için, PHP () mükemmel bir arabirim sunar.
-   
-   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 baþka dizinlere nasýl
-    kurabilirim?
-    
-   configure betiðini çalýstýrýrken, --prefix seçeneðini 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 baþlattýðýmda, ýpcMemoryCreate hatasý alýyorum. Neden?
-    
-   Ya çekirdeðinizde shared memory desteðiniz düzgünce
-   yapýlandýrýlmamýþtýr, ya da çekirdeðinizdeki mevcut shared memory
-   miktarýný büyütmeniz gerekecektir. Gereksinim duyacaðýnýz miktar,
-   mimarinize ve postmaster için ayarladýgýnýz tampon ile backend iþlemi
-   sayýsýna baðlýdýr. Tüm sistemler için, tamponlar ve iþlemlerde
-   öntanýmlý sayýlarla, ~ 1MB kadar yere gereksinmeniz olacaktýr.
-   PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve
-   semaphorelar hakkýndaki ayrýntýlý bilgi için bakabilirsiniz.
-   
-    3.4) postmaster'ý baþlattýðýmda, ýpcSemaphoreCreate hatasý alýyorum. Neden?
-    
-   Eðer hata, "ýpcSemaphoreCreate: semget failed (No space left on
-   device)" ise, çekirdeðiniz yeterli semaphore ile yapýlandýrýlmamýþ
-   demektir. Postgres, her bir potansiyel backend için bir semaphore
-   gereksinimi duyar. Geçici bir çözüm, postmasterý backend iþlemleri
-   için daha az miktarda sýnýrla baþlatmak olabilir. -N'i varsayýlan
-   deðer olan 32'den küçük bir deðerle baþlatýnýz. Daha kalýcý bir çözüm,
-   çekirdeðinizin SEMMNS ve SEMMNI parametrelerini yükseltmek olacaktýr.
-   
-   Çalýþmayan semaphore'lar aðýr veritabaný iþlemlerinde çökme
-   yaratabilirler.
-   
-   Eðer hata mesajýnýz baþka bir þey ise, çekirdeðinizde semaphore
-   desteðini yapýlandýrmamýþ olabilirsiniz. Shared memory ve
-   semaphore'lar hakkýndaki daha ayrýntýlý bilgi için PostgreSQL 7.3.2
-   Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
-   
-    3.5) Diger bilgisayarlarýn benim PostgreSQL veritabaný sunucuma
-    baðlantýlarýný nasýl kontrol edebilirim?
-    
-   Ön tanýmlý olarak, PostgreSQL sadece yerel makineden Unix domain
-   sockets kullanarak baðlaný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,
-   baðlantý yapamayacaklardýr.
-   
-    3.6) Veritabani motorunu daha iyi baþarým için nasýl ayarlayabilirim?
-    
-   Index'ler sorgularý hýzlandýrabilir. EXPLAIN komutu, PostgreSQL'in
-   sorgunuzu nasýl yorumladýðýný ve hangi index'leri kullandýðýný
-   görmenize izin verir.
-   
-   Eðer cok fazla INSERT iþlemi yapýyorsanýz, bunlarý büyük bir toplu
-   iþlem dosyasýkullanýp COPY komutu ile veritabanýna girmeyi deneyiniz.
-   Bu, tekil INSERT'lerden daha hýzlýdýr. Ýkinci olarak, BEGIN
-   WORK/COMMIT transaction bloðu içinde olmayan ifadeler kendi
-   transaction'larýndaymýþ gibi düþünülür. Çoklu ifadeleri tek bir
-   transaction bloðu içinde yapabilirsiniz. Bu, transaction overhead'ini
-   düþürecektir. Tek bir transaction bloðu içinde birden çok ifadeyi
-   çalýþtýrmayý deneyebilirsiniz. Bu da ayný þekilde, 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 diski flush etmesini
-   engelleyecektir.
-   
-   Ayný zamanda, postmaster'i -B seçeneði ile baþlatýp, backend iþlemleri
-   tarafýndan kullanýlan shared memory buffers sayýlarýný
-   arttýrabilirsiniz. Eðer 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 index'e 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'ý 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 postmaster'dan
-   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) Baðlanmaya çalýþýrken, neden "Sorry, too many clients" hatasýný
-    alýyorum?
-    
-   Postmaster'ýn 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'ý 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 yapýlacaksa ve
-   sýralama backend'in -s parametresinin izin verdiðinden daha fazla
-   alana gereksinim duyuyorsa, ekstra veriyi tutmak için geçici dosyalar
-   yaratýlýr.
-   
-   Geçici dosyalar, eðer sýralama sýrasýnda backend göçmezse otomatik
-   olarak silinecektir. Eðer çalýþan durumda bir backend'iniz yoksa,
-   pg_tempNNN.NN dosyalarýný silmeniz güvenlidir.
-   
-    3.10) PostgreSQL sürümlerini yükseltmek 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.
-   
-    3.11) Nasýl bir donaným kullanmalýyým?
-    
-   PC donanýmý tamamen uyumlu olduðu için, insanlar tüm PC donanýmlarýnýn
-   ayný kalitede olduðunu düþünürler. Oysa böyle deðildir. ECC RAM, SCSI
-   ve kaliteli anakartlar daha ucuz donanýmlara göre daha çok
-   güvenilirlerdir ve baþarýmlarý daha yüksektir. PostgreSQL hemen hemen
-   tüm donanýmda çalýþabilmektedir, ancak güvenilirlik ve baþarým önemli
-   ise donaným seçeneklerini çok iyi araþtýrmak gereklidir. E-posta
-   listelerimi donanýmlarla ilgili sorular ve de ticaret için
-   kullanýlabilir.
-     _________________________________________________________________
-   
-                             Ýþletimsel Sorular
-                                      
-    4.1) Binary cursor ve normal cursor arasýndaki fark nedir?
-    
-   DECLARE yardým sayfasýna bakýnýz.
-   
-    4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
-    
-   FETCH yardým sayfasýna bakýnýz, ya da SELECT ... LIMIT ... kullanýnýz.
-   
-   Ýlk birkaç satýrý almak isteseniz bile, tüm sorgu deðerlendirilmek
-   durumunda kalýnabilir. ORDER BY içeren bir sorgu düþünün. Eðer ORDER
-   BY iþe eþleþen bir index varsa, PostgreSQL istenen ilk birkaç satýrý
-   iþleyebilir, ya da tüm sorgu istenen satýrlar üretilene kadar
-   iþlenebilir.
-   
-    4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini
-    nasýl alabilirim?
-    
-   pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu
-   okuyabilirsiniz. Bu kod, psql'in \ ile baþlayan komutlarýnýn çýktýsýný
-   olusturan SQL komutlarýný 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ý için en fazla büyüklük nedir?
-    
-   Sýnýrlar:
-   
-   Veritabaný için en fazla büyüklük nedir?
-   Sýnýrsýz (32 TB'lýk veritabaný bulunmaktadýr)
-   Bir tablo için en fazla büyüklük nedir?
-   32 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 aslýnda 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 yaklaþtýkça, ya da deðerler çok büyük olduðunda düþebilir.
-   
-   Bir tablo için büyüklük sýnýrý olan 32 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 baþlýðý (yaklaþýk)
-+ 24 byte: Bir tamsayý (int) alaný ve bir metin (text) alaný
-+  4 byte: Sayfada tuple a pointer
-----------------------------------------
-  64 byte -> kayýt baþýna
-
-   PostgreSQL'de veri sayfasý (data page) büyüklüðü 8192 byte (8k)dýr,
-   dolayýsýyla:
-8192 byte -> page baþýna
--------------------------  =  Her bir veritabaný page'ý baþýna 128 satýr (yaklaþýk)
-  Satýr baþý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)
-   
-   Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiþ 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 index'lerin tanýmlandýðýný nasýl
-    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 dosyalarýndan bilgiyi almak için gereksinim
-   duyulan bir çok SELECT'leri gösterir.
-   
-    4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
-    
-   Indexler her sorgu tarafýndan otomatik olarak kullanýlmazlar. Indexler
-   eðer bir tablonun büyüklüðü minimum bir büyüklükten fazla ise ve sorgu
-   tablodaki satýrlarýn sadece küçük bir yüzdesini seçiyorsa kullanýlýr.
-   Bunun nedeni, index eriþiminin neden olduðu raslansal disk eriþimi nin
-   diskin ya da tablonun sýralý okunmasýndan daha yavas olabilmesidir.
-   
-   Bir index'in kullanýlýp kullanýlmayacaðýný belirlemek için, PostgreSQL
-   tablo hakkýndaki istatistiklere gereksinmesi vardýr. Bu istatistikler,
-   VACUUM ANALYZE kullanýlarak toplanýrlar. Optimizer, istatistikleri
-   kullanarak, tabloda kaç satýr olduðunu ve bilir ve indexin kullanýlýp
-   kullanýlmayacaðýna daha iyi karar verir. Istatistikler, ayný zamanda
-   en uygun join sýrasýný ve yöntemini belirlemekte çok önemlidir.
-   Ýstatistik toplanmasý, tablo içerikleri deðiþtikçe periyodik olarak
-   yapýlmalýdýr.
-   
-   Indexler normalde ORDER BY sorgularý ya da join iþlemlerini
-   gerçekleþtirmek için kullanýlmazlar. Açýk bir sýralamayý takip eden
-   sýralý bir arama (sequential scan), büyük bir tabloda index aramasý
-   yapmaktan genelde daha hýzlýdýr.
-   Ancak, ORDER BY ile birleþmiþ LIMIT genellikle bir index
-   kullanacaktýr; çünkü tablonun sadece belirli bir miktarý
-   döndürülecektir. Aslýnda, MAX() ve MIN() fonksiyonlarýnýn index
-   kullanmamalarýndan dolayý, bu gibi deðerleri ORDER BY ve LIMIT
-   kullanarak da almak olasýdýr:
-    SELECT col
-    FROM tab
-    ORDER BY col [ DESC ]
-    LIMIT 1;
-
-   Eðer optimizer'ýn sýralý arama yapmasýnýn yanlýþ olduðuna
-   inanýyorsanýz, SET enable_seqscan TO 'off' kullanýn ve index kullanan
-   aramalarýn hala daha hýzlý olup olmadýðýný görün.
-   
-   LIKE ya da ~ gibi operatörler kullanýyorsanýz, index'ler sadece
-   aþaðýdaki koþullarda kullanýlabilir:
-     * Arama dizininin baþý, dizinin baþý ile baðlanmalýdýr. Yani,
-          + LIKE sorgularý % ile baþlamamalýdýr.
-          + 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 index'lerden
-       yararlanmazlar. Onun yerine, bölüm 4.12'de anlatýlan fonksiyonel
-       index'leri kullanabilirsiniz.
-     * initdb sýrasýnda öntanýmlý C locale'i kullanýlmalýdýr.
-       
-    4.9) query-optimizer'ýn 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?
-    
-   R-tree index, uzaysal (spatial) verileri indexlemek için kullanýlýr.
-   Bir hash index, dizi aramalarýnda (range search) kullanýlamaz. B-tree
-   index dizi aramalarýnda sadece tek boyutlu çalýþmaktadýr. R-tree, çok
-   boyutlu veriyi destekler. Örneðin, eðer bir R-tree index point veri
-   tipi üzerinde inþa edililebilirse, sistem "select all points within a
-   bounding rectangle" gibi sorgulara daha verimli yanýtlar verecektir.
-   
-   Orijinal R-tree tasarýmýný açýklayan belge:
-   
-   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 belgeyi, Stonebraker'ýn "Readings in Database Systems" kitabýnda
-   bulabilirsiniz.
-   
-   Gömülü R-tree indexleri poligon ve boxlarý kullanabilir. Teorik
-   olarak, R-tree indexlerin özelliklerini geniþletmek bir miktar çaba
-   gerektirir ve bunun nasýl yapýlacaðýna dair bir belgemiz henüz
-   bulunmamaktadýr.
-   
-    4.11) Genetic Query Optimizer nedir?
-    
-   GEQO modülü, Genetic Algorithm(GA) kullanýlarak tablolar
-   birleþtirildiðinde sorgu optimizasyonunu hýzlandýrýr.
-   
-    4.12) Düzenli ifade (Regular Expression) aramalarýný ve büyük/küçük harfe
-    duyarsýz aramalarý nasýl yapabilirim? Bu büyük(küçük harfe duyarlý aramalar
-    için index'i nasýl 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'ýn
-   büyük/küçük harfe duyarsýz olan biçimi 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 index yaratmayacaktýr. Ancak eðer fonksiyonel bir
-   index yaratýrsanýz; o kullanýlacaktýr:
-CREATE INDEX tabindex on tab (lower(col));
-
-    4.13) Bir sorguda, bir alanin "NULL" olduðunu nasýl 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 uzunluða 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
-   mesajlarýný incelerken göreceksiniz.
-   
-   Ýlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
-   uzunluktur; devamý da veridir.) Dolayýsýyla, 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üçük olabilir. VARCHAR(n) büyüklüðü artabilen ama en büyük uzunluðu
-   sýnýrlý olan 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) Nasýl serial/otomatik artan (auto-incrementing) bir alan
-    yaratabilirim?
-    
-   PostgreSQL'de SERIAL veri tipi vardýr. Bu veri tipi bir sequence ve
-   kolon üzerinde bir index yaratýr.
-   
-   Örnek, aþaðýdaki sorgu:
-CREATE TABLE person (
-    id   SERIAL,
-    name TEXT
-);
-                
-   buna çevrilir:
-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 );
-                
-   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 nasýl alabilirim?
-    
-   Bir yaklaþým, sequence nesnesindeki SERIAL deðerini, veriyi girmeden
-   önce nextval() ile alýp, aldýðýnýz deðeri kendinizin girmesidir.
-   4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
-new_id = execute("SELECT nextval('person_id_seq')");
-
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-   Diðer sorgular için new_id'de yeni deðerin saklanmasý gerekir.
-   Otomatik olarak yaratýlan SEQUENE nesnesinin adý, <tablo adý>_<serial
-   kolonu adý>_seq þeklinde olacaktýr (< > iþaretleri olmadan).
-   
-   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() diðer kullanýcýlara sorun yaratmaz mý?
-    
-   Hayýr. curval(), tüm kullanýcýlar deðil, backend tarafýndan atanan
-   geçerli deðeri döndürür.
-   
-    4.15.4) Neden sequence sayýlarý 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 transaction'lara
-   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?
-    
-   OIDler, tekil satýr numaralarýna PostgreSQL'in yanýtýdýr.
-   PostgreSQL'de yaratýlan her sayý, tekil bir OID alýr. initdb iþlemi
-   sýrasýnda yaratýlan tüm OID'ler 16384'ten küçüktür
-   (backend/access/transam.h). Kullanýcýlar tarafýndan yaratýlan tüm
-   OID'ler bu sayýya eþit ya da bu sayýdan büyüktür. Varsayýlan durumda,
-   tüm bu OIDler sadece bir tablo ya da veritabanýnda deðil, tüm
-   PostgreSQL kurulumunda tekildir.
-   
-   PostgreSQL OIDleri, tablolar arasýnda satýrlarý iliþkilendirmek için
-   kendi iç tablolarýnda kullanýr. Bu OIDler belirli kullanýcý
-   satýrlarýný belirtmek için kullanabilir ve join i