Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-17 Por tôpico jorge sanfelice
O que gera esse select é um aplicativo em C, a funcao que é chamada
dento do arquivo C é em pltcl.

Logo, voce esta sugerindo que eu fique dropando e criando a funcao em
tcl a cada 5 min (no caso antes de executa-la) ?

Só pra ficar mais claro, esse select, busca o nome de algumas views e
de uma tabela temporaria. (c.relname ilike '%sincroniza_view' ).


2009/7/16 Euler Taveira de Oliveira eu...@timbira.com:
 jorge sanfelice escreveu:
 Se ajudar, o erro se da nesse momento:

 Error: cache lookup failed for relation 251674995
 COMMAND: SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
 pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
 pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
 ('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
 pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
 '%sincroniza_view'  ORDER BY 2;

 Acho muito pouco provável o problema estar nesta consulta. São somente tabelas
 do catálogo e não temporárias.

 Você já experimentou carregar a sua função em C (aka DROP FUNCTION e CREATE
 FUNCTION) antes de invocá-la periodicamente?


 --
  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

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


Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-17 Por tôpico Euler Taveira de Oliveira
jorge sanfelice escreveu:
 O que gera esse select é um aplicativo em C, a funcao que é chamada
 dento do arquivo C é em pltcl.
 
 Logo, voce esta sugerindo que eu fique dropando e criando a funcao em
 tcl a cada 5 min (no caso antes de executa-la) ?
 
Sim.

 Só pra ficar mais claro, esse select, busca o nome de algumas views e
 de uma tabela temporaria. (c.relname ilike '%sincroniza_view' ).
 
Esse é o problema. O plano faz cache do OID da tabela temporária e na próxima
execução ele _não_ encontrar a tabela temporária.


-- 
  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


Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-16 Por tôpico Euler Taveira de Oliveira
jorge sanfelice escreveu:
 Se ajudar, o erro se da nesse momento:
 
 Error: cache lookup failed for relation 251674995
 COMMAND: SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
 pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
 pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
 ('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
 pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
 '%sincroniza_view'  ORDER BY 2;
 
Acho muito pouco provável o problema estar nesta consulta. São somente tabelas
do catálogo e não temporárias.

Você já experimentou carregar a sua função em C (aka DROP FUNCTION e CREATE
FUNCTION) antes de invocá-la periodicamente?


-- 
  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


Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-15 Por tôpico Osvaldo Kussama
2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Prezados,

 Estou com o seguinte erro:
 Error: cache lookup failed for relation 251285909

 Pesquisando no google achei o seguinte:

 Leia [1]. Isso ocorre porque o PostgreSQL faz cache do conteúdo das
 funções (inclusive o OID da tabela temporária referenciada), então ao
 executar novamente, ele tenta utilizar a tabela temporária antiga.
 Na versão 8.3 (próxima), isso não ocorrerá mais.

 [1] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.19


 E la diz o seguinte:
 Em versões do PostgreSQL  8.3, PL/PgSQL armazena o conteúdo da
 função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
 tabela temporária, e aquela tabela é removida e criada novamente, e a
 função é chamada novamente, a função irá falhar porque o conteúdo
 armazenado da função ainda apontará para a tabela temporária antiga. A
 solução é utilizar o EXECUTE para acesso a tabelas temporárias no
 PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.

 Esta versao que estou usando é a 8.2 (linux 64 mandriva).

 A sincronizacao é feita por um programa em C que esta agendado para
 rodar no cron a cada 5 min, sempre é uma conexão nova.

 Dentro desse arquivo em uma determianada parte chama uma funcao que
 uso pra sincronizacao em tcl que faz o seguinte:


     #CRIA UMA TABELA TEMPORARIA temp_tabela COM OS DADOS BASICOS P/ A
 SINCRONIZACAO
     spi_exec  SELECT  INTO TEMP temp_tabela  FROM tabela1,tabela2  

 depois cria outra tabela temporaria:

 spi_exec create temp table temp_xxx ();

 e dados sao manipulados nessas tabelas.


 Depois de executada essa funcao, fica uma tabela temporaria disponivel
 para esse programa em C que usa ela posteriormente e faz select's,
 etc

 Em determinados momentos, tipo uma vez a cada hora, (essa
 sincronizacao roda a cada 5 min) esta acontecendo o erro cache lookup
 failed for relation.

 Como posso resolver isso?



Utilize EXECUTE.
http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

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] erro: cache lookup failed for relation

2009-07-15 Por tôpico jorge sanfelice
Prezados,

Como eu faria o uso do execute para o meu caso?

Tenho alguns cenarios.
cenario 1: no momento em que sao geradas as tabelas temporarias.
cenario 2: no momento em que sao usadas as tabelas temporarias
(SELECT,UPDATE,INSERT)

Outra duvida, eu faço o seguinte no tcl:

spi_exec  SELECT  INTO TEMP temp_tabela  FROM tabela1,tabela2  

Aguem poderia dar um exemplo de com fazer no execute dentro de uma
funcao tcl ?

Obrigado.

2009/7/15 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Prezados,

 Estou com o seguinte erro:
 Error: cache lookup failed for relation 251285909

 Pesquisando no google achei o seguinte:

 Leia [1]. Isso ocorre porque o PostgreSQL faz cache do conteúdo das
 funções (inclusive o OID da tabela temporária referenciada), então ao
 executar novamente, ele tenta utilizar a tabela temporária antiga.
 Na versão 8.3 (próxima), isso não ocorrerá mais.

 [1] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.19


 E la diz o seguinte:
 Em versões do PostgreSQL  8.3, PL/PgSQL armazena o conteúdo da
 função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
 tabela temporária, e aquela tabela é removida e criada novamente, e a
 função é chamada novamente, a função irá falhar porque o conteúdo
 armazenado da função ainda apontará para a tabela temporária antiga. A
 solução é utilizar o EXECUTE para acesso a tabelas temporárias no
 PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.

 Esta versao que estou usando é a 8.2 (linux 64 mandriva).

 A sincronizacao é feita por um programa em C que esta agendado para
 rodar no cron a cada 5 min, sempre é uma conexão nova.

 Dentro desse arquivo em uma determianada parte chama uma funcao que
 uso pra sincronizacao em tcl que faz o seguinte:


     #CRIA UMA TABELA TEMPORARIA temp_tabela COM OS DADOS BASICOS P/ A
 SINCRONIZACAO
     spi_exec  SELECT  INTO TEMP temp_tabela  FROM tabela1,tabela2  

 depois cria outra tabela temporaria:

 spi_exec create temp table temp_xxx ();

 e dados sao manipulados nessas tabelas.


 Depois de executada essa funcao, fica uma tabela temporaria disponivel
 para esse programa em C que usa ela posteriormente e faz select's,
 etc

 Em determinados momentos, tipo uma vez a cada hora, (essa
 sincronizacao roda a cada 5 min) esta acontecendo o erro cache lookup
 failed for relation.

 Como posso resolver isso?



 Utilize EXECUTE.
 http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

 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


Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-15 Por tôpico jorge sanfelice
Se ajudar, o erro se da nesse momento:

Error: cache lookup failed for relation 251674995
COMMAND: SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
'%sincroniza_view'  ORDER BY 2;

2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Prezados,

 Como eu faria o uso do execute para o meu caso?

 Tenho alguns cenarios.
 cenario 1: no momento em que sao geradas as tabelas temporarias.
 cenario 2: no momento em que sao usadas as tabelas temporarias
 (SELECT,UPDATE,INSERT)

 Outra duvida, eu faço o seguinte no tcl:

 spi_exec  SELECT  INTO TEMP temp_tabela  FROM tabela1,tabela2  

 Aguem poderia dar um exemplo de com fazer no execute dentro de uma
 funcao tcl ?

 Obrigado.

 2009/7/15 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Prezados,

 Estou com o seguinte erro:
 Error: cache lookup failed for relation 251285909

 Pesquisando no google achei o seguinte:

 Leia [1]. Isso ocorre porque o PostgreSQL faz cache do conteúdo das
 funções (inclusive o OID da tabela temporária referenciada), então ao
 executar novamente, ele tenta utilizar a tabela temporária antiga.
 Na versão 8.3 (próxima), isso não ocorrerá mais.

 [1] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.19


 E la diz o seguinte:
 Em versões do PostgreSQL  8.3, PL/PgSQL armazena o conteúdo da
 função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
 tabela temporária, e aquela tabela é removida e criada novamente, e a
 função é chamada novamente, a função irá falhar porque o conteúdo
 armazenado da função ainda apontará para a tabela temporária antiga. A
 solução é utilizar o EXECUTE para acesso a tabelas temporárias no
 PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.

 Esta versao que estou usando é a 8.2 (linux 64 mandriva).

 A sincronizacao é feita por um programa em C que esta agendado para
 rodar no cron a cada 5 min, sempre é uma conexão nova.

 Dentro desse arquivo em uma determianada parte chama uma funcao que
 uso pra sincronizacao em tcl que faz o seguinte:


     #CRIA UMA TABELA TEMPORARIA temp_tabela COM OS DADOS BASICOS P/ A
 SINCRONIZACAO
     spi_exec  SELECT  INTO TEMP temp_tabela  FROM tabela1,tabela2  
 

 depois cria outra tabela temporaria:

 spi_exec create temp table temp_xxx ();

 e dados sao manipulados nessas tabelas.


 Depois de executada essa funcao, fica uma tabela temporaria disponivel
 para esse programa em C que usa ela posteriormente e faz select's,
 etc

 Em determinados momentos, tipo uma vez a cada hora, (essa
 sincronizacao roda a cada 5 min) esta acontecendo o erro cache lookup
 failed for relation.

 Como posso resolver isso?



 Utilize EXECUTE.
 http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

 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


Re: [pgbr-geral] erro: cache lookup failed for relation

2009-07-15 Por tôpico Osvaldo Kussama
2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Se ajudar, o erro se da nesse momento:

 Error: cache lookup failed for relation 251674995
 COMMAND: SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
 pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
 pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
 ('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
 pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
 '%sincroniza_view'  ORDER BY 2;



Tente rodar este comando no psql para confirmar se é ou não um
problema com seu banco.

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] erro: cache lookup failed for relation

2009-07-15 Por tôpico jorge sanfelice
Eu rodei isso:

SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
'%sincroniza_view' ORDER BY 2;

e funcionou normal.

Como eu disse, nao é sempre que esse erro acontece e nao sei porque
que acontece as vezes. tipo, rodando a cada 5 min o erro acontece 1 a
2 vezes no maximo a cada hora.

2009/7/15 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 2009/7/15 jorge sanfelice jorgesanfel...@gmail.com:
 Se ajudar, o erro se da nesse momento:

 Error: cache lookup failed for relation 251674995
 COMMAND: SELECT c.relname, n.nspname FROM pg_catalog.pg_class c JOIN
 pg_catalog.pg_roles r ON r.oid = c.relowner LEFT JOIN
 pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN
 ('v','r') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND
 pg_catalog.pg_table_is_visible(c.oid) AND c.relname ilike
 '%sincroniza_view'  ORDER BY 2;



 Tente rodar este comando no psql para confirmar se é ou não um
 problema com seu banco.

 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