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 по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: Managing multiple branches in git
Следующее
От: Marko Kreen
Дата:
Сообщение: Re: PostgreSQL Developer meeting minutes up