并行执行计划
开发预览原生功能需要开发版本,当前支持 Linux 上的 PostgreSQL 17。
原生阶段计划把 SQL、语义判断和条件分支放入同一个有向无环图(DAG)。有依赖的工作按顺序执行,独立的语义阶段共享调度和预算。
调用入口#
jev_native.execute_plan(plan, options) 接收结构化计划。计划声明目标阶段、各阶段的 SQL、输出字段及依赖;执行时应使用 REPEATABLE READ 或 SERIALIZABLE 事务。
字段声明包含类型、可空性和键等信息,运行时会检查实际输出是否满足要求。描述性标签和说明不会自动变成可执行规则。
先计算,再判断#
启用原生引擎后,应用可以把受支持的 CTE 和派生表语义查询编译为共享计划。例如,先按账户合并消息,再判断整体内容:
WITH account_text AS (
SELECT account_id, STRING_AGG(body, E'\n') AS description
FROM messages
GROUP BY account_id
)
SELECT account_id
FROM account_text
WHERE SEMANTIC(description, '这些消息描述了尚未解决的求助请求。');SQL 中的 messages 需要已登记并获准访问。这段示例通过应用 SQL 接口编译;直接调用原生扩展时使用 execute_plan 的结构化参数。
共享 CTE 只物化一次,独立分支可以并发。后续判断只需投影必要上下文,精确计算始终由 PostgreSQL 执行。
条件与完整性#
CASE 可以把语义工作限定到确实需要它的行。精确汇总必须等待所需判断全部确定。如果证据不完整,目标保持 NOT_EVALUATED 并附带原因,不能返回一个看似完整的零计数。
结果保留各阶段回执、共享用量、策略和完成顺序。已完整执行但没有匹配行,与尚未完成的查询是两种不同状态。
支持范围#
当前路径支持非相关的关联、聚合、窗口和集合操作。表达式应先在前序 SELECT 中命名,再用作语义判断对象。递归 CTE、相关或标量子查询、持续维护的特征和语义写入不属于此路径的支持范围。
本页介绍用法与注意事项。完整参数及详细约定请参阅对应英文文档。