2002-04-15 00:12:54 +00:00
|
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<!-- EN-Revision: 1.3 Maintainer: phaser Status: ready -->
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<reference id="ref.pgsql">
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<title>Fun<EFBFBD><EFBFBD>es PostgreSQL</title>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<titleabbrev>PostgreSQL</titleabbrev>
|
|
|
|
|
|
|
|
|
|
<partintro>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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>.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<warning>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
</warning>
|
|
|
|
|
<warning>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<table>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<title>Nomes de fun<75><6E>es alterados</title>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<tgroup cols="2">
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<entry>Nomes antigos</entry>
|
|
|
|
|
<entry>Nomes novos</entry>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</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>
|
2002-04-25 00:16:22 +00:00
|
|
|
|
<entry><function>pg_fieldprtlen</function></entry>
|
|
|
|
|
<entry><function>pg_field_prtlen</function></entry>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</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>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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>.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
</warning>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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".
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<table>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<title>Postmaster e PHP</title>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<tgroup cols="3">
|
|
|
|
|
<thead>
|
|
|
|
|
<row>
|
|
|
|
|
<entry>Postmaster</entry>
|
|
|
|
|
<entry>PHP</entry>
|
|
|
|
|
<entry>Status</entry>
|
|
|
|
|
</row>
|
|
|
|
|
</thead>
|
|
|
|
|
<tbody>
|
|
|
|
|
<row>
|
|
|
|
|
<entry>postmaster &</entry>
|
|
|
|
|
<entry>pg_connect("dbname=MyDbName");</entry>
|
|
|
|
|
<entry>OK</entry>
|
|
|
|
|
</row>
|
|
|
|
|
<row>
|
|
|
|
|
<entry>postmaster -i &</entry>
|
|
|
|
|
<entry>pg_connect("dbname=MyDbName");</entry>
|
|
|
|
|
<entry>OK</entry>
|
|
|
|
|
</row>
|
|
|
|
|
<row>
|
|
|
|
|
<entry>postmaster &</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 &</entry>
|
|
|
|
|
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
|
|
|
|
|
<entry>OK</entry>
|
|
|
|
|
</row>
|
|
|
|
|
</tbody>
|
|
|
|
|
</tgroup>
|
|
|
|
|
</table>
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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 ");
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</command>
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
A sintaxe anterior de:
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<command>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
$conn = pg_connect ("host", "porta", "opcoes", "tty", "nomebd")
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</command>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
est<73> obsoleta.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<example>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
<title>Definindo os par<61>metros padr<64>es</title>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<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>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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)
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
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>
|
2002-04-15 00:12:54 +00:00
|
|
|
|
<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>
|
2002-05-03 18:30:09 +00:00
|
|
|
|
Voc<6F> n<>o deve fechar a conex<65>o com o servidor PostgreSQL antes de fechar o
|
|
|
|
|
objeto grande.
|
2002-04-15 00:12:54 +00:00
|
|
|
|
</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
|
|
|
|
|
-->
|