Как получить схему postgres из запроса runinng в Java

#java #postgresql #hibernate #database-schema

#java #postgresql #спящий режим #база данных-схема

Вопрос:

предположим, вы выполняете запрос в таблице pg_stat_activity и получаете пример результата:

datid datname pid использует sysid usename имя_приложения client_addr client_hostname client_port backend_start xact_start query_start state_change wait_event_type wait_event state backend_xid backend_xmin query backend_type
7198 10 rdsadmin
7195
16384 rdsadmin 32375 10 rdsadmin Драйвер PostgreSQL JDBC
16409 c-t-s 21143 16410 c-t-s c-t-s 10.10.3.1 48037 2021-01-18 13:19:03 2021-01-18 13:31:23 2021-01-18 13:31:23 Client ClientRead idle COMMIT client backend

Я хотел бы знать, по какой схеме COMMIT был выполнен запрос?

В моем случае у меня многопользовательская работа на основе схемы, и я хотел бы различать схемы (арендаторы). Мы всегда делаем запросы с одной схемой, поэтому мы их не смешиваем. Для достижения этого мы устанавливаем search_path при каждом getConnection вызове метода. Код разработан на Java, и мы не используем имена схем в запросах, так как он всегда динамический — берется из текущего контекста запроса и устанавливается в getConnection методе.

С текущим результатом я не знаю, какой клиент (схема) вызывает медленные / длинные запросы.

Я пытался выбрать из pg_class по идентификаторам, взятым из pg_stat_activity, но безуспешно.

Пока комментарии не ответили на мою проблему, возможно ли это вообще?

Комментарии:

1. Запросы выполняются для всей базы данных. В одном запросе можно использовать несколько схем.

2. Я спрашиваю о том, как исследовать, на какую СХЕМУ влияет запрос. Информация отсутствует в pg_stat_activity.

3. select * from pg_catalog.pg_class as c join information_schema.tables as t on (c.relname = t.table_name); На какую схему влияет этот запрос?

4. Я не уверен, достаточно ли этого. Он выбирает * about pg_class и присоединяется к таблицам. Но до сих пор эта информация не связана с pg_stat_activity. Можем ли мы присоединиться к этому дополнительно с помощью select * из pg_stat_activity; по PID или чему-то еще?

5. В этом примере запроса я пытаюсь показать, что один qoury может использовать несколько схем. Таким образом, правильным вопросом должно быть «Как получить схемы postgres из запроса runinng» 🙂 В представлении нет отдельной информации об используемых схемах. pg_stat_activity В столбце можно найти текст выполняемых в настоящее время запросов query (примечание: «По умолчанию текст запроса усекается на 1024 байта» )