Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Извлекает строки из запроса с использованием параллельного курсора извлечения.
RETRIEVE { <count> | ALL } FROM ENDPOINT <endpoint_name>
RETRIEVE извлекает строки с помощью ранее созданного параллельного курсора извлечения. Строки извлекаются в отдельных сеансах извлечения — прямых подключениях к отдельным конечным точкам сегментов, которые предоставляют результаты для каждого конкретного сегмента. При запуске сеанса извлечения необходимо указать параметр gp_retrieve_conn=true в запросе на подключение. Поскольку сеанс извлечения независим от параллельных курсоров извлечения и соответствующих им конечных точек, вы можете выполнять RETRIEVE из нескольких конечных точек в одном сеансе извлечения.
Параллельный курсор извлечения имеет связанную с ним позицию, которая используется командой RETRIEVE. Позиция курсора может находиться до первой строки результата запроса, на любой конкретной строке результата или после последней строки результата.
Примечание!
Так как Database не поддерживает прокручиваемые курсоры, команда RETRIEVE перемещает параллельный курсор извлечения только вперёд.
При создании параллельный курсор извлечения устанавливается перед первой строкой. После извлечения нескольких строк курсор оказывается на последней извлечённой строке.
Если выполнение RETRIEVE достигает конца доступных строк, курсор остаётся позиционированным после последней строки.
RETRIEVE ALL всегда оставляет параллельный курсор извлечения позиционированным после последней строки.
При успешном завершении команда RETRIEVE возвращает извлечённые строки (возможно, пустые) и количество извлечённых строк (возможно, ноль).
Для определения параллельного курсора извлечения используйте команду DECLARE ... PARALLEL RETRIEVE CURSOR.
Параллельные курсоры извлечения не поддерживают операции FETCH и MOVE.
Запустите транзакцию:
BEGIN;
Создайте параллельный курсор извлечения:
DECLARE mycursor PARALLEL RETRIEVE CURSOR FOR SELECT * FROM films;
Выведите список конечных точек курсора:
SELECT * FROM gp_endpoints WHERE cursorname='mycursor';
Обратите внимание на hostname, port, auth_token и name, связанные с каждой конечной точкой.
В другом окне терминала запустите сеанс извлечения, используя hostname, port и auth_token, полученные из предыдущего запроса. Например:
PGPASSWORD=d3825fc07e56bee5fcd2b1d0b600c85e PGOPTIONS='-c gp_retrieve_conn=true' psql -d testdb -h sdw3 -p 6001;
Извлеките все строки из конечной точки (например, конечной точки с именем prc10000001100000005):
RETRIEVE ALL FROM ENDPOINT prc10000001100000005;
Завершите сеанс извлечения.
\q
Вернитесь в исходный сеанс, закройте курсор и завершите транзакцию:
CLOSE mycursor;
COMMIT;
RETRIEVE является расширением Database. Стандарт SQL не предусматривает параллельные курсы извлечения.