Fernando França escreveu:
> Um exemplo de consulta que já gera o tal erro é logo após o login no
> meu sistema:
>
É essa consulta que aparece no log do postgresql juntamente com o erro
de tid? Aparentemente esta consulta não manipula tids. Qual o EXPLAIN
desta consulta?
Sugiro que acrescente o 'FROM servico_recursos_utilizados' nos locais
marcados abaixo. Depender do missing_from é horrível. Além disso sugiro
que retire esse monte de 'casts' desnecessários que só estão
atrapalhando o entendimento da consulta.
> ###
>
> select cast(
> case when servico.cancelado then
> cast(' ' as char(8))
> else
>
> case when servico.classif_servico = '04' or servico.cancelado then
> case when servico.hfiser is not null then
> cast(to_char(age(servico.hfiser, servico.hinsol),
> 'HH24:MI:SS') as char(8))
> else
> cast(to_char(age(current_timestamp, servico.hinsol),
> 'HH24:MI:SS') as char(8))
> end
> -- Todas as unidades deste atendimento estao liberadas
>
>
> when servico.classif_servico = '01' then
> case when (select count(*) from servico_recursos_utilizados
> where num_servico = servico.num_servico and
> hlimov is
> null) > 0 or
> (select count(*) from servico_recursos_utilizados
> where num_servico = servico.num_servico) = 0 then
> cast(to_char(
> age(current_timestamp, servico.hinsol),
> 'HH24:MI:SS') as char(8))
>
> else
> cast(to_char(
> age((select servico_recursos_utilizados.hlimov
^^^^^^^^^^^^^^^^^
> where
> servico_recursos_utilizados.num_servico =
> servico.num_servico
> order by
> servico_recursos_utilizados.ordem desc limit 1),
> servico.hinsol),
> 'HH24:MI:SS') as char(8))
>
> end
>
>
> when servico.classif_servico = '02' then
> -- Todas as unidades desta remocao estao liberadas
> case when (select count(*) from servico_recursos_utilizados
^^^^^^^^^^^^^^^^^^^^
> where num_servico = servico.num_servico and
> hlimov is
> null) = 0 then
> (select
> cast( to_char(sum(age(servico_recursos_utilizados.hlimov,
>
> servico_recursos_utilizados.hpaequ)),
> 'HH24:MI:SS') as char(8))
^^^^^^^^^^^^^^^^^^^^^^
> where servico_recursos_utilizados.num_servico
> =
> servico.num_servico)
>
>
> else
> cast(to_char(
> age(current_timestamp,
> (select
> max(servico_recursos_utilizados.hpaequ)
^^^^^^^^^^^^^^^^^^^^^^
> where num_servico = servico.num_servico)),
> 'HH24:MI:SS') as char(8))
>
> end
>
> end
>
> end
> as char(8))
>
>
> as total from servico where num_servico = NULL;
>
--
Euler Taveira de Oliveira
http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral