关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
使用并行检索游标从查询中检索行。
RETRIEVE { <count> | ALL } FROM ENDPOINT <endpoint_name>
RETRIEVE 使用先前创建的并行检索游标检索行。您需在独立的检索会话中检索行,分别建立直接连接至各个分段端点,这些端点将为每个独立分段提供结果。启动检索会话时,必须在连接请求中指定 gp_retrieve_conn=true。由于检索会话与并行检索游标及其对应端点相互独立,您可在同一检索会话中从多个端点执行检索操作。
并行检索游标关联有特定位置,该位置由检索操作使用。游标位置可设置为:查询结果首行之前、结果任意行位置,或结果末行之后。
注意!
由于数据库不支持可滚动游标,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';
请注意每个端点关联的主机名、端口、认证令牌和名称。
在另一个终端窗口中,使用前次查询返回的主机名、端口和认证令牌启动检索会话。例如:
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 是一个数据库扩展功能。SQL 标准并未规定并行检索游标的相关规范。