Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
O Fabrizio já respondeu e provavelmente dará certo (testarei assim que
chegar em casa).

Mas como vc perguntou do objetivo é o seguinte:

Tabela perfil
Campos per_id, per_descr

Tabela usuario
Campos usu_id, usu_username, per_id

Na tabela perfil tenho um registro cuja descrição é Usuário

Sempre que incluir um novo registro na tabela usuario, o campo per_id
da tabela deverá ser preenchido com o valor do campo per_id da tabela
perfil, cuso per_descr seja igual a Usuário

-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
Twitter: avozdoevangelho
http://www.amados.com.br
http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
Biblico On-Line


2009/8/13 JotaComm jota.c...@gmail.com:
 Olá, Nilson

 Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual o
 seu objetivo com esta função?

 2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com

 Pessoal,

 Não sou dba, e estou apenas gatinhando no postgresql.

 Preciso de uma trigger no before insert da tabela (ou talvez alguém
 tenha até uma outra solução).

 Estou tentando algo assim:

 CREATE OR REPLACE FUNCTION fc_perfil_usuario()
  RETURNS trigger AS
 $BODY$begin

        -- verifica se o campo per_id é nulo
        IF NEW.per_id IS NULL THEN
                -- busca o id na tabela perfil
                SELECT per_id into perfil FROM perfil where per_descr =
 'Usuário';
        END IF;

       -- campo per_id da tabela usuário
        NEW.per_id := perfil;


 RETURN NEW;

 end$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
 COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do
 usuario estiver nulo a função busca o id da descrição usuario';


 Qual é a maneira correta de se fazer isto??

 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
 Twitter: avozdoevangelho
 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
 Biblico On-Line
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 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] of-topic

2009-08-14 Por tôpico Mário Reis
 Sorry I was out working with other platforms for a while.
Now i would like to restart with PGSql but i 'm not being
able to access to the list.
Can you Help.

Thanks in advance
Mário Agostinho Reis
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Olá,

Pensei na seguinte solução. Veja se atende a sua solução:

CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET
per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario';

Exemplo de utilização:

INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP');

Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é
preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'.


2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 O Fabrizio já respondeu e provavelmente dará certo (testarei assim que
 chegar em casa).

 Mas como vc perguntou do objetivo é o seguinte:

 Tabela perfil
 Campos per_id, per_descr

 Tabela usuario
 Campos usu_id, usu_username, per_id

 Na tabela perfil tenho um registro cuja descrição é Usuário

 Sempre que incluir um novo registro na tabela usuario, o campo per_id
 da tabela deverá ser preenchido com o valor do campo per_id da tabela
 perfil, cuso per_descr seja igual a Usuário

 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
 Twitter: avozdoevangelho
 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
 Biblico On-Line


 2009/8/13 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual
 o
  seu objetivo com esta função?
 
  2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com
 
  Pessoal,
 
  Não sou dba, e estou apenas gatinhando no postgresql.
 
  Preciso de uma trigger no before insert da tabela (ou talvez alguém
  tenha até uma outra solução).
 
  Estou tentando algo assim:
 
  CREATE OR REPLACE FUNCTION fc_perfil_usuario()
   RETURNS trigger AS
  $BODY$begin
 
 -- verifica se o campo per_id é nulo
 IF NEW.per_id IS NULL THEN
 -- busca o id na tabela perfil
 SELECT per_id into perfil FROM perfil where per_descr =
  'Usuário';
 END IF;
 
-- campo per_id da tabela usuário
 NEW.per_id := perfil;
 
 
  RETURN NEW;
 
  end$BODY$
   LANGUAGE 'plpgsql' VOLATILE;
  COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do
  usuario estiver nulo a função busca o id da descrição usuario';
 
 
  Qual é a maneira correta de se fazer isto??
 
  --
  []s
  Nilson Chagas - Ubuntu User 25794
  ---
  Visite:
  http://www.avozdoevangelho.com.br - Peça gratuitamente um curso
 Bíblico
  Twitter: avozdoevangelho
  http://www.amados.com.br
  http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
  Biblico On-Line
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
  []s
  --
  JotaComm
  http://jotacomm.wordpress.com
  http://www.dextra.com.br/postgres
 
  ___
  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


Espero ter ajudado.

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] of-topic

2009-08-14 Por tôpico JotaComm
Hi, Mário

One question. Do you speak Portuguese? If possible you can speak in
Portuguese please.

What happens? Errors?

2009/8/14 Mário Reis mariodosr...@gmail.com


  Sorry I was out working with other platforms for a while.
 Now i would like to restart with PGSql but i 'm not being
 able to access to the list.
 Can you Help.

 Thanks in advance
 Mário Agostinho Reis

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



Regards
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Of-Topic

2009-08-14 Por tôpico Mário Reis
 Desculpem,

Estive a trabalhar com outras plataformas por algum tempo e gostaria de
retomar o PostGreSql mas, não estou a conseguir aceder à Lista.
(Consultar a Lista)

Alguém pode ajudar-me.
Obrigado

Mário Agostinho Reis
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
Puxa sabia que existia outras formas.

Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para
o campo no disparo da inserção??

Se eu informar um id diferente, ele não vai sobregravar?? (só para confirmar)

-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
Twitter: avozdoevangelho
http://www.amados.com.br
http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
Biblico On-Line




2009/8/14 JotaComm jota.c...@gmail.com:
 Olá,

 Pensei na seguinte solução. Veja se atende a sua solução:

 CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET
 per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario';

 Exemplo de utilização:

 INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP');

 Ao realizar este INSERT automaticamente o campo per_id da tabela usuario é
 preenchido com per_id da tabela perfil onde a condição é per_desc='Usuario'.


 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 O Fabrizio já respondeu e provavelmente dará certo (testarei assim que
 chegar em casa).

 Mas como vc perguntou do objetivo é o seguinte:

 Tabela perfil
 Campos per_id, per_descr

 Tabela usuario
 Campos usu_id, usu_username, per_id

 Na tabela perfil tenho um registro cuja descrição é Usuário

 Sempre que incluir um novo registro na tabela usuario, o campo per_id
 da tabela deverá ser preenchido com o valor do campo per_id da tabela
 perfil, cuso per_descr seja igual a Usuário

 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
 Twitter: avozdoevangelho
 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
 Biblico On-Line


 2009/8/13 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre qual
  o
  seu objetivo com esta função?
 
  2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com
 
  Pessoal,
 
  Não sou dba, e estou apenas gatinhando no postgresql.
 
  Preciso de uma trigger no before insert da tabela (ou talvez alguém
  tenha até uma outra solução).
 
  Estou tentando algo assim:
 
  CREATE OR REPLACE FUNCTION fc_perfil_usuario()
   RETURNS trigger AS
  $BODY$begin
 
         -- verifica se o campo per_id é nulo
         IF NEW.per_id IS NULL THEN
                 -- busca o id na tabela perfil
                 SELECT per_id into perfil FROM perfil where per_descr =
  'Usuário';
         END IF;
 
        -- campo per_id da tabela usuário
         NEW.per_id := perfil;
 
 
  RETURN NEW;
 
  end$BODY$
   LANGUAGE 'plpgsql' VOLATILE;
  COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do
  usuario estiver nulo a função busca o id da descrição usuario';
 
 
  Qual é a maneira correta de se fazer isto??
 
  --
  []s
  Nilson Chagas - Ubuntu User 25794
  ---
  Visite:
  http://www.avozdoevangelho.com.br - Peça gratuitamente um curso
  Bíblico
  Twitter: avozdoevangelho
  http://www.amados.com.br
  http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
  Biblico On-Line
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
  []s
  --
  JotaComm
  http://jotacomm.wordpress.com
  http://www.dextra.com.br/postgres
 
  ___
  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

 Espero ter ajudado.

 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 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] Tabela como parâmetro de função

2009-08-14 Por tôpico Alex Paulo
Amigos,

Estou com um problema: preciso parametrizar o nome de uma tabela em uma
função!
Então, quando escrevo, dentro da função, o seguinte código:


SELECT INTO var_resposta SUM(campo) FROM $1
return var_resposta;


Considerando que $1 contem o nome da tabela, cujos dados devem ser
retornados, o postgres informa que isso caracteriza um erro de sintaxe!
Alguém sabe qual a sintaxe apropriada para este objetivo?

-- 
Abraços, Alex.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Relation with OID XXXX does not exists

2009-08-14 Por tôpico Tiago Adami
Pessoal, preciso de uma ajuda para solucionar um problema que se estende a
vários dias.

Temos um modelo de banco de dados que é utilizado em mais de 200 clientes,
todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este
problema aparece, somente em um cliente que roda Windows 2003 Server e o
banco PostgreSQL 8.2.13.

A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade
independente). Para exibir as informações de venda (que envolve estas 8
VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que
relaciona todas as demais para trazer resultados analiticos. Esta view
superior foi montada para servir relatórios de faturamento, e é
materializada em uma tabela com a mesma estrutura através de TRIGGERS.

Pois bem... ocorre um comportamento anormal em um cliente, apenas neste
cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de
venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC
na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando -
ocorre um erro:

Relation with OID 184407 does not exists

Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP
durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT
FROM 

O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao
executar um comando INSERT, se depois do erro eu tentar executá-lo novamente
com os mesmos valores, tudo segue-se normalmente.

Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE,
depois restaurá-lo novamente para verificar se isso corrige o problema, mas
não tive sucesso. Alguém tem alguma idéia?

NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na
empresa e aqui não conseguimos simular o problema.


-- 
Tiago J. Adami
Dois Vizinhos - Paraná - Brasil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Olá, Nilson

2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 Puxa sabia que existia outras formas.

 Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para
 o campo no disparo da inserção??


Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando
UPDATE.



 Se eu informar um id diferente, ele não vai sobregravar?? (só para
 confirmar)


Irá gerar um nova entrada (linha) na tabela.



 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
 Twitter: avozdoevangelho
 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
 Biblico On-Line




 2009/8/14 JotaComm jota.c...@gmail.com:
  Olá,
 
  Pensei na seguinte solução. Veja se atende a sua solução:
 
  CREATE RULE rule_exemplo AS ON INSERT TO usuario DO UPDATE usuario SET
  per_id=perfil.per_id FROM perfil WHERE perfil.per_desc='Usuario';
 
  Exemplo de utilização:
 
  INSERT INTO usuario(usu_id,usu_usename) VALUES (1,'JP');
 
  Ao realizar este INSERT automaticamente o campo per_id da tabela usuario
 é
  preenchido com per_id da tabela perfil onde a condição é
 per_desc='Usuario'.
 
 
  2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com
 
  O Fabrizio já respondeu e provavelmente dará certo (testarei assim que
  chegar em casa).
 
  Mas como vc perguntou do objetivo é o seguinte:
 
  Tabela perfil
  Campos per_id, per_descr
 
  Tabela usuario
  Campos usu_id, usu_username, per_id
 
  Na tabela perfil tenho um registro cuja descrição é Usuário
 
  Sempre que incluir um novo registro na tabela usuario, o campo per_id
  da tabela deverá ser preenchido com o valor do campo per_id da tabela
  perfil, cuso per_descr seja igual a Usuário
 
  --
  []s
  Nilson Chagas - Ubuntu User 25794
  ---
  Visite:
  http://www.avozdoevangelho.com.br - Peça gratuitamente um curso
 Bíblico
  Twitter: avozdoevangelho
  http://www.amados.com.br
  http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
  Biblico On-Line
 
 
  2009/8/13 JotaComm jota.c...@gmail.com:
   Olá, Nilson
  
   Fiquei um pouco confuso. Você poderia discorrer um pouco mais sobre
 qual
   o
   seu objetivo com esta função?
  
   2009/8/13 Nilson Chagas nilson.chagas.si...@gmail.com
  
   Pessoal,
  
   Não sou dba, e estou apenas gatinhando no postgresql.
  
   Preciso de uma trigger no before insert da tabela (ou talvez alguém
   tenha até uma outra solução).
  
   Estou tentando algo assim:
  
   CREATE OR REPLACE FUNCTION fc_perfil_usuario()
RETURNS trigger AS
   $BODY$begin
  
  -- verifica se o campo per_id é nulo
  IF NEW.per_id IS NULL THEN
  -- busca o id na tabela perfil
  SELECT per_id into perfil FROM perfil where per_descr
 =
   'Usuário';
  END IF;
  
 -- campo per_id da tabela usuário
  NEW.per_id := perfil;
  
  
   RETURN NEW;
  
   end$BODY$
LANGUAGE 'plpgsql' VOLATILE;
   COMMENT ON FUNCTION fc_perfil_usuario() IS 'Se o campo perfil do
   usuario estiver nulo a função busca o id da descrição usuario';
  
  
   Qual é a maneira correta de se fazer isto??
  
   --
   []s
   Nilson Chagas - Ubuntu User 25794
   ---
   Visite:
   http://www.avozdoevangelho.com.br - Peça gratuitamente um curso
   Bíblico
   Twitter: avozdoevangelho
   http://www.amados.com.br
   http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
   Biblico On-Line
   ___
   pgbr-geral mailing list
   pgbr-geral@listas.postgresql.org.br
   https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
  
  
   []s
   --
   JotaComm
   http://jotacomm.wordpress.com
   http://www.dextra.com.br/postgres
  
   ___
   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
 
  Espero ter ajudado.
 
  []s
  --
  JotaComm
  http://jotacomm.wordpress.com
  http://www.dextra.com.br/postgres
 
  ___
  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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Tabela como parâmetro de função

2009-08-14 Por tôpico JotaComm
Olá, Alex

Para você fazer isso você precisar usar SQL dinâmico.

De uma olhada em [1]:

[1]
http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


2009/8/14 Alex Paulo alexpauloolive...@gmail.com

 Amigos,

 Estou com um problema: preciso parametrizar o nome de uma tabela em uma
 função!
 Então, quando escrevo, dentro da função, o seguinte código:


 SELECT INTO var_resposta SUM(campo) FROM $1
 return var_resposta;


 Considerando que $1 contem o nome da tabela, cujos dados devem ser
 retornados, o postgres informa que isso caracteriza um erro de sintaxe!
 Alguém sabe qual a sintaxe apropriada para este objetivo?

 --
 Abraços, Alex.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
2009/8/14 JotaComm jota.c...@gmail.com:
 Olá, Nilson

 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 Puxa sabia que existia outras formas.

 Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para
 o campo no disparo da inserção??

 Sim. Toda inserção que estiver na tabela ele chama rule e executa o comando
 UPDATE.


 Se eu informar um id diferente, ele não vai sobregravar?? (só para
 confirmar)

 Irá gerar um nova entrada (linha) na tabela.

Aqui você me confundiu.

Se eu fizer um
insert into usuario (usu_id, usu_username) values (1, 'teste')

Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
da tabela usuario.

E se eu fizer
insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)

Ele vai criar uma nova linha??

Ps.: Perdão pela ignorancia.

-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
Twitter: avozdoevangelho
http://www.amados.com.br
http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
Biblico On-Line
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Relation with OID XXXX does not exists

2009-08-14 Por tôpico JotaComm
Olá, Tiago

Você deu uma olhada no log de atividades. Aparece mais alguma informação?
Você verificou se não existe algum índice ou tabela corrompida ou alguma
coisa do tipo?


2009/8/14 Tiago Adami adam...@gmail.com

 Pessoal, preciso de uma ajuda para solucionar um problema que se estende a
 vários dias.

 Temos um modelo de banco de dados que é utilizado em mais de 200 clientes,
 todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este
 problema aparece, somente em um cliente que roda Windows 2003 Server e o
 banco PostgreSQL 8.2.13.

 A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade
 independente). Para exibir as informações de venda (que envolve estas 8
 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que
 relaciona todas as demais para trazer resultados analiticos. Esta view
 superior foi montada para servir relatórios de faturamento, e é
 materializada em uma tabela com a mesma estrutura através de TRIGGERS.

 Pois bem... ocorre um comportamento anormal em um cliente, apenas neste
 cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de
 venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC
 na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando -
 ocorre um erro:

 Relation with OID 184407 does not exists

 Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP
 durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT
 FROM 

 O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao
 executar um comando INSERT, se depois do erro eu tentar executá-lo novamente
 com os mesmos valores, tudo segue-se normalmente.

 Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE,
 depois restaurá-lo novamente para verificar se isso corrige o problema, mas
 não tive sucesso. Alguém tem alguma idéia?

 NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui na
 empresa e aqui não conseguimos simular o problema.


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico JotaComm
Nilson,

2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 2009/8/14 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com
 
  Puxa sabia que existia outras formas.
 
  Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para
  o campo no disparo da inserção??
 
  Sim. Toda inserção que estiver na tabela ele chama rule e executa o
 comando
  UPDATE.
 
 
  Se eu informar um id diferente, ele não vai sobregravar?? (só para
  confirmar)
 
  Irá gerar um nova entrada (linha) na tabela.

 Aqui você me confundiu.

 Se eu fizer um
 insert into usuario (usu_id, usu_username) values (1, 'teste')

 Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
 da tabela usuario.

 E se eu fizer
 insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)

 Ele vai criar uma nova linha??


Ao executar desta forma você fara o INSERT porém após esta operação de
INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será
atualizado pela RULE.

Se você não quiser que ela funcione assim, no final da RULE coloque a
seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o
valor do insert quando você informa o para per_id.



 Ps.: Perdão pela ignorancia.

 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
 Twitter: avozdoevangelho
 http://www.amados.com.br
 http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
 Biblico On-Line
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Valor do campo no Before Insert

2009-08-14 Por tôpico Nilson Chagas
2009/8/14 JotaComm jota.c...@gmail.com:
 Nilson,

 2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com

 2009/8/14 JotaComm jota.c...@gmail.com:
  Olá, Nilson
 
  2009/8/14 Nilson Chagas nilson.chagas.si...@gmail.com
 
  Puxa sabia que existia outras formas.
 
  Uma pergunta, o CREATE RULE estará funcionando como um DEFAULT para
  o campo no disparo da inserção??
 
  Sim. Toda inserção que estiver na tabela ele chama rule e executa o
  comando
  UPDATE.
 
 
  Se eu informar um id diferente, ele não vai sobregravar?? (só para
  confirmar)
 
  Irá gerar um nova entrada (linha) na tabela.

 Aqui você me confundiu.

 Se eu fizer um
 insert into usuario (usu_id, usu_username) values (1, 'teste')

 Com o rule, ele vai inserir o per_id da tabela perfil no campo per_id
 da tabela usuario.

 E se eu fizer
 insert into usuario (usu_id, usu_username, per_id) values (1, 'teste', 10)

 Ele vai criar uma nova linha??

 Ao executar desta forma você fara o INSERT porém após esta operação de
 INSERT é chamada uma RULE de UPDATE e assim o seu registro inserido será
 atualizado pela RULE.

 Se você não quiser que ela funcione assim, no final da RULE coloque a
 seguinte condição AND usuario.per_id IS NULL, assim ele não atualizará o
 valor do insert quando você informa o para per_id.

Puxa, agora ficou bem claro e vai funcionar como preciso.

Abusando um pouco mais de vocês.

create rule, ou trigger?? Posso ter problema com performance, visto
que os dois podem fazer o mesmo serviço??


-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.avozdoevangelho.com.br - Peça gratuitamente um curso Bíblico
Twitter: avozdoevangelho
http://www.amados.com.br
http://bbnradio.org - Ouça a rádio e faça gratuitamente um Curso
Biblico On-Line
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Relation with OID XXXX does not exists

2009-08-14 Por tôpico Tiago Adami
Infelizmente não há nenhuma informação adicional. O erro aparece nos logs
logo após a execução do INSERT que é disparado pelo TRIGGER.

Realmente, esqueci de comentar, este é um banco de dados que foi recuperado
de um servidor anterior onde o disco rígido apresentou problemas físicos
(bad block), então a única forma de recuperar o banco foi configurando a
opção ZERO_DAMAGED_PAGES = ON e fazendo um backup.

A princípio o banco não está corrompido, pois fizemos o backup em arquivo
texto plano para depois restaurá-lo novamente, e apagamos todos os objetos
(exceto as tabelas com dados) para recriá-los posteriormente. E o erro
persiste.

Uma informação adicional: recebi agora a pouco um comunicado por parte do
cliente que a seguinte mensagem está sendo exibida, alternando com esta do
OID:

Error while executing the query;
ERROR: could not open relation 1663/191861/229966: Permission denied;
SELECT * FROM PCCDPITE WHERE ITEM = '003214';

Ou seja, um simples SELECT executado na abertura do cadastro de produtos. Se
fechar o aplicativo, entrar novamente e executar, o erro não aparece mais.
Acredito que estes dois erros tenham a mesma causa, mas já não sei mais o
que pode ser...


-- 
Tiago J. Adami
Dois Vizinhos - Paraná - Brasil


2009/8/14 JotaComm jota.c...@gmail.com

 Olá, Tiago

 Você deu uma olhada no log de atividades. Aparece mais alguma informação?
 Você verificou se não existe algum índice ou tabela corrompida ou alguma
 coisa do tipo?


 2009/8/14 Tiago Adami adam...@gmail.com

 Pessoal, preciso de uma ajuda para solucionar um problema que se estende a
 vários dias.

 Temos um modelo de banco de dados que é utilizado em mais de 200 clientes,
 todos para uma base OLTP de um sistema ERP. Em nenhum outro cliente este
 problema aparece, somente em um cliente que roda Windows 2003 Server e o
 banco PostgreSQL 8.2.13.

 A estrutura física compreende 8 VIEWS (cada uma relacionada a uma entidade
 independente). Para exibir as informações de venda (que envolve estas 8
 VIEWS) existe uma outra VIEW superior chamada FATURAMENTO_VIEW_SRC, que
 relaciona todas as demais para trazer resultados analiticos. Esta view
 superior foi montada para servir relatórios de faturamento, e é
 materializada em uma tabela com a mesma estrutura através de TRIGGERS.

 Pois bem... ocorre um comportamento anormal em um cliente, apenas neste
 cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de
 venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC
 na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando -
 ocorre um erro:

 Relation with OID 184407 does not exists

 Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP
 durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT
 FROM 

 O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao
 executar um comando INSERT, se depois do erro eu tentar executá-lo novamente
 com os mesmos valores, tudo segue-se normalmente.

 Eu já tentei fazer um backup completo do banco, realizar um DROP DATABASE,
 depois restaurá-lo novamente para verificar se isso corrige o problema, mas
 não tive sucesso. Alguém tem alguma idéia?

 NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui
 na empresa e aqui não conseguimos simular o problema.


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


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



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 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] Relation with OID XXXX does not exists

2009-08-14 Por tôpico JotaComm
Olá, Tiago

2009/8/14 Tiago Adami adam...@gmail.com

 Infelizmente não há nenhuma informação adicional. O erro aparece nos logs
 logo após a execução do INSERT que é disparado pelo TRIGGER.

 Realmente, esqueci de comentar, este é um banco de dados que foi recuperado
 de um servidor anterior onde o disco rígido apresentou problemas físicos
 (bad block), então a única forma de recuperar o banco foi configurando a
 opção ZERO_DAMAGED_PAGES = ON e fazendo um backup.

 A princípio o banco não está corrompido, pois fizemos o backup em arquivo
 texto plano para depois restaurá-lo novamente, e apagamos todos os objetos
 (exceto as tabelas com dados) para recriá-los posteriormente. E o erro
 persiste.

 Uma informação adicional: recebi agora a pouco um comunicado por parte do
 cliente que a seguinte mensagem está sendo exibida, alternando com esta do
 OID:

 Error while executing the query;
 ERROR: could not open relation 1663/191861/229966: Permission denied;
 SELECT * FROM PCCDPITE WHERE ITEM = '003214';


Aqui podemos perceber que o usuário tem problemas de permissão de acesso.
Como estão as permissões de acesso do diretório data e os seus
subdiretórios?



 Ou seja, um simples SELECT executado na abertura do cadastro de produtos.
 Se fechar o aplicativo, entrar novamente e executar, o erro não aparece
 mais. Acredito que estes dois erros tenham a mesma causa, mas já não sei
 mais o que pode ser...


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


 2009/8/14 JotaComm jota.c...@gmail.com

 Olá, Tiago

 Você deu uma olhada no log de atividades. Aparece mais alguma informação?
 Você verificou se não existe algum índice ou tabela corrompida ou alguma
 coisa do tipo?


 2009/8/14 Tiago Adami adam...@gmail.com

 Pessoal, preciso de uma ajuda para solucionar um problema que se estende
 a vários dias.

 Temos um modelo de banco de dados que é utilizado em mais de 200
 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro
 cliente este problema aparece, somente em um cliente que roda Windows 2003
 Server e o banco PostgreSQL 8.2.13.

 A estrutura física compreende 8 VIEWS (cada uma relacionada a uma
 entidade independente). Para exibir as informações de venda (que envolve
 estas 8 VIEWS) existe uma outra VIEW superior chamada
 FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados
 analiticos. Esta view superior foi montada para servir relatórios de
 faturamento, e é materializada em uma tabela com a mesma estrutura através
 de TRIGGERS.

 Pois bem... ocorre um comportamento anormal em um cliente, apenas neste
 cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de
 venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC
 na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando -
 ocorre um erro:

 Relation with OID 184407 does not exists

 Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP
 durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... SELECT
 FROM 

 O pior de tudo, é que este OID não existe na tabela pg_class. Acontece ao
 executar um comando INSERT, se depois do erro eu tentar executá-lo novamente
 com os mesmos valores, tudo segue-se normalmente.

 Eu já tentei fazer um backup completo do banco, realizar um DROP
 DATABASE, depois restaurá-lo novamente para verificar se isso corrige o
 problema, mas não tive sucesso. Alguém tem alguma idéia?

 NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui
 na empresa e aqui não conseguimos simular o problema.


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


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



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Of-Topic

2009-08-14 Por tôpico Osvaldo Kussama
2009/8/14 Mário Reis mariodosr...@gmail.com:

 Estive a trabalhar com outras plataformas por algum tempo e gostaria de
 retomar o PostGreSql mas, não estou a conseguir aceder à Lista.
 (Consultar a Lista)




Vá em:
https://listas.postgresql.org.br/cgi-bin/mailman/options/pgbr-geral
- informe seu e-mail e senha;
- altere as opções de recebimento de e-mail (particularmente Mail delivery).

Para consultar o histórico da lista vá em:
http://listas.postgresql.org.br/pipermail/pgbr-geral/

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


Re: [pgbr-geral] Interpretação do explain analyse

2009-08-14 Por tôpico Mozart Hasse
Oi Rauni,

 Obrigado pela sua explicação, vou testar isso aqui, existe alguma outra
 possibilidade sem criar as tmp tables??

Pouco provável. Criei índices para todas as combinaçoes de campos usadas 
na consulta, além de tentar mexer na sintaxe dela para ver se o otimizador
tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com
CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva
usar um índice se você trocar essa consulta gigante pelas 28 consultas
individuais, uma para cada linha, o que deixará o desempenho delas juntas
muito melhor do que o dessa consulta. Sim, também acho que contraria o bom 
senso, mas como estamos falando do otimizador do Postgres, as chances são 
boas.

Atenciosamente,

Mozart Hasse


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


Re: [pgbr-geral] Relation with OID XXXX does not exists

2009-08-14 Por tôpico Tiago Adami
As permissões estão certas. Tudo funciona bem, os erros não acontecem sempre
- isso que me deixa furioso.

Encontrei algumas referências na internet sobre a possibilidade de ser o
programa antivírus, que está bloqueando o acesso aos arquivos do PostgreSQL.
Vamos desabilitá-lo temporariamente para avaliar os resultados.

-- 
Tiago J. Adami
Dois Vizinhos - Paraná - Brasil


2009/8/14 JotaComm jota.c...@gmail.com

 Olá, Tiago

 2009/8/14 Tiago Adami adam...@gmail.com

 Infelizmente não há nenhuma informação adicional. O erro aparece nos logs
 logo após a execução do INSERT que é disparado pelo TRIGGER.

 Realmente, esqueci de comentar, este é um banco de dados que foi
 recuperado de um servidor anterior onde o disco rígido apresentou problemas
 físicos (bad block), então a única forma de recuperar o banco foi
 configurando a opção ZERO_DAMAGED_PAGES = ON e fazendo um backup.

 A princípio o banco não está corrompido, pois fizemos o backup em arquivo
 texto plano para depois restaurá-lo novamente, e apagamos todos os objetos
 (exceto as tabelas com dados) para recriá-los posteriormente. E o erro
 persiste.

 Uma informação adicional: recebi agora a pouco um comunicado por parte do
 cliente que a seguinte mensagem está sendo exibida, alternando com esta do
 OID:

 Error while executing the query;
 ERROR: could not open relation 1663/191861/229966: Permission denied;
 SELECT * FROM PCCDPITE WHERE ITEM = '003214';


 Aqui podemos perceber que o usuário tem problemas de permissão de acesso.
 Como estão as permissões de acesso do diretório data e os seus
 subdiretórios?



 Ou seja, um simples SELECT executado na abertura do cadastro de produtos.
 Se fechar o aplicativo, entrar novamente e executar, o erro não aparece
 mais. Acredito que estes dois erros tenham a mesma causa, mas já não sei
 mais o que pode ser...


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


 2009/8/14 JotaComm jota.c...@gmail.com

 Olá, Tiago

 Você deu uma olhada no log de atividades. Aparece mais alguma informação?
 Você verificou se não existe algum índice ou tabela corrompida ou alguma
 coisa do tipo?


 2009/8/14 Tiago Adami adam...@gmail.com

 Pessoal, preciso de uma ajuda para solucionar um problema que se estende
 a vários dias.

 Temos um modelo de banco de dados que é utilizado em mais de 200
 clientes, todos para uma base OLTP de um sistema ERP. Em nenhum outro
 cliente este problema aparece, somente em um cliente que roda Windows 2003
 Server e o banco PostgreSQL 8.2.13.

 A estrutura física compreende 8 VIEWS (cada uma relacionada a uma
 entidade independente). Para exibir as informações de venda (que envolve
 estas 8 VIEWS) existe uma outra VIEW superior chamada
 FATURAMENTO_VIEW_SRC, que relaciona todas as demais para trazer resultados
 analiticos. Esta view superior foi montada para servir relatórios de
 faturamento, e é materializada em uma tabela com a mesma estrutura através
 de TRIGGERS.

 Pois bem... ocorre um comportamento anormal em um cliente, apenas neste
 cliente dentre mais de 200 outros. Quando é gravado uma nota fiscal de
 venda, um TRIGGER é disparado para gravar os dados da FATURAMENTO_VIEW_SRC
 na tabela FATURAMENTO, e esporadicamente - sim, somente de vez em quando -
 ocorre um erro:

 Relation with OID 184407 does not exists

 Não utilizamos nenhuma tabela temporária, não é realizado nenhum DROP
 durante a montagem da VIEW e o TRIGGER apenas faz um INSERT INTO ... 
 SELECT
 FROM 

 O pior de tudo, é que este OID não existe na tabela pg_class. Acontece
 ao executar um comando INSERT, se depois do erro eu tentar executá-lo
 novamente com os mesmos valores, tudo segue-se normalmente.

 Eu já tentei fazer um backup completo do banco, realizar um DROP
 DATABASE, depois restaurá-lo novamente para verificar se isso corrige o
 problema, mas não tive sucesso. Alguém tem alguma idéia?

 NOTA: Já copiamos a base de dados do cliente para nosso laboratório aqui
 na empresa e aqui não conseguimos simular o problema.


 --
 Tiago J. Adami
 Dois Vizinhos - Paraná - Brasil


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



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

 ___
 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



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

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


___

Re: [pgbr-geral] Tabela como parâmetro de função

2009-08-14 Por tôpico Alex Paulo
OBRIGADO!!!

2009/8/14 JotaComm jota.c...@gmail.com

 Olá, Alex

 Para você fazer isso você precisar usar SQL dinâmico.

 De uma olhada em [1]:

 [1]
 http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


 2009/8/14 Alex Paulo alexpauloolive...@gmail.com

 Amigos,

 Estou com um problema: preciso parametrizar o nome de uma tabela em uma
 função!
 Então, quando escrevo, dentro da função, o seguinte código:


 SELECT INTO var_resposta SUM(campo) FROM $1
 return var_resposta;


 Considerando que $1 contem o nome da tabela, cujos dados devem ser
 retornados, o postgres informa que isso caracteriza um erro de sintaxe!
 Alguém sabe qual a sintaxe apropriada para este objetivo?

 --
 Abraços, Alex.
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 []s
 --
 JotaComm
 http://jotacomm.wordpress.com
 http://www.dextra.com.br/postgres

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




-- 
Abraços, Alex.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Interpretação do explain analyse

2009-08-14 Por tôpico Nei Rauni Santos
Legal,

Os textos são bastante atualizados, existe bastante update e insert, delete
não.

estou usando o pg 8.3 autovacum então acho que é automatico ne?

o analyse eu não rodo nao. é o analyse que atualiza as estatisticas?

Nei


2009/8/14 Mozart Hasse mozart.ha...@usa.net

 tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com
 CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva
 usar um índice se você trocar essa consulta gigante pelas 28 consultas
 individuais, uma para cada linha, o que deixará o desempenho delas juntas
 muito melhor do que o dessa consulta. Sim, também acho que contraria o bom
 senso, mas como estamos falando do otimizador do Postgres, as chances são
 boas.

 Atenciosamente,




-- 
Nei Rauni Santos
nra...@gmail.com
+55 41 85020985
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Interpretação do explain analyse

2009-08-14 Por tôpico JotaComm
Opa,

Sim, é o analyze que é o responsável por atualizar as estatísticas do banco.

2009/8/14 Nei Rauni Santos nra...@gmail.com

 Legal,

 Os textos são bastante atualizados, existe bastante update e insert, delete
 não.

 estou usando o pg 8.3 autovacum então acho que é automatico ne?

 o analyse eu não rodo nao. é o analyse que atualiza as estatisticas?

 Nei


 2009/8/14 Mozart Hasse mozart.ha...@usa.net

 tentava outro plano. Nada funcionou, mesmo em tabelas sem atualização, com
 CLUSTER, VACUUM e ANALYZE. Talvez (eu disse TALVEZ) o otimizador resolva
 usar um índice se você trocar essa consulta gigante pelas 28 consultas
 individuais, uma para cada linha, o que deixará o desempenho delas juntas
 muito melhor do que o dessa consulta. Sim, também acho que contraria o bom
 senso, mas como estamos falando do otimizador do Postgres, as chances são
 boas.

 Atenciosamente,




 --
 Nei Rauni Santos
 nra...@gmail.com
 +55 41 85020985

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



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Postgresql 8.2.4 melhorá config uração - Lentidão exporádicas

2009-08-14 Por tôpico Walter Maier Neto
veja se no momento de lentidão o sistema está utilizando memória swap, quanto 
aos parâmetros,eu seria mais cauteloso na definição de *work_mem*, pois se 
muitas conexões fizerem consultas grandes (até seu limite de 220) vc vai 
'estourar' em muito a memória disponível.

sendo um servidor dedicado, vc pode ajustar shmmax para os 8G (ou próximo a 
isso);

monitore a memória nos momentos de lentidao utilizando 'top' e 'free'.


att.

Walter
- Gutemberg Sarlo - Hotmail gutembergsco...@hotmail.com escreveu:

 De: Gutemberg Sarlo - Hotmail gutembergsco...@hotmail.com
 Para: pgbr-geral@listas.postgresql.org.br
 Enviadas: Quinta-feira, 13 de Agosto de 2009 10:20:40 (GMT-0300) Auto-Detected
 Assunto: [pgbr-geral] Postgresql 8.2.4 melhorá configuração - Lentidão 
 exporádicas

 Pessoal, bom dia!
 
 Estou com alguns problemas e dificuldade em identificar causas
 momentanias
 de lentidão do banco, penso que talvez seja alguma coisa ligada as
 configurações do banco e semafaros do Linux, gostaria da experiência
 de
 vocês para orientação para tentar chegar numa configuração mais
 equalizada a
 demanda e equipamento.
 
 Demanda pesada de consultas e transações de manutenção, aplicação web
 (30%)
 e client Server (70%). O Vacuum é executado toda madrugada
 automaticamente
 via script: su root -c vacuumdb -U $vU -h $vH -z -f -v -d $vB 
 /home/postgresql/logs/vacuumdb2.txt
 
 Dell PowerEdge 1800 Xeon 8GB - HD scsi (dedicado)
 OpenSuse 10.3
 Postgresql 8.2.4
 
 
 ==
 Sysctl.conf
 
 ==
 kernel.shmall = 2147483648 
 kernel.shmmax = 2147483648 
 kernel.shmmni = 309329920
 
 kernel.sem = 250 32000 100 128
 #kernel.disable_cap_mlock = 1
 
 fs.file-max = 65536
 
 #net.ipv4.ip_local_port_range = 1024 65000
 #net.core.rmem_default = 16777216 #1048576
 #net.core.rmem_max = 16777216 #1048576
 #net.core.wmem_default = 16777216 #262144
 net.core.wmem_max = 16777216  #262144
 
 vm.overcommit_memory = 2
 vm.overcommit_ratio  = 70
 
 
 ==
 Postgresql.conf
 
 ==
 max_connections = 220   # (change requires restart)
 shared_buffers = 1024MB # min 128kB or
 max_connections*16kB
 max_prepared_transactions = 3   # can be 0 or more
 work_mem = 512MB# min 64kB
 maintenance_work_mem = 1024MB   # min 1MB
 max_fsm_pages = 204800  # min max_fsm_relations*16, 6
 bytes
 each
 vacuum_cost_delay = 100 # 0-1000 milliseconds //GS
 200
 fsync = on  # turns forced synchronization
 on or
 off
 wal_sync_method = fsync # the default is the first
 option
 full_page_writes = on   # recover from partial page
 writes
 wal_buffers = 128kB # min 32kB
 commit_delay = 500  # range 0-10, in
 microseconds
 //GS 1000
 commit_siblings = 5 # range 1-1000
 checkpoint_segments = 32# in logfile segments, min 1,
 16MB
 each //GS 8
 checkpoint_timeout = 5min   # range 30s-1h
 checkpoint_warning = 30s# 0 is off
 
 enable_bitmapscan = on
 enable_hashagg = on
 enable_hashjoin = on
 enable_indexscan = on
 enable_mergejoin = on
 enable_nestloop = on
 enable_seqscan = on
 enable_sort = on
 enable_tidscan = on
 
 random_page_cost = 2.0  # same scale as above //GS 1 -
 antes
 4.0
 effective_cache_size = 2GB
 stats_command_string = on
 update_process_title = on
 stats_start_collector = on  # needed for block or row
 stats
 stats_block_level = off
 stats_row_level = on
 autovacuum = off# enable autovacuum
 subprocess?
 deadlock_timeout = 1s
 max_locks_per_transaction = 64  # min 10
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



  

Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Postgresql 8.2.4 melhorá config uração - Lentidão exporádicas

2009-08-14 Por tôpico Euler Taveira de Oliveira
Walter Maier Neto escreveu:
 sendo um servidor dedicado, vc pode ajustar shmmax para os 8G (ou próximo a 
 isso);
 
Ugh? Uma máquina com 8 GB para que utilizar shmmax com 8GB? Eu não
recomendaria ter esse valor mais do que 4GB. Além disso, o shmall deve ser
ajustado de acordo também.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral