> It's an implementation restriction. If the clauses aren't mergejoinable
> there's no very practical way to keep track of which inner-side rows
> have had a match.
If we could consider it is equivalent transformation as follow?
select * from t_1 full outer join t_3 on t_1.a=1;
and
select * from t_1 full outer join t_3 on true where t_1.a=1;
If we could transform RestrictInfo into the where-clause, maybe it right.
TEST=# select * from t_1 full outer join t_3 on true where t_1.a=1;
A | A
---+---
1 | 1
1 | 3
(2 rows)