Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
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 не предусматривает параллельные курсы извлечения.