Re: [COMMITTERS] pgsql: Add infrastructure to supportEphemeralNamedRelation references.

Поиск
Список
Период
Сортировка
От Thomas Munro
Тема Re: [COMMITTERS] pgsql: Add infrastructure to supportEphemeralNamedRelation references.
Дата
Msg-id CAEepm=2FcFPUOi3YkqPy2pRhw6w=2KgDXRTMQ3g03P0H5NjpQA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [COMMITTERS] pgsql: Add infrastructure to supportEphemeralNamedRelation references.  (Kevin Grittner <kgrittn@gmail.com>)
Список pgsql-committers
On Fri, Apr 7, 2017 at 10:03 AM, Kevin Grittner <kgrittn@gmail.com> wrote:
> On Thu, Apr 6, 2017 at 4:19 PM, Andres Freund <andres@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
zerocharacter 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


В списке pgsql-committers по дате отправления:

Предыдущее
От: Kevin Grittner
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Add infrastructure to supportEphemeralNamedRelation references.
Следующее
От: Andres Freund
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Add infrastructure to supportEphemeralNamedRelation references.