广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL源码学习--调度器#12
  • 827
分享到

PostgreSQL源码学习--调度器#12

PostgreSQL源码学习--调度器#12 2016-10-26 14:10:57 827人浏览 无得
摘要

本节介绍ProcessQuery函数。 相关数据结构 //src/include/executor/execdesc.h typedef struct QueryDesc { CmdType operation; Plann

PostgreSQL源码学习--调度器#12

本节介绍ProcessQuery函数。

相关数据结构

//src/include/executor/execdesc.h

typedef struct QueryDesc
{
	
	CmdType		operation;		
	PlannedStmt *plannedstmt;	
	const char *sourceText;		
	Snapshot	snapshot;		
	Snapshot	crosscheck_snapshot;	
	DestReceiver *dest;			
	ParamListInfo params;		
	QueryEnvironment *queryEnv; 
	int			instrument_options; 

	
	TupleDesc	tupDesc;		
	EState	   *estate;			
	PlanState  *planstate;		

	
	bool		already_executed;	

	
	struct Instrumentation *totaltime;	
} QueryDesc;

ProcessQuery函数

static void
ProcessQuery(PlannedStmt *plan,
			 const char *sourceText,
			 ParamListInfo params,
			 QueryEnvironment *queryEnv,
			 DestReceiver *dest,
			 char *completionTag);
//src/backend/tcop/pquery.c


queryDesc = CreateQueryDesc(plan, sourceText,
				GetActiveSnapshot(), InvalidSnapshot,
				dest, params, queryEnv, 0);


ExecutorStart(queryDesc, 0);


ExecutorRun(queryDesc, ForwardScanDirection, 0L, true);


if (completionTag)
{
	switch (queryDesc->operation)
	{
		case CMD_SELECT:
			snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
					 "SELECT " UINT64_FORMAT,
					 queryDesc->estate->es_processed);
			break;
		case CMD_INSERT:
			
			lastOid = InvalidOid;
			snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
					 "INSERT %u " UINT64_FORMAT,
					 lastOid, queryDesc->estate->es_processed);
			break;
		case CMD_UPDATE:
			snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
					 "UPDATE " UINT64_FORMAT,
					 queryDesc->estate->es_processed);
			break;
		case CMD_DELETE:
			snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
					 "DELETE " UINT64_FORMAT,
					 queryDesc->estate->es_processed);
			break;
		default:
			strcpy(completionTag, "???");
			break;
	}
}


ExecutorFinish(queryDesc);
ExecutorEnd(queryDesc);

FreeQueryDesc(queryDesc);
您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL源码学习--调度器#12

本文链接: https://www.lsjlt.com/news/6704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作