postgrespro/mamonsu

Error при запросе к pg_stat_statements

sgrinko opened this issue · 4 comments

Версия 3.5.1
Собрано из исходников.
bootstrap режим включен.

выполняется запрос ошибочного вида:

2022-07-29 12:25:02.656 MSK [13944()-1] app=[mamonsu],client=[::1(39500)] [mamonsu@mamonsu], [vxid:7/136037 txid:0] [SELECT] ERROR:  target lists can have at most 1664 entries
2022-07-29 12:25:02.656 MSK [13944()-2] app=[mamonsu],client=[::1(39500)] [mamonsu@mamonsu], [vxid:7/136037 txid:0] [SELECT] STATEMENT:
                SELECT sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024, sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024, sum(shared_blks_dirtied+local_blks_dirtied)*8
*1024, sum(blk_read_time)/float4(100), sum(blk_write_time)/float4(100), sum(total_exec_time+total_plan_time-blk_read_time-blk_write_time)/float4(100), sum(wal_bytes), sum(wal_records), sum(wal_fpi),
sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal
_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes)
, sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(w
al_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_reco
rds), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), s
um(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_
fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), s
um(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_
bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes),
 sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wa
l_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_recor
ds), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), su
m(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records),

...

sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal
_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes)
, sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(w
al_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_reco
rds), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), s
um(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_
fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), s
um(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_
bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes),
 sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wa
l_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi)
                FROM public.pg_stat_statements;

2022-07-29 12:25:12.673 MSK [13961()-1] app=[mamonsu],client=[::1(39506)] [mamonsu@mamonsu], [vxid:7/136042 txid:0] [SELECT] ERROR:  target lists can have at most 1664 entries

Включил режим DEBUG и вот что там происходит:

[DEBUG] 2022-07-29 19:10:41,969 - PGSQL-(host=localhost db=mamonsu user=mamonsu port=5432)  -   Run: 
"SELECT sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024, sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024,sum(shared_blks_dirtied+local_blks_dirtied)*8*1024, sum(blk_read_time)/float4(100), sum(blk_write_time)/float4(100), sum(total_exec_time+total_plan_time-blk_read_time-blk_write_time)/float4(100), 
sum(wal_bytes), sum(wal_records), sum(wal_fpi) FROM public.pg_stat_statements;"

[DEBUG] 2022-07-29 19:11:42,045 - PGSQL-(host=localhost db=mamonsu user=mamonsu port=5432)  -  Run: 
"SELECT sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024, sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024, sum(shared_blks_dirtied+local_blks_dirtied)*8*1024, sum(blk_read_time)/float4(100), sum(blk_write_time)/float4(100), sum(total_exec_time+total_plan_time-blk_read_time-blk_write_time)/float4(100), 
sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi) FROM public.pg_stat_statements;"

[DEBUG] 2022-07-29 19:12:42,129 - PGSQL-(host=localhost db=mamonsu user=mamonsu port=5432)  -   Run: 
"SELECT sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024, sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024, sum(shared_blks_dirtied+local_blks_dirtied)*8*1024, sum(blk_read_time)/float4(100), sum(blk_write_time)/float4(100), sum(total_exec_time+total_plan_time-blk_read_time-blk_write_time)/float4(100), 
sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi) FROM public.pg_stat_statements;"

[DEBUG] 2022-07-29 19:13:42,180 - PGSQL-(host=localhost db=mamonsu user=mamonsu port=5432)  -   Run: 
"SELECT sum(shared_blks_read+local_blks_read+temp_blks_read)*8*1024, sum(shared_blks_written+local_blks_written+temp_blks_written)*8*1024, sum(shared_blks_dirtied+local_blks_dirtied)*8*1024, sum(blk_read_time)/float4(100), sum(blk_write_time)/float4(100), sum(total_exec_time+total_plan_time-blk_read_time-blk_write_time)/float4(100), 
sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi), sum(wal_bytes), sum(wal_records), sum(wal_fpi) FROM public.pg_stat_statements;"

таким образом каждую минуту во фразе SELECT добавляется 3 последних поля:

sum(wal_bytes), sum(wal_records), sum(wal_fpi)

и когда число всех полей достигает предела в 1664 entries мы получаем ошибку:

[SELECT] ERROR:  target lists can have at most 1664 entries

Скорее всего нет очистки какой-то переменной.

Добрый день! Добавили фикс в версию 3.5.2.

Благодарю. Буду смотреть.

Всё хорошо, Спасибо