Em 2 de setembro de 2010 09:21, Jorge Luiz <[email protected]>escreveu:

>
>    Existe algum tipo de select nos catalogos de sistema do postgresql
> onde consigo identificar o que significa o numero dentro da basta
> data/base/
>
>    Exemplo:
>       Eu sei que o numero /data/base/16396 é referente a minha base de
> dados principal, porem, preciso saber o que é o /data/base/16396/307497757
>
>    Tipo, sei que deve ser uma tabela ou indice dessa base, porem,
> precisava saber com certeza a qual se refere esse numero.
>
>

Crie a função abaixo na sua base de dados:

create or replace function fc_procura_oid(oid) returns boolean as
$$
declare
  xOid     alias for $1;
  lRetorno boolean default false;
  lAchou   boolean default false;
  rTabelas record;
  sExecuta text;
begin
  for rTabelas in
      select pg_class.relname,
             'SELECT EXISTS(SELECT oid FROM
'||quote_ident(nspname)||'.'||quote_ident(relname)||' WHERE oid = ' as
sql_to_search
        from pg_attribute
             inner join pg_class on pg_class.oid = pg_attribute.attrelid
             inner join pg_namespace on pg_namespace.oid =
pg_class.relnamespace
       where pg_attribute.attname = 'oid'
         and pg_class.relkind     = 'r'
         and pg_namespace.nspname = 'pg_catalog'
    order by 1
  loop
    sExecuta := rTabelas.sql_to_search || xOid || ')';
    execute sExecuta into lAchou;

    if lAchou then
      raise info 'OID % encontrado na tabela %', xOid, rTabelas.relname;
      lRetorno := true;
    end if;
  end loop;

  return lRetorno;
end;
$$
language plpgsql;



Utilize assim:

SELECT fc_procura_oid(307497757);

-- 
Fabrízio de Royes Mello
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a