Обсуждение: log message in proto.c

Поиск
Список
Период
Сортировка

log message in proto.c

От
Fujii Masao
Дата:
Hi,

src/backend/replication/logical/proto.c
action = pq_getmsgbyte(in);
if (action != 'N')
    elog(ERROR, "expected new tuple but got %d",
    action);

"%d" in the above message should be "%c" because the type of
the variable "action" is char? There are other log messages that
"%c" is used for such variable, in proto.c. Seems the above is
only message that "%d" is used for such variable.

Regards,

-- 
Fujii Masao

Вложения

Re: log message in proto.c

От
Robert Haas
Дата:
On Tue, Sep 24, 2019 at 5:41 AM Fujii Masao <masao.fujii@gmail.com> wrote:
> src/backend/replication/logical/proto.c
> action = pq_getmsgbyte(in);
> if (action != 'N')
>     elog(ERROR, "expected new tuple but got %d",
>     action);
>
> "%d" in the above message should be "%c" because the type of
> the variable "action" is char? There are other log messages that
> "%c" is used for such variable, in proto.c. Seems the above is
> only message that "%d" is used for such variable.

The potential problem with using %c to print characters is that the
character might be a null byte or something else that ends up making
the log file invalid under the relevant encoding.

However, if the goal of using %d is to protect against such problems,
it has to be done consistently.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company