Euler,
Haja vista o conhecimento que você passou, cheguei a um resultado semelhante
com a consulta abaixo:
Consulta 01:
SELECT attrelid,attname, atttypid FROM pg_attribute WHERE attrelid = 167017
and ( atttypid isnull or atttypid = 0);
attrelid;attname;atttypid
;;
54;;0
;;
;;
167017;........pg.dropped.12........;0
167017;........pg.dropped.25........;0
Mesmo aparecendo estas 6 linhas, o conteúdo da coluna de comparação attrelid
(167017) não é retornado em 4 delas.
Veja que os mesmos registros aparecem na consulta:
Consulta 02:
SELECT attrelid,attname, atttypid FROM pg_attribute WHERE attrelid = 167017;
attrelid|attname|atttypid
-> ||
-> 54||0
-> ||
167017|id_permissao|23
167017|nome|17070
167017|descricao|17071
167017|ordem|23
167017|id_usuario_ins|23
167017|dta_inserido|1082
167017|hora_inserido|1083
167017|id_usuario_upd|23
-> ||
-> 167017|........pg.dropped.12........|0
167017|id_fase_seguinte_aprova|23
167017|id_fase_seguinte_rejeita|23
167017|agenda_pericia|23
167017|agenda_procedimento|23
167017|permite_aprovar|1042
167017|permite_rejeitar|1042
167017|permite_cancelar|1042
167017|permite_encaminhar|1042
167017|add_proced_sec|1042
167017|inf_proced_princ_apr|1042
167017|libera_num|1042
167017|conf_agenda_tramite|1042
-> 167017|........pg.dropped.25........|0
Pelo que vi, a consulta 01 é factível para a execução do DELETE.
A pergunta é:Este raciocínio está correto?
Em 9 de agosto de 2011 18:56, Euler Taveira de Oliveira
<[email protected]>escreveu:
> Em 09-08-2011 17:35, Marcos Oliveira escreveu:
> > Outro detalhe importante: Não consigo fazer um dump da base.
> >
> E nem vai conseguir. O pg_dump[all] faz consultas na pg_attribute.
>
> > Ao executar a consulta
> > select count(*) FROM pg_attribute WHERE attname = '' AND attrelid =
> 167017;
> >
> > obtenho 0 resultados. É isto mesmo que deveria ocorrer?
> >
> Não. Você informou que a consulta
>
> SELECT attname, atttypid FROM pg_attribute WHERE attrelid = 167017;
>
> retornava valores do campo attname que era vazio ('')! O objetivo é remover
> as
> tuplas cujo atributo attname é vazio ou nulo. Uma das consultas retornará
> dados:
>
> SELECT attname, atttypid FROM pg_attribute WHERE attname = '' AND attrelid
> =
> 167017;
> ou
> SELECT attname, atttypid FROM pg_attribute WHERE attname IS NULL AND
> attrelid
> = 167017;
>
> Baseado nessas consultas monte uma cláusula WHERE para comando DELETE.
>
>
> --
> Euler Taveira de Oliveira - Timbira http://www.timbira.com.br/
> PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral