2014-07-01 11 views
5

W pg_stat_activity Widzę, że klient przechodzi przez niektóre wyniki zapytania za pomocą kursora. Ale jak mogę zobaczyć, co jest pierwotnym zapytaniem?Wyświetlanie aktywnego kursora leżącego pod kursorem

pipeline=> select pid, query from pg_stat_activity where state = 'active' order by query_start; 
    pid |               query 
-------+-------------------------------------------------------------------------------------- 
    6734 | FETCH FORWARD 1000 FROM "c_109886590_1" 
26731 | select pid, query from pg_stat_activity where state = 'active' order by query_start; 
(2 rows) 

widzę jest pg_cursors, ale jest pusty:

pipeline=> select * from pg_cursors; 
name | statement | is_holdable | is_binary | is_scrollable | creation_time 
------+-----------+-------------+-----------+---------------+--------------- 
(0 rows) 

Serwer jest na AWS RDS.

pipeline=> select version(); 
                version 
-------------------------------------------------------------------------------------------------------------- 
PostgreSQL 9.3.3 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2), 64-bit 
(1 row) 

Odpowiedz

6

Nie możesz.

pg_cursors jest backendem lokalnym. Nie pokazuje kursorów, które nie są częścią bieżącego połączenia.

PostgreSQL nie ma możliwości sprawdzenia, jakie zapytanie jest podstawą kursora z innej sesji.

Jedyny sposób, w jaki mogę to zrobić, to analiza logów z log_statement = all i odpowiednią log_line_prefix.

Powiązane problemy