Re: Coalesce bug ? - Mailing list pgsql-general

From Tom Lane
Subject Re: Coalesce bug ?
Date
Msg-id 16273.1356106553@sss.pgh.pa.us
Whole thread Raw
In response to Re: Coalesce bug ?  ("David Johnston" <polobo@yahoo.com>)
Responses Re: Coalesce bug ?  ("David Johnston" <polobo@yahoo.com>)
List pgsql-general
"David Johnston" <polobo@yahoo.com> writes:
> The first case is:

> SELECT COALESCE( (SELECT), (SELECT) );  I am not sure exactly what the parentheses surrounding the scalar-sub-SELECTs
do(turn them into anonymously typed rows?) but if the first scalar-sub-select results in a non-null result then the
secondone should not be executed. 

Indeed, COALESCE will not execute the second sub-select at runtime, but
that doesn't particularly matter here.  What matters is that "ps3(2)"
qualifies to be pre-evaluated (folded to a constant) at plan time.  So
that happens, and the RAISE message comes out, at plan time.  What's
left at run time is

    SELECT COALESCE( (SELECT 1), (SELECT 2) );

and indeed the "SELECT 2" is skipped at that point, as is visible in the
EXPLAIN ANALYZE measurements.

            regards, tom lane


pgsql-general by date:

Previous
From: Chris Angelico
Date:
Subject: Re: Coalesce bug ?
Next
From: "David Johnston"
Date:
Subject: Re: Coalesce bug ?