• T
    Fix domain_in() bug exhibited by Darcy Buskermolen. The idea of an EState · c6848986
    Tom Lane 提交于
    that's shorter-lived than the expression state being evaluated in it really
    doesn't work :-( --- we end up with fn_extra caches getting deleted while
    still in use.  Rather than abandon the notion of caching expression state
    across domain_in calls altogether, I chose to make domain_in a bit cozier
    with ExprContext.  All we really need for evaluating variable-free
    expressions is an ExprContext, not an EState, so I invented the notion of a
    "standalone" ExprContext.  domain_in can prevent resource leakages by doing
    a ReScanExprContext on this rather than having to free it entirely; so we
    can make the ExprContext have the same lifespan (and particularly the same
    per_query memory context) as the expression state structs.
    c6848986
executor.h 10.8 KB