On Tue, Jun 18, 2024 at 10:53 AM David Rowley <dgrowle...@gmail.com> wrote: > Out of the places I saw, it seems we do tend to code things so that we > don't assume the value has been clamped. E.g. > adjust_limit_rows_costs() does if (*rows < 1) *rows = 1;
Agreed. In costsize.c I saw a few instances where we have /* Protect some assumptions below that rowcounts aren't zero */ if (inner_path_rows <= 0) inner_path_rows = 1; > I think the best solution is to apply the attached. I didn't test, > but it should fix the issue you reported and also ensure that > MemoizePath.calls is never zero, which would also cause issues in the > hit_ratio calculation in cost_memoize_rescan(). +1. Thanks Richard