I wrote: > Andres Freund <and...@anarazel.de> writes: >> Maybe it's worth sticking a StaticAssert() for the struct size >> somewhere.
> Indeed. I thought we had one already. >> I'm a bit wary about that being too noisy, there are some machines with >> odd alignment requirements. Perhaps worth restricting the assertion to >> x86-64 + armv8 or such? > I'd put it in first and only reconsider if it shows unfixable problems. Now that we've got the sizeof(ExprEvalStep) under control, shouldn't we do the attached? regards, tom lane
diff --git a/src/include/executor/execExpr.h b/src/include/executor/execExpr.h index 86e1ac1e65..06c3adc0a1 100644 --- a/src/include/executor/execExpr.h +++ b/src/include/executor/execExpr.h @@ -669,6 +669,10 @@ typedef struct ExprEvalStep } d; } ExprEvalStep; +/* Enforce the size rule given in the comment above */ +StaticAssertDecl(sizeof(ExprEvalStep) <= 64, + "size of ExprEvalStep exceeds 64 bytes"); + /* Non-inline data for container operations */ typedef struct SubscriptingRefState