David Rowley <david.row...@2ndquadrant.com> writes:
> On 8 April 2017 at 04:42, Tom Lane <t...@sss.pgh.pa.us> wrote:
>> BTW, is it really true that only these two places produce such warnings
>> on MSVC?  I see about three dozen uses of PG_USED_FOR_ASSERTS_ONLY in our
>> tree, and I'd have expected all of those places to be causing warnings on
>> a compiler that doesn't have a way to understand that annotation.

> Seems that MSVC is happy once the variable is assigned, and does not
> bother checking if the variable is used after being assigned, whereas,
> some other compilers might see the variable as uselessly assigned.

> At the moment there are no other warnings from MSVC since all the
> other places the variable gets assigned a value in some code path.

I wonder if we shouldn't just do

        RangeTblEntry *rte PG_USED_FOR_ASSERTS_ONLY;
        ListCell   *lc;
 
        /* Should only be applied to base relations that are subqueries */
        Assert(rel->relid > 0);
-#ifdef USE_ASSERT_CHECKING
        rte = planner_rt_fetch(rel->relid, root);
        Assert(rte->rtekind == RTE_SUBQUERY);
-#endif

and eat the "useless" calculation of rte.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to