On 2020-05-03 17:05:54 -0300, Ranier Vilela wrote: > 1. Warning: the right operand to | always evaluates to 0 > > src/include/storage/bufpage.h > #define PAI_OVERWRITE (1 << 0) > #define PAI_IS_HEAP (1 << 1) > > #define PageAddItem(page, item, size, offsetNumber, overwrite, is_heap) \ > PageAddItemExtended(page, item, size, offsetNumber, \ > ((overwrite) ? PAI_OVERWRITE : 0) | \ > ((is_heap) ? PAI_IS_HEAP : 0)) > > Typo | should be ||: > ((overwrite) ? PAI_OVERWRITE : 0) || \ > ((is_heap) ? PAI_IS_HEAP : 0))
Definitely not. PageAddItemExtended's flags argument is not a boolean, it's a flag bitmask. It'd entirely break the semantics to make the change you suggest. Nor do I know what this warning is about, because clearly in the general case the right argument to the | does not generally evaluate to 0. I guess this about a particular use of the macro (with a constant argument), rather than the macro itself.