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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a