> #define SH_MAX_SIZE (((uint64) PG_UINT32_MAX) + 1) > This is Assert, that is, in production this test is not done.
Correct, which implies that it's a test for something which is deemed highly unlikely to happen in production.
Highly improbable does not mean impossible, or that it will never happen.
> If the empty element is not found, startelem has PG_UINT64_MAX value, > which do not fit in uint32.
Can you show an example where the hash isn't grown automatically to accomodate this such that the assertion is tripped?
A demo won't change the fact that the function can fail, even if it isn't currently failing. As a precaution to avoid future bugs, I think it's necessary to apply the patch to increase the robustness of the function.