> > > I think the UniqueKeys may need to be changed from using > EquivalenceClasses to use Exprs instead. >
When I try to understand why UniqueKeys needs EquivalenceClasses, see your comments here. I feel that FuncExpr can't be used to as a UniquePath even we can create unique index on f(a) and f->strict == true. The reason is even we know a is not null, f->strict = true. it is still be possible that f(a) == null. unique index allows more than 1 null values. so shall we move further to use varattrno instead of Expr? if so, we can also use a list of Bitmapset to present multi unique path of a single RelOptInfo.