Please enable JavaScript.
Coggle requires JavaScript to display documents.
Greenplumdb Source Read (PostgresMain (exec_simple_query (. (pg_parse…
Greenplumdb Source Read
PostgresMain
exec_simple_query
-
-
-
-
-
.
foreach(parsetree_item, parsetree_list)——————————
-
.
querytree_list = pg_analyze_and_rewrite(
parsetree, query_string,NULL, 0);
.
query = parse_analyze(parsetree, query_string,
paramTypes, numParams);
-
-
-
-
-
-
-
-
-
-
.
plantree_list = pg_plan_queries(querytree_list,
0, NULL);
foreach(query_list, querytrees)
stmt = (Node *) pg_plan_query(query,
cursorOptions, boundParams);
plan = planner(querytree, cursorOptions,
boundParams);
-
-
-
-
-
.
CreatePortal
-
.
portal = (Portal) MemoryContextAllocZero(PortalMemory, sizeof *portal);
-
-
.
PortalHashTableInsert(portal, name);
-
-
.
if (Gp_role == GP_ROLE_UTILITY &&.......
//in utility mode, disallow PREPARE TRANSACTION statments
-
.
PortalDefineQuery(portal,NULL,query_string,nodeTag(parsetree),
commandTag,plantree_list, NULL);
-
.
BeginCommand(commandTag, dest);
-
-
.
commandTag = CreateCommandTag(parsetree);
set_ps_display(commandTag, false);
-
.
if (IsA(parsetree, FetchStmt))
...
format = 1
PortalSetResultFormat(portal, 1, &format);
-
.
List querytree_list, plantree_list;
Portal portal;
.......
-
.
receiver = CreateDestReceiver(dest);
if (dest == DestRemote){ SetRemoteDestReceiverParams(receiver, portal);}
MemoryContextSwitchTo(oldcontext);
-
-
.
(receiver->rDestroy) (receiver);
PortalDrop(portal, false);
finish_xact_command() or *CommandCounterIncrement();
-
.
EndCommand(completionTag, dest);
-
-
.
pgstat_report_activity(STATE_RUNNING, query_string);
-
-
-
.
if (!parsetree_list) NullCommand(dest);
switch (check_log_duration(msec_str, was_logged))
ereport(......)
debug_query_string = NULL;
-
-
-