Estou trabalhando com um aplicativo do Windows que usa um banco de dados postgres (local) e armazena algumas informações em uma tabela temporária. Eu gostaria de dar uma olhada na tabela temporária, mas pgadmin e dbVis me dizem: ERROR: cannot access temporary tables of other sessions
ao tentar consultar os dados. Tentei alterar as permissões do esquema e da tabela, mas não pareceu adiantar, mesmo estando acessando o banco de dados com o mesmo usuário do próprio programa (pelo menos em dbVis). Existe uma configuração que eu possa alterar em meu banco de dados que me permita ter acesso "root" a todas as sessões em meu banco de dados?
relate perguntas
-
Posso ativar o PITR depois que o banco de dados foi usado
-
Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo
-
Os procedimentos armazenados impedem a injeção de SQL?
-
Sequências Biológicas do UniProt no PostgreSQL
-
Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?
A falta de acesso a tabelas temporárias em outras sessões não é uma questão de permissões, é uma limitação técnica do design. Um back-end do PostgreSQL não pode acessar tabelas temporárias de outro back-end porque nenhuma das tarefas de limpeza comuns para permitir o acesso simultâneo é feita para tabelas temporárias.
Em 9.2, você desejará usar uma
UNLOGGED
tabela; isso pode ser visível em outras sessões, mas retém a maioria dos benefícios de desempenho de uma tabela temporária.A resposta curta é não". Tabelas temporárias em outras sessões são invisíveis por design. Não faz diferença se duas sessões tiverem o mesmo usuário. Até:
Não sei se isso pode te ajudar, mas você pode tentar.
A seguinte consulta de tabela de catálogo do sistema deve ser capaz de listar todas as tabelas temporárias criadas em outras sessões no banco de dados:
Por doc do PostgreSQL
Temporary tables exist in a special schema
e geralmente são criados com o nome comopg_temp_xxx
. Então, usandoschemaname
.relationname
da consulta acima, você poderá consultar sua tabela temporária. Como você pode ver aqui, a tabela temporária é referenciada com o nome qualificado pelo esquema.Exemplo:
select * from pg_temp_20.your_temp_table_name