摘要:
在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... 阅读全文
posted @ 2013-05-22 14:46
健哥的数据花园
阅读(350)
评论(0)
推荐(0)
摘要:
前面已经说过,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. 阅读全文
posted @ 2013-05-22 14:17
健哥的数据花园
阅读(434)
评论(0)
推荐(0)
摘要:
前面说过 PortalStart明确执行策略后,要执行 ExecutorStart。那么ExecutorStart 到底作了什么呢。以下是缩略:/* ---------------------------------------------------------------- * ExecutorStart * * This routine must be called at the beginning of any execution of any * query plan * * Takes a QueryDesc previously crea... 阅读全文
posted @ 2013-05-22 13:57
健哥的数据花园
阅读(378)
评论(0)
推荐(0)
摘要:
在定义了Portal之后,需要运行:PortalStart,它主要的任务是明确执行策略,然后再执行ExecutorStart:代码太长,进行缩略:voidPortalStart(Portal portal, ParamListInfo params, int eflags, bool use_active_snapshot){ ... PG_TRY(); { ActivePortal = portal; CurrentResourceOwner = portal->resowner; PortalContext ... 阅读全文
posted @ 2013-05-22 13:26
健哥的数据花园
阅读(667)
评论(0)
推荐(0)
摘要:
看看portal生成完毕后,干了什么(PortalDefineQuery): 1 /* 2 * Create unnamed portal to run the query or queries in. If there 3 * already is one, silently drop it. 4 */ 5 portal = CreatePortal("", true, true); 6 /* Don't display the portal in pg_cursors */ 7 ... 阅读全文
posted @ 2013-05-22 10:43
健哥的数据花园
阅读(556)
评论(0)
推荐(0)
摘要:
前面已经说过,在 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... 阅读全文
posted @ 2013-05-22 10:30
健哥的数据花园
阅读(532)
评论(0)
推荐(0)
摘要:
在工作中使用过一些开源软件,有过一些美好的体验,也有一些不好的体验。对于那些纯粹开源,不掺杂任何商业考量的贡献者,我感激他们的辛苦工作,但仍然希望他们的作品可以更好。对那些借助开源社区力量,着眼商业的各种组织,我仍然感激他们的辛苦工作,也希望他们的作品可以更好。我想澄清一件事情,那就是:并不是因为一个软件开源,并且没有直接从我的手里获得收益,我就不能指责它的缺点和不足:也许存在一些特别的例子,某些个人和组织,故意把开源软件的文档写的晦涩难懂,以此来逼迫客户购买技术支持服务。当节约成本成为强大的压力,客户、开发组织需要开发者、使用者使用某些流行开的开源软件的时候,开源软件的不足,需要各方加以重视 阅读全文
posted @ 2013-05-22 09:26
健哥的数据花园
阅读(372)
评论(0)
推荐(0)
摘要:
在exec_simple_query中,代码如下: 1 /* 2 * exec_simple_query 3 * 4 * Execute a "simple Query" protocol message. 5 */ 6 static void 7 exec_simple_query(const char *query_string) 8 { 9 CommandDest dest = whereToSendOutput; 10 MemoryContext oldcontext; 11 List *parsetree_list; 12... 阅读全文
posted @ 2013-05-22 08:16
健哥的数据花园
阅读(1152)
评论(0)
推荐(0)

浙公网安备 33010602011771号