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

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

回到上一个层面,继续看 PortalStart的处理: void PortalStart(Portal portal, ParamListInfo params, int eflags, bool use_active_snapshot) { ... PG_TRY(); { ... /* * ...

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

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

接前面,继续观察 PortalStart,其中有: /* * Create QueryDesc in portal's context; for the moment, set * the destination to DestNone. */ ...

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

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

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

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

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

接前面,回溯调用关系: exec_simple_query --> PortalStart --> ExecutorStart --> StandardExecutorStart --> InitPlan 再回到 exec_simple_query 来: 事前知道,表 tst04 对应的文件名为 16393。 postgres=# select oid from pg...

文章 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查询之三十七

看: TupleTableSlot * ExecProcNode(PlanState *node) { TupleTableSlot *result; CHECK_FOR_INTERRUPTS(); if (node->chgParam != NULL) /* something changed */ ExecReScan(node); ...

文章 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 * -----------------------------------------...

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

产品推荐

相关镜像