50.6. Поля сообщений с ошибками и замечаниями
В этом разделе описываются поля, которые могут содержаться в сообщениях ErrorResponse и NoticeResponse. Для каждого типа поля определён свой идентификационный маркер. Заметьте, что в сообщении может содержаться поле любого из этих типов, но не больше одного раза.
-
S
Важность: поле содержит
ERROR
,FATAL
илиPANIC
(в сообщении об ошибке), либоWARNING
,NOTICE
,DEBUG
,INFO
илиLOG
(в сообщении с замечанием), либо переведённые значения (ОШИБКА, ВАЖНО, ПАНИКА, ПРЕДУПРЕЖДЕНИЕ, ЗАМЕЧАНИЕ, ОТЛАДКА, ИНФОРМАЦИЯ, СООБЩЕНИЕ, соответственно). Это поле присутствует всегда.-
C
Код: код SQLSTATE выданной ошибки (см. Приложение A). Не переводится на другие языки, присутствует всегда.
-
M
Сообщение: основное сообщение об ошибке, предназначенное для человека. Должно быть точным, но кратким (обычно в одну строку). Присутствует всегда.
-
D
Необязательное дополнительное сообщение об ошибке, передающее более детальную информацию о проблеме. Может занимать несколько строк.
-
H
Подсказка: необязательное предложение решения проблемы. Оно должно отличаться от подробного описания тем, что предлагает совет (не обязательно подходящий во всех случаях), а не сухие факты. Может располагаться в нескольких строках.
-
P
Позиция: значение поля представляет целочисленное число в ASCII, указывающее на положение ошибки в исходной строке запроса. Первый символ находится в позиции 1, при этом позиции отсчитываются по символам, а не по байтам.
-
p
Внутренняя позиция: она определяется так же, как поле
P
, но отражает положение ошибки во внутренне сгенерированной команде, а не в строке, переданной клиентом. Вместе с этим полем всегда присутствует полеq
.-
q
Внутренний запрос: текст внутренне сгенерированной команды, в которой произошла ошибка. Это может быть, например, SQL-запрос, выполняемый функцией на PL/pgSQL.
-
W
Где: указывает на контекст, в котором произошла ошибка. В настоящее время включает трассировку стека вызовов текущей функции на процедурном языке и внутренне сгенерированных запросов. Записи трассировки разделяются по строкам, вначале последняя.
-
s
Имя схемы: если ошибка связана с некоторым объектом базы данных, это поле содержит имя схемы, к которой относится объект (если такая есть).
-
t
Имя таблицы: если ошибка связана с некоторой таблицей, это поле содержит имя таблицы. (Узнать имя схемы таблицы можно из соответствующего отдельного поля.)
-
c
Имя столбца: если ошибка связана с некоторым столбцом таблицы, это поле содержит имя столбца. (Идентифицировать таблицу можно, обратившись к полям, содержащим имя таблицы и схемы.)
-
d
Имя типа данных: если ошибка связана с некоторым типом данных, это поле содержит имя типа. (Узнать имя схемы типа можно из соответствующего поля.)
-
n
Имя ограничения: если ошибка связана с некоторым ограничением, это поле содержит имя ограничения. Чтобы узнать, к какой таблице или домену она относится, обратитесь к полям, описанным выше. (В данном контексте индексы считаются ограничениями, даже если они были созданы не с синтаксисом ограничений.)
-
F
Файл: имя файла с исходным кодом, в котором была обнаружена ошибка.
-
L
Строка: номер строки в исходном коде, в которой была обнаружена ошибка.
-
R
Программа: имя программы в исходном коде, в которой была обнаружена ошибка.
Примечание
Поля, содержащие имена схемы, таблицы, столбца, типа данных и ограничения, выдаются только для ограниченного числа типов ошибок; см. Приложение A. Клиенты не должны рассчитывать на то, что присутствие одного из полей обязательно влечёт присутствие другого поля. Системные источники ошибок устанавливают связь между ними, но пользовательские функции могут использовать эти поля по-другому. Подобным образом, клиенты не должны полагаться на то, что эти поля ссылаются на актуальные объекты в текущей базе данных.
Клиент отвечает за форматирование отображаемой информации в соответствии с его нуждами; в частности, он должен разбивать длинные строки, как требуется. Символы новой строки, встречающиеся в полях сообщения об ошибке, должны обрабатываться, как разрывы абзацев, а не строк.
49.64. System Views
In addition to the system catalogs, Postgres Pro provides a number of built-in views. Some system views provide convenient access to some commonly used queries on the system catalogs. Other views provide access to internal server state.
The information schema (Chapter 34) provides an alternative set of views which overlap the functionality of the system views. Since the information schema is SQL-standard whereas the views described here are Postgres Pro-specific, it's usually better to use the information schema if it provides all the information you need.
Table 49.65 lists the system views described here. More detailed documentation of each view follows below. There are some additional views that provide access to the results of the statistics collector; they are described in Table 27.2.
Except where noted, all the views described here are read-only.
Table 49.65. System Views
View Name | Purpose |
---|---|
pg_available_extensions | available extensions |
pg_available_extension_versions | available versions of extensions |
pg_config | compile-time configuration parameters |
pg_cursors | open cursors |
pg_file_settings | summary of configuration file contents |
pg_group | groups of database users |
pg_hba_file_rules | summary of client authentication configuration file contents |
pg_indexes | indexes |
pg_locks | locks currently held or awaited |
pg_matviews | materialized views |
pg_policies | policies |
pg_prepared_statements | prepared statements |
pg_prepared_xacts | prepared transactions |
pg_publication_tables | publications and their associated tables |
pg_replication_origin_status | information about replication origins, including replication progress |
pg_replication_slots | replication slot information |
pg_roles | database roles |
pg_rules | rules |
pg_seclabels | security labels |
pg_sequences | sequences |
pg_settings | parameter settings |
pg_shadow | database users |
pg_stats | planner statistics |
pg_tables | tables |
pg_timezone_abbrevs | time zone abbreviations |
pg_timezone_names | time zone names |
pg_user | database users |
pg_user_mappings | user mappings |
pg_views | views |