[ just to tie back to this old thread ] I wrote: > I poked into this area for awhile, and it turns out to be even a > worse can of worms than I thought. I looked through gram.y and > parse_expr.c, and identified several distinct classes of issue. > (I'm not promising that I found everything.)
In fact, the thread at [1] identifies an essentially similar class of issue that I missed: JOIN ... USING (x) also implicitly looks up an equality operator by seeing what "tab1.x = tab2.x" resolves as. This is much like the CASE situation, in that there's no SQL-standard-compliant way to reverse-list a view containing such a construct while showing how it was resolved. We'd need to invent some new syntax if we want to make this safer. regards, tom lane [1] https://www.postgresql.org/message-id/flat/CAC35HNnNGavaZ%3DP%3DrUcwTwYEhfoyXDg32REXCRDgxBmC3No3nA%40mail.gmail.com