{
OpExpr *expr = (OpExpr *) node;
- if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
+ set_opfuncid(expr);
+ if (func_volatile(expr->opfuncid) != PROVOLATILE_IMMUTABLE)
return true;
/* else fall through to check args */
}
{
DistinctExpr *expr = (DistinctExpr *) node;
- if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
+ set_opfuncid((OpExpr *) expr); /* rely on struct equivalence */
+ if (func_volatile(expr->opfuncid) != PROVOLATILE_IMMUTABLE)
return true;
/* else fall through to check args */
}
{
ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node;
- if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
+ set_sa_opfuncid(expr);
+ if (func_volatile(expr->opfuncid) != PROVOLATILE_IMMUTABLE)
return true;
/* else fall through to check args */
}
{
NullIfExpr *expr = (NullIfExpr *) node;
- if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
+ set_opfuncid((OpExpr *) expr); /* rely on struct equivalence */
+ if (func_volatile(expr->opfuncid) != PROVOLATILE_IMMUTABLE)
return true;
/* else fall through to check args */
}
{
OpExpr *expr = (OpExpr *) node;
- if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
+ set_opfuncid(expr);
+ if (func_volatile(expr->opfuncid) == PROVOLATILE_VOLATILE)
return true;
/* else fall through to check args */
}
{
DistinctExpr *expr = (DistinctExpr *) node;
- if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
+ set_opfuncid((OpExpr *) expr); /* rely on struct equivalence */
+ if (func_volatile(expr->opfuncid) == PROVOLATILE_VOLATILE)
return true;
/* else fall through to check args */
}
{
ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node;
- if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
+ set_sa_opfuncid(expr);
+ if (func_volatile(expr->opfuncid) == PROVOLATILE_VOLATILE)
return true;
/* else fall through to check args */
}
{
NullIfExpr *expr = (NullIfExpr *) node;
- if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
+ set_opfuncid((OpExpr *) expr); /* rely on struct equivalence */
+ if (func_volatile(expr->opfuncid) == PROVOLATILE_VOLATILE)
return true;
/* else fall through to check args */
}
{
OpExpr *expr = (OpExpr *) node;
- if (!op_strict(expr->opno))
+ set_opfuncid(expr);
+ if (!func_strict(expr->opfuncid))
return true;
/* else fall through to check args */
}
{
OpExpr *expr = (OpExpr *) node;
- if (op_strict(expr->opno))
+ set_opfuncid(expr);
+ if (func_strict(expr->opfuncid))
result = find_nonnullable_rels_walker((Node *) expr->args, false);
}
else if (IsA(node, ScalarArrayOpExpr))
Node *rightop;
/* The contained operator must be strict. */
- if (!op_strict(expr->opno))
+ set_sa_opfuncid(expr);
+ if (!func_strict(expr->opfuncid))
return false;
/* If ANY and falseOK, that's all we need to check. */
if (expr->useOr && falseOK)