php-doc-en/reference/pgsql/reference.xml

319 lines
11 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.3 Maintainer: phaser Status: ready -->
<reference id="ref.pgsql">
<title>Fun<EFBFBD><EFBFBD>es PostgreSQL</title>
<titleabbrev>PostgreSQL</titleabbrev>
<partintro>
<para>
Postgres, desenvolvida originalmente no Deparetamento de Ci<43>ncias
de Computa<74><61>o de Berkeley, foi pioneira em muitos dos conceitos de
relacionamento-objeto que agora est<73>o tornando-se dispon<6F>veis em
alguns bancos de dados comerciais. Ele fornece suporte a linguagem
SQL92/SQL99, integridade de transa<73><61>es e extensibilidade de tipos.
Postgres <20> um descendente em c<>digo aberto do c<>digo original de
Berkeley.
</para>
<para>
O banco de dados PostgreSQL <20> um produto Open Source dispon<6F>vel
sem nenhum custo. Para usar o suporte a PostgreSQL voc<6F> precisa
do PostgreSQL 6.5 ou superior. PostgreSQL 7.0 ou superior para
habilitar todas as fun<75><6E>es do m<>dulo PostgreSQL. PostgreSQL suporta
muitos c<>digos de caracteres incluindo a codifica<63><61>o de carcateres
multibyte. A vers<72>o atual e maiores informa<6D><61>es sobre PostgreSQL
est<73> dispon<6F>vel em <ulink url="&url.pgsql;">&url.pgsql;</ulink>.
</para>
<para>
Para habilitar o suporte a PostgreSQL a op<6F><70>o de configura<72><61>o
<option role="configure">--with-pgsql[=DIR]</option> <20> exigida quando
voc<6F> compila o PHP. Se o m<>dulo compartilhado est<73> dispon<6F>vel, o m<>dulo
PostgreSQL pode ser carregado usando a diretiva
<link linkend="ini.extension">extension</link> no &php.ini; ou
a fun<75><6E>o <function>dl</function>. Diretivas ini suportadas est<73>o descritas
em <filename>php.ini-dist</filename> que vem com a distribui<75><69>o.
</para>
<warning>
<para>
Usar o m<>dulo PostgreSQL com o PHP 4.0.6 n<>o <20> recomendado devido a
um bug no c<>digo de manipula<6C><61>o de mensagens de nota. Use o 4.1.0 ou
superior.
</para>
</warning>
<warning>
<para>
Os nomes das fun<75><6E>es PostgreSQL ser<65>o alterados na vers<72>o 4.2.0 para
confirmar os padr<64>es de programa<6D><61>o atuais. A maioria dos novos nomes
ter<65>o sublinhados adicionais, por exemplo pg_lo_open(). Algumas fun<75><6E>es
foram renomeadas para uma maior consist<73>ncia, por exemplo pg_exec() que
mudou para pg_query(). Os nomes antigos podem ser usados na 4.2.0 e em
algumas poucas outras atualiza<7A><61>es ap<61>s esta, mas eles ser<65>o deletados em
um futuro pr<70>ximo.
</para>
<table>
<title>Nomes de fun<75><6E>es alterados</title>
<tgroup cols="2">
<thead>
<row>
<entry>Nomes antigos</entry>
<entry>Nomes novos</entry>
</row>
</thead>
<tbody>
<row>
<entry><function>pg_exec</function></entry>
<entry><function>pg_query</function></entry>
</row>
<row>
<entry><function>pg_getlastoid</function></entry>
<entry><function>pg_last_oid</function></entry>
</row>
<row>
<entry><function>pg_cmdtuples</function></entry>
<entry><function>pg_affected_rows</function></entry>
</row>
<row>
<entry><function>pg_numrows</function></entry>
<entry><function>pg_num_rows</function></entry>
</row>
<row>
<entry><function>pg_numfields</function></entry>
<entry><function>pg_num_fields</function></entry>
</row>
<row>
<entry><function>pg_fieldname</function></entry>
<entry><function>pg_field_name</function></entry>
</row>
<row>
<entry><function>pg_fieldsize</function></entry>
<entry><function>pg_field_size</function></entry>
</row>
<row>
<entry><function>pg_fieldnum</function></entry>
<entry><function>pg_field_num</function></entry>
</row>
<row>
<entry><function>pg_fieldprtlen</function></entry>
<entry><function>pg_field_prtlen</function></entry>
</row>
<row>
<entry><function>pg_fieldisnull</function></entry>
<entry><function>pg_field_is_null</function></entry>
</row>
<row>
<entry><function>pg_freeresult</function></entry>
<entry><function>pg_free_result</function></entry>
</row>
<row>
<entry><function>pg_result</function></entry>
<entry><function>pg_fetch_result</function></entry>
</row>
<row>
<entry><function>pg_loreadall</function></entry>
<entry><function>pg_lo_read_all</function></entry>
</row>
<row>
<entry><function>pg_locreate</function></entry>
<entry><function>pg_lo_create</function></entry>
</row>
<row>
<entry><function>pg_lounlink</function></entry>
<entry><function>pg_lo_unlink</function></entry>
</row>
<row>
<entry><function>pg_loopen</function></entry>
<entry><function>pg_lo_unlink</function></entry>
</row>
<row>
<entry><function>pg_loclose</function></entry>
<entry><function>pg_lo_close</function></entry>
</row>
<row>
<entry><function>pg_loread</function></entry>
<entry><function>pg_lo_read</function></entry>
</row>
<row>
<entry><function>pg_lowrite</function></entry>
<entry><function>pg_lo_write</function></entry>
</row>
<row>
<entry><function>pg_loimport</function></entry>
<entry><function>pg_lo_import</function></entry>
</row>
<row>
<entry><function>pg_loexport</function></entry>
<entry><function>pg_lo_export</function></entry>
</row>
</tbody>
</tgroup>
</table>
<para>
A antiga sintaxe <function>pg_connect</function>/<function>pg_pconnect</function>
ser<65> obsoleta para suportar conex<65>es ass<73>ncronas no futoro. Por favor use
a string de conex<65>o para <function>pg_connect</function>
e <function>pg_pconnect</function>.
</para>
</warning>
<para>
Nem todas as fun<75><6E>es s<>o suportadas por todas as compila<6C><61>es. Isso vai
depender da vers<72>o do seu libpq (A interface C do cliente PostgreSQL) e
como o seu libpq foi compilado. Se h<> alguma fun<75><6E>o ausente, a libpq n<>o
suporta a caracter<65>stica exigida pela fun<75><6E>o.
</para>
<para>
Tamb<6D>m <20> importante que voc<6F> use uma libpq mais nova do que a que o
servidor espera. Se voc<6F> usar uma libpq mais antiga do que a que o
servidor espera voc<6F> poder<65> ter problemas.
</para>
<para>
Desde a vers<72>o 6.3 (03/02/1998) PostgreSQL usa sockets de dom<6F>nio unix por
padr<64>o. A porta TCP n<>o ser<65> aberta por padr<64>o. Uma tabela <20> mostrada
abaixo descrevendo essas novas possibilidades de conex<65>o. Este socket ser<65>
encontrado em <filename>/tmp/.s.PGSQL.5432</filename>.
Espa op<6F><70>o pode ser habilitada com a chave '-i' para o
<command>postmaster</command> e seu significado <20>: "escute em sockets
TCP/IP assim como em sockets de dom<6F>nio Unix".
<table>
<title>Postmaster e PHP</title>
<tgroup cols="3">
<thead>
<row>
<entry>Postmaster</entry>
<entry>PHP</entry>
<entry>Status</entry>
</row>
</thead>
<tbody>
<row>
<entry>postmaster &amp;</entry>
<entry>pg_connect("dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster -i &amp;</entry>
<entry>pg_connect("dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster &amp;</entry>
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
<entry>
Unable to connect to PostgreSQL server: connectDB() failed:
Is the postmaster running and accepting TCP/IP (with -i)
connection at 'localhost' on port '5432'? in
/path/to/file.php on line 20.
</entry>
</row>
<row>
<entry>postmaster -i &amp;</entry>
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
Uma conex<65>o com o servidor PostgreSQL pode ser estabelecida com os
seguintes pares de valores definidos na string de comando: <command>$conn =
pg_connect("host=meuHost port=minhaPorta tty=meuTTY options=minhasOpcoes
dbname=meuDB user=meuUsuario password=minhaSenha ");
</command>
</para>
<para>
A sintaxe anterior de:
<command>
$conn = pg_connect ("host", "porta", "opcoes", "tty", "nomebd")
</command>
est<73> obsoleta.
</para>
<para>
Vari<72>veis de ambiente afetam o comportamento do servidor/cliente
PostgreSQL. Por exemplo, o m<>dulo PostgreSQL ir<69> procurar pela vari<72>vel de
ambiente PGHOST quando o nome de host <20> omitido na string de conex<65>o. As
vari<72>veis de ambiente suportadas variam de vers<72>o para vers<72>o. Vide o
Manual de PRogramador do PostgreSQL (Programmer<65>s Manual) na se<73><65>o libpq -
Enviroment Variables para maiores detalhes.
</para>
<para>
Certifique-se que voc<6F> definou as vari<72>veis de ambiente para o usu<73>rio
apropriado. Use <literal>$_ENV</literal> ou <function>getenv</function>
para verificar que vari<72>veis de ambiente est<73>o dispon<6F>veis para o processo
atual.
</para>
<example>
<title>Definindo os par<61>metros padr<64>es</title>
<programlisting>
<![CDATA[
PGHOST=psgql.exmaple.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP
export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING
]]>
</programlisting>
</example>
<para>
A partir do PostgreSQL 7.1.0, voc<6F> pode armazenar at<61> 1GB dentro de um
campo do tipo texto. Em vers<72>es mais antigas, isto era limitado ao tamanho
do bloco (padr<64>o era 8KB e o m<>ximo era 32KB definido em tempo de
compila<6C><61>o)
</para>
<para>
Para usar a interface de objetos grandes (lo), <20> exigido que se encapsule
as fun<75><6E>es de objetos grandes dentro de um bloco de transa<73><61>o. Um bloco de
transa<73><61>o inicia-se com a declara<72><61>o SQL <command>BEGIN</command> e se a
transa<73><61>o foi v<>lida termina com <command>COMMIT</command> ou
<command>END</command>. Se a transa<73>o falhar, ela deve ser fechada com
<command>ROLLBACK</command> ou <command>ABORT</command>.
<>
<title>Usando Objetos Grandes</title>
<programlisting role="php">
<![CDATA[
<?php
$database = pg_connect ("dbname=jacarta");
pg_query ($database, "begin");
$oid = pg_lo_create ($database);
echo "$oid\n";
$handle = pg_lo_open ($database, $oid, "w");
echo "$handle\n";
pg_lo_write ($handle, "large object data");
pg_lo_close ($handle);
pg_query ($database, "commit");
?>
]]>
</programlisting>
</example>
Voc<6F> n<>o deve fechar a conex<65>o com o servidor PostgreSQL antes de fechar o
objeto grande.
</para>
</partintro>
&reference.pgsql.functions;
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->