The improvement to RelTraitSet.satisfies would be nice, however, I still believe getRelList must not be used in 2222.
It looks like the only possibility of the case when rel points to a relset which does not include the rel is the case when the rel has been replaced with an equivalent. In other words, the planner finds that the rel is equivalent to another rel, and it removes the new one from its set. Should we remove the entry from mapRel2Subset as well? Then RuleCall could treat "missing entry in mapRel2Subset" as a sign of the stale rel. Vladimir