isMergeableConst.txt

text/plain

Filename: isMergeableConst.txt
Type: text/plain
Part: 0
Message: Re: pg_stat_statements and "IN" conditions
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;
}