On 2/3/19 7:53 AM, PegoraroF10 wrote:
First the below is unreadable, probably because it is being sent through
Nabble. Please subscribe to list directly and try again. In meantime
could not tell from below, but what relevant information is in the logs
before and after?
I have a complex query which puts my server in recovery mode every time
I run it. I don´t need to say that recovery mode is a situation you
don´t want your server goes to. *If I´m using some subselects I´ll get
that situation* with StatusTrabalhando(Intkey) as (select Intkey from
sys_Lookup where Grupo = $$StatusDigitacao$$ and Intkey in (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$)),
StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo =
$$StatusVisita$$ and Intkey in (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$) and Intkey
not in (select unnest(string_to_array(substring(VarValue from 3),$$,$$))
from sys_Var where Name =
$$/Company/StatusDigitacaoReceptivoDescartarAgendados$$)),
Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID,
Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo,
Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3,
Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia,
Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing,
lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido,
Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial,
Midia, Prioridade, DataHoraAlteracao, Fluxo) ... *but if I run those
subselects previously, get those values and put the results to my
statement, then it works. * with
StatusDigitacaoReceptivoDescartarAgendados(Intkey) as (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoDescartarAgendados$$),
StatusDigitacaoReceptivoAgendados(IntKey) as (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$),
StatusDigitacaoReceptivoTrabalhando(IntKey) as (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$) select
(select IntKey from StatusDigitacaoReceptivoDescartarAgendados), (select
IntKey from StatusDigitacaoReceptivoAgendados), (select IntKey from
StatusDigitacaoReceptivoTrabalhando); *Then i get these results (8, 14
and 17) and replace those subselects with these values and run, now it
runs fine.* with StatusTrabalhando(Intkey) as (select Intkey from
sys_Lookup where Grupo = $$StatusDigitacao$$ and Intkey in (*8*)),
StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo =
$$StatusVisita$$ and Intkey in (*14*) and Intkey not in (*17*)),
Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID,
Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo,
Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3,
Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia,
Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing,
lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido,
Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial,
Midia, Prioridade, DataHoraAlteracao, Fluxo) *My original query, which
worked for some days and then went to recovery mode was ...* with
StatusTrabalhando(Intkey) as (select Intkey from sys_Lookup where Grupo
= $$StatusDigitacao$$ and Intkey in (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoTrabalhando$$)),
StatusAgendados(Intkey) as (select Intkey from sys_Lookup where Grupo =
$$StatusVisita$$ and Intkey in (select
unnest(string_to_array(substring(VarValue from 3),$$,$$)) from sys_Var
where Name = $$/Company/StatusDigitacaoReceptivoAgendados$$) and Intkey
not in (select unnest(string_to_array(substring(VarValue from 3),$$,$$))
from sys_Var where Name =
$$/Company/StatusDigitacaoReceptivoDescartarAgendados$$)),
Todos(Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID,
Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo,
Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3,
Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia,
Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing,
lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido,
Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial,
Midia, Prioridade, DataHoraAlteracao, Fluxo); as (select D.Digitacao_ID,
D.Fonte_ID, D.Curso_ID, Digitador_ID, D.Pesquisador_ID,
D.Telemarketing_ID, D.Nome, Curso.Descricao Curso, D.Telefone,
D.Celular, D.Nascimento, D.Sexo, D.Escolaridade, D.Cadastro, D.Email,
D.Idade, D.Obs, D.Extra1, D.Extra2, D.Extra3, D.Extra4, D.Colegio,
D.Serie, D.Turma, D.Turno, D.AnoLetivo, D.Pai, D.Mae, D.Sequencia,
D.Status, Status.Descricao lkStatus, Fonte.Fonte lkFonte,
DigitadorPessoa.Apelido lkDigitador, Pesquisador.Apelido lkPesquisador,
Telemarketing.Login lkTelemarketing, Escolaridade.Descricao
lkEscolaridade, D.Endereco, D.Bairro, D.Cidade, D.Estado, D.CEP,
D.Repetido, D.Impresso, D.Etiqueta, D.WhatsApp, PessoaNome.Nome
VisitaNome, VisitaStatus.Descricao VisitaStatus, D.Comercial,
Midia.Descricao, Midia.LetterKey, D.DataHoraAlteracao, case when
Telemarketing_ID is Null then $$Não Atribuido$$ when D.Status is null
then $$Atribuido$$ when D.Status in (select IntKey from
StatusTrabalhando) then $$Trabalhando$$ when VisitaNome.Status in
(select IntKey from StatusAgendados) then $$Agendados$$ else
$$Descartados$$ end Fluxo from cad_Digitacao D inner join cad_Fonte
Fonte on Fonte.Fonte_ID = D.Fonte_ID inner join sys_lookup TipoFonte on
TipoFonte.intkey = Fonte.TipoFonte left join sys_Account Telemarketing
on Telemarketing.Pessoa_ID = D.Telemarketing_ID left join sys_Account
Digitador on Digitador.Account_ID = D.Digitador_ID left join cad_Pessoa
DigitadorPessoa on Digitador.Pessoa_ID = DigitadorPessoa.Pessoa_ID left
join cad_Pessoa Pesquisador on Pesquisador.Pessoa_ID = D.Pesquisador_ID
left join col_Curso Curso on Curso.Curso_ID = D.Curso_ID left join
sys_Lookup Midia on Midia.Grupo = $$Midia$$ and Midia.IntKey =
Fonte.Midia left join sys_Lookup Escolaridade on Escolaridade.Grupo =
$$Escolaridade$$ and Escolaridade.IntKey = D.Escolaridade left join
sys_Lookup Status on Status.Grupo = $$StatusDigitacao$$ and
Status.IntKey = D.Status left join cad_visita VisitaNome on
VisitaNome.Digitacao_ID = D.Digitacao_ID left join sys_Lookup
VisitaStatus on VisitaStatus.Grupo = $$StatusVisita$$ and
VisitaStatus.IntKey = VisitaNome.Status left join cad_Pessoa PessoaNome
on PessoaNome.Pessoa_ID = VisitaNome.Pessoa_ID where TipoFonte.descricao
= $$Campanhas$$ and Fonte.Ativo = 1 ), NaoAtribuidos as (select * from
Todos where Fluxo = $$Não Atribuido$$), Atribuidos as (select * from
Todos where Fluxo = $$Atribuido$$), Trabalhando as (select * from todos
where Fluxo = $$Trabalhando$$), Agendados as (select * from todos where
Fluxo = $$Agendados$$), Descartados as (select * from todos where Fluxo
= $$Descartados$$) select * from (select 1 as Ordem, Digitacao_ID,
cast(Null as I32) Fonte_ID, cast(Null as I32) Curso_ID, cast(Null as
I32) Digitador_ID, cast(Null as I32) Pesquisador_ID, Telemarketing_ID,
Nome, cast(Null as T100) Curso, Cast(Null as Telefone) Telefone,
Cast(Null as Telefone) Celular, Cast(Null as Data) Nascimento, cast(Null
as Sexo) as Sexo, Cast(Null as I16) Escolaridade, Cadastro, Cast(Null as
T50) Email, Cast(Null as I16) Idade, Cast(Null as Memo) Obs, Cast(Null
as T50) Extra1, Cast(Null as T50) Extra2, Cast(Null as T50) Extra3,
Cast(Null as T50) Extra4, Cast(Null as T50) Colegio, Cast(Null as T50)
Serie, Cast(Null as T50) Turma, Cast(Null as C1) Turno, Cast(Null as
I16) AnoLetivo, Cast(Null as T50) Pai, Cast(Null as T50) Mae, Sequencia,
Cast(Null as I16) Status, lkStatus, lkFonte, Cast(Null as T50)
lkDigitador, Cast(Null as T50) lkPesquisador, lkTelemarketing, Cast(Null
as T50) lkEscolaridade, Cast(Null as T50) Endereco, Cast(Null as T30)
Bairro, Cast(Null as T30) Cidade, Cast(Null as Estado) Estado, Cast(Null
as T10) CEP, Cast(Null as I16) Repetido, Cast(Null as DataHora)
Impresso, Cast(Null as DataHora) Etiqueta, Cast(Null as I16) WhatsApp,
Cast(Null as T250) VisitaNome, Cast(Null as T50) VisitaStatus, Cast(Null
as Telefone) Comercial, Midia, Fluxo from NaoAtribuidos order by Ordem,
Prioridade desc, Cadastro) NA union all select 2 as Ordem, Digitacao_ID,
Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID,
Nome, Curso, Telefone, Celular, Nascimento, Sexo, Escolaridade,
Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio,
Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus,
lkFonte, lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade,
Endereco, Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta,
WhatsApp, VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from
Atribuidos union all select 3 as Ordem, Digitacao_ID, Fonte_ID,
Curso_ID, Digitador_ID, Pesquisador_ID, Telemarketing_ID, Nome, Curso,
Telefone, Celular, Nascimento, Sexo, Escolaridade, Cadastro, Email,
Idade, Obs, Extra1, Extra2, Extra3, Extra4, Colegio, Serie, Turma,
Turno, AnoLetivo, Pai, Mae, Sequencia, Status, lkStatus, lkFonte,
lkDigitador, lkPesquisador, lkTelemarketing, lkEscolaridade, Endereco,
Bairro, Cidade, Estado, CEP, Repetido, Impresso, Etiqueta, WhatsApp,
VisitaNome, VisitaStatus, Comercial, Midia, Fluxo from Trabalhando union
all select 4 as Ordem, Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID,
Pesquisador_ID, Telemarketing_ID, Nome, Curso, Telefone, Celular,
Nascimento, Sexo, Escolaridade, Cadastro, Email, Idade, Obs, Extra1,
Extra2, Extra3, Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai,
Mae, Sequencia, Status, lkStatus, lkFonte, lkDigitador, lkPesquisador,
lkTelemarketing, lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP,
Repetido, Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus,
Comercial, Midia, Fluxo from Agendados union all select 5 as Ordem,
Digitacao_ID, Fonte_ID, Curso_ID, Digitador_ID, Pesquisador_ID,
Telemarketing_ID, Nome, Curso, Telefone, Celular, Nascimento, Sexo,
Escolaridade, Cadastro, Email, Idade, Obs, Extra1, Extra2, Extra3,
Extra4, Colegio, Serie, Turma, Turno, AnoLetivo, Pai, Mae, Sequencia,
Status, lkStatus, lkFonte, lkDigitador, lkPesquisador, lkTelemarketing,
lkEscolaridade, Endereco, Bairro, Cidade, Estado, CEP, Repetido,
Impresso, Etiqueta, WhatsApp, VisitaNome, VisitaStatus, Comercial,
Midia, Fluxo from Descartados order by Ordem; *And the explain of that
query was ...* QUERY PLAN Sort (cost=2640.68..2640.84 rows=65
width=1128) Sort Key: "*SELECT* 1".ordem CTE statustrabalhando -> Hash
Semi Join (cost=15.44..30.40 rows=7 width=4) Hash Cond:
((sys_lookup.intkey)::text =
(unnest(string_to_array("substring"((sys_var.varvalue)::text, 3),
','::text)))) -> Bitmap Heap Scan on sys_lookup (cost=4.39..19.21
rows=14 width=4) Recheck Cond: ((grupo)::text = 'StatusDigitacao'::text)
-> Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..4.38 rows=14
width=0) Index Cond: ((grupo)::text = 'StatusDigitacao'::text) -> Hash
(cost=9.81..9.81 rows=100 width=32) -> ProjectSet (cost=0.28..8.81
rows=100 width=32) -> Index Scan using idxsysvarname on sys_var
(cost=0.28..8.29 rows=1 width=9) Index Cond: ((name)::text =
'/Company/StatusDigitacaoReceptivoTrabalhando'::text) CTE
statusagendados -> Hash Semi Join (cost=24.51..39.66 rows=4 width=4)
Hash Cond: ((sys_lookup_1.intkey)::text =
(unnest(string_to_array("substring"((sys_var_2.varvalue)::text, 3),
','::text)))) -> Bitmap Heap Scan on sys_lookup sys_lookup_1
(cost=13.46..28.53 rows=8 width=4) Recheck Cond: ((grupo)::text =
'StatusVisita'::text) Filter: (NOT (hashed SubPlan 2)) -> Bitmap Index
Scan on idxsyslookupgrupointkey (cost=0.00..4.40 rows=16 width=0) Index
Cond: ((grupo)::text = 'StatusVisita'::text) SubPlan 2 -> ProjectSet
(cost=0.28..8.81 rows=100 width=32) -> Index Scan using idxsysvarname on
sys_var sys_var_1 (cost=0.28..8.29 rows=1 width=9) Index Cond:
((name)::text =
'/Company/StatusDigitacaoReceptivoDescartarAgendados'::text) -> Hash
(cost=9.81..9.81 rows=100 width=32) -> ProjectSet (cost=0.28..8.81
rows=100 width=32) -> Index Scan using idxsysvarname on sys_var
sys_var_2 (cost=0.28..8.29 rows=1 width=9) Index Cond: ((name)::text =
'/Company/StatusDigitacaoReceptivoAgendados'::text) CTE todos -> Merge
Right Join (cost=2152.17..2282.99 rows=2504 width=828) Merge Cond:
((visitanome.digitacao_id)::integer = (d.digitacao_id)::integer) ->
Nested Loop Left Join (cost=4.99..56111.59 rows=77463 width=46) ->
Nested Loop Left Join (cost=4.69..22162.21 rows=77463 width=27) Join
Filter: ((visitastatus.intkey)::integer = (visitanome.status)::smallint)
-> Index Scan using idxvisitadigitacao on cad_visita visitanome
(cost=0.29..3551.70 rows=77463 width=10) -> Materialize
(cost=4.40..19.43 rows=16 width=21) -> Bitmap Heap Scan on sys_lookup
visitastatus (cost=4.40..19.35 rows=16 width=21) Recheck Cond:
((grupo)::text = 'StatusVisita'::text) -> Bitmap Index Scan on
idxsyslookupgrupointkey (cost=0.00..4.40 rows=16 width=0) Index Cond:
((grupo)::text = 'StatusVisita'::text) -> Index Scan using pkpessoa on
cad_pessoa pessoanome (cost=0.29..0.44 rows=1 width=27) Index Cond:
((pessoa_id)::integer = (visitanome.pessoa_id)::integer) -> Sort
(cost=2146.94..2148.64 rows=682 width=756) Sort Key: d.digitacao_id ->
Hash Left Join (cost=1301.36..2114.84 rows=682 width=756) Hash Cond:
((d.status)::smallint = (status.intkey)::integer) -> Hash Left Join
(cost=1281.98..2081.79 rows=682 width=739) Hash Cond:
((d.escolaridade)::smallint = (escolaridade.intkey)::integer) -> Hash
Left Join (cost=1263.51..2053.08 rows=682 width=722) Hash Cond:
((fonte.midia)::smallint = (midia.intkey)::integer) -> Hash Left Join
(cost=1233.51..1959.83 rows=682 width=705) Hash Cond:
((d.curso_id)::integer = (curso.curso_id)::integer) -> Nested Loop Left
Join (cost=1219.91..1944.43 rows=682 width=673) -> Hash Left Join
(cost=1219.62..1411.81 rows=682 width=650) Hash Cond:
((d.telemarketing_id)::integer = (telemarketing.pessoa_id)::integer) ->
Hash Left Join (cost=1213.06..1401.72 rows=682 width=639) Hash Cond:
((d.digitador_id)::integer = (digitador.account_id)::integer) -> Nested
Loop (cost=29.52..215.51 rows=682 width=616) -> Hash Join
(cost=29.24..54.61 rows=7 width=17) Hash Cond:
((fonte.tipofonte)::smallint = (tipofonte.intkey)::integer) -> Seq Scan
on cad_fonte fonte (cost=0.00..24.62 rows=136 width=19) Filter:
((ativo)::smallint = 1) -> Hash (cost=29.21..29.21 rows=2 width=4) ->
Seq Scan on sys_lookup tipofonte (cost=0.00..29.21 rows=2 width=4)
Filter: ((descricao)::text = 'Campanhas'::text) -> Index Scan using
idxdigitacaofonte on cad_digitacao d (cost=0.29..20.72 rows=227
width=603) Index Cond: ((fonte_id)::integer = (fonte.fonte_id)::integer)
-> Hash (cost=1181.56..1181.56 rows=158 width=27) -> Nested Loop Left
Join (cost=0.29..1181.56 rows=158 width=27) -> Seq Scan on sys_account
digitador (cost=0.00..4.58 rows=158 width=8) -> Index Scan using
pkpessoa on cad_pessoa digitadorpessoa (cost=0.29..7.45 rows=1 width=27)
Index Cond: ((digitador.pessoa_id)::integer = (pessoa_id)::integer) ->
Hash (cost=4.58..4.58 rows=158 width=15) -> Seq Scan on sys_account
telemarketing (cost=0.00..4.58 rows=158 width=15) -> Index Scan using
pkpessoa on cad_pessoa pesquisador (cost=0.29..0.78 rows=1 width=27)
Index Cond: ((pessoa_id)::integer = (d.pesquisador_id)::integer) -> Hash
(cost=11.60..11.60 rows=160 width=36) -> Seq Scan on col_curso curso
(cost=0.00..11.60 rows=160 width=36) -> Hash (cost=27.06..27.06 rows=236
width=23) -> Bitmap Heap Scan on sys_lookup midia (cost=10.11..27.06
rows=236 width=23) Recheck Cond: ((grupo)::text = 'Midia'::text) ->
Bitmap Index Scan on idxsyslookupgrupointkey (cost=0.00..10.05 rows=236
width=0) Index Cond: ((grupo)::text = 'Midia'::text) -> Hash
(cost=18.34..18.34 rows=10 width=21) -> Bitmap Heap Scan on sys_lookup
escolaridade (cost=4.36..18.34 rows=10 width=21) Recheck Cond:
((grupo)::text = 'Escolaridade'::text) -> Bitmap Index Scan on
idxsyslookupgrupointkey (cost=0.00..4.35 rows=10 width=0) Index Cond:
((grupo)::text = 'Escolaridade'::text) -> Hash (cost=19.21..19.21
rows=14 width=21) -> Bitmap Heap Scan on sys_lookup status
(cost=4.39..19.21 rows=14 width=21) Recheck Cond: ((grupo)::text =
'StatusDigitacao'::text) -> Bitmap Index Scan on idxsyslookupgrupointkey
(cost=0.00..4.38 rows=14 width=0) Index Cond: ((grupo)::text =
'StatusDigitacao'::text) SubPlan 4 -> CTE Scan on statustrabalhando
(cost=0.00..0.14 rows=7 width=4) SubPlan 5 -> CTE Scan on
statusagendados (cost=0.00..0.08 rows=4 width=4) CTE naoatribuidos ->
CTE Scan on todos (cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo =
'Não Atribuido'::text) CTE atribuidos -> CTE Scan on todos todos_1
(cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo =
'Atribuido'::text) CTE trabalhando -> CTE Scan on todos todos_2
(cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo =
'Trabalhando'::text) CTE agendados -> CTE Scan on todos todos_3
(cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo =
'Agendados'::text) CTE descartados -> CTE Scan on todos todos_4
(cost=0.00..56.34 rows=13 width=1164) Filter: (fluxo =
'Descartados'::text) -> Append (cost=1.80..3.98 rows=65 width=1128) ->
Subquery Scan on "*SELECT* 1" (cost=1.80..2.09 rows=13 width=1128) ->
Subquery Scan on na (cost=1.80..1.96 rows=13 width=1128) -> Sort
(cost=1.80..1.83 rows=13 width=1160) Sort Key: naoatribuidos.prioridade
DESC, naoatribuidos.cadastro -> CTE Scan on naoatribuidos
(cost=0.00..1.56 rows=13 width=1160) -> Subquery Scan on "*SELECT* 2"
(cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on atribuidos
(cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 3"
(cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on trabalhando
(cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 4"
(cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on agendados
(cost=0.00..0.26 rows=13 width=1128) -> Subquery Scan on "*SELECT* 5"
(cost=0.00..0.39 rows=13 width=1128) -> CTE Scan on descartados
(cost=0.00..0.26 rows=13 width=1128) *So, how to solve that and mainly
how to don´t get this recovery mode just running a query ?*
------------------------------------------------------------------------
Sent from the PostgreSQL - general mailing list archive
<http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html> at
Nabble.com.
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx