Melanie Plageman <melanieplage...@gmail.com> writes: > On Fri, Jan 27, 2023 at 05:05:16PM -0500, Tom Lane wrote: >> AFAIR, there is noplace today that depends on the exact encoding >> of ForwardScanDirection and BackwardScanDirection, and I'm not >> sure that we want to introduce such a dependency.
> I think you mean the enum value when you say encoding? I actually > started using the ScanDirection value in the refactor of heapgettup() > and heapgettup_pagemode() which I proposed here [1]. Why wouldn't we > want to introduce such a dependency? It's just that in general, depending on the numeric values of an enum isn't a great coding practice. After thinking about it for awhile, I'd be happier if we added something like this to sdir.h, and then used it rather than directly depending on multiplication: /* * Determine the net effect of two direction specifications. * This relies on having ForwardScanDirection = +1, BackwardScanDirection = -1, * and will probably not do what you want if applied to any other values. */ #define CombineScanDirections(a, b) ((a) * (b)) The main thing this'd buy us is being able to grep for uses of the trick. If it's written as just multiplication, good luck being able to find what's depending on that, should you ever need to. >> 4. I don't think the proposed test case is worth the cycles. > Just the one I wrote or any test case? I think that all this code is quite well-tested already, so I'm not sure what's the point of adding another test for it. regards, tom lane