static int executeXMLPlan(char *szXml) { PlannedStmt *pplstmt = COptTasks::PplstmtFromXML(szXml); // The following steps are required to be able to execute the query. DestReceiver *pdest = CreateDestReceiver(DestNone, NULL); QueryDesc *pqueryDesc = CreateQueryDesc(pplstmt, PStrDup("Internal Query") /*plan->query */, ActiveSnapshot, InvalidSnapshot, pdest, NULL /*paramLI*/, false); elog(NOTICE, "Executing thawed plan..."); ExecutorStart(pqueryDesc, 0); ExecutorRun(pqueryDesc, ForwardScanDirection, 0); ExecutorEnd(pqueryDesc); int iProcessed = (int) pqueryDesc->es_processed; FreeQueryDesc(pqueryDesc); return iProcessed; }
static int executeXMLQuery(char *szXml) { Query *pquery = COptTasks::PqueryFromXML(szXml); PlannedStmt *pplstmt = pg_plan_query(pquery, NULL); DestReceiver *pdest = CreateDestReceiver(DestNone, NULL); QueryDesc *pqueryDesc = CreateQueryDesc(pplstmt, PStrDup("Internal Query") /*plan->query */, ActiveSnapshot, InvalidSnapshot, pdest, NULL /*paramLI*/, false); elog(NOTICE, "Executing thawed plan..."); ExecutorStart(pqueryDesc, 0); ExecutorRun(pqueryDesc, ForwardScanDirection, 0); ExecutorEnd(pqueryDesc); int iProcessed = (int) pqueryDesc->es_processed; FreeQueryDesc(pqueryDesc); return iProcessed; }
static int extractFrozenQueryPlanAndExecute(char *pcQuery) { Assert(pcQuery); ULONG ulQueryLen = -1; memcpy(&ulQueryLen, pcQuery, sizeof(ULONG)); pcQuery+=sizeof(ULONG); Query *pquery = (Query *) readNodeFromBinaryString(pcQuery, ulQueryLen); pcQuery+=ulQueryLen; PlannedStmt *pplstmt = pg_plan_query(pquery, NULL); if (!pplstmt) { elog(ERROR, "Problem with planned statement of query tree %s", gpdb::SzNodeToString(pquery)); } // The following steps are required to be able to execute the query. DestReceiver *pdest = CreateDestReceiver(DestNone, NULL); QueryDesc *pqueryDesc = CreateQueryDesc(pplstmt, PStrDup("Internal Query") /*plan->query */, ActiveSnapshot, InvalidSnapshot, pdest, NULL /*paramLI*/, false); // Do not record gpperfmon information about internal queries pqueryDesc->gpmon_pkt = NULL; elog(NOTICE, "Executing thawed plan..."); ExecutorStart(pqueryDesc, 0); ExecutorRun(pqueryDesc, ForwardScanDirection, 0); ExecutorEnd(pqueryDesc); int iProcessed = (int) pqueryDesc->es_processed; FreeQueryDesc(pqueryDesc); return iProcessed; }
static int extractFrozenPlanAndExecute(char *pcSerializedPS) { Assert(pcSerializedPS); ULONG ulPlannedStmtLen = -1; memcpy(&ulPlannedStmtLen, pcSerializedPS, sizeof(ULONG)); pcSerializedPS+=sizeof(ULONG); PlannedStmt *pplstmt = (PlannedStmt *) readNodeFromBinaryString(pcSerializedPS, ulPlannedStmtLen); pcSerializedPS+=ulPlannedStmtLen; //The following steps are required to be able to execute the query. DestReceiver *pdest = CreateDestReceiver(DestNone, NULL); QueryDesc *pqueryDesc = CreateQueryDesc(pplstmt, PStrDup("Internal Query") /*plan->query */, ActiveSnapshot, InvalidSnapshot, pdest, NULL /*paramLI*/, false); // Do not record gpperfmon information about internal queries pqueryDesc->gpmon_pkt = NULL; elog(NOTICE, "Executing thawed plan..."); ExecutorStart(pqueryDesc, 0); ExecutorRun(pqueryDesc, ForwardScanDirection, 0); ExecutorEnd(pqueryDesc); int iProcessed = (int) pqueryDesc->es_processed; FreeQueryDesc(pqueryDesc); return iProcessed; }