forked from huawei/openGauss-server
!1132 修复bypass执行带setMaxRows报错
Merge pull request !1132 from maxiang/bypass2
This commit is contained in:
commit
47c987f3ab
|
|
@ -4177,9 +4177,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);
|
||||
|
|
@ -4584,8 +4582,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();
|
||||
|
|
@ -9887,6 +9884,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) {
|
||||
|
|
@ -9993,6 +9991,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();
|
||||
|
|
|
|||
|
|
@ -1102,6 +1102,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();
|
||||
|
|
@ -1257,6 +1261,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;
|
||||
|
||||
/****************
|
||||
|
|
@ -2615,6 +2624,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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue