Notei que para uma tabela (ou visualização ou visualização materializada) no PostgreSQL, há uma linha em pg_depend vinculando a linha pg_class da tabela com a linha pg_namespace do seu esquema.
No entanto, estou pensando se há algum caso em que uma linha em pg_depend pode vincular a linha pg_class a uma linha pg_namespace de um esquema no qual ela não está.
Isso está no contexto de Como posso listar as tabelas em um esquema sem uma varredura sequencial de pg_class?, onde estou tentando encontrar uma consulta eficiente para encontrar as tabelas em um esquema e me pergunto se tenho que lidar com esse caso.
Não posso provar, mas acho que se você limitar a consulta às
pg_depend
dependências normais e adicionar os catálogos corretos, a consulta deverá ser segura e usar uma varredura de índice:Essa consulta pode ser usada
pg_depend_reference_index
em(refclassid, refobjid, refobjsubid)
.Se isso é uma grande vitória em comparação a uma varredura sequencial,
pg_class
não está claro. Provavelmente é muito melhor se você tiver muitos e muitos esquemas, o que talvez seja um design questionável.