Re: Convert macros to static inline functions
От | Peter Geoghegan |
---|---|
Тема | Re: Convert macros to static inline functions |
Дата | |
Msg-id | CAH2-WznrCct+UA=viHmj2p7M7mpbF9Ugqxb=yCN=wULOwJeA3Q@mail.gmail.com обсуждение исходный текст |
Ответ на | Convert macros to static inline functions (Peter Eisentraut <peter.eisentraut@enterprisedb.com>) |
Список | pgsql-hackers |
On Mon, May 16, 2022 at 1:28 AM Peter Eisentraut <peter.eisentraut@enterprisedb.com> wrote: > Inspired by [0], I looked to convert more macros to inline functions. > The attached patches are organized "bottom up" in terms of their API > layering; some of the later ones depend on some of the earlier ones. Big +1 from me. I converted over most of the nbtree.h function style macros in Postgres 13, having put it off in Postgres 12 (there is one remaining function macro due to an issue with #include dependencies). This vastly improved the maintainability of the code, and I wish I'd done it sooner. Inline functions made it a lot easier to pepper various B-Tree code utility functions with defensive assertions concerning preconditions and postconditions. That's something that I am particular about. In theory you can just use AssertMacro() in a function style macro. In practice that approach is ugly, and necessitates thinking about multiple evaluation hazards, which is enough to discourage good defensive coding practices. -- Peter Geoghegan
В списке pgsql-hackers по дате отправления: