Re: Warnings in compile
От | Bruce Momjian |
---|---|
Тема | Re: Warnings in compile |
Дата | |
Msg-id | 200906031448.n53Emwj08672@momjian.us обсуждение исходный текст |
Ответ на | Re: Warnings in compile (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
Tom Lane wrote: > Michael Meskes <meskes@postgresql.org> writes: > > On Mon, May 25, 2009 at 10:19:40AM -0400, Tom Lane wrote: > >> That sounds both dangerous and against our coding conventions. The > >> standard way to do that is "do { ... } while (0)" > > > Which won't work here as the macros have continue and break commands in them. > > Oh, right, that was Bruce's "improvement" of the COPY code. I was less > than thrilled with it, but didn't have an easy alternative. > > You can't just remove the "else", or it's unsafe; and I'm afraid that > changing the macros into "else {}" would still leave us with some > warnings about empty statements ... Wow, that must have been a long time ago because I had forgotten about it (seems it was 2005-12-27). As least I added a macro comment: /** These macros centralize code used to process line_buf and raw_buf buffers.* They are macros because they often do continue/breakcontrol and to avoid* function call overhead in tight COPY loops.** We must use "if (1)" because "do {} while(0)"overrides the continue/break* processing. See http://www.cit.gu.edu.au/~anthony/info/C/C.macros.*/ As I remember this was an attempt to implement Greenplum's optimizations in a coherent manner. I have added a comment about why "((void) 0)" is used. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
В списке pgsql-hackers по дате отправления: