[pgbr-geral] locale

2011-11-25 Por tôpico Marllos
Olá para todos...

Quando eu executo o comando \l tenho o seguinte resultado:

 Lista dos bancos de dados
 Nome |   Dono   | Codificação |  Collation  |Ctype|
Privilégios de acesso
--+--+-+-+-+---
 biblivre3| biblivre | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 jasperserver | jasperdb | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 postgres | postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 template0| postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
=c/postgres
   :
postgres=CTc/postgres
 template1| postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
=c/postgres
   :
postgres=CTc/postgres
(5 registros)

Quando instalei o Postgresql, baixei o arquivo da página e instalei no meu
Ubuntu 10.10, da forma mais automática possível. Em momento nenhum tive que
fazer qualquer coisa como initdb, como tenho lido no manual. Também, esses
parâmetros Collation e Ctype, surgiram de forma automática. Na hora de
criar um banco só vou no menu do PGAdmin e crio o banco. Os valores acima,
aparecem depois. Esses valores estão corretos? Por que até agora, tenho
apenas estudado o Postgres, ainda não experimentei nenhum tipo de acesso
fora do PGAdmin. Mais cedo ou mais tarde vou começar a escrever algum
código php para acessar uma base de dados do Postgres, e fico preocupado,
vocês sabem: com a grafia e ordenação de acentos e ç's.

Tem um techo do manual que eu gostaria de algum comentário, sobre tudo com
relação a questão dos acentos e ç's, que é o seguinte:

*A desvantagem de utilizar idiomas diferentes de C e POSIX no PostgreSQL é
o impacto no desempenho. Torna a*
*manipulação de caracteres mais lenta, e impede a utilização de índices
comuns na cláusula LIKE. Por estes motivos, a*
*utilização de idioma deve ser feita somente quando for realmente necessária
.*

Muito obrigado.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] locale

2011-11-25 Por tôpico Marllos
Em 25 de novembro de 2011 14:14, Guimarães Faria Corcete DUTRA, Leandro 
l...@dutras.org escreveu:

 2011/11/25 Marllos marl...@emater.mg.gov.br:
 
   biblivre3| biblivre | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 
  Quando instalei o Postgresql, baixei o arquivo da página

 Que arquivo de que página?

postgresql-9.1-1-linux-x64.bin
http://www.enterprisedb.com/products-services-training/pgdownload


  instalei no meu
  Ubuntu 10.10, da forma mais automática possível.

 O mais automático possível seria ‘aptitude install postgresql’…

na base do next


  esses
  parâmetros Collation e Ctype, surgiram de forma automática.

 São herdados do sistema operacional.


  Esses valores estão corretos?

 Sim.


  A desvantagem de utilizar idiomas diferentes de C e POSIX no PostgreSQL
 é o
  impacto no desempenho. Torna a
  manipulação de caracteres mais lenta

 O que geralmente é irrelevante…


  e impede a utilização de índices
  comuns na cláusula LIKE.

 Basta aprender a usar os índices adequados…


  Por estes motivos, a
  utilização de idioma deve ser feita somente quando for realmente
 necessária.

 E, em qualquer lugar onde não se fale inglês, ela geralmente é
 ‘realmente necessária’.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] locale

2011-11-25 Por tôpico Marllos
Obrigado Jota e Faria. Queria saber, se vocês que usam o Postgresql, usam
esses parametros que aparecem no meu. E se os meus parametros podem me dar
dor de cabeça depois, na hora de usar o banco de dados.

Em 25 de novembro de 2011 14:11, JotaComm jota.c...@gmail.com escreveu:

 Opa,

 Em 25 de novembro de 2011 14:06, Marllos marl...@emater.mg.gov.brescreveu:

 Olá para todos...

 Quando eu executo o comando \l tenho o seguinte resultado:

  Lista dos bancos de dados
  Nome |   Dono   | Codificação |  Collation  |Ctype|
 Privilégios de acesso

 --+--+-+-+-+---
  biblivre3| biblivre | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
  jasperserver | jasperdb | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
  postgres | postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
  template0| postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 =c/postgres
:
 postgres=CTc/postgres
  template1| postgres | UTF8| pt_BR.UTF-8 | pt_BR.UTF-8 |
 =c/postgres
:
 postgres=CTc/postgres
 (5 registros)

 Quando instalei o Postgresql, baixei o arquivo da página e instalei no
 meu Ubuntu 10.10, da forma mais automática possível. Em momento nenhum tive
 que fazer qualquer coisa como initdb, como tenho lido no manual. Também,
 esses parâmetros Collation e Ctype, surgiram de forma automática. Na
 hora de criar um banco só vou no menu do PGAdmin e crio o banco. Os valores
 acima, aparecem depois. Esses valores estão corretos? Por que até agora,
 tenho apenas estudado o Postgres, ainda não experimentei nenhum tipo de
 acesso fora do PGAdmin. Mais cedo ou mais tarde vou começar a escrever
 algum código php para acessar uma base de dados do Postgres, e fico
 preocupado, vocês sabem: com a grafia e ordenação de acentos e ç's.

 Tem um techo do manual que eu gostaria de algum comentário, sobre tudo
 com relação a questão dos acentos e ç's, que é o seguinte:

 *A desvantagem de utilizar idiomas diferentes de C e POSIX no PostgreSQL
 é o impacto no desempenho. Torna a*
 *manipulação de caracteres mais lenta, e impede a utilização de índices
 comuns na cláusula LIKE. Por estes motivos, a*
 *utilização de idioma deve ser feita somente quando for realmente
 necessária.*


 Não entendi sua dúvida.


 Muito obrigado.

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] locale

2011-11-25 Por tôpico Marllos

 O apt (apt-get, aptitude) é ainda mais simples, e instala uma versão
 específica da distribuição.


Mas ai eu caio na versão 8.4.9 e os meu colegas aqui da Lista ficam que
perguntando por que eu estou usando uma versão antiga!!! (rsss) . Ok, tem
como usar o apt-get e pegar a versão 9.1.1?

Obrigado.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
Com relação ao export que vc sugeriu, eu fiz o teste, mas com outra
variável ambiente:
PGPASSWORD='senha'; export PGPASSWORD

Deu certo, mas o manual diz que essa variável está em obsolescência. Então
não vou usá-la.

Eu fiz vários testes, o que eu pudi concluir foi o seguinte:

O usuário tem que fazer o backup do seu próprio banco, só assim o .pgpass
funciona. Por exemplo: se o usuário postgres fizer o backup do seu banco
postgres:

bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft postgres  arquivo
/var/lib/postgresql/.pgpass (com o conteudo -)
localhost:5432:postgres:postgres:senha_do_postgres

Funciona, mas se o usuário postgres tentar fazer o backup de outro banco,
por exemplo:

bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft outro_banco  arquivo
/var/lib/postgresql/.pgpass (com o conteudo -)
localhost:5432:postgres:outro_banco:senha_do_postgres  ou
/var/lib/postgresql/.pgpass (com o conteudo -)
localhost:5432:postgres:postgres:senha_do_postgres

Nesse caso o .pgpass não funciona, sendo a senha solicitada para o usuário
postgres.

Eu entendo que se o comando no script for:
pg_dump -U postgres -Ft outro_banco  arquivo
então o .pgpass deveria funcionar com uma linha do tipo:
localhost:5432:postgres:outro_banco:senha_do_postgres

É isso, ou estou redondamente enganado (espero que sim)?


Marllos.

Em 23 de novembro de 2011 23:01, Flavio Henrique Araque Gurgel 
fha...@gmail.com escreveu:

 Em 23 de novembro de 2011 09:49, Marllos marl...@emater.mg.gov.br
 escreveu:
  Obrigado Flávio. Na verdade estou estudando um pouco o Postgresql, e no
  momento estou tentando entender o uso do arquivo .pgpass. No manual diz:

 Ótimo, mais pessoas estudando PostgreSQL sempre é bom.

  é um arquivo que contém senhas a serem utilizadas se a
  conexão requisitar uma senha (e a senha não tiver sido especificada de
 outra
  maneira).
 
  Mas não está funcionando comigo. Eu tenho que fornecer a senha quando eu
 ou
  o cron(root) executa o scritp. Depois, concerteza quero experimentar
 também
  pelo método do ident.

 E colocando o export no começo do script deu certo?
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
Jota, estão assim sim...

# local is for Unix domain socket connections only
local   all all   md5

mas tem outra entrada antes:

# Database administrative login by UNIX sockets
local   all   postgres  md5

Em 24 de novembro de 2011 10:47, JotaComm jota.c...@gmail.com escreveu:



 Em 23 de novembro de 2011 09:49, Marllos marl...@emater.mg.gov.brescreveu:

 Obrigado Flávio. Na verdade estou estudando um pouco o Postgresql, e no
 momento estou tentando entender o uso do arquivo .pgpass. No manual diz:


 *é um arquivo que contém senhas a serem utilizadas se a
 conexão requisitar uma senha (e a senha não tiver sido especificada de
 outra maneira).*

 Mas não está funcionando comigo. Eu tenho que fornecer a senha quando eu
 ou o cron(root) executa o scritp. Depois, concerteza quero experimentar
 também pelo método do ident.


 Qual a linha do psql que você está usando para tentar conectar?

 Veja um exemplo:

 -rw--- 1 joaopaulo joaopaulo 41 Nov 24 10:44 .pgpass

 O conteúdo do meu arquivo .pgpass

 localhost:5432:postgres:meusuario:$senha

 Simulação de conexão:

 psql postgres -U meusuario
 Welcome to psql 8.3.8, the PostgreSQL interactive terminal.
 Type:  \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

 postgres= SELECT current_user;
  current_user
 --
  meusuario
 (1 row)

 E o meu arquivo pg_hba.conf está assim:

 # local is for Unix domain socket connections only
 local   all all   md5

 Suas configurações estão assim também?


 Em 22 de novembro de 2011 23:45, Flavio Henrique Araque Gurgel 
 fha...@gmail.com escreveu:

  local foi só um dos teste de desespero.
  estou colocando mesmo é localhost. Mas o que vc falou acho que não
 testei no
  linux, o windows para que não funcionou. Amanha vou testar no
 trabalho...
  Obrigado.

 Observações úteis:
 1) Você está em Linux, porque não esquece esse negócio de .pgpass e
 coloca ident no pg_hba.conf? O efeito é o mesmo (acho até mais
 seguro).
 2) O cron *não* lê variáveis de ambiente ao inicializar scripts.
 Exporte a variável $HOME no início do seu script que deve resolver,
 assim (se o .pgpass estiver em /home/postgres:
 export HOME=/home/postgres

 []s
 Flavio Gurgel
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
O Jota, muito obrigado. O meu raciocínio estava invertido:

Em vez de digitar
nome_do_hospedeiro:porta:nome_do_banco_de_dados:nome_do_usuário:senha

eu digitei
nome_do_hospedeiro:porta:nome_do_usuário:nome_do_banco_de_dados:senha

Em 24 de novembro de 2011 11:32, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 24 de novembro de 2011 11:12, Marllos marl...@emater.mg.gov.brescreveu:

 Com relação ao export que vc sugeriu, eu fiz o teste, mas com outra
 variável ambiente:
 PGPASSWORD='senha'; export PGPASSWORD

 Deu certo, mas o manual diz que essa variável está em obsolescência.
 Então não vou usá-la.

 Eu fiz vários testes, o que eu pudi concluir foi o seguinte:

 O usuário tem que fazer o backup do seu próprio banco, só assim o .pgpass
 funciona. Por exemplo: se o usuário postgres fizer o backup do seu banco
 postgres:


 Como assim fazer o backup do seu próprio banco? Isso não faz nenhum
 sentido.


 bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft postgres  arquivo
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:postgres:senha_do_postgres


 Neste caso o usuário postgres só se conecta ao banco postgres sem pedir a
 senha.


 Funciona, mas se o usuário postgres tentar fazer o backup de outro banco,
 por exemplo:

 bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft outro_banco 
 arquivo
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:outro_banco:senha_do_postgres  ou
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:postgres:senha_do_postgres

 Nesse caso o .pgpass não funciona, sendo a senha solicitada para o
 usuário postgres.


 Sim, porque você tem que liberar no arquivo .pgpass para outros bancos,
 por exemplo:

  localhost:5432:postgres:postgres:senha_do_postgres
  localhost:5432:outro_banco:postgres:senha_do_postgres

 Só com o arquivo .pgpass neste formato é que vai funcionar como você
 deseja.




 Eu entendo que se o comando no script for:
 pg_dump -U postgres -Ft outro_banco  arquivo
 então o .pgpass deveria funcionar com uma linha do tipo:
 localhost:5432:postgres:outro_banco:senha_do_postgres

 É isso, ou estou redondamente enganado (espero que sim)?


 Marllos.

 Em 23 de novembro de 2011 23:01, Flavio Henrique Araque Gurgel 
 fha...@gmail.com escreveu:

 Em 23 de novembro de 2011 09:49, Marllos marl...@emater.mg.gov.br
 escreveu:
  Obrigado Flávio. Na verdade estou estudando um pouco o Postgresql, e no
  momento estou tentando entender o uso do arquivo .pgpass. No manual
 diz:

 Ótimo, mais pessoas estudando PostgreSQL sempre é bom.

  é um arquivo que contém senhas a serem utilizadas se a
  conexão requisitar uma senha (e a senha não tiver sido especificada de
 outra
  maneira).
 
  Mas não está funcionando comigo. Eu tenho que fornecer a senha quando
 eu ou
  o cron(root) executa o scritp. Depois, concerteza quero experimentar
 também
  pelo método do ident.

 E colocando o export no começo do script deu certo?
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
Nos testes estavam dando certo, por que eu estava usando bancos onde o nome
do usuario era o mesmo do que o nome dos bancos, e eu realmente achei muito
sem sentido

Em 24 de novembro de 2011 12:21, Marllos marl...@emater.mg.gov.brescreveu:

 O Jota, muito obrigado. O meu raciocínio estava invertido:

 Em vez de digitar
 nome_do_hospedeiro:porta:nome_do_banco_de_dados:nome_do_usuário:senha

 eu digitei
 nome_do_hospedeiro:porta:nome_do_usuário:nome_do_banco_de_dados:senha

 Em 24 de novembro de 2011 11:32, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 24 de novembro de 2011 11:12, Marllos marl...@emater.mg.gov.brescreveu:

 Com relação ao export que vc sugeriu, eu fiz o teste, mas com outra
 variável ambiente:
 PGPASSWORD='senha'; export PGPASSWORD

 Deu certo, mas o manual diz que essa variável está em obsolescência.
 Então não vou usá-la.

 Eu fiz vários testes, o que eu pudi concluir foi o seguinte:

 O usuário tem que fazer o backup do seu próprio banco, só assim o
 .pgpass funciona. Por exemplo: se o usuário postgres fizer o backup do seu
 banco postgres:


 Como assim fazer o backup do seu próprio banco? Isso não faz nenhum
 sentido.


 bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft postgres 
 arquivo
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:postgres:senha_do_postgres


 Neste caso o usuário postgres só se conecta ao banco postgres sem pedir a
 senha.


 Funciona, mas se o usuário postgres tentar fazer o backup de outro
 banco, por exemplo:

 bkp.sh (com o conteudo -) ... pg_dump -U postgres -Ft outro_banco 
 arquivo
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:outro_banco:senha_do_postgres  ou
 /var/lib/postgresql/.pgpass (com o conteudo -)
 localhost:5432:postgres:postgres:senha_do_postgres

 Nesse caso o .pgpass não funciona, sendo a senha solicitada para o
 usuário postgres.


 Sim, porque você tem que liberar no arquivo .pgpass para outros bancos,
 por exemplo:

  localhost:5432:postgres:postgres:senha_do_postgres
  localhost:5432:outro_banco:postgres:senha_do_postgres

 Só com o arquivo .pgpass neste formato é que vai funcionar como você
 deseja.




 Eu entendo que se o comando no script for:
 pg_dump -U postgres -Ft outro_banco  arquivo
 então o .pgpass deveria funcionar com uma linha do tipo:
 localhost:5432:postgres:outro_banco:senha_do_postgres

 É isso, ou estou redondamente enganado (espero que sim)?


 Marllos.

 Em 23 de novembro de 2011 23:01, Flavio Henrique Araque Gurgel 
 fha...@gmail.com escreveu:

 Em 23 de novembro de 2011 09:49, Marllos marl...@emater.mg.gov.br
 escreveu:
  Obrigado Flávio. Na verdade estou estudando um pouco o Postgresql, e
 no
  momento estou tentando entender o uso do arquivo .pgpass. No manual
 diz:

 Ótimo, mais pessoas estudando PostgreSQL sempre é bom.

  é um arquivo que contém senhas a serem utilizadas se a
  conexão requisitar uma senha (e a senha não tiver sido especificada
 de outra
  maneira).
 
  Mas não está funcionando comigo. Eu tenho que fornecer a senha quando
 eu ou
  o cron(root) executa o scritp. Depois, concerteza quero experimentar
 também
  pelo método do ident.

 E colocando o export no começo do script deu certo?
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
Sim, muito importante concluir.

Funcionou exatamente como eu queria!

Com a ajuda de todos, e principalmente Jota e Euler: o resumo

O arquivo .pgpass é um arquivo que fornece a senha de acordo com os
parâmetros da conexão presentes no comando, por exemplo: psql, pg_dump,
pg_restore, etc

1) Deve estar localizado na pasta home do usário (so) que executa o
comando, por exemplo:

root - /root/.pgpass
postgres - /var/lib/postgresql/.pgpass  (na minha instalação Postgresql
9.1.1/Ubuntu 10.10)
fulano - /home/fulano/.pgpass

2) Precisa ter permissões 0600 e pertencer ao usário que executa o comando

3) cada linha do .pgpass deve ter o formato
nome_do_hospedeiro:porta:nome_do_banco_de_dados:nome_do_usuário:senha
localhost:5432:meu_banco:usuario:senha
localhost:5432:*:postgres:senha_postgres


Muito obrigado.


Em 24 de novembro de 2011 12:57, Dickson S. Guedes
lis...@guedesoft.netescreveu:

 Em 24-11-2011 12:36, Marllos escreveu:
  Nos testes estavam dando certo, por que eu estava usando bancos onde o
  nome do usuario era o mesmo do que o nome dos bancos, e eu realmente
  achei muito sem sentido

 Por questões de histórico, funcionou então?

 --
 Dickson S. Guedes
 mail/xmpp: gue...@guedesoft.net - skype: guediz
 http://guedesoft.net - http://www.postgresql.org.br
 http://github.net/guedes - twitter: @guediz
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-24 Por tôpico Marllos
Logo depois que eu enviei o último email, lembrei que eu não tinha testado
o crontab
Fui testar e nada funcionou, olhei a questão do export e não resolveu.
Pensei, vou verificar tudo antes de escrever de novo

Depois de umas três horas testando isso e aquilo, eu descobri o
erro... misericórdia!

Olha só: estou acessando o meu servidor linux, que tem o postgresql, via
Putty e o cron é dele,
mas no momento olhar a hora para testar o cron, eu olhava no relogio do meu
Windows 7, que está uns 10 minutos atrasado.
Então, quando passava o horario certinho programado no cron, eu ia
verificar se tinha arquivo e nada...

Quando a ficha caiu, passei a olhar a hora do servidor e tá tudo
funcionandoo cron inclusive

Já pensou?





Em 24 de novembro de 2011 13:53, Marllos marl...@emater.mg.gov.brescreveu:

 Sim, muito importante concluir.

 Funcionou exatamente como eu queria!

 Com a ajuda de todos, e principalmente Jota e Euler: o resumo

 O arquivo .pgpass é um arquivo que fornece a senha de acordo com os
 parâmetros da conexão presentes no comando, por exemplo: psql, pg_dump,
 pg_restore, etc

 1) Deve estar localizado na pasta home do usário (so) que executa o
 comando, por exemplo:

 root - /root/.pgpass
 postgres - /var/lib/postgresql/.pgpass  (na minha instalação Postgresql
 9.1.1/Ubuntu 10.10)
 fulano - /home/fulano/.pgpass

 2) Precisa ter permissões 0600 e pertencer ao usário que executa o comando

 3) cada linha do .pgpass deve ter o formato

 nome_do_hospedeiro:porta:nome_do_banco_de_dados:nome_do_usuário:senha
 localhost:5432:meu_banco:usuario:senha
 localhost:5432:*:postgres:senha_postgres


 Muito obrigado.


 Em 24 de novembro de 2011 12:57, Dickson S. Guedes 
 lis...@guedesoft.netescreveu:

 Em 24-11-2011 12:36, Marllos escreveu:
  Nos testes estavam dando certo, por que eu estava usando bancos onde o
  nome do usuario era o mesmo do que o nome dos bancos, e eu realmente
  achei muito sem sentido

 Por questões de histórico, funcionou então?

 --
 Dickson S. Guedes
 mail/xmpp: gue...@guedesoft.net - skype: guediz
 http://guedesoft.net - http://www.postgresql.org.br
 http://github.net/guedes - twitter: @guediz
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-23 Por tôpico Marllos
Obrigado Flávio. Na verdade estou estudando um pouco o Postgresql, e no
momento estou tentando entender o uso do arquivo .pgpass. No manual diz:

*é um arquivo que contém senhas a serem utilizadas se a
conexão requisitar uma senha (e a senha não tiver sido especificada de
outra maneira).*

Mas não está funcionando comigo. Eu tenho que fornecer a senha quando eu ou
o cron(root) executa o scritp. Depois, concerteza quero experimentar também
pelo método do ident.

Em 22 de novembro de 2011 23:45, Flavio Henrique Araque Gurgel 
fha...@gmail.com escreveu:

  local foi só um dos teste de desespero.
  estou colocando mesmo é localhost. Mas o que vc falou acho que não
 testei no
  linux, o windows para que não funcionou. Amanha vou testar no trabalho...
  Obrigado.

 Observações úteis:
 1) Você está em Linux, porque não esquece esse negócio de .pgpass e
 coloca ident no pg_hba.conf? O efeito é o mesmo (acho até mais
 seguro).
 2) O cron *não* lê variáveis de ambiente ao inicializar scripts.
 Exporte a variável $HOME no início do seu script que deve resolver,
 assim (se o .pgpass estiver em /home/postgres:
 export HOME=/home/postgres

 []s
 Flavio Gurgel
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] backup/restore

2011-11-22 Por tôpico Marllos
Obrigado a todos. Vou procurar nos arquivos 

Em 21 de novembro de 2011 23:24, Leandro DUTRA, Guimarães Faria Corcete 
l...@dutras.org escreveu:

 Le 2011-21-11 22h24, Marllos a écrit :

  Obrigado Jota. Estou usando PG 9.1.1. Pois é, ainda não entendi bem como
 é essa questão de tamplate 0 e template 1.


 Marlos, isso foi explicado recentemente.  Podes procurar nos arquivos?

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] backup/restore

2011-11-22 Por tôpico Marllos
Dei uma olhada. mas ta difícil procurar ... alguém sabe o texto
do assunto? ou o mês?

Em 22 de novembro de 2011 08:37, Marllos marl...@emater.mg.gov.brescreveu:

 Obrigado a todos. Vou procurar nos arquivos 

 Em 21 de novembro de 2011 23:24, Leandro DUTRA, Guimarães Faria Corcete
 l...@dutras.org escreveu:

 Le 2011-21-11 22h24, Marllos a écrit :

  Obrigado Jota. Estou usando PG 9.1.1. Pois é, ainda não entendi bem como
 é essa questão de tamplate 0 e template 1.


 Marlos, isso foi explicado recentemente.  Podes procurar nos arquivos?



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] backup/restore

2011-11-22 Por tôpico Marllos
valeu

Em 22 de novembro de 2011 12:53, Osvaldo Kussama
osvaldo.kuss...@gmail.comescreveu:

 Em 22 de novembro de 2011 10:54, Marllos marl...@emater.mg.gov.br
 escreveu:
  Dei uma olhada. mas ta difícil procurar ... alguém sabe o
 texto
  do assunto? ou o mês?
 
  Em 22 de novembro de 2011 08:37, Marllos marl...@emater.mg.gov.br
  escreveu:
 
  Obrigado a todos. Vou procurar nos arquivos 
 
  Em 21 de novembro de 2011 23:24, Leandro DUTRA, Guimarães Faria
 Corcete
  l...@dutras.org escreveu:
 
  Le 2011-21-11 22h24, Marllos a écrit :
 
  Obrigado Jota. Estou usando PG 9.1.1. Pois é, ainda não entendi bem
 como
  é essa questão de tamplate 0 e template 1.
 
  Marlos, isso foi explicado recentemente.  Podes procurar nos arquivos?
 
 



 http://listas.postgresql.org.br/pipermail/pgbr-geral/2011-November/028025.html


 http://www.postgresql.org/docs/current/interactive/manage-ag-templatedbs.html

 Osvaldo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] pgpass

2011-11-22 Por tôpico Marllos
Olá para todos

Mais uma vez preciso de ajuda!

Não estou conseguindo usar o .pgpass!

com o usuário postgres no terminal dei o comando cd ~ e cai na pasta
/var/lib/postgresql
Nessa pasta crie o arquivo .pgpass com a permissão 0600 veja:

postgres@st100:~$ ls -lha
total 24K
drwxr-xr-x  3 postgres postgres 4,0K 2011-11-22 16:48 .
drwxr-xr-x 70 root root 4,0K 2011-10-26 19:06 ..
drwxr-xr-x  3 postgres postgres 4,0K 2010-11-16 13:59 8.4
-rw---  1 postgres postgres 2,0K 2011-11-22 16:34 .bash_history
-rw---  1 postgres postgres   43 2011-11-22 16:58 .pgpass
-rw---  1 postgres postgres  653 2011-11-17 17:23 .psql_history

postgres@omega:~$ pwd
/var/lib/postgresql

O conteudo do arquivo .pgpass é

local:5433:postgres:postgres:$enha (a senha tem um $)
também tentei localhost:5433:postgres:postgres:\$enha

Também criei a pasta /home/postgres e copiei esse arquivo nela também

O meu arquivo pg_hba.conf está como

local   all   postgres  md5

Faço um reload no servidor posgresql e sempre que eu rodo o script de
backup, é pedido a senha.
Não sei mais o que fazer! Alguem pode me ajudar? Esse arquivo .pgpass
funciona com essa finalidade de informar a senha quando um script e rodado?
Alguma coisa eu to fazendo de muito errado...

Obrigado.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-22 Por tôpico Marllos
O comando é para ser executado no cron, mas estou executando o comando do
terminal para fazer o teste.

Estou em casa agora, mas é mais ou menos assim:

scrip está na pasta
/var/bancos/script/bkp-meubanco.sh

o conteúdo do script
#formo o nome do arquivo com a data
pg_dump -U postgres -Ft banco  /var/bancos/bkp/arquivo-bkp.tar

/var/lib/postgresql/.pgpass (proprietario postgres, permissão rw- --- ---)
e também em
/home/postgres/.pgpass (essa pasta não exitia, eu criei: proprietario
postgres, permissão rw- --- ---)
local:5433:postgres:postgres:$enha

Então o root executa o comando:
root@maq:# /var/bancos/script/bkp-meubanco.sh

Meu raciocínio é que que chama o script tem que ter permissão na pasta onde
o arquivo-bkp.tar vai ser gravado, a senha que é solicitada é do usuário
declarado em -U postgres, parece que o arquivo .pgpass é ignorado e se eu
forneço a senha, o script termina com sucesso.

Em 22 de novembro de 2011 16:18, Dickson S. Guedes
lis...@guedesoft.netescreveu:

 Em 22-11-2011 18:14, Marllos escreveu:
 ...
  Faço um reload no servidor posgresql e sempre que eu rodo o script de
  backup, é pedido a senha.

 E como você está executando este script? Pela linha de comando com o
 usuário postgres? Você pode colar a linha de comando que você está
 utilizando para executar o script?


 []s
 --
 Dickson S. Guedes
 mail/xmpp: gue...@guedesoft.net - skype: guediz
 http://guedesoft.net - http://www.postgresql.org.br
 http://github.net/guedes - twitter: @guediz
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-22 Por tôpico Marllos
O Windows está até mais fácil de testar e estou com o mesmo problema. Pede
a senha quando eu rodo o arquivo bat na mão. Quando eu agendo, o prompt do
dos aparece solicitando a senha. Se eu informo, o backp procede com
sucesso. Então o script bat e sh estão corretos. O que eu acho que está
errado é o arquivo .pgpass no linux e pgpass.conf no windows.

Como eu disse estou editando esses arquivos com o seguinte conteudo:
localhost:5433:postgres:postgres:agora_senha_so_de_numero

No windows, esse arquivo já vem instalado, eu só editei.

Em 22 de novembro de 2011 21:27, Marllos marl...@emater.mg.gov.brescreveu:

 O comando é para ser executado no cron, mas estou executando o comando do
 terminal para fazer o teste.

 Estou em casa agora, mas é mais ou menos assim:

 scrip está na pasta
 /var/bancos/script/bkp-meubanco.sh

 o conteúdo do script
 #formo o nome do arquivo com a data
 pg_dump -U postgres -Ft banco  /var/bancos/bkp/arquivo-bkp.tar

 /var/lib/postgresql/.pgpass (proprietario postgres, permissão rw- --- ---)
 e também em
 /home/postgres/.pgpass (essa pasta não exitia, eu criei: proprietario
 postgres, permissão rw- --- ---)

 local:5433:postgres:postgres:$enha

 Então o root executa o comando:
 root@maq:# /var/bancos/script/bkp-meubanco.sh

 Meu raciocínio é que que chama o script tem que ter permissão na pasta
 onde o arquivo-bkp.tar vai ser gravado, a senha que é solicitada é do
 usuário declarado em -U postgres, parece que o arquivo .pgpass é ignorado e
 se eu forneço a senha, o script termina com sucesso.

 Em 22 de novembro de 2011 16:18, Dickson S. Guedes 
 lis...@guedesoft.netescreveu:

 Em 22-11-2011 18:14, Marllos escreveu:
 ...
  Faço um reload no servidor posgresql e sempre que eu rodo o script de
  backup, é pedido a senha.

 E como você está executando este script? Pela linha de comando com o
 usuário postgres? Você pode colar a linha de comando que você está
 utilizando para executar o script?


 []s
 --
 Dickson S. Guedes
 mail/xmpp: gue...@guedesoft.net - skype: guediz
 http://guedesoft.net - http://www.postgresql.org.br
 http://github.net/guedes - twitter: @guediz
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] pgpass

2011-11-22 Por tôpico Marllos
local foi só um dos teste de desespero.
estou colocando mesmo é localhost. Mas o que vc falou acho que não testei
no linux, o windows para que não funcionou. Amanha vou testar no trabalho...
Obrigado.

Em 22 de novembro de 2011 22:05, Euler Taveira de Oliveira 
eu...@timbira.com escreveu:

 On 22-11-2011 20:27, Marllos wrote:
  /var/lib/postgresql/.pgpass (proprietario postgres, permissão rw- ---
 ---) e
  também em
  /home/postgres/.pgpass (essa pasta não exitia, eu criei: proprietario
  postgres, permissão rw- --- ---)
  local:5433:postgres:postgres:$enha
 
 O arquivo .pgpass deve ficar na diretório $HOME do usuário do sistema
 operacional que executa o script, ou seja, o caminho indicado pelo comando
 'echo $HOME'. Quanto ao conteúdo do arquivo, ele deve ser:

 maquina:porta:bancodedados:usuario:senha

 A não ser que exista uma máquina chamada 'local' mas acho que você quer
 dizer
 'localhost'.


 --
   Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] backup/restore

2011-11-21 Por tôpico Marllos
Olá pessoal!

Estou em fase de estudo do PostgreSQL, dai tenho experimentado vários
comandos. Um deles é o backup/restore, onde estou usando o seguinte formato:

$ pg_dump -U postgres -Ft banco  arquivo.tar

e depois

$ pg_restore -U postgres -d banco arquivo.tar ou $ pg_restore -U postgres
-c -d banco arquivo.tar

As vezes o dump é num servidor, e o restore é em outro, etc. Mas eu sempre
recebo a msg informando que a linguagem plpgsql já está instalada. Eu sei
que isto não está sendo problema, mas como eu faço para evitar essa
mensagem?

Obrigado.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] backup/restore

2011-11-21 Por tôpico Marllos
Obrigado Jota. Estou usando PG 9.1.1. Pois é, ainda não entendi bem como é
essa questão de tamplate 0 e template 1. Eu realmente não sei qual template
estou usando. Como faço para saber?

Marllos

Em 21 de novembro de 2011 22:19, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 21 de novembro de 2011 21:40, Marllos marl...@emater.mg.gov.brescreveu:

 Olá pessoal!

 Estou em fase de estudo do PostgreSQL, dai tenho experimentado vários
 comandos. Um deles é o backup/restore, onde estou usando o seguinte formato:

 $ pg_dump -U postgres -Ft banco  arquivo.tar

 e depois

 $ pg_restore -U postgres -d banco arquivo.tar ou $ pg_restore -U postgres
 -c -d banco arquivo.tar

 As vezes o dump é num servidor, e o restore é em outro, etc. Mas eu
 sempre recebo a msg informando que a linguagem plpgsql já está instalada.
 Eu sei que isto não está sendo problema, mas como eu faço para evitar essa
 mensagem?


 Qual a versão do seu PostgreSQL?

 Isso acontece porque você deve estar usando como template o banco
 tamplate1 na hora de criação do banco para o pg_restore.

 Se você quer que isso não aconteça mais, basta se conectar no banco
 template1 e deleter a linguagem plpgsql.


 Obrigado.

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços

 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-18 Por tôpico Marllos

 Independente do COPY ou dos INSERTS.
 COPY é mais rápido que INSERTS? Sim.

 Com COPY vai ficar mais rápido que no Firebird? Depende.
 Depende do hardware todo, máquina, CPU, memória, discos, índices, etc.
 Depende do tuning.

 O Firebird por padrão é inseguro, não faz os fsyncs. Precisa montar
 discos com noasync para garantir. Já perdi bancos Firebird por isso, e
 os desenvolvedores dizem que a culpa é do kernel do Linux.

 Pra comparar (injustamente) o PostgreSQL com o Firebird, tem que
 botar o PostgreSQL em modo inseguro, desligando o fsync.
 Outra coisa, o MVCC do PostgreSQL é diferente do Firebird.
 O principal (além do fsync), o Firebird *NÃO* faz logs de transação.
 PostgreSQL faz. Isso causa um overhead na escrita do PostgreSQL, mas o
 aumento da segurança dos seus dados é BRUTAL.

 Então, não compare mais Firebird com PostgreSQL numa carga de dados de
 2 minutos. É pura e absoluta perda de seu precioso tempo.
 Os 60 minutos estavam errados, com certeza, coisa do PgAdmin ou da sua
 rede.
 Agora, 2 minutos contra 1, isso é absolutamente normal, aceitável e
 indigno de qualquer nota especial.

 []s
 Flavio Gurgel


Muito obrigado a todos. pelas dicas e sugestões.

Só um detalhe eu não queria comparar Postgresql e Firebird, para saber que
é o melhor ou o mais rápido, como eu disse no primeiro post. Nem entendo
muito de banco de dados para isso. O problema era um script, executado num
servidor (local) que estava demorando muito... O Firebird era
apenas uma comparação (como diz a Concessa). Quero incentivar o pessoal
daqui da empresa a mudar para o Postgresql. O grande problema são as mais
de duzentas procedures para 2 ou 3 pessoas converterem...
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-17 Por tôpico Marllos

 Marlos,

 Diga quais são os valores dos parâmetros shared_buffers e
 checkpoint_segments.

 att.

 Danilo


shared_buffers = 24MB

#checkpoint_segments = 3# in logfile segments, min 1, 16MB each

#checkpoint_timeout = 5min# range 30s-1h
#checkpoint_completion_target = 0.5# checkpoint target duration, 0.0 -
1.0
#checkpoint_warning = 30s# 0 disables
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-17 Por tôpico Marllos
 Marllos, sugiro a leitura desta parte do manual do PostgreSQL, que trata
 justamente sobre grande quantidade de INSERTS para popular um banco de
 dados:

 http://www.postgresql.org/docs/8.4/static/populate.html


 ainda, segue abaixo o link para uma página mostrando como montar os
 INSERTS para serem mais rápidos, caso não consiga usar o comando COPY:

 http://kaiv.wordpress.com/2007/07/19/faster-insert-for-multiple-rows/


 Marçal de Lima Hokama

--


Fica um pouco dificil para mim, por que eu teria que gerar as linhas do
script mas é bom saber dessa possibilidade e comparar com o script sem
o copy
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-17 Por tôpico Marllos
Usei agora o psql na minha máquina mais simples

psql -U postgres -q banco  arquivo.sql

E o resultado foi muito mais rápido:
*1 min e 49 s* na minha máquina HP

Eu só não gostei foi que o Firebird continua na frente:
0 min e 41 s na minha máquina HP.

O resultado do PGAdminIII era *66 min* na máquina +parruda e 2 horas numa
maquina mais simples que tenho em casa. No HP não testei o PGAdminIII

Muito obrigado a todos
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-17 Por tôpico Marllos
 Marlos,

 Diga quais são os valores dos parâmetros shared_buffers e
 checkpoint_segments.

 att.

 Danilo


 shared_buffers = 24MB

 #checkpoint_segments = 3# in logfile segments, min 1, 16MB each

 #checkpoint_timeout = 5min# range 30s-1h
 #checkpoint_completion_target = 0.5# checkpoint target duration, 0.0 -
 1.0
 #checkpoint_warning = 30s# 0 disables


Esses valores estão bons?
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-17 Por tôpico Marllos
com certeza compesa, vou arrumar um tempinho e fazer

Em 17 de novembro de 2011 17:52, Flávio Alves Granato 
flavio.gran...@gmail.com escreveu:

 Em 17 de novembro de 2011 17:48, Marllos marl...@emater.mg.gov.brescreveu:

 Eu não fiz com o copy por que eu teria que gerar o scritp, a partir do
 firebird, com o copy


 Para questão de testes compensa, não? Pois é mais uma possibilidade que
 você elimina.

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
Boa tarde a todos.
Não quero entrar naquela velha discussão: quem é melhor? Mas eu quero
entender.
Tenho um banco de dados Firebird, com 54 tabelas com tamanho total de 30
MB. Migrei esse banco todo para o PostgreSQL 8.4.9. No PostgreSQL o tamanho
do banco ficou em torno dos 30 MB também. Só que o script de criação do
banco, que cria tudo: tabelas, índices, trigger, etc, quando executado para
o Firbird, gasta 133 segundos (2 min), enquanto que no PostgreSQL, com uma
máquina muito superior, gasta 4003055 ms = 66 min. Por que existe toda essa
diferença? O Postgresql levou um tempo 30 vezes maior! O que pode estar
errado? Alguma sugestão?

Obrigado.

Marllos.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
Eu vou instalar uma versão mais nova, quando eu fiz o apt-get ele caiu
automaticamente nessa versao.
Pus um start transaction o inicio e um commit no final geral, isso só já
resolveria? Por que parece que vai gastar o mesmo tempo...

Sobre as configurações do servidor, ainda náo aprendi sobre elas. estou
no começando agora. O primeiro exercicio que me propus foi converter uma
base antiga em postgresql. Isto para aprender a sintaxe e o plgpsql. E toda
a minha fonte de consulta é o manual oficial e esta lista.

Em 16 de novembro de 2011 14:53, Daniel Cristian Cruz 
danielcrist...@gmail.com escreveu:

 Marllos,

 A primeira coisa, na carga por SQL deve ser verificado se os dados
 estão dentro de transações (você pode adicionar START TRANSACTION;
 antes do primeiro INSERT e COMMIT; depois do último INSERT de cada
 tabela).

 A segunda coisa a ser verificada é se a configuração está adequada
 para o servidor novo. O arquivo de configuração pode estar padrão, e
 isso pode limitar um pouco o desempenho.

 A terceira coisa a verificar é a versão. Por quê a versão antiga? Não
 é o caso, mas nas versões 9.0 em diante, uma carga de um dump através
 do comando pg_restore do PostgreSQL, pode ter a opção -j, que indica o
 número de tarefas paralelas de restore, que pode usar o processamento
 ocioso de sistemas com vários processadores.

 Atenciosamente,

 Em 16 de novembro de 2011 14:43, Marllos marl...@emater.mg.gov.br
 escreveu:
  Boa tarde a todos.
  Não quero entrar naquela velha discussão: quem é melhor? Mas eu quero
  entender.
  Tenho um banco de dados Firebird, com 54 tabelas com tamanho total de 30
 MB.
  Migrei esse banco todo para o PostgreSQL 8.4.9. No PostgreSQL o tamanho
 do
  banco ficou em torno dos 30 MB também. Só que o script de criação do
 banco,
  que cria tudo: tabelas, índices, trigger, etc, quando executado para o
  Firbird, gasta 133 segundos (2 min), enquanto que no PostgreSQL, com uma
  máquina muito superior, gasta 4003055 ms = 66 min. Por que existe toda
 essa
  diferença? O Postgresql levou um tempo 30 vezes maior! O que pode estar
  errado? Alguma sugestão?
 
  Obrigado.
 
  Marllos.
 
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 



 --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
Tentei o script com o start transaction na primeira linha e um commit na
útima. O script demorou 3995947 ms que dá 66 min novamente. Ainda teve uma
msg de erro no últimos inserts informando que a transação atual foi
interrompida.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
É o seguinte: primeiro eu crio o banco vazio, então rodo o script no
PgAdminIII que:
1) cria os sequences
2) cria as tabelas
3) crias as views
4) insere os dados
5) cria as constrainsts,
6) cria as functions e triggers

O banco é criado normalmente. Inclusive eu consigo fazer bacup e restore do
banco. O problema é que o firebird faz isso em 2 min e o Postgresql está
fazendo em 66 min.

Estou fazendo o processo novamente e vou verificar o log para ver se tem
alguma dica nele, então eu posto.


Obrigado pelas ajudas


Marllos.

Em 16 de novembro de 2011 17:01, Daniel Cristian Cruz 
danielcrist...@gmail.com creveu:

 Em 16 de novembro de 2011 16:53, Marllos 
 marllos@emater.marl...@emater.mg.gov.br
 Tentei o script com o start transaction na primeira linha e um commit na
  útima. O script demorou 3995947 ms que dá 66 min novamente. Ainda teve
 uma
  msg de erro no últimos inserts informando que a transação atual foi
  interrompida.

 Provavelmente devido a algum comando SQL não compatível. Conforme o
 Bruno falou, confira no log do banco os erros que ocorreram.

 Podem estar faltando índices em chaves estrangeiras também...
 --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
Em 16 de novembro de 2011 17:32, Marllos marl...@emater.mg.gov.brescreveu:

 Sim, depois de inserir os dados, eu crio os indices e as outras
 constraints
 Mas, o que está demorando 66 min é a estapa de inserir os dados, nesse
 momente não existe indice

 1) cria os sequences -- rapido
 2) cria as tabelas -- rapido
 3) crias as views -- rapido
 4) insere os dados -- 66 min
 5) cria as constrainsts, -- rapidor
 6) cria as functions e triggers -- rapido

 No firebird, eu sigo essa mesma ordem e tudo termina com menos de 2 min

 Em 16 de novembro de 2011 17:23, Leandro DUTRA, Guimarães Faria Corcete
 l...@dutras.org escreveu:

 Le 2011-16-11 17h19, Marllos a écrit :

  É o seguinte: primeiro eu crio o banco vazio, então rodo o script no
 PgAdminIII que:
 1) cria os sequences
 2) cria as tabelas
 3) crias as views
 4) insere os dados


 E quando são criados os índices?



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Script está demorando muito no PostgreSQL

2011-11-16 Por tôpico Marllos
Eu rodo o firebird no computador hp, processador amd dual core 64 bits;
2,59 GHZ 1,75 MB ram com o xp
O Postgresql está num Dell 64 bits 4 nucleos 2,5 GHz; 32 MB de ram com o
Ubuntu 10.10


Em 16 de novembro de 2011 17:25, Bruno Silva bemanuel...@gmail.comescreveu:

  O banco é criado normalmente. Inclusive eu consigo fazer bacup e restore
 do
  banco. O problema é que o firebird faz isso em 2 min e o Postgresql está
  fazendo em 66 min.

 O hardware é o mesmo? Qual o SO?


  É o seguinte: primeiro eu crio o banco vazio, então rodo o script no
  PgAdminIII que:
  1) cria os sequences
  2) cria as tabelas
  3) crias as views
  4) insere os dados
  5) cria as constrainsts,
  6) cria as functions e triggers

 E os indices, são criados em que momento?

 Bruno E. A. Silva.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-11 Por tôpico Marllos
Oi Daniel, muito grato pela sua boa vontade. É isso mesmo que eu preciso,
só que eu não estou conseguindo dar o comando:

CREATE LANGUAGE plpythonu;

Sem esse comando recebo a msg que a linguagem python nao existe, mas ao der
esse comando recebo a msg:

[WARNING  ] CREATE LANGUAGE plpythonu
ERRO:  não pôde carregar biblioteca C:/Arquivos de
programas/PostgreSQL/8.4/lib/plpython.dll: unknown error 126

So que a dll está presente no local indicado na msg

Em 10 de novembro de 2011 19:23, Daniel Cristian Cruz 
danielcrist...@gmail.com escreveu:

 Marllos,

 Não resisti, montei a função em plpython:

 CREATE EXTENSION plpythonu;

 CREATE OR REPLACE FUNCTION trigger_bala() RETURNS trigger LANGUAGE
 plpythonu AS $$
   import random
   rv = plpy.execute(SELECT attname FROM pg_attribute JOIN pg_constraint
 ON pg_constraint.conrelid = pg_attribute.attrelid WHERE conkey =
 ARRAY[attnum] AND contype = 'p' AND pg_attribute.attrelid = '%s'::regclass
 % TD[table_name], 1)
   TD[new][rv[0][attname]] = random.random()
   return MODIFY
 $$;

 CREATE TABLE teste (

  a float primary key
 );

 CREATE TRIGGER teste_bala BEFORE INSERT ON teste FOR EACH ROW EXECUTE
 PROCEDURE trigger_bala();

 INSERT INTO teste (a) VALUES (DEFAULT) RETURNING *;
a
 
  0.345787825955
 (1 row)

 Em 10 de novembro de 2011 17:43, Marllos marl...@emater.mg.gov.brescreveu:

 Deixa eu explicar melhor, tenho um sistema asp+firebird, que estou
 convertendo para php + firebird.
 Com o objetos pdo do php, o mesmo codigo pode acessar uma base
 equivalente em qualquer outro banco de dados (que o pdo dá suporte e são
 muitos bancos, incluindo o postgresql).

 Então estou tentando reproduzir fielmente a minha base de dados do
 firebird para o postgresql e isso é mais um exercicio de aprendizado com o
 postgresql. Já a conversão de asp+firebird para php não é aprendizado, é
 trabalho mesmo.


 Em 10 de novembro de 2011 16:57, Danilo Silva danilo.dsg.go...@gmail.com
  escreveu:

 Por curiosidade, vc quer gerar um valor aleatório ( ou outro valor
 qualquer) para cada pk das tabelas? Se for isso, não seria mais fácil
 utilizar uma sequence e atribuir esta sequence como valor default das pks?

 Danilo

 Em 10 de novembro de 2011 16:29, Juliano Benvenuto Piovezan 
 juli...@sinersoft.com.br escreveu:

 2011/11/10 Marllos marl...@emater.mg.gov.br
 
  Foi mal amigo
  Na verdade eu quero é atribuir um valor a chave primária, mas fazendo
 refencia dinamica a chave.
 

 Uma coisa que posso ter passado na discussão, mas sua chave é simples
 ou composta?

 Em plpgsql você realmente não conseguirá isso, a não ser que você
 utilize o mesmo nome do campo em todas as tabelas. Como os nomes são
 diferentes, como você especificou, apenas com alguma outra pl mesmo,
 como pltcl. Segue exemplo:

 CREATE OR REPLACE FUNCTION fun_trg (
 )
 RETURNS trigger AS
 $body$
 spi_exec -count 1 SELECT a.attname as col
FROM pg_class c,
 pg_attribute a,
 pg_index i
WHERE c.oid = i.indrelid AND
  a.attrelid = i.indexrelid AND
  not a.attisdropped AND
  a.attnum  0 AND
  i.indisprimary AND
  c.oid = '$TG_relid'
 spi_exec -count 1 SELECT uuid_generate_v4() as c
 set NEW($col) $c
 return [array get NEW]
 $body$
 LANGUAGE 'pltcl'
 VOLATILE
 CALLED ON NULL INPUT
 SECURITY INVOKER
 COST 100;

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-11 Por tôpico Marllos
obrigado Juliano, depois que vc falou eu procurei e instalei 
uma dll foi chamando outra, outra, outra, ...

mas antes eu tive que colocar o bin do postgresql no path

eu fiz os downloads de todas dlls, mesmo do Dependency nao acusando mais as
dependencias, as dlls davam erro na hora de registrar com o comando
regsrv32 com msg do tipo: nao foi possivel encontral o procedimento
especificado, procurei fazer o registro na ordem certa, nao consegui
registrar nenhuma, mesmo assim reiniciei o postgresql e tentei criar a
pltcl, nao dei. talvez tenha que compilar, ms eu nao tenho o visual c++

no final das contas nda funcionou

me parece que tem que compilar o tcl

Em 11 de novembro de 2011 13:08, Juliano Benvenuto Piovezan 
juli...@sinersoft.com.br escreveu:

 2011/11/11 Juliano Benvenuto Piovezan juli...@sinersoft.com.br:
 
  Faça o download do Dependency Walker [1] e com ele abra a dll a
  plpython.dll. Ele vai listar as dependências que estão faltando, não
  permitindo que o Postgres carregue a dll corretamente.
 

 Esqueci o link.

 [1] http://www.dependencywalker.com/
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-11 Por tôpico Marllos
eu to usando no windows a 8.4.9. estava me incomodando baixar um tanto de
dll, que eu nem sei qual é. bom instalei um tal de ActiveStateTCL, e deu
certo, agora vou testar as sugestões que todos deram

obrigado.

Em 11 de novembro de 2011 15:30, Guimarães Faria Corcete DUTRA, Leandro 
l...@dutras.org escreveu:

 2011/11/11 Marllos marl...@emater.mg.gov.br:
 
  me parece que tem que compilar o tcl

 Isso seria muito estranho.  Repare nos detalhes informados pelo DW,
 pode ser simples conflito de versões, principalmente se instalas uma
 versão antiga como a 8.4 ou se tens várias versões seja do PostgrSQL,
 seja do TCL instaladas.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-10 Por tôpico Marllos
Foi mal amigo
Na verdade eu quero é atribuir um valor a chave primária, mas fazendo
refencia dinamica a chave.


No Firebird, eu sou obrigado a ter uma função de trigger para cada tabela

Em 10 de novembro de 2011 08:21, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 9 de novembro de 2011 18:44, Marllos marl...@emater.mg.gov.brescreveu:

 Obrigado Volak, mas eu preciso mudar a chave primaria na funçao da trigger


 O que você considera mudar a chave primaria? Executar um ALTER TABLE na
 coluna que tem a chave primária? Mudar o valor do atributo da chave
 primária?

 Meu exemplo foi para dar uma idéia do que você pode fazer, não conclui o
 exemplo porque de fato não consegui entender o que de fato você deseja.


 Em 9 de novembro de 2011 11:52, Wolak wo...@wolaksistemas.com.brescreveu:

  Em 09/11/2011 11:17, Marllos escreveu:

 Obrigado JotaComm

 No firebird, eu tenho que fazer uma trigger para cada tabela. No
 Postgresql eu percebi (se não estou enganado) que eu posso usar a mesma
 função de trigger em várias tabelas e é isso que estou tentando fazer.

 a minha função de trigger seria

 create or replace function *gerar_id()* returns trigger as $$
 begin
   --essa trigger define a chave primária
   --as tabelas que vão disparar essa trigger são tabela1, tabela2,
 tabela3, ... (muitas)
   --essas tabelas já existem e cada uma tem uma chave primária, do mesmo
 tipo, mas com nomes diferentes

 new.(nome da chave primária da tabela que está disparando essa trigger)
 = uuid_generate_v4()

 end
 $$ language plpgsql;

 Agora eu quero usar essa trigger em várias tabelas:

 create tigger tabela1_tg before insert on tabela1
 for each row execute *gerar_id()*;

  create tigger tabela2_tg before insert on tabela2
 for each row execute *gerar_id()*;

  create tigger tabela3_tg before insert on tabela3
 for each row execute *gerar_id()*;

 Etc...

 Em 9 de novembro de 2011 10:17, JotaComm jota.c...@gmail.com escreveu:

 Olá, Marllos

 Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz 
 danielcrist...@gmail.com escreveu:

  Acredito que uma forma seja usando PL/Python:

  http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html

  Já procurei como fazer com PL/pgSQL, mas não encontrei como
 referenciar dinamicamente o nome do atributo de chave primária.

  Você precisará consultar o catálogo, através da pg_attribute
 (attname) e da pg_constraint (contype='p').

 Em 9 de novembro de 2011 10:02, Marllos 
 marl...@emater.mg.gov.brescreveu:

  Por favor, preciso de ajuda para revolver um problema. E se for
 possível gostaria de um exemplo.

 Em uma trigger, eu quero alterar a chave primária da tabela que
 dispara essa trigger, mas de forma dinâmica, por exemplo:

 new.(referencia dinâmica a chave primária da tebela) = valor.


 Não entendi o que você deseja. Poderia colocar um exemplo prático da
 situação.


 Obrigado.

 Marllos.
  ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




  --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 ___
 pgbr-geral mailing 
 listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 __ Information from ESET NOD32 Antivirus, version of virus 
 signature database 6615 (2009) __

 The message was checked by ESET NOD32 Antivirus.
 http://www.eset.com


 eu fiz isso de outra maneira, veja se é isso que precisa, isso é um
 exemplo que fiz para um colega que usava Firebird.

 --postgresql.conf
 --custom_variable_classes = 'sistema'# list of custom variable
 class names
 --sistema.fkempresa = 0
 --sistema.fkfilial = 0
 --SELECT SET_CONFIG('sistema.fkempresa', '1', FALSE); -- FALSE para
 sessão atual, TRUE para transação atual
 --SELECT SET_CONFIG('sistema.fkfilial', '2', FALSE);

 CREATE OR REPLACE FUNCTION codigonovo(pnometabela VARCHAR,ptipo VARCHAR)
 RETURNS VARCHAR AS
 $$
 DECLARE
 nFkempresa INTEGER;
 nFkfilial  INTEGER;
rRetorno   RECORD;
 BEGIN
 SELECT INTO nFkempresa CURRENT_SETTING('sistema.fkempresa');
 SELECT INTO nFkfilial CURRENT_SETTING('sistema.fkfilial');
 IF COALESCE(nFkempresa,0) = 0 THEN
 RAISE EXCEPTION 'Empresa não setada para a sessão corrente!';
 END IF;
 IF COALESCE(nFkfilial,0) = 0 THEN
 RAISE EXCEPTION 'Filial não setada para a sessão corrente!';
 END IF;
 IF LOWER(pTipo) = 'empresa' THEN
 RETURN nFkempresa;
 END

Re: [pgbr-geral] chave primária numa trigger

2011-11-10 Por tôpico Marllos
obrigado jota.

a sua sujestão de código que eu vi foi plpgsql. Agora estou tentando usar a
sua sugestão de pltcl, mas quando tento instalar a linguagem estou tendo
problemas.

não sei extamente qual é o procedimento para instalar a linguagem
pltcl. o que eu estou fazendo é:

create language pltcl; (clico no botão PGS na janela da query) e então
recebo a msg:

[WARNING  ] create language pltcl
ERRO:  não pôde carregar biblioteca C:/Arquivos de
programas/PostgreSQL/8.4/lib/pltcl.dll: unknown error 126




Em 10 de novembro de 2011 14:01, JotaComm jota.c...@gmail.com escreveu:

 Olá,

 Em 10 de novembro de 2011 11:38, Marllos marl...@emater.mg.gov.brescreveu:

 Foi mal amigo
 Na verdade eu quero é atribuir um valor a chave primária, mas fazendo
 refencia dinamica a chave.


 Então o código que enviei aqui ajuda bastante, ele não contém tudo, mas é
 o caminho das pedras :)



 No Firebird, eu sou obrigado a ter uma função de trigger para cada tabela

  Em 10 de novembro de 2011 08:21, JotaComm jota.c...@gmail.comescreveu:

 Olá,

 Em 9 de novembro de 2011 18:44, Marllos marl...@emater.mg.gov.brescreveu:

  Obrigado Volak, mas eu preciso mudar a chave primaria na funçao da
 trigger


 O que você considera mudar a chave primaria? Executar um ALTER TABLE na
 coluna que tem a chave primária? Mudar o valor do atributo da chave
 primária?

 Meu exemplo foi para dar uma idéia do que você pode fazer, não conclui o
 exemplo porque de fato não consegui entender o que de fato você deseja.


 Em 9 de novembro de 2011 11:52, Wolak wo...@wolaksistemas.com.brescreveu:

  Em 09/11/2011 11:17, Marllos escreveu:

 Obrigado JotaComm

 No firebird, eu tenho que fazer uma trigger para cada tabela. No
 Postgresql eu percebi (se não estou enganado) que eu posso usar a mesma
 função de trigger em várias tabelas e é isso que estou tentando fazer.

 a minha função de trigger seria

 create or replace function *gerar_id()* returns trigger as $$
 begin
   --essa trigger define a chave primária
   --as tabelas que vão disparar essa trigger são tabela1, tabela2,
 tabela3, ... (muitas)
   --essas tabelas já existem e cada uma tem uma chave primária, do
 mesmo tipo, mas com nomes diferentes

 new.(nome da chave primária da tabela que está disparando essa
 trigger) = uuid_generate_v4()

 end
 $$ language plpgsql;

 Agora eu quero usar essa trigger em várias tabelas:

 create tigger tabela1_tg before insert on tabela1
 for each row execute *gerar_id()*;

  create tigger tabela2_tg before insert on tabela2
 for each row execute *gerar_id()*;

  create tigger tabela3_tg before insert on tabela3
 for each row execute *gerar_id()*;

 Etc...

 Em 9 de novembro de 2011 10:17, JotaComm jota.c...@gmail.comescreveu:

 Olá, Marllos

 Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz 
 danielcrist...@gmail.com escreveu:

  Acredito que uma forma seja usando PL/Python:


 http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html

  Já procurei como fazer com PL/pgSQL, mas não encontrei como
 referenciar dinamicamente o nome do atributo de chave primária.

  Você precisará consultar o catálogo, através da pg_attribute
 (attname) e da pg_constraint (contype='p').

 Em 9 de novembro de 2011 10:02, Marllos 
 marl...@emater.mg.gov.brescreveu:

  Por favor, preciso de ajuda para revolver um problema. E se for
 possível gostaria de um exemplo.

 Em uma trigger, eu quero alterar a chave primária da tabela que
 dispara essa trigger, mas de forma dinâmica, por exemplo:

 new.(referencia dinâmica a chave primária da tebela) = valor.


 Não entendi o que você deseja. Poderia colocar um exemplo prático da
 situação.


 Obrigado.

 Marllos.
  ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




  --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 ___
 pgbr-geral mailing 
 listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 __ Information from ESET NOD32 Antivirus, version of virus 
 signature database 6615 (2009) __

 The message was checked by ESET NOD32 Antivirus.
 http://www.eset.com


 eu fiz isso de outra maneira, veja se é isso que precisa, isso é um
 exemplo que fiz para um colega que usava Firebird.

 --postgresql.conf
 --custom_variable_classes = 'sistema'# list of custom variable
 class names
 --sistema.fkempresa = 0

[pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Por favor, preciso de ajuda para revolver um problema. E se for possível
gostaria de um exemplo.

Em uma trigger, eu quero alterar a chave primária da tabela que dispara
essa trigger, mas de forma dinâmica, por exemplo:

new.(referencia dinâmica a chave primária da tebela) = valor.

Obrigado.

Marllos.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Obrigado JotaComm

No firebird, eu tenho que fazer uma trigger para cada tabela. No Postgresql
eu percebi (se não estou enganado) que eu posso usar a mesma função de
trigger em várias tabelas e é isso que estou tentando fazer.

a minha função de trigger seria

create or replace function *gerar_id()* returns trigger as $$
begin
  --essa trigger define a chave primária
  --as tabelas que vão disparar essa trigger são tabela1, tabela2, tabela3,
... (muitas)
  --essas tabelas já existem e cada uma tem uma chave primária, do mesmo
tipo, mas com nomes diferentes

new.(nome da chave primária da tabela que está disparando essa trigger) =
uuid_generate_v4()

end
$$ language plpgsql;

Agora eu quero usar essa trigger em várias tabelas:

create tigger tabela1_tg before insert on tabela1
for each row execute *gerar_id()*;

create tigger tabela2_tg before insert on tabela2
for each row execute *gerar_id()*;

create tigger tabela3_tg before insert on tabela3
for each row execute *gerar_id()*;

Etc...

Em 9 de novembro de 2011 10:17, JotaComm jota.c...@gmail.com escreveu:

 Olá, Marllos

 Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz 
 danielcrist...@gmail.com escreveu:

 Acredito que uma forma seja usando PL/Python:

 http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html

 Já procurei como fazer com PL/pgSQL, mas não encontrei como referenciar
 dinamicamente o nome do atributo de chave primária.

 Você precisará consultar o catálogo, através da pg_attribute (attname) e
 da pg_constraint (contype='p').

 Em 9 de novembro de 2011 10:02, Marllos marl...@emater.mg.gov.brescreveu:

  Por favor, preciso de ajuda para revolver um problema. E se for
 possível gostaria de um exemplo.

 Em uma trigger, eu quero alterar a chave primária da tabela que dispara
 essa trigger, mas de forma dinâmica, por exemplo:

 new.(referencia dinâmica a chave primária da tebela) = valor.


 Não entendi o que você deseja. Poderia colocar um exemplo prático da
 situação.


 Obrigado.

 Marllos.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Em 9 de novembro de 2011 13:55, Guimarães Faria Corcete DUTRA, Leandro 
lean...@dutras.org escreveu:

 Por favor, procure manter as discussões na lista, para que todos
 aproveitem.

 Le 2011-N-9  11h40, Marllos a écrit :
  a mensagem fo enviada incompleta

 Sem problemas…


  Não sei. Se tem inconsistências graves, quero aprender e corrigir.

 Ótimo!

A lista não é espaço para cursos, mas podemos sugerir leituras e
 apontar problemas específicos.

Quanto a leituras, a fundamental seria _Introdução a Sistemas de
 Bancos
 de Dados_, do Chris(topher) J DATE.

Quanto a problemas específicos:


  Recebi um sistema em Asp com base de dados em Firebird. Estou migrando
  esse sistema para PHP com Postgresql.

 Tu sabes que existe ASP livre para Apache, não?  Pode ser mais fácil que
 para PHP.


  A base que eu recebi, tem muitas tabelas cujas
  chaves primárias são:
 
  ID_NOME_CHAVE CHAR(36) NOT NULL,

 Quiseste dizer id_nome_tabela?  Ou as chaves têm nome diferente da
 tabela?  Nada errado, só curioso.

O problema é que essas chaves garantem unicidade do registro físico,
 não dos dados lógicos.  Toda tabela precisa ter ao menos uma chave
 natural, composta ou simples; e freqüentemente essa chave natural vai
 dispensar a chave artificial, tornando o modelo mais lógico e simples de
 entender, além de enxuto e, amiúde, até acelerando o sistema.

Além disso, com chaves naturais muitos problemas de manutenção de
 chaves artificiais, como parece ser o que queres resolver, simplesmente
 desaparecem.  A manutenção das chaves naturais traz seus próprios
 problemas, mas são mais lógicos e muitos se resolvem declarativamente,
 por exemplo declarando chaves ON CASCADE UPDATE ou DELETE.


 --
 skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
 +55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
 +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
 BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Desculpe, foi a forma de responder o email que foi errada.

Em 9 de novembro de 2011 14:01, Marllos marl...@emater.mg.gov.br escreveu:



 Em 9 de novembro de 2011 13:55, Guimarães Faria Corcete DUTRA, Leandro 
 lean...@dutras.org escreveu:

 Por favor, procure manter as discussões na lista, para que todos
 aproveitem.

 Le 2011-N-9  11h40, Marllos a écrit :
  a mensagem fo enviada incompleta

 Sem problemas…


  Não sei. Se tem inconsistências graves, quero aprender e corrigir.

 Ótimo!

A lista não é espaço para cursos, mas podemos sugerir leituras e
 apontar problemas específicos.

Quanto a leituras, a fundamental seria _Introdução a Sistemas de
 Bancos
 de Dados_, do Chris(topher) J DATE.

Quanto a problemas específicos:


  Recebi um sistema em Asp com base de dados em Firebird. Estou migrando
  esse sistema para PHP com Postgresql.

 Tu sabes que existe ASP livre para Apache, não?  Pode ser mais fácil que
 para PHP.


  A base que eu recebi, tem muitas tabelas cujas
  chaves primárias são:
 
  ID_NOME_CHAVE CHAR(36) NOT NULL,

 Quiseste dizer id_nome_tabela?  Ou as chaves têm nome diferente da
 tabela?  Nada errado, só curioso.

O problema é que essas chaves garantem unicidade do registro
 físico,
 não dos dados lógicos.  Toda tabela precisa ter ao menos uma chave
 natural, composta ou simples; e freqüentemente essa chave natural vai
 dispensar a chave artificial, tornando o modelo mais lógico e simples de
 entender, além de enxuto e, amiúde, até acelerando o sistema.

Além disso, com chaves naturais muitos problemas de manutenção de
 chaves artificiais, como parece ser o que queres resolver, simplesmente
 desaparecem.  A manutenção das chaves naturais traz seus próprios
 problemas, mas são mais lógicos e muitos se resolvem declarativamente,
 por exemplo declarando chaves ON CASCADE UPDATE ou DELETE.


 --
 skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
 +55 (61) 3546 7191  gTalk: xmpp:leand...@jabber.org
 +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
 BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Obrigado Volak, mas eu preciso mudar a chave primaria na funçao da trigger

Em 9 de novembro de 2011 11:52, Wolak wo...@wolaksistemas.com.br escreveu:

  Em 09/11/2011 11:17, Marllos escreveu:

 Obrigado JotaComm

 No firebird, eu tenho que fazer uma trigger para cada tabela. No
 Postgresql eu percebi (se não estou enganado) que eu posso usar a mesma
 função de trigger em várias tabelas e é isso que estou tentando fazer.

 a minha função de trigger seria

 create or replace function *gerar_id()* returns trigger as $$
 begin
   --essa trigger define a chave primária
   --as tabelas que vão disparar essa trigger são tabela1, tabela2,
 tabela3, ... (muitas)
   --essas tabelas já existem e cada uma tem uma chave primária, do mesmo
 tipo, mas com nomes diferentes

 new.(nome da chave primária da tabela que está disparando essa trigger) =
 uuid_generate_v4()

 end
 $$ language plpgsql;

 Agora eu quero usar essa trigger em várias tabelas:

 create tigger tabela1_tg before insert on tabela1
 for each row execute *gerar_id()*;

  create tigger tabela2_tg before insert on tabela2
 for each row execute *gerar_id()*;

  create tigger tabela3_tg before insert on tabela3
 for each row execute *gerar_id()*;

 Etc...

 Em 9 de novembro de 2011 10:17, JotaComm jota.c...@gmail.com escreveu:

 Olá, Marllos

 Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz 
 danielcrist...@gmail.com escreveu:

  Acredito que uma forma seja usando PL/Python:

  http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html

  Já procurei como fazer com PL/pgSQL, mas não encontrei como
 referenciar dinamicamente o nome do atributo de chave primária.

  Você precisará consultar o catálogo, através da pg_attribute (attname)
 e da pg_constraint (contype='p').

 Em 9 de novembro de 2011 10:02, Marllos marl...@emater.mg.gov.brescreveu:

  Por favor, preciso de ajuda para revolver um problema. E se for
 possível gostaria de um exemplo.

 Em uma trigger, eu quero alterar a chave primária da tabela que dispara
 essa trigger, mas de forma dinâmica, por exemplo:

 new.(referencia dinâmica a chave primária da tebela) = valor.


 Não entendi o que você deseja. Poderia colocar um exemplo prático da
 situação.


 Obrigado.

 Marllos.
  ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




  --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 ___
 pgbr-geral mailing 
 listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 __ Information from ESET NOD32 Antivirus, version of virus signature 
 database 6615 (2009) __

 The message was checked by ESET NOD32 Antivirus.
 http://www.eset.com


 eu fiz isso de outra maneira, veja se é isso que precisa, isso é um
 exemplo que fiz para um colega que usava Firebird.

 --postgresql.conf
 --custom_variable_classes = 'sistema'# list of custom variable
 class names
 --sistema.fkempresa = 0
 --sistema.fkfilial = 0
 --SELECT SET_CONFIG('sistema.fkempresa', '1', FALSE); -- FALSE para sessão
 atual, TRUE para transação atual
 --SELECT SET_CONFIG('sistema.fkfilial', '2', FALSE);

 CREATE OR REPLACE FUNCTION codigonovo(pnometabela VARCHAR,ptipo VARCHAR)
 RETURNS VARCHAR AS
 $$
 DECLARE
 nFkempresa INTEGER;
 nFkfilial  INTEGER;
rRetorno   RECORD;
 BEGIN
 SELECT INTO nFkempresa CURRENT_SETTING('sistema.fkempresa');
 SELECT INTO nFkfilial CURRENT_SETTING('sistema.fkfilial');
 IF COALESCE(nFkempresa,0) = 0 THEN
 RAISE EXCEPTION 'Empresa não setada para a sessão corrente!';
 END IF;
 IF COALESCE(nFkfilial,0) = 0 THEN
 RAISE EXCEPTION 'Filial não setada para a sessão corrente!';
 END IF;
 IF LOWER(pTipo) = 'empresa' THEN
 RETURN nFkempresa;
 END IF;
 IF LOWER(pTipo) = 'filial' THEN
 RETURN nFkfilial;
 END IF;
FOR rRetorno IN EXECUTE 'SELECT COALESCE(MAX(sequencia),0) + 1 AS
 sequencia
 FROM '||pnometabela||'
 WHERE fkempresa = '||nFkempresa||'
 AND fkfilial = '||nFkfilial
LOOP
IF LOWER(pTipo) = 'sequencia' THEN
RETURN rRetorno.sequencia;
ELSE
RETURN nFkempresa||'.'||nFkfilial||'.'||rRetorno.sequencia;
END IF;
END LOOP;
 END;
 $$
 LANGUAGE plpgsql;

 CREATE TABLE cadastro
 (
   fkempresa integer DEFAULT codigonovo('cadastro'::character

Re: [pgbr-geral] chave primária numa trigger

2011-11-09 Por tôpico Marllos
Sua sujestão foi ótima, eu so fico com receio de não conseguir fazer tudo
com Python, sem contar que eu ainda não sei dada de Python. Mas é isso
mesmo que eu preciso.

Em 9 de novembro de 2011 10:17, JotaComm jota.c...@gmail.com escreveu:

 Olá, Marllos

 Em 9 de novembro de 2011 10:15, Daniel Cristian Cruz 
 danielcrist...@gmail.com escreveu:

 Acredito que uma forma seja usando PL/Python:

 http://www.postgresql.org/docs/9.1/interactive/plpython-trigger.html

 Já procurei como fazer com PL/pgSQL, mas não encontrei como referenciar
 dinamicamente o nome do atributo de chave primária.

 Você precisará consultar o catálogo, através da pg_attribute (attname) e
 da pg_constraint (contype='p').

 Em 9 de novembro de 2011 10:02, Marllos marl...@emater.mg.gov.brescreveu:

  Por favor, preciso de ajuda para revolver um problema. E se for
 possível gostaria de um exemplo.

 Em uma trigger, eu quero alterar a chave primária da tabela que dispara
 essa trigger, mas de forma dinâmica, por exemplo:

 new.(referencia dinâmica a chave primária da tebela) = valor.


 Não entendi o que você deseja. Poderia colocar um exemplo prático da
 situação.


 Obrigado.

 Marllos.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




 --
 Daniel Cristian Cruz
 クルズ クリスチアン ダニエル

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 Abraços
 --
 JotaComm
 http://jotacomm.wordpress.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] TG_PRIMARY_KEY_NAME

2011-11-06 Por tôpico Marllos
Não sei se foi essa a sugestão. Usando sql, peguei o nome da chave primaria
pelo catálogo, mas não consigo usar esse nome para concluir a frunção.

create or replace function teste() returns trigger as $$
declare
  *pk *text;
begin

  select
table_constraints.constraint_name into *pk*
  from
information_schema.table_constraints
  where
table_constraints.table_name = TG_TABLE_NAME
and table_constraints.constraint_type = 'PRIMARY KEY';

  new.*???* = uuid_generate_v4(); --ou
  -- como uso o valor da variável *pk* no comando acima ???

end;
$$ language plpgsql;

tentei coisas como:
execute 'new.*$1* = uuid_generate_v4();'

Mas não funcionou.

Aguardo qualquer ajuda e obrigado.

Marllos.

Em 4 de novembro de 2011 21:03, Marllos marl...@emater.mg.gov.br escreveu:

 Entedi a respeito do catálogo. Deve ser parecido com o que eu costumo
 fazer com o Firebird as tabelas de sistema.

 Vou ver se eu consigo usar as funçoes do catálogo para resolver o
 problema Também vou dar uma olhada nas duas susgestões de leitura

 Enquanto isso, se alguem souber de alguma coisa... agradeço.

 Muito obrigado ao Guimarãoes e ao Bruno.

 Marllos.

 Em 4 de novembro de 2011 09:26, Guimarães Faria Corcete DUTRA, Leandro 
 l...@dutras.org escreveu:

 2011/11/4 Marllos marl...@emater.mg.gov.br:
  eu gostaria de algomo como
 
  create or replace function teste() returns trigger as $$
  begin
new.dt_update_record = current_date;
new.TG_PRIMARY_KEY_NAME = uuid_generate_v4();
  end;
  $$ language plpgsql;
 
  Ou algo equivalente, pois TG_PRIMARY_KEY_NAME não existe.

 Não existindo, o ideal é consultar o catálogo.  Uma função aceitando o
 nome da relação (tabela) e retornando uma lista de atributos
 componentes da chave seria trivial.


  Ainda não sei o que é uma chave natural.

 Um colega já informou o URI do artigo relevante da Wikipædia, o que é
 muito útil, mas creio que o ideal seria parar tudo, obter uma cópia do
 _Introdução a sistemas de bancos de dados_, do Chris(topher) J Date.
 O modelo relacional é tão diferente (e melhor) da programação normal,
 que deveria ser obrigatório ler o Date antes de tentar armazenar algo.
  Se não der para parar tudo enquanto lê, então gastar os dias no
 trabalho, e as noites no Date…
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] TG_PRIMARY_KEY_NAME

2011-11-04 Por tôpico Marllos
Entedi a respeito do catálogo. Deve ser parecido com o que eu costumo fazer
com o Firebird as tabelas de sistema.

Vou ver se eu consigo usar as funçoes do catálogo para resolver o
problema Também vou dar uma olhada nas duas susgestões de leitura

Enquanto isso, se alguem souber de alguma coisa... agradeço.

Muito obrigado ao Guimarãoes e ao Bruno.

Marllos.

Em 4 de novembro de 2011 09:26, Guimarães Faria Corcete DUTRA, Leandro 
l...@dutras.org escreveu:

 2011/11/4 Marllos marl...@emater.mg.gov.br:
  eu gostaria de algomo como
 
  create or replace function teste() returns trigger as $$
  begin
new.dt_update_record = current_date;
new.TG_PRIMARY_KEY_NAME = uuid_generate_v4();
  end;
  $$ language plpgsql;
 
  Ou algo equivalente, pois TG_PRIMARY_KEY_NAME não existe.

 Não existindo, o ideal é consultar o catálogo.  Uma função aceitando o
 nome da relação (tabela) e retornando uma lista de atributos
 componentes da chave seria trivial.


  Ainda não sei o que é uma chave natural.

 Um colega já informou o URI do artigo relevante da Wikipædia, o que é
 muito útil, mas creio que o ideal seria parar tudo, obter uma cópia do
 _Introdução a sistemas de bancos de dados_, do Chris(topher) J Date.
 O modelo relacional é tão diferente (e melhor) da programação normal,
 que deveria ser obrigatório ler o Date antes de tentar armazenar algo.
  Se não der para parar tudo enquanto lê, então gastar os dias no
 trabalho, e as noites no Date…
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] TG_PRIMARY_KEY_NAME

2011-11-03 Por tôpico Marllos
Olá a todos.

Comecei a estudar os Postgresql. E queria tirar uma dúvida.

Suponha a seguinte função para trigger:

create or replace function teste() returns trigger as $$
begin
  new.dt_update_record = current_date;
  new.(como acessar a chave primaria da tabela que dispara a trigger?) =
uuid_generate_v4();
end;
$$ language plpgsql;

A questão é, eu quero fazer uma função de trigger, que será disparada por
várias tabelas e queria acessar, dentro da função, a chave primaria da
tabela, do mesmo modo que acessamos outras infromações, tais como
TG_TABLE_NAME. Quero algo do tipo:

create or replace function teste() returns trigger as $$
begin
  new.dt_update_record = current_date; -- aqui tudo bem, porque todos as
tabelas tem o campo dt_update_record
  new.TG_PRIMARY_KEY_NAME= uuid_generate_v4(); -- quero colocar uma forma
de referencia genérica para a chave primaria
end;
$$ language plpgsql;

Tem jeito de fazer isso?

Obrigado.

Marllos
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral