文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十三

接前面,在 PortalStart 中调用了 ExecutorStart,ExecutorStart 会调用 InitPlan: /* ---------------------------------------------------------------- * InitPlan * * Initializes the query plan: open...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十五

接前面 深入考察 PortalRun: 初步判断,其核心在于  bool PortalRun(Portal portal, long count, bool isTopLevel, DestReceiver *dest, DestReceiver *altdest, char *completionTag) { ... portal-&...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十六

接前面: /* ---------------------------------------------------------------- * ExecutorRun * * This is the main routine of the executor module. It accepts * the query descripto...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十八

这里又遇到了函数指针: executor.h头文件中,定义了 ExecScanAccessMtd 指针,或者定义了一个ExecScanAccessMtd 函数原型的指针 /* * prototypes from functions in execScan.c */ typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState *node); ...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之三十九

接前面,这次重点分析 ExecScan: 其for 循环内部: for (;;) { TupleTableSlot *slot; CHECK_FOR_INTERRUPTS(); slot = ExecScanFetch(node, accessMtd, recheckMtd); /* * ...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十

接前面,看 SeqNext 函数: /* ---------------------------------------------------------------- * SeqNext * * This is a workhorse for ExecSeqScan * -----------------------------------------...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十一

接前面,看被SeqNext所调用的heap_getnext: HeapTuple heap_getnext(HeapScanDesc scan, ScanDirection direction) { /* Note: no locking manipulations needed */ HEAPDEBUG_1; /* heap_getnext(...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十三

再次上溯:可以知道,在 ExecutePlan入口参数里面,start_block 就已经是0了。 /* ---------------------------------------------------------------- * ExecutePlan * * Processes the query plan until we have proce...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十四

回溯:PortalRun --> PortalRunSelect bool PortalRun(Portal portal, long count, bool isTopLevel, DestReceiver *dest, DestReceiver *altdest, char *completionTag) { ... port...

文章 2022-02-16 来自:开发者社区

PostgreSQL在何处处理 sql查询之四十六

接前面,再上溯:set_base_rel_pathlists --> set_rel_pathlist /* * set_base_rel_pathlists * Finds all paths available for scanning each base-relation entry. * Sequential scan and any availabl...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

数据库

分享数据库前沿,解构实战干货,推动数据库技术变革

+关注