!1131 修复bypass执行带setMaxRows报错
Merge pull request !1131 from maxiang/bypass-master
This commit is contained in:
@ -4187,9 +4187,7 @@ static void exec_bind_message(StringInfo input_message)
|
||||
opFusionObj->clean();
|
||||
opFusionObj->updatePreAllocParamter(input_message);
|
||||
opFusionObj->setCurrentOpFusionObj(opFusionObj);
|
||||
if (portal_name[0] != '\0')
|
||||
opFusionObj->storeFusion(portal_name);
|
||||
|
||||
opFusionObj->storeFusion(portal_name);
|
||||
CachedPlanSource* cps = opFusionObj->m_global->m_psrc;
|
||||
if (cps != NULL && cps->gplan) {
|
||||
setCachedPlanBucketId(cps->gplan, opFusionObj->m_local.m_params);
|
||||
@ -4594,8 +4592,7 @@ static void exec_bind_message(StringInfo input_message)
|
||||
((OpFusion*)psrc->opFusionObj)->useOuterParameter(params);
|
||||
((OpFusion*)psrc->opFusionObj)->setCurrentOpFusionObj((OpFusion*)psrc->opFusionObj);
|
||||
((OpFusion*)psrc->opFusionObj)->CopyFormats(rformats, numRFormats);
|
||||
if (portal_name[0] != '\0')
|
||||
((OpFusion *)psrc->opFusionObj)->storeFusion(portal_name);
|
||||
((OpFusion *)psrc->opFusionObj)->storeFusion(portal_name);
|
||||
|
||||
if (snapshot_set)
|
||||
PopActiveSnapshot();
|
||||
@ -9900,6 +9897,7 @@ static void exec_one_in_batch(CachedPlanSource* psrc, ParamListInfo params, int
|
||||
opFusionObj->bindClearPosition();
|
||||
opFusionObj->useOuterParameter(params);
|
||||
opFusionObj->setCurrentOpFusionObj(opFusionObj);
|
||||
opFusionObj->storeFusion("");
|
||||
|
||||
CachedPlanSource* cps = opFusionObj->m_global->m_psrc;
|
||||
if (cps != NULL && cps->gplan) {
|
||||
@ -10006,6 +10004,7 @@ static void exec_one_in_batch(CachedPlanSource* psrc, ParamListInfo params, int
|
||||
((OpFusion*)psrc->opFusionObj)->useOuterParameter(params);
|
||||
((OpFusion*)psrc->opFusionObj)->setCurrentOpFusionObj((OpFusion*)psrc->opFusionObj);
|
||||
((OpFusion*)psrc->opFusionObj)->CopyFormats(rformats, numRFormats);
|
||||
((OpFusion*)psrc->opFusionObj)->storeFusion("");
|
||||
|
||||
if (OpFusion::process(FUSION_EXECUTE, NULL, completionTag, true, NULL)) {
|
||||
CommandCounterIncrement();
|
||||
|
@ -1103,6 +1103,10 @@ void OpFusion::clean()
|
||||
|
||||
void OpFusion::storeFusion(const char *portalname)
|
||||
{
|
||||
if (portalname == NULL || portalname[0] == '\0') {
|
||||
pfree_ext(m_local.m_portalName);
|
||||
return;
|
||||
}
|
||||
pnFusionObj *entry = NULL;
|
||||
if (!u_sess->pcache_cxt.pn_fusion_htab)
|
||||
initFusionHtab();
|
||||
@ -1258,6 +1262,11 @@ bool SelectFusion::execute(long max_rows, char* completionTag)
|
||||
} else {
|
||||
m_local.m_isCompleted = true;
|
||||
}
|
||||
/* for unnamed portal, should no need to wait for next E msg */
|
||||
if (m_local.m_portalName == NULL || m_local.m_portalName[0] == '\0') {
|
||||
m_local.m_isCompleted = true;
|
||||
}
|
||||
|
||||
success = true;
|
||||
|
||||
/****************
|
||||
@ -2638,6 +2647,10 @@ bool SelectForUpdateFusion::execute(long max_rows, char* completionTag)
|
||||
} else {
|
||||
m_local.m_isCompleted = true;
|
||||
}
|
||||
/* for unnamed portal, should no need to wait for next E msg */
|
||||
if (m_local.m_portalName == NULL || m_local.m_portalName[0] == '\0') {
|
||||
m_local.m_isCompleted = true;
|
||||
}
|
||||
|
||||
(void)ExecClearTuple(m_local.m_reslot);
|
||||
|
||||
|
Reference in New Issue
Block a user