]> granicus.if.org Git - postgresql/commitdiff
Update Brazilian FAQ.
authorBruce Momjian <bruce@momjian.us>
Tue, 9 Oct 2007 03:21:00 +0000 (03:21 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 9 Oct 2007 03:21:00 +0000 (03:21 +0000)
Euler Taveira de Oliveira

doc/src/FAQ/FAQ_brazilian.html

index 6ada06fa238cfb552bfcd454cf00c981ad34b74c..c099a0010d5762dac8e506145a4a3e46435890d8 100644 (file)
@@ -10,7 +10,7 @@
   alink="#0000ff">
     <H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1>
 
-    <P>&Uacute;ltima atualiza&ccedil;&atilde;o: S&aacute;b Out 14 19:08:19 EDT 2006</P>
+    <P>&Uacute;ltima atualiza&ccedil;&atilde;o: Qui Set 27 02:14:24 EDT 2007</P>
 
     <P>Mantenedor atual: Bruce Momjian (<A href=
     "mailto:bruce@momjian.us">bruce@momjian.us</A>)
@@ -43,6 +43,7 @@
      <A href="#item1.11">1.11</A>) Como eu posso aprender <SMALL>SQL</SMALL>?<BR>
      <A href="#item1.12">1.12</A>) Como posso submeter uma corre&ccedil;&atilde;o (patch) ou me juntar a equipe de desenvolvimento?<BR>
      <A href="#item1.13">1.13</A>) Como &eacute; o PostgreSQL comparado a outros <SMALL>SGBD</SMALL>s?<BR>
+                <A href="#item1.14">1.14</A>) O PostgreSQL gerenciará as mudan&ccedil;as de hor&aacute;rio devido ao hor&aacute;rio de ver&atilde;o em v&aacute;rios pa&iacute;ses?<BR>
      
 
      <H2 align="center">Perguntas sobre Clientes</H2>
@@ -57,7 +58,7 @@
     <A href="#item3.3">3.3</A>) Como eu ajusto o servidor de banco de dados para obter uma performance melhor?<BR>
     <A href="#item3.4">3.4</A>) Quais caracter&iacute;sticas de depura&ccedil;&atilde;o est&atilde;o dispon&iacute;veis?<BR>
     <A href="#item3.5">3.5</A>) Por que eu recebo <I>"Sorry, too many clients"</I> quando eu tento conectar?<BR>
-       <A href="#item3.6">3.6</A>) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?</H3>
+    <A href="#item3.6">3.6</A>) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?<BR>
     <A href="#item3.7">3.7</A>) Que tipo de hardware eu devo usar?<BR>
 
 
@@ -70,7 +71,7 @@
      <A href="#item4.6">4.6</A>) Por que minhas consultas est&atilde;o lentas? Por que elas n&atilde;o est&atilde;o utilizando meus &iacute;ndices?<BR>
      <A href="#item4.7">4.7</A>) Como eu vejo como o otimizador de consultas est&aacute; avaliando minha consulta?<BR>
         <A href="#item4.8">4.8</A>) Como eu fa&ccedil;o buscas com express&otilde;es regulares e buscas com express&otilde;es regulares sem diferenciar mau&uacute;sculas de min&uacute;sculas? Como eu utilizo um &iacute;ndice para buscas sem distinguir mai&uacute;sculas de min&uacute;sculas?<BR>
-        <A href="#item4.9">4.9</A>) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?<BR>
+        <A href="#item4.9">4.9</A>) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso concatenar poss&iacute;veis <SMALL>NULL</SMALL>s? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?<BR>
     <A href="#item4.10">4.10</A>) Qual &eacute; a diferen&ccedil;a entre os v&aacute;rios tipos de dado de caracteres?<BR>
        <A href="#item4.11.1">4.11.1</A>) Como eu crio um campo serial/auto incremento?<BR>
     <A href="#item4.11.2">4.11.2</A>) Como eu consigo o valor de um campo
@@ -88,7 +89,7 @@
        does not exist" ao acessar tabelas tempor&aacute;rias em fun&ccedil;&otilde;es PL/PgSQL?<BR>
     <A href="#item4.20">4.20</A>) Quais solu&ccedil;&otilde;es de replica&ccedil;&atilde;o est&atilde;o dispon&iacute;veis?<BR>
        <A href="#item4.21">4.21</A>) Por que os nomes de minhas tabelas e colunas n&atilde;o
-       s&atilde;o reconhecidos em minha consulta?<BR>
+       s&atilde;o reconhecidos em minha consulta? Por que as mai&uacute;sculas n&atilde;o s&atilde;o preservadas?<BR>
      
 
     <HR>
 
     <H3 id="item1.1">1.1) O que &eacute; PostgreSQL? Como ele &eacute; pronunciado?</H3>
 
-       <P>PostgreSQL &eacute; pronunciado <I>Post-Gres-Q-L</I>, e &eacute;, &agrave;s vezes, referido apenas como
-       <I>Postgres</I>. Um arquivo de &aacute;udio est&aacute; dispon&iacute;vel em
-       <a href="http://www.postgresql.org/files/postgresql.mp3">formato MP3</a> para
-       aqueles que gostariam de ouvir a pron&uacute;ncia.</P>
+               <P>PostgreSQL &eacute; pronunciado <I>Post-Gres-Q-L</I>, mas tamb&eacute;m pode ser referido apenas como <I>Postgres</I> principalmente em conversa&ccedil;&otilde;es.
+       (Para os curiosos que querem saber como se diz "PostgreSQL", um
+       <a href="http://www.postgresql.org/files/postgresql.mp3">arquivo de &aacute;udio</a> est&aacute; dispon&iacute;vel).</P>
 
        <P>O PostgreSQL &eacute; um sistema de banco de dados objeto-relacional que tem as
        caracter&iacute;sticas de sistemas de bancos de dados comerciais tradicionais com
        voc&ecirc; precisa &eacute; se inscrever nas listas de discuss&atilde;o e participar das
        discuss&otilde;es. Veja a <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">
        FAQ do desenvolvedor</A> para obter informa&ccedil;&otilde;es como se envolver com o
-       desenvolvimento do PostgreSQL.</P>
+       desenvolvimento do Postgres.</P>
 
     <H3 id="item1.3">1.3) Qual &eacute; a licen&ccedil;a do PostgreSQL?</H3>
 
        baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pr&eacute;-empacotado est&aacute;
        dispon&iacute;vel em <a href= "http://pgfoundry.org/projects/pginstaller">
        http://pgfoundry.org/projects/pginstaller</a>. Vers&otilde;es do Windows baseadas no MS-DOS
-       (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P>
+       (Win95, Win98, WinMe) podem executar o Postgres utilizando o Cygwin.</P>
 
        <p>H&aacute; tamb&eacute;m uma vers&atilde;o para o Novell Netware 6 em
        <a href="http://forge.novell.com">http://forge.novell.com</a>
 
        <P>Via navegador web, utilize <a href="http://www.postgresql.org/ftp/">
        http://www.postgresql.org/ftp/</a> e via ftp, utilize
-       <A href="ftp://ftp.PostgreSQL.org/pub/">
-       ftp://ftp.PostgreSQL.org/pub/</A>.</P>
+       <A href="ftp://ftp.postgresql.org/pub/">
+       ftp://ftp.postgresql.org/pub/</A>.</P>
 
 
     <H3 id="item1.6">1.6) Qual &eacute; a &uacute;ltima vers&atilde;o?</H3>
 
-    <P>A &uacute;ltima vers&atilde;o do PostgreSQL &eacute; a vers&atilde;o 8.1.5.</P>
+    <P>A &uacute;ltima vers&atilde;o do PostgreSQL &eacute; a vers&atilde;o 8.2.5.</P>
 
        <P>N&oacute;s planejamos lan&ccedil;ar vers&otilde;es novas a cada ano com vers&otilde;es
        corretivas em alguns meses.</P>
     <P>Visite o formul&aacute;rio que reporta bugs do PostgreSQL em <A href=
     "http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</A>.</P>
     <P>Verifique tamb&eacute;m o nosso ftp <A href=
-    "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A> para
-    ver se h&aacute; uma vers&atilde;o mais recente do PostgreSQL.</P>
+    "ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</A> para
+    ver se h&aacute; uma vers&atilde;o mais recente do Postgres.</P>
 
        <P>Bugs submetidos utilizando o formul&aacute;rio ou informado a qualquer
        lista de discuss&atilde;o do PostgreSQL tipicamente gera uma das seguintes
        <ul>
        <li>N&atilde;o &eacute; um bug e o porqu&ecirc;</li>
        <li>&Eacute; um bug conhecido e j&aacute; est&aacute; na lista de
-       <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
+       <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
        <li>O bug foi corrigido na vers&atilde;o atual</li>
        <li>O bug foi corrigido mas n&atilde;o foi empacotado em um vers&atilde;o oficial</li>
        <li>Um pedido foi feito para obter informa&ccedil;&otilde;es detalhadas:
                <ul>
        <li>Uma corre&ccedil;&atilde;o &eacute; criada e ser&aacute; inclu&iacute;da na pr&oacute;xima vers&atilde;o</li>
        <li>O bug n&atilde;o pode ser corrigido imediatamente e &eacute; adicionado
-       a lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
+       a lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
        </ul>
        </li>
        </ul>
        ou funcionalidades ausentes?</H3>
 
        <P>O PostgreSQL suporta um subconjunto extendido do <SMALL>SQL:2003</SMALL>.
-       Veja nossa lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A>
+       Veja nossa lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A>
        que cont&eacute;m bugs conhecidos, funcionalidades ausentes e planos futuros.</P>
 
        <P>Uma solicita&ccedil;&atilde;o de funcionalidade geralmente resulta em uma das
        seguintes respostas:</P>
        <ul>
-       <li>A funcionalidade j&aacute; est&aacute; na lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
+       <li>A funcionalidade j&aacute; est&aacute; na lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
        <li>A funcionalidade n&atilde;o &eacute; desej&aacute;vel porque:
                <ul>
                <li>Ela duplica uma funcionalidade existente que j&aacute; segue o
                </ul>
        </li>
        <li>A nova funcionalidade &eacute; adicionada a lista de
-       <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A></li>
+       <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A></li>
        </ul>
 
        <P>O PostgreSQL n&atilde;o utiliza sistema de acompanhamento de bugs porque
        n&oacute;s achamos mais eficiente responder diretamente o e-mail e manter a
-       lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES (TODO)</A>
+       lista de <A href="http://www.postgresql.org/docs/faqs.TODO.html">AFAZERES</A>
        atualizada. Na pr&aacute;tica, bugs n&atilde;o duram muito no programa; e bugs que afetam
        uma grande quantidade de usu&aacute;rios s&atilde;o corrigidos rapidamente. O &uacute;nico lugar
        para encontrar todas as mudan&ccedil;as, melhorias e corre&ccedil;&otilde;es em uma vers&atilde;o do
-       PostgreSQL &eacute; ler as mensagens de log do
+       Postgres &eacute; ler as mensagens de log do
        <a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>. At&eacute; mesmo
        as notas de lan&ccedil;amento n&atilde;o listam todas as mudan&ccedil;as feitas no programa.</P>
 
        <P>O PostgreSQL inclui vasta documenta&ccedil;&atilde;o, incluindo um manual extenso,
        p&aacute;ginas de manuais (man pages) e alguns exemplos teste. Veja o diret&oacute;rio
        <I>/doc</I>. Voc&ecirc; tamb&eacute;m pode pesquisar os manuais online em <A href=
-       "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.
+       "http://www.postgresql.org/docs">http://www.postgresql.org/docs</A>.
        </P>
 
        <P>H&aacute; dois livros sobre PostgreSQL dispon&iacute;veis online em <A href=
        H&aacute; uma lista de livros sobre PostgreSQL dispon&iacute;veis para compra. Um dos mais
        populares &eacute; o do Korry Douglas. Uma lista de an&aacute;lise sobre os livros pode ser
        encontrada em <A href=
-       "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
+       "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</A>.
+       H&aacute; tamb&eacute;m uma cole&ccedil;&atilde;o de artigos t&eacute;cnicos sbore PostgreSQL em <A href="http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
 
        <P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para
        mostrar informa&ccedil;&otilde;es sobre tipos, operadores, fun&ccedil;&otilde;es, agrega&ccedil;&otilde;es, etc. - utilize \?
 
       <DT><B>Suporte</B></DT>
 
-      <DD>Nossas listas de discuss&atilde;o fornecem contato com um grupo de desenvolvedores e usu&aacute;rios para ajudar a resolver muitos problemas encontrados. Enquanto n&oacute;s n&atilde;o podemos garantir o conserto, <SMALL>SGBD</SMALL>s comerciais nem sempre fornecem tamb&eacute;m. Com acesso direto aos desenvolvedores, a comunidade de usu&aacute;rios, manuais e o c&oacute;digo fonte faz com que o suporte do PostgreSQL seja superior ao de outros <SMALL>SGBD</SMALL>s. H&aacute; suporte comercial por incidente dispon&iacute;veis para aqueles que precisam de um. (Veja <A href="#item1.7">se&ccedil;&atilde;o 1.7 da FAQ</A>.)<BR>
+      <DD>Nossas listas de discuss&atilde;o fornecem contato com um grupo de desenvolvedores e usu&aacute;rios para ajudar a resolver muitos problemas encontrados. Enquanto n&oacute;s n&atilde;o podemos garantir o conserto, <SMALL>SGBD</SMALL>s comerciais nem sempre fornecem tamb&eacute;m. Com acesso direto aos desenvolvedores, a comunidade de usu&aacute;rios, manuais e o c&oacute;digo fonte faz com que o suporte do PostgreSQL seja superior ao de outros <SMALL>SGBD</SMALL>s. H&aacute; suporte comercial por incidente dispon&iacute;veis para aqueles que precisam de um. (Veja <A href="#item1.7">se&ccedil;&atilde;o 1.7 da FAQ</A>).<BR>
       <BR>
       </DD>
 
       </DD>
     </DL>
 
+               <H3 id="item1.14">1.14) O PostgreSQL gerenciar&aacute; mudan&ccedil;as no hor&aacute;rio devido ao hor&aacute;rio de ver&atilde;o em v&aacute;rios pa&iacute;ses?</H3>
+
+               <P>Mudan&ccedil;as no hor&aacute;rio de ver&atilde;o dos USA foram inclu&iacute;das nas vers&otilde;es 8.0 .[4+] do PostgreSQL e em todas as vers&otilde;es grandes, i.e. 8.1. Mudan&ccedil;as no Canad&aacute; e Austr&aacute;lia Oeste foram inclu&iacute;das na 8.0.[10+], 8.1.[6+] e em todas as vers&otilde;es grandes subsequentes. Vers&otilde;es do PostgreSQL anteriores a 8.0 utilizam o banco de dados de zona hor&aacute;ria do sistema operacional para informa&ccedil;&otilde;es sobre hor&aacute;rio de ver&atilde;o.</P>
+
     <HR>
 
     <H2 align="center">Perguntas sobre Clientes</H2>
 
        <H3 id="item3.6">3.6) Qual &eacute; o processo de atualiza&ccedil;&atilde;o do PostgreSQL?</H3>
 
-       <P>O time do PostgreSQL faz somente pequenas mudan&ccedil;as entre vers&otilde;es corretivas, ent&atilde;o atualizar da vers&atilde;o 7.4.8 para 7.4.9 n&atilde;o requer uma exporta&ccedil;&atilde;o e uma importa&ccedil;&atilde;o; basta para o servidor de banco de dados, instalar os bin&aacute;rios atualizados e reiniciar o servidor.</P>
-
-       <P>Todos os usu&aacute;rios devem atualizar para as vers&otilde;es corretivas mais recentes 
-       assim que elas estiverem dispon&iacute;veis. Enquanto cada atualiza&ccedil;&atilde;o tem algum risco,
-       vers&otilde;es corretivas do PostgreSQL s&atilde;o projetadas para corrigir somente bugs comuns
-       com um risco m&iacute;nimo. A comunidade considera <i>n&atilde;o</i> atualizar mais
-       perigoso do que atualizar.</P>
-
-       <P>Vers&otilde;es novas (i.e. da 7.3 para 7.4) geralmente muda-se o formato interno das tabelas de sistema e dos arquivo de dados. Essas mudan&ccedil;as geralmente s&atilde;o complexas, ent&atilde;o n&oacute;s n&atilde;o mantemos compatibilidade para os arquivos de dados. Uma exporta&ccedil;&atilde;o/importa&ccedil;&atilde;o de um banco de dados &eacute; necess&aacute;ria para atualiza&ccedil;&otilde;es entre vers&otilde;es.</P>
+       <P>Veja <a
+       href="http://www.postgresql.org/support/versioning">http://www.postgresql.org/support/versioning</a>
+       para discussão geral sobre atualizações e <a href=
+       "http://www.postgresql.org/docs/current/static/install-upgrading.html">
+       http://www.postgresql.org/docs/current/static/install-upgrading.html</a>
+       para instru&ccedil;&otilde;es espec&iacute;ficas.</P>
 
     <H3 id="item3.7">3.7) Que tipo de hardware eu devo usar?</H3>
 
        melhor garantida por um &iacute;ndice de uma fun&ccedil;&atilde;o de um hash MD5 de uma coluna longa, e
        indexa&ccedil;&atilde;o de texto longo permite a busca de palavras dentro da coluna.</P>
 
-    <H3 name="item4.5">4.5) Quanto espa&ccedil;o em disco &eacute; necess&aacute;rio para armazenar dados de um arquivo texto?</H3>
+    <H3 id="item4.5">4.5) Quanto espa&ccedil;o em disco &eacute; necess&aacute;rio para armazenar dados de um arquivo texto?</H3>
 
     <P>Um banco de dados PostgreSQL ir&aacute; requerer at&eacute; cinco vezes a quantidade de espa&ccedil;o requerida para armazenar dados em um arquivo texto.</P>
 
-    <P>Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descri&ccedil;&atilde;o em cada linha. Suponha que o tamanho m&eacute;dio da descri&ccedil;&atilde;o &eacute; de vinte bytes. O arquivo ter&aacute; 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que cont&eacute;m esses dados pode ser estimado em 5,6 MB:</P>
+    <P>Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descri&ccedil;&atilde;o em cada linha. Suponha que o tamanho m&eacute;dio da descri&ccedil;&atilde;o &eacute; de vinte bytes. O arquivo ter&aacute; 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que cont&eacute;m esses dados pode ser estimado em 5,2 MB:</P>
 <PRE>
-    28 bytes: cada cabe&ccedil;alho de registro (aproximadamente)
+    24 bytes: cada cabe&ccedil;alho de registro (aproximadamente)
     24 bytes: um campo int e um campo texto
    + 4 bytes: ponteiro na p&aacute;gina para a tupla
    -------------------------------------------
-    56 bytes por registro
+    52 bytes por registro
 
-   O tamanho de uma p&aacute;gina de dados no PostgreSQL &eacute; 8192 bytes (8 KB), ent&atilde;o:
+   O tamanho de uma p&aacute;gina de dados no Postgres &eacute; 8192 bytes (8 KB), ent&atilde;o:
 
    8192 bytes por p&aacute;gina
-   ------------------------   =  146 registros por p&aacute;gina do banco de dados (arredondado para baixo)
-     56 bytes por registro
+   ------------------------   =  158 registros por p&aacute;gina do banco de dados (arredondado para baixo)
+     52 bytes por registro
 
    100000 registros de dados
-   ----------------------------  =  685 p&aacute;ginas do banco de dados (arredondado para cima)
-      146 registros por p&aacute;gina
+   ----------------------------  =  633 p&aacute;ginas do banco de dados (arredondado para cima)
+      158 registros por p&aacute;gina
 
-685 p&aacute;ginas do banco de dados * 8192 bytes por p&aacute;gina  =  5.611.520 bytes (5,6 MB)
+633 p&aacute;ginas do banco de dados * 8192 bytes por p&aacute;gina  =  5.185.536 bytes (5,2 MB)
 </PRE>
 
        <P>&Iacute;ndices n&atilde;o requerem muito espa&ccedil;o, mas cont&eacute;m
        Para for&ccedil;ar uma letra mai&uacute;scula ou min&uacute;scula a ser armazenada na coluna, utilize
        uma restri&ccedil;&atilde;o <SMALL>CHECK</SMALL> ou um gatilho.</P>
 
-       <H3 id="item4.9">4.9) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?</H3>
+       <H3 id="item4.9">4.9) Em uma consulta, como eu detecto se um campo &eacute; <SMALL>NULL</SMALL>? Como eu posso concatenar poss&iacute;veis <SMALL>NULL</SMALL>s? Como eu posso ordenar por um campo que &eacute; <SMALL>NULL</SMALL> ou n&atilde;o?</H3>
 
     <P>Voc&ecirc; testa a coluna com <SMALL>IS NULL</SMALL> e <SMALL>IS
     NOT NULL</SMALL>, como a seguir:</P>
    WHERE col IS NULL;
 </PRE>
 
+       <P>Para concatenar com poss&iacute;veis <SMALL>NULL</SMALL>s, utilize <I>COALESCE()</I>, assim:</P>
+<PRE>
+   SELECT COALESCE(col1, '') || COALESCE(col2, '')
+   FROM tab
+</PRE>
+
        <P>Para ordenar pelo status <SMALL>NULL</SMALL>, utilize os modificadores
        <SMALL>IS NULL</SMALL> e <SMALL>IS NOT NULL</SMALL> na sua cl&aacute;usula
        <SMALL>ORDER BY</SMALL>. Coisas que s&atilde;o <I>verdadeiro</I> ser&atilde;o ordenadas acima
@@ -802,7 +810,7 @@ comprimento</TD></TR>
     novo_id = execute("SELECT currval('pessoa_id_seq')");
 </PRE>
 
-    <H3 name="4.11.3">4.11.3) <I>currval()</I> n&atilde;o lida com condi&ccedil;&atilde;o de corrida com outros usu&aacute;rios?</H3>
+    <H3 id="item4.11.3">4.11.3) <I>currval()</I> n&atilde;o lida com condi&ccedil;&atilde;o de corrida com outros usu&aacute;rios?</H3>
 
     <P>N&atilde;o. <I>currval()</I> retorna o valor atual atribuido pela sua sess&atilde;o, e n&atilde;o por todas as sess&otilde;es.</P>
 
@@ -810,13 +818,12 @@ comprimento</TD></TR>
 
     <P>Para melhorar a concorr&ecirc;ncia, valores da sequ&ecirc;ncia s&atilde;o atribu&iacute;dos a transa&ccedil;&otilde;es correntes e n&atilde;o s&atilde;o travados at&eacute; que a transa&ccedil;&atilde;o seja finalizada. Isso causa intervalos na numera&ccedil;&atilde;o por causa de transa&ccedil;&otilde;es abortadas.</P>
 
-    <H3 id="4.16">4.16) O que &eacute; um <SMALL>OID</SMALL>? O que &eacute; um <SMALL>CTID</SMALL>?</H3>
+    <H3 id="item4.12">4.12) O que &eacute; um <SMALL>OID</SMALL>? O que &eacute; um <SMALL>CTID</SMALL>?</H3>
 
-       <P>Cada registro que &eacute; criado no PostgreSQL recebe um <SMALL>OID</SMALL> &uacute;nico
-       a menos que seja criado com <SMALL>WITHOUT OIDS</SMALL>.
+       <P>Se uma tabela &eacute; criada com <SMALL>WITH OIDS</SMALL>, cada registro recebe um <SMALL>OID</SMALL> &uacute;nico.
        O<SMALL>ID</SMALL>s s&atilde;o automaticamente atribu&iacute;dos como inteiros de 4 bytes
        que s&atilde;o &uacute;nicos ao longo de toda instala&ccedil;&atilde;o. Contudo, eles s&atilde;o limitados em
-       4 bilh&otilde;es, e ent&atilde;o os O<SMALL>ID</SMALL>s come&ccedil;am a ser duplicados. O PostgreSQL
+       4 bilh&otilde;es e, ent&atilde;o, os O<SMALL>ID</SMALL>s come&ccedil;am a ser duplicados. O PostgreSQL
        utiliza <SMALL>OID</SMALL>s para ligar as tabelas do sistema.</P>
 
        <P>Para numerar registros nas tabelas do usu&aacute;rios, &eacute; melhor utilizar
@@ -852,7 +859,7 @@ comprimento</TD></TR>
        CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
 </PRE>
 
-    <H3 id="item4.23">4.23) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?</H3>
+    <H3 id="item4.16">4.16) Como eu fa&ccedil;o uma jun&ccedil;&atilde;o externa (outer join)?</H3>
 
     <P>PostgreSQL suporta jun&ccedil;&otilde;es externas utilizando a sintaxe padr&atilde;o do SQL. Aqui temos dois exemplos:</P>
 <PRE>
@@ -874,7 +881,7 @@ comprimento</TD></TR>
        A palavra <SMALL>OUTER</SMALL> &eacute; opcional e &eacute; assumida nas
        jun&ccedil;&otilde;es <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> e <SMALL>FULL</SMALL>.
        Jun&ccedil;&otilde;es ordin&aacute;rias s&atilde;o chamadas jun&ccedil;&otilde;es
-       naturais (<SMALL>INNER</SMALL>).</P>
+       internas (<SMALL>INNER</SMALL>).</P>
 
        <H3 id="item4.17">4.17) Como eu fa&ccedil;o consultas utilizando m&uacute;ltiplos bancos de dados?</H3>
 
@@ -891,8 +898,8 @@ comprimento</TD></TR>
     <H3 id="item4.18">4.18) Como eu retorno m&uacute;ltiplos registros ou colunas de uma fun&ccedil;&atilde;o?</H3>
 
        <P>&Eacute; f&aacute;cil utilizando fun&ccedil;&otilde;es que retornam conjunto,
-       <a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
-       http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
+       <a href="http://www.postgresql.org/docs/techdocs.17">
+       http://www.postgresql.org/docs/techdocs.17</a>.</P>
 
        <H3 id="item4.19">4.19) Por que eu obtenho erros "relation with OID ######
        does not exist" ao acessar tabelas tempor&aacute;rias em fun&ccedil;&otilde;es PL/PgSQL?</H3>
@@ -912,22 +919,22 @@ comprimento</TD></TR>
        <P>Replica&ccedil;&atilde;o com m&uacute;ltiplos mestres permite que consultas leitura/escrita sejam
        enviadas para m&uacute;ltiplos computadores replicadores. Esta capacidade tamb&eacute;m tem
        um s&eacute;rio impacto na performance por causa da necessidade de sincronizar as mudan&ccedil;as
-       entre os servidores. <A href="http://pgfoundry.org/projects/pgcluster/">Pgcluster</a>
+       entre os servidores. <A href="http://pgfoundry.org/projects/pgcluster/">PGCluster</a>
        &eacute; a solu&ccedil;&atilde;o mais popular dispon&iacute;vel livremente para PostgreSQL.</P>
 
        <P>H&aacute; tamb&eacute;m solu&ccedil;&otilde;es de replica&ccedil;&atilde;o comerciais e baseadas em hardware dispon&iacute;veis
        que suportam uma variedade de modelos de replica&ccedil;&atilde;o.</P>
 
        <H3 id="item4.21">4.21) Por que os nomes de minhas tabelas e colunas n&atilde;o
-       s&atilde;o reconhecidos em minha consulta?</H3>
+       s&atilde;o reconhecidos em minha consulta? Por que as mai&uacute;sculas n&atilde;o s&atilde;o preservadas?</H3>
 
-       <P>O caso mais comum &eacute; o uso de aspas ao redor dos nomes da tabela ou coluna
+       <P>A causa mais comum de nomes desconhecidos &eacute; o uso de aspas ao redor dos nomes da tabela ou coluna
        durante a cria&ccedil;&atilde;o da tabela. Ao utilizar aspas, nomes de tabela e coluna
        (chamados de identificadores) s&atilde;o armazenados <a
-       href="http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
+       href="http://www.postgresql.org/docs/current/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
        como especificado</a>, significando que voc&ecirc; deve utilizar aspas quando se
        referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
-       automaticamente coloca aspas nos identificadores durante a cria&ccedil;&atilde;o da tabela.
+       automaticamente colocam aspas nos identificadores durante a cria&ccedil;&atilde;o da tabela.
        Ent&atilde;o, para identificadores serem reconhecidos, voc&ecirc; deve:
        <UL>
        <LI>Evitar colocar aspas no identificador ao criar tabelas</LI>