Merge pull request #2457 from citusdata/fix_valgrind_issue

Make sure to access PARAM_EXTERN accurately in PG 11
pull/2440/head
Önder Kalacı 2018-10-26 11:25:21 +03:00 committed by GitHub
commit 0f768349e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 5 deletions

View File

@ -1563,22 +1563,30 @@ HasUnresolvedExternParamsWalker(Node *expression, ParamListInfo boundParams)
/* check whether parameter is available (and valid) */
if (boundParams && paramId > 0 && paramId <= boundParams->numParams)
{
ParamExternData *externParam = &boundParams->params[paramId - 1];
Oid paramType = externParam->ptype;
ParamExternData *externParam = NULL;
Oid paramType = InvalidOid;
/* give hook a chance in case parameter is dynamic */
if (!OidIsValid(paramType) && boundParams->paramFetch != NULL)
if (boundParams->paramFetch != NULL)
{
#if (PG_VERSION_NUM >= 110000)
ParamExternData externParamPlaceholder;
externParam = (*boundParams->paramFetch)(boundParams, paramId, false,
&externParamPlaceholder);
#else
externParam = &boundParams->params[paramId - 1];
if (!OidIsValid(externParam->ptype))
{
(*boundParams->paramFetch)(boundParams, paramId);
}
#endif
paramType = externParam->ptype;
}
else
{
externParam = &boundParams->params[paramId - 1];
}
paramType = externParam->ptype;
if (OidIsValid(paramType))
{
return false;