52.7. Форматы сообщений#
52.7. Форматы сообщений #
Этот раздел описывает подробный формат каждого сообщения. Каждое сообщение помечено, чтобы указать, что оно может быть отправлено клиентом (F), сервером (B) или и клиентом, и сервером (F & B). Обратите внимание, что хотя каждое сообщение включает количество байт в начале, формат сообщения определен таким образом, что конец сообщения можно найти без ссылки на количество байт. Это помогает проверке корректности. (Сообщение CopyData является исключением, потому что оно является частью потоковых данных; содержимое каждого отдельного сообщения CopyData не может быть интерпретировано самостоятельно).
- AuthenticationOk (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(0)
Указывает, что аутентификация прошла успешно.
- AuthenticationKerberosV5 (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(2)
Указывает, что требуется аутентификация Kerberos V5.
- AuthenticationCleartextPassword (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(3)
Указывает, что требуется пароль в открытом виде.
- AuthenticationMD5Password (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(12)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(5)
Указывает, что требуется пароль, зашифрованный с использованием алгоритма MD5.
- Byte4
Соль, используемая при шифровании пароля.
- AuthenticationGSS (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(7)
Указывает, что требуется аутентификация GSSAPI.
- AuthenticationGSSContinue (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(8)
Указывает, что это сообщение содержит данные GSSAPI или SSPI.
- Byte
n
Данные аутентификации GSSAPI или SSPI.
- AuthenticationSSPI (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(9)
Указывает, что требуется аутентификация SSPI.
- AuthenticationSASL (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(10)
Указывает, что требуется аутентификация SASL.
Тело сообщения представляет собой список механизмов аутентификации SASL в порядке предпочтения сервера. После последнего имени механизма аутентификации требуется нулевой байт в качестве завершителя. Для каждого механизма имеется следующее:
- String
Имя механизма аутентификации SASL.
- AuthenticationSASLContinue (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(11)
Указывает, что это сообщение содержит вызов SASL.
- Byte
n
Данные SASL, специфичные для используемого механизма SASL.
- AuthenticationSASLFinal (B) #
- Byte1('R')
Определяет сообщение как запрос аутентификации.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(12)
Указывает, что аутентификация SASL завершена.
- Byte
n
Результат SASL "дополнительные данные", специфичные для используемого механизма SASL.
- BackendKeyData (B) #
- Byte1('K')
Определяет сообщение как данные ключа отмены. Фронтенд должен сохранить эти значения, если он хочет иметь возможность отправлять сообщения CancelRequest позже.
- Int32(12)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32
Идентификатор процесса этого бэкенда.
- Int32
Секретный ключ этого бэкенда.
- Bind (F) #
- Byte1('B')
Идентифицирует сообщение как команду Bind.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Имя целевого портала (пустая строка выбирает безымянный портал).
- String
Имя подготовленного оператора источника (пустая строка выбирает безымянный подготовленный оператор).
- Int16
Количество кодов формата параметров, следующих (обозначено как
C
ниже). Это может быть ноль, чтобы указать, что параметров нет или что все параметры используют формат по умолчанию (текст); или один, в этом случае указанный код формата применяется ко всем параметрам; или он может быть равен фактическому количеству параметров.- Int16[
C
] Коды формата параметров. Каждый из них должен быть либо нулевым (текстовым), либо единичным (бинарным).
- Int16
Количество значений параметров, которые следуют (возможно, ноль). Это должно соответствовать количеству параметров, необходимых для запроса.
Далее, для каждого параметра появляется следующая пара полей:
- Int32
Длина значения параметра в байтах (этот счетчик не включает само значение). Может быть равна нулю. В особом случае значение -1 указывает на NULL значение параметра. В случае NULL значения, за ним не следуют байты значения.
- Byte
n
Значение параметра в формате, указанном соответствующим кодом формата.
n
- это вышеуказанная длина.
После последнего параметра появляются следующие поля:
- Int16
Количество кодов формата столбцов результата, которые следуют (обозначено
R
ниже). Это может быть ноль, чтобы указать, что нет столбцов результата или что все столбцы результата должны использовать формат по умолчанию (текст); или один, в этом случае указанный код формата применяется ко всем столбцам результата (если они есть); или он может быть равен фактическому количеству столбцов результата запроса.- Int16[
R
] Форматы кодов столбцов результата. Каждый из них должен быть в настоящее время нулевым (текстовым) или единичным (бинарным).
- BindComplete (B) #
- Byte1('2')
Идентифицирует сообщение как индикатор завершения привязки.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- CancelRequest (F) #
- Int32(16)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(80877102)
Код запроса на отмену. Значение выбирается таким образом, чтобы в старших 16 битах содержалось значение
1234
, а в младших 16 битах - значение5678
. (Для избежания путаницы этот код не должен совпадать с номером версии протокола).- Int32
Идентификатор процесса целевого бэкенда.
- Int32
Секретный ключ для целевого бэкенда.
- Close (F) #
- Byte1('C')
Идентифицирует сообщение как команду Close.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte1
'
S
' для закрытия подготовленного оператора; или 'P
' для закрытия портала.- String
Имя подготовленного оператора или портала для закрытия (пустая строка выбирает безымянный подготовленный оператор или портал).
- CloseComplete (B) #
- Byte1('3')
Идентифицирует сообщение как индикатор завершения закрытия.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- CommandComplete (B) #
- Byte1('C')
Идентифицирует сообщение как ответ на выполнение команды.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Тег команды. Обычно это одно слово, которое определяет, какая SQL-команда была выполнена.
Для команды
INSERT
тег выглядит так:INSERT
, гдеoid
rows
rows
- это количество вставленных строк. Раньшеoid
использовался для идентификатора объекта вставленной строки, еслиrows
было равно 1 и целевая таблица имела OID, но системные столбцы OID больше не поддерживаются, поэтомуoid
всегда равно 0.Для команды
DELETE
тег выглядит следующим образом:DELETE
, гдеrows
rows
- это количество удаленных строк.Для команды
UPDATE
тег выглядит следующим образом:UPDATE
, гдеrows
rows
- это количество обновленных строк.Для команды
MERGE
, тегом являетсяMERGE
, гдеrows
rows
- это количество строк, вставленных, обновленных или удаленных.Для команды
SELECT
илиCREATE TABLE AS
тегом являетсяSELECT
, гдеrows
rows
- это количество извлеченных строк.Для команды
MOVE
тегом являетсяMOVE
, гдеrows
rows
- это количество строк, на которое изменилось положение курсора.Для команды
FETCH
тегом являетсяFETCH
, гдеrows
rows
- это количество строк, которые были извлечены из курсора.Для команды
COPY
тег выглядит так:COPY
, гдеrows
rows
- это количество скопированных строк. (Примечание: количество строк отображается только в Tantor BE версии 8.2 и выше).
- CopyData (F & B) #
- Byte1('d')
Идентифицирует сообщение как данные
COPY
.- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte
n
Данные, которые являются частью потоковых данных
COPY
. Сообщения, отправленные с бэкенда, всегда соответствуют отдельным строкам данных, но сообщения, отправленные фронтендами, могут произвольно разделять потоковые данные.
- CopyDone (F & B) #
- Byte1('c')
Идентифицирует сообщение как индикатор
COPY
-завершения.- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- CopyFail (F) #
- Byte1('f')
Идентифицирует сообщение как индикатор
COPY
-ошибки.- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Сообщение об ошибке, которое будет использоваться в качестве причины сбоя.
- CopyInResponse (B) #
- Byte1('G')
Определяет сообщение как ответ на начало копирования. Фронтенд теперь должен отправить данные для копирования (если не готов к этому, отправьте сообщение CopyFail).
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int8
0 указывает на то, что общий формат
COPY
является текстовым (строки разделены новыми строками, столбцы разделены разделительными символами и т. д.). 1 указывает на то, что общий формат копирования является двоичным (аналогично формату DataRow). См. COPY для получения дополнительной информации.- Int16
Количество столбцов в данных, которые будут скопированы (обозначено
N
ниже).- Int16[
N
] Форматные коды, которые будут использоваться для каждого столбца. Каждый из них должен быть нулем (текстовый) или единицей (бинарный). Все они должны быть нулями, если общий формат копирования является текстовым.
- CopyOutResponse (B) #
- Byte1('H')
Определяет сообщение как ответ Start Copy Out. Это сообщение будет сопровождаться данными copy-out.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int8
0 указывает, что общий формат
COPY
является текстовым (строки разделены новыми строками, столбцы разделены символами-разделителями и т. д.). 1 указывает, что общий формат копирования является двоичным (аналогично формату DataRow). См. COPY для получения дополнительной информации.- Int16
Количество столбцов в данных, которые будут скопированы (обозначено
N
ниже).- Int16[
N
] Форматные коды, которые будут использоваться для каждого столбца. Каждый из них должен быть нулем (текстовый) или единицей (бинарный). Все они должны быть нулями, если общий формат копирования является текстовым.
- CopyBothResponse (B) #
- Byte1('W')
Определяет сообщение как ответ Start Copy Both. Это сообщение используется только для потоковой репликации.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int8
0 указывает, что общий формат
COPY
является текстовым (строки разделены новыми строками, столбцы разделены символами-разделителями и т. д.). 1 указывает, что общий формат копирования является двоичным (аналогично формату DataRow). См. COPY для получения дополнительной информации.- Int16
Количество столбцов в данных, которые будут скопированы (обозначено
N
ниже).- Int16[
N
] Форматные коды, которые будут использоваться для каждого столбца. Каждый из них должен быть нулем (текстовый) или единицей (бинарный). Все они должны быть нулями, если общий формат копирования является текстовым.
- DataRow (B) #
- Byte1('D')
Идентифицирует сообщение как строку данных.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int16
Количество значений столбцов, которые следуют (возможно, ноль).
Следующая пара полей появляется для каждого столбца:
- Int32
Длина значения столбца в байтах (этот счетчик не включает само значение). Может быть равна нулю. В особом случае значение -1 указывает на NULL значение столбца. В случае NULL значения нет последующих байтов значения.
- Byte
n
Значение столбца в формате, указанном соответствующим кодом формата.
n
- это вышеуказанная длина.
- Describe (F) #
- Byte1('D')
Определяет сообщение как команду Describe.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte1
'
S
' для описания подготовленного оператора; или 'P
' для описания портала.- String
Имя подготовленного оператора или портала для описания (пустая строка выбирает безымянный подготовленный оператор или портал).
- EmptyQueryResponse (B) #
- Byte1('I')
Определяет сообщение как ответ на пустую строку запроса. (Это заменяет CommandComplete).
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- ErrorResponse (B) #
- Byte1('E')
Идентифицирует сообщение как ошибку.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
Тело сообщения состоит из одного или нескольких идентифицированных полей, за которыми следует нулевой байт в качестве завершителя. Поля могут появляться в любом порядке. Для каждого поля имеется следующее:
- Byte1
Код, идентифицирующий тип поля; если равен нулю, это является завершающим символом сообщения и за ним не следует строка. В настоящее время определенные типы полей перечислены в Раздел 52.8. Поскольку в будущем могут быть добавлены дополнительные типы полей, клиентские приложения должны молча игнорировать поля с неизвестным типом.
- String
Содержимое поля.
- Execute (F) #
- Byte1('E')
Идентифицирует сообщение как команду Execute.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Имя портала для выполнения (пустая строка выбирает безымянный портал).
- Int32
Максимальное количество строк для возврата, если портал содержит запрос, который возвращает строки (в противном случае игнорируется). Ноль обозначает “отсутствие ограничений”.
- Flush (F) #
- Byte1('H')
Идентифицирует сообщение как команду Flush.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- FunctionCall (F) #
- Byte1('F')
Идентифицирует сообщение как вызов функции.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32
Указывает идентификатор объекта функции для вызова.
- Int16
Количество кодов формата аргументов, следующих за ними (обозначено как
C
ниже). Это может быть ноль, чтобы указать, что аргументов нет или что все аргументы используют формат по умолчанию (текст); или один, в этом случае указанный код формата применяется ко всем аргументам; или он может быть равен фактическому количеству аргументов.- Int16[
C
] Коды формата аргумента. Каждый из них должен быть либо нулевым (текстовым), либо единичным (бинарным).
- Int16
Определяет количество аргументов, передаваемых в функцию.
Далее, для каждого аргумента появляется следующая пара полей:
- Int32
Длина значения аргумента, в байтах (этот счетчик не включает само значение). Может быть равна нулю. В особом случае значение -1 указывает на NULL значение аргумента. В случае NULL значения, за ним не следуют байты значения.
- Byte
n
Значение аргумента в формате, указанном связанным кодом формата.
n
- это вышеуказанная длина.
После последнего аргумента появляется следующее поле:
- Int16
Формат кода для результата функции. В настоящее время должен быть нулевым (текстовым) или единичным (бинарным).
- FunctionCallResponse (B) #
- Byte1('V')
Определяет сообщение как результат вызова функции.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32
Длина значения результата функции в байтах (этот счетчик не включает само значение). Может быть равна нулю. В особом случае значение -1 указывает на NULL-значение результата функции. В случае NULL-значения нет последующих байтов значения.
- Byte
n
Значение результата функции в формате, указанном соответствующим кодом формата.
n
- это вышеуказанная длина.
- GSSENCRequest (F) #
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(80877104)
Код запроса на шифрование GSSAPI. Значение выбирается таким образом, чтобы содержать
1234
в старших 16 битах и5680
в младших 16 битах. (Чтобы избежать путаницы, этот код не должен совпадать с номером версии протокола).
- GSSResponse (F) #
- Byte1('p')
Определяет сообщение как ответ GSSAPI или SSPI. Обратите внимание, что это также используется для сообщений ответа SASL и пароля. Точный тип сообщения можно определить из контекста.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte
n
Специфичные данные сообщения GSSAPI/SSPI.
- NegotiateProtocolVersion (B) #
- Byte1('v')
Определяет сообщение как сообщение о согласовании версии протокола.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32
Новейшая вспомогательная версия протокола, поддерживаемая сервером для основной версии протокола, запрошенной клиентом.
- Int32
Количество параметров протокола, не распознанных сервером.
Затем, для протокольной опции, не распознанной сервером, имеется следующее:
- String
Имя опции.
- NoData (B) #
- Byte1('n')
Идентифицирует сообщение как индикатор отсутствия данных.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- NoticeResponse (B) #
- Byte1('N')
Идентифицирует сообщение как уведомление.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
Тело сообщения состоит из одного или нескольких идентифицированных полей, за которыми следует нулевой байт в качестве завершителя. Поля могут появляться в любом порядке. Для каждого поля имеется следующее:
- Byte1
Код, идентифицирующий тип поля; если равен нулю, это является завершающим символом сообщения и за ним не следует строка. В настоящее время определенные типы полей перечислены в Раздел 52.8. Поскольку в будущем могут быть добавлены дополнительные типы полей, клиентские приложения должны молча игнорировать поля с неизвестным типом.
- String
Содержимое поля.
- NotificationResponse (B) #
- Byte1('A')
Определяет сообщение как ответ на уведомление.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32
Идентификатор процесса уведомляющего бэкенд-процесса.
- String
Имя канала, на котором было вызвано уведомление.
- String
Строка “payload”, переданная уведомляющим процессом.
- ParameterDescription (B) #
- Byte1('t')
Определяет сообщение как описание параметра.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int16
Количество параметров, используемых в операторе (может быть нулевым).
Затем, для каждого параметра, имеется следующее:
- Int32
Указывает идентификатор объекта типа данных параметра.
- ParameterStatus (B) #
- Byte1('S')
Определяет сообщение как отчет о статусе параметра времени выполнения.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Имя отчетного параметра времени выполнения.
- String
Текущее значение параметра.
- Parse (F) #
- Byte1('P')
Идентифицирует сообщение как команду Parse.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Имя целевого подготовленного оператора (пустая строка выбирает безымянный подготовленный оператор).
- String
Строка запроса, которую нужно разобрать.
- Int16
Количество указанных типов данных параметров (может быть нулевым). Обратите внимание, что это не указывает на количество параметров, которые могут появиться в строке запроса, а только на количество, для которых фронтенд хочет предварительно указать типы.
Затем, для каждого параметра, имеется следующее:
- Int32
Указывает идентификатор объекта типа данных параметра. Помещение нуля здесь эквивалентно неуказанию типа неопределенным.
- ParseComplete (B) #
- Byte1('1')
Идентифицирует сообщение как индикатор завершения разбора.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- PasswordMessage (F) #
- Byte1('p')
Определяет сообщение как ответ на пароль. Обратите внимание, что это также используется для сообщений ответа GSSAPI, SSPI и SASL. Точный тип сообщения можно определить из контекста.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Пароль (зашифрованный, если запрошено).
- PortalSuspended (B) #
- Byte1('s')
Определяет сообщение как индикатор приостановки портала. Обратите внимание, что это появляется только в случае достижения лимита количества строк в сообщении Execute.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- Query (F) #
- Byte1('Q')
Идентифицирует сообщение как простой запрос.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Сама строка запроса.
- ReadyForQuery (B) #
- Byte1('Z')
Определяет тип сообщения. ReadyForQuery отправляется каждый раз, когда бэкенд готов к новому циклу запроса.
- Int32(5)
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte1
Текущий индикатор состояния транзакции в бэкенде. Возможные значения: '
I
' если простаивает (не в блоке транзакции); 'T
' если в блоке транзакции; или 'E
' если в неудавшемся блоке транзакции (запросы будут отклонены до окончания блока).
- RowDescription (B) #
- Byte1('T')
Определяет сообщение как описание строки.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int16
Определяет количество полей в строке (может быть нулевым).
Затем, для каждого поля, имеется следующее:
- String
Имя поля.
- Int32
Если поле может быть идентифицировано как столбец конкретной таблицы, то это будет идентификатор объекта этой таблицы; в противном случае - ноль.
- Int16
Если поле может быть идентифицировано как столбец конкретной таблицы, то атрибутом является номер столбца; в противном случае - ноль.
- Int32
Идентификатор объекта типа данных поля.
- Int16
Размер типа данных (см.
pg_type.typlen
). Обратите внимание, что отрицательные значения обозначают типы переменной ширины.- Int32
Модификатор типа (см.
pg_attribute.atttypmod
). Значение модификатора зависит от конкретного типа.- Int16
Формат кода, используемый для поля. В настоящее время он может быть нулевым (текстовым) или единичным (бинарным). В RowDescription, возвращаемом из варианта оператора Describe, код формата еще неизвестен и всегда будет нулевым.
- SASLInitialResponse (F) #
- Byte1('p')
Определяет сообщение как начальный ответ SASL. Обратите внимание, что это также используется для сообщений GSSAPI, SSPI и ответов с паролем. Точный тип сообщения определяется из контекста.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- String
Имя механизма аутентификации SASL, выбранного клиентом.
- Int32
Длина специфичного для механизма SASL "Начального клиентского ответа", который следует за ним, или -1, если нет начального ответа.
- Byte
n
Специфичный для механизма SASL "Начальный ответ".
- SASLResponse (F) #
- Byte1('p')
Определяет сообщение как ответ SASL. Обратите внимание, что это также используется для сообщений GSSAPI, SSPI и ответов с паролем. Точный тип сообщения можно определить из контекста.
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Byte
n
Специфичные для механизма SASL данные сообщения.
- SSLRequest (F) #
- Int32(8)
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(80877103)
Код запроса SSL. Значение выбирается таким образом, чтобы содержать
1234
в старших 16 битах и5679
в младших 16 битах. (Чтобы избежать путаницы, этот код не должен совпадать с номером версии протокола).
- StartupMessage (F) #
- Int32
Длина содержимого сообщения в байтах, включая само сообщение.
- Int32(196608)
Номер версии протокола. Старшие 16 бит являются номером основной версии (3 для описанного здесь протокола). Младшие 16 бит являются номером минорной версии (0 для описанного здесь протокола).
Номер версии протокола, за которым следует одна или несколько пар строк с именем и значением параметра. После последней пары имя/значение требуется нулевой байт в качестве завершителя. Параметры могут появляться в любом порядке.
user
обязателен, остальные являются необязательными. Каждый параметр указывается следующим образом:- String
Имя параметра. В настоящее время распознаваемые имена:
user
Имя пользователя базы данных для подключения. Обязательно; нет значения по умолчанию.
database
База данных, к которой нужно подключиться. По умолчанию используется имя пользователя.
options
Аргументы командной строки для бэкенда. (Это устаревший способ, рекомендуется устанавливать отдельные параметры времени выполнения). Пробелы внутри этой строки считаются разделителями аргументов, если они не экранированы обратной косой чертой (
\
); для представления литеральной обратной косой черты используйте\\
.replication
Используется для подключения в режиме потоковой репликации, где можно выполнять набор небольших команд репликации вместо SQL-запросов. Значение может быть
true
,false
илиdatabase
, а по умолчанию -false
. См. Раздел 52.4 для получения дополнительной информации.
В дополнение к вышесказанному, могут быть перечислены и другие параметры. Имена параметров, начинающиеся с
_pq_.
, зарезервированы для использования в качестве расширений протокола, в то время как другие параметры рассматриваются как параметры времени выполнения, которые должны быть установлены при запуске сервера. Такие настройки будут применены при запуске сервера (после разбора аргументов командной строки, если они есть) и будут действовать как значения по умолчанию для сессии.- String
Содержимое параметра.
- Sync (F) #
- Byte1('S')
Идентифицирует сообщение как команду Sync.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.
- Terminate (F) #
- Byte1('X')
Идентифицирует сообщение как завершение.
- Int32(4)
Длина содержимого сообщения в байтах, включая само сообщение.