3.12.5.1.6.2. API для выборки множественного результата

 
Поддерживается единственный объект: query.
Команды:
fetch - запросить очередную порцию результата
cancel - отменить выборку
Для обеих команд требуется наличие поля qid в корне запроса.
Кроме того, в случае отмены по истечении таймаута Сервер присылает уведомление об этом через тег Result.
 

Команда fetch

 

Параметры

{
"params":
{
// Предельный размер ответа, в байтах
"size": uint
}
}
 

Результат

{
"result":
{
// Массив записей результата. Каждая запись - JSON-объект с содержимым в зависимости от //объекта/команды, породившей множественный результат
"records": [
...
],
// Признак того, что это заключительная часть результата (true), по умолчанию - false
"final": bool
}
}
Если в результате значение поля final равно true, то получена последняя часть результата, множественный результат удалён из реестра на стороне Сервера.
 
Параметр size позволяет регулировать размер ответа, возвращаемого Сервером: когда на стороне Сервера выполняется выборка записей и формирование результата, если на очередной итерации оказывается, что текущий размер ответа достиг или превысил указанный параметром size предел, то выборка очередной порции прекращается, формирование ответа завершается.
Поскольку ответ должен содержать корректный JSON-объект, его фактический размер будет немного больше указанного предела (т.к. требуется добавить закрывающие символы).
 
Чем больше значение size, тем меньшее число транзакций выборки результата требуется, т.к. одна порция будет вмещать большее количество возвращаемых записей.
 
Возможные значения параметра size:
Минимальное значение: 512 байт
Значение по умолчанию: 4096 байт
Максимальное значение: 32768 байт
 
Если указано значение меньше минимума или больше максимума, то оно выравнивается на соответствующую границу.
 

Команда cancel

 
Не имеет параметров. Возвращает следующий результат:
{
"result":
{
"final": true,
"cancelled":true
}
}

Уведомление об отмене выборки по истечении таймаута ожидания выборки

 
Если выборка результата не производится, то по истечении таймаута Сервер принудительно удаляет результат из реестра, и отправляет следующее уведомление (через тег Result):
{
"qid": "UNIQUE_QUERY_ID",
"error": "Запрос отменён, поскольку истёк таймаут ожидания выборки результата."
}