isMergeableConst.txt
text/plain
Filename: isMergeableConst.txt
Type: text/plain
Part: 0
static bool
IsMergeableConst(Node *element)
{
if (IsA(element, RelabelType))
element = (Node *) ((RelabelType *) element)->arg;
if (IsA(element, CoerceViaIO))
element = (Node *) ((CoerceViaIO *) element)->arg;
if (IsA(element, FuncExpr))
{
FuncExpr *func = (FuncExpr *) element;
ListCell *temp;
if (func->funcformat != COERCE_IMPLICIT_CAST)
return false;
foreach(temp, func->args)
{
Node *arg = lfirst(temp);
if (IsA(arg, Const))
return true;
}
}
else if (IsA(element, Const))
return true;
else if (IsA(element, Param))
{
Param *p = (Param *) element;
if (p->paramkind == PARAM_EXTERN)
return true;
}
return false;
}