Hi, On 2021-05-09 15:57:22 +0300, Yura Sokolov wrote: > Occasionally there is a need to run cassert builds in production to > catch an issue. It is usually ok if cassert build O(1) slower than > optimized biuld (ie it is slower in some constant factor C). But > if cassert build will be quadratically slower, it will unusable.
The memory context assertion overhead is more than O(1) expensive. I think there's plenty other cases like it. We removed some (e.g. it used to be that we scanned O(#shared_buffers) entries in the local pin table, at the end of the transaction). I don't think we want to limit ourselves to O(1) checks. That's not to say we should have a O(n^2) or such, unless we have confidence n rarely will be big. Greetings, Andres Freund