Daniel,

 Não sei como você poderá identificar a seção. Dê uma lida nisso: http://www.postgresql.org/docs/8.2/static/catalog-pg-class.html e veja se alguma coluna retorna a seção que deseja, pelo que vi não tem nada do que deseja.
Você não colocar algum identificador da seção na tabela temporaria? Tipo colocar no nome dela!?

Att

Evandro

Daniel Cordeiro wrote:
Olá Everaldo,

Obrigado pela ajuda, infelismente não funcionou como eu esperava.

Eu preciso saber se a tabela da minha sessão foi criado, mas o que 
acontece é que a consulta que você me passou vai me mostrar a tabela 
temporária de todas as sessões. E não somente a minha.

Na verdade, o que acontece comigo é que como uso um sistema web com um 
número muito alto de requisições, preciso manter minha conexão 
persistente. A cada recarregamneto da tela, eu tenho que ver se a tabela 
temporária existe (ou caso a conexão tenha se expirado), se não 
exisitir, eu a crio e preencho com informações baśicas recolhidas da 
sessão do PHP.

Eu estava fazendo o trabalho sempre removendo e recriando as funções com 
o comando DROP IF EXIST, só que eu não sabia que as procedures quando 
são executadas na seção, são na verdade COMPILADAS no momento da sua 
primeira execução, de tal forma que as informações da tabela que ele 
extrai são registrados na procedure através dos OIDS. Como os OIDS mudam 
porque eu sempre recriava a tabela temporária, mas a seção não era 
expirada, não consequia realizar as operações que desejava porque dava 
um erro, pois a procedure procurava os dados em um OID inexistente.

Como as vezes eu não sei quando a seção foi expirada, não tem como eu 
ficar a cada requisição removendo e recriando a tabela, mas o espaço 
ocupado não é meu problema.


Muito obrigado pela sua ajuda.

Daniel Cordeiro

Evandro Ricardo Silvestre escreveu:
  
Daniel,

Tente o seguinte:

 SELECT a.relname AS tabela
           FROM pg_class a
          WHERE (a.relkind = 'r') and relnamespace <> 2200

Vai te retornar todas as tabelas temporárias.

Sinceramente, não confio em fazer acesso a tabelas temporárias do jeito 
que deseja fazer! Particularmente prefiro apagar a tabela temporária 
sempre após o uso, para não ocupar espaço!

Att

Evandro

Daniel Cordeiro wrote:
  
    
Olá a todos mais uma vez,

Além do problema das conexões, gostaria de saber como descubro  a tabela 
temporária que esta ativa na seção corrente, pois gostaria de gravar 
algumas informações nesta tabela temporária ( carregadas da seção do 
PHP) para interagir diretamente através de gatilhos e procedures que se 
baseam nestas informações ( e assim, tirando a necessidade de se passar 
parâmetros para as procedures).

Estou usando PostGreSQL 8.2, e a única  coisa que vi nesta versão é como 
deletar a tabela com a comando DROP TABLE IF EXISTS.

Procurando pelas tabelas do sistema, eu encontrei a tabela com o 
sequinte comando:

=#SELECT schemaname,tablename from pg_tables where tablename = 'teste';

O problema é que ela me retorna todas as tabelas temporárias de todas as 
sessões ativas, da sequinte forma:

     schemaname | tablename
    ------------+-----------
     pg_temp_1  | teste
     pg_temp_2  | teste


Gostaria de uma forma de descobrir se uma determinada tabela temporária 
existe na MINHA SESSAO CORRENTE, para que, caso não exista, eu possa 
cria-la na minha conexão persistente.


Desde já agradeço e espero poder contribuir com o grupo tanto quanto ele 
me ajuda.

Daniel Cordeiro

  
    
      
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios



  
    


  

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a