On 9 February 2016 at 14:53, Tom Lane <tgl@sss.pgh.pa.us> wrote: > SELECT COALESCE((SELECT 'Yes' FROM gwtest WHERE id=4), 'No') AS valid; > > There's no null visible anywhere in that. I suppose that if there's > no row with id=4, there would be a null at runtime,
Well yes, that was the whole point. > but that's not > going to make any difference for parse-time determination of what > type the COALESCE() will return.
But when the gwtest subquery _does_ return a value it works, so the problem can't be parse-time determination, can it?
SELECT COALESCE((SELECT 'Yes' FROM (VALUES (1),(2),(3)) tst (id) WHERE id=2), 'No') AS valid;
Same error...I tested using the table as well...also the same error for values of id between 1 and 3.