Files
doc-en/reference/pgsql/reference.xml
phaser ce31e485c3 1st translated version
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@81076 c90b9560-bf6c-de11-be94-00142212c4b1
2002-05-03 18:30:09 +00:00

319 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.3 Maintainer: phaser Status: ready -->
<reference id="ref.pgsql">
<title>Funções PostgreSQL</title>
<titleabbrev>PostgreSQL</titleabbrev>
<partintro>
<para>
Postgres, desenvolvida originalmente no Deparetamento de Ciências
de Computação de Berkeley, foi pioneira em muitos dos conceitos de
relacionamento-objeto que agora estão tornando-se disponíveis em
alguns bancos de dados comerciais. Ele fornece suporte a linguagem
SQL92/SQL99, integridade de transações e extensibilidade de tipos.
Postgres é um descendente em código aberto do código original de
Berkeley.
</para>
<para>
O banco de dados PostgreSQL é um produto Open Source disponível
sem nenhum custo. Para usar o suporte a PostgreSQL você precisa
do PostgreSQL 6.5 ou superior. PostgreSQL 7.0 ou superior para
habilitar todas as funções do módulo PostgreSQL. PostgreSQL suporta
muitos códigos de caracteres incluindo a codificação de carcateres
multibyte. A versão atual e maiores informações sobre PostgreSQL
está disponível em <ulink url="&url.pgsql;">&url.pgsql;</ulink>.
</para>
<para>
Para habilitar o suporte a PostgreSQL a opção de configuração
<option role="configure">--with-pgsql[=DIR]</option> é exigida quando
você compila o PHP. Se o módulo compartilhado está disponível, o módulo
PostgreSQL pode ser carregado usando a diretiva
<link linkend="ini.extension">extension</link> no &php.ini; ou
a função <function>dl</function>. Diretivas ini suportadas estão descritas
em <filename>php.ini-dist</filename> que vem com a distribuição.
</para>
<warning>
<para>
Usar o módulo PostgreSQL com o PHP 4.0.6 não é recomendado devido a
um bug no código de manipulação de mensagens de nota. Use o 4.1.0 ou
superior.
</para>
</warning>
<warning>
<para>
Os nomes das funções PostgreSQL serão alterados na versão 4.2.0 para
confirmar os padrões de programação atuais. A maioria dos novos nomes
terão sublinhados adicionais, por exemplo pg_lo_open(). Algumas funções
foram renomeadas para uma maior consistê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ções após esta, mas eles serão deletados em
um futuro próximo.
</para>
<table>
<title>Nomes de funçõ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á obsoleta para suportar conexões assíncronas no futoro. Por favor use
a string de conexão para <function>pg_connect</function>
e <function>pg_pconnect</function>.
</para>
</warning>
<para>
Nem todas as funções são suportadas por todas as compilações. Isso vai
depender da versão do seu libpq (A interface C do cliente PostgreSQL) e
como o seu libpq foi compilado. Se há alguma função ausente, a libpq não
suporta a característica exigida pela função.
</para>
<para>
Também é importante que você use uma libpq mais nova do que a que o
servidor espera. Se você usar uma libpq mais antiga do que a que o
servidor espera você poderá ter problemas.
</para>
<para>
Desde a versão 6.3 (03/02/1998) PostgreSQL usa sockets de domínio unix por
padrão. A porta TCP não será aberta por padrão. Uma tabela é mostrada
abaixo descrevendo essas novas possibilidades de conexão. Este socket será
encontrado em <filename>/tmp/.s.PGSQL.5432</filename>.
Espa opção pode ser habilitada com a chave '-i' para o
<command>postmaster</command> e seu significado é: "escute em sockets
TCP/IP assim como em sockets de domí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ã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á obsoleta.
</para>
<para>
Variáveis de ambiente afetam o comportamento do servidor/cliente
PostgreSQL. Por exemplo, o módulo PostgreSQL irá procurar pela variável de
ambiente PGHOST quando o nome de host é omitido na string de conexão. As
variáveis de ambiente suportadas variam de versão para versão. Vide o
Manual de PRogramador do PostgreSQL (Programmer´s Manual) na seção libpq -
Enviroment Variables para maiores detalhes.
</para>
<para>
Certifique-se que você definou as variáveis de ambiente para o usuário
apropriado. Use <literal>$_ENV</literal> ou <function>getenv</function>
para verificar que variáveis de ambiente estão disponíveis para o processo
atual.
</para>
<example>
<title>Definindo os parâmetros padrõ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ê pode armazenar até 1GB dentro de um
campo do tipo texto. Em versões mais antigas, isto era limitado ao tamanho
do bloco (padrão era 8KB e o máximo era 32KB definido em tempo de
compilação)
</para>
<para>
Para usar a interface de objetos grandes (lo), é exigido que se encapsule
as funções de objetos grandes dentro de um bloco de transação. Um bloco de
transação inicia-se com a declaração SQL <command>BEGIN</command> e se a
transação foi válida termina com <command>COMMIT</command> ou
<command>END</command>. Se a transaã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ê não deve fechar a conexã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
-->