On Fri, Apr 7, 2017 at 10:03 AM, Kevin Grittner <kgri...@gmail.com> wrote: > On Thu, Apr 6, 2017 at 4:19 PM, Andres Freund <and...@anarazel.de> wrote: > >> My compiler, quite justifiedly, complains: >> >> /home/andres/src/postgresql/src/backend/parser/parse_relation.c: In function >> ‘get_rte_attribute_is_dropped’: >> /home/andres/src/postgresql/src/backend/parser/parse_relation.c:2899:43: >> warning: comparison between pointer and zero character constant >> [-Wpointer-compare] >> (list_nth(rte->coltypes, attnum - 1) != InvalidOid); >> ^~ >> /home/andres/src/postgresql/src/backend/parser/parse_relation.c:2899:7: >> note: did you mean to dereference the pointer? >> (list_nth(rte->coltypes, attnum - 1) != InvalidOid); >> ^ > > Good catch. Will push a change from list_nth() to list_nth_oid() > for the benefit of stricter compilers. While I'm at it, I'll throw > on another layer of parentheses to ensure people read that > correctly. Out of curiosity, what compiler or setting catches this?
Doesn't it also have the logic backwards? According to the comment, the attribute is dropped if the type *is* InvalidOid, so we want result == true in that case. But I don't actually know how to reach this code to test it. /* - * We checked when we loaded ctecoltypes for the tuplestore + * We checked when we loaded coltypes for the tuplestore * that InvalidOid was only used for dropped columns, so it is * safe to count on that here. */ result = - (list_nth(rte->coltypes, attnum - 1) != InvalidOid); + (list_nth_oid(rte->coltypes, attnum - 1) == InvalidOid); } -- Thomas Munro http://www.enterprisedb.com -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers