前面已经说过,exec_simple_query要运行 PortalStart和 PortalRun。可以说,PortalRun是重头戏,sql的真正执行,就在这里完成。/* * PortalRun * Run a portal's query or queries. * * count <= 0 is interpreted as a no-op: the destination gets started up * and shut down, but nothing else happens. Also, count == FETCH_ALL is * interprete.
转载 2013-05-22 14:17:00
46阅读
2评论
PortalRun–>PortalRunMulti–>PortalRunUtility–>ProcessUtility–>st
原创 2022-07-26 17:12:01
102阅读
调用关系:PortalRun ->PortalRunSelect -> ExecutorRunExecutorRun,实际上会去运行 standard_ExecutorRun ->ExecutePlan:/* ---------------------------------------------------------------- * ExecutorRun * * This is the main routine of the executor module. It accepts * the query descriptor from the...
转载 2013-05-23 08:14:00
59阅读
2评论
回溯:PortalRun --> PortalRunSelectboolPortalRun(Portal portal, long count, bool isTopLevel, DestReceiver *dest, DestReceiver *altdest, char *completionTag){ ... portal->status = PORTAL_ACTIVE; ... PG_TRY(); { ActivePortal = portal; CurrentResourceOwner = ...
转载 2013-06-03 14:32:00
31阅读
2评论
接前面深入考察 PortalRun: 初步判断,其核心在于boolPortalRun(Portal portal, long count, bool isTopLevel, DestReceiver *dest, DestReceiver *altdest, char *completionTag){ ... portal->status = PORTAL_ACTIVE; ... PG_TRY(); { ActivePortal = portal; CurrentResourceOwner = por...
转载 2013-05-30 14:49:00
51阅读
2评论
PortalRun里要调用 PortalRunSelect,具体的过程缩略如下:/* * PortalRunSelect * Execute a portal's query in PORTAL_ONE_SELECT mode, and also * when fetching from a completed holdStore in PORTAL_ONE_RETURNING, * PORTAL_ONE_MOD_WITH, and PORTAL_UTIL_SELECT cases. * * This handles simple N-rows-fo...
转载 2013-05-22 14:46:00
77阅读
2评论
前面已经说过,在 exec_simple_query中,完成sql文的执行。具体地说,是要构造portal,然后运行PortalStart ,PortalRun...下面就先看看 portal如何构造:在 exec_simple_query中,有这么一段:1 /*2 * Create unnamed portal to run the query or queries in. If there3 * already is one, silently drop it.4 */5 portal = CreateP...
转载 2013-05-22 10:30:00
83阅读
2评论
greenplum 回滚不是真回滚greenplum 中不支持undo日志回滚,所以只是标记了新的事务号的状态,又后期的vacuum或scan自己去判断元组的可见性,并更新元组状态(SetHint)。以rollback为例,看事务回滚过程(1)master 清理rollback 语句到达 master 走PortalRun->PortalRunMulti->PortalRunUtili
除了DML之外的所有查询都通过ProcessUtility模块来执行,包括了各类DDL语句、事务相关语句、游标相关语句等。上层调用函数为exec_simple_query函数,其中PortalStart函数和PortalDrop函数部分较为简单。核心函数是PortalRun函数下层调用的standard_ProcessUtility函数,该函数通过switch case语句处理了各种类型的查询语句
转载 2022-11-15 20:14:18
56阅读
openGauss内核分析(九):数据库表的创建过程除了DML之外的所有查询都通过ProcessUtility模块来执行,包括了各类DDL语句、事务相关语句、游标相关语句等。上层调用函数为exec_simple_query函数,其中PortalStart函数和PortalDrop函数部分较为简单。核心函数是PortalRun函数下层调用的standard_ProcessUtility函数,该函数通
原创 2023-07-27 20:36:17
86阅读
在数据库中,除了DML之外的所有查询都通过ProcessUtility模块来执行,包括了各类DDL语句、事务相关语句、游标相关语句等。上层调用函数为exec_simple_query函数,其中PortalStart函数和PortalDrop函数部分较为简单。核心函数是PortalRun函数下层调用的standard_ProcessUtility函数,该函数通过switch case语句处理了各种类
除了DML之外的所有查询都通过ProcessUtility模块来执行,包括了各类DDL语句、事务相关语句、游标相关语句等。上层调用函数为exec_simple_query函数,其中PortalStart函数和PortalDrop函数部分较为简单。核心函数是PortalRun函数下层调用的standard_ProcessUtility函数,该函数通过switch case语句处理了各种类型的查询语句,包括事务相关查询、游标相关查询、schema相关操作、表空间相关操作、表定义相关操作等。
原创 2022-11-10 11:41:18
291阅读