Re: assertion failure at cost_memoize_rescan()
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Kohei KaiGai <kaigai@heterodb.com>,
Tomas Vondra <tomas.vondra@enterprisedb.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2024-06-18T03:14:02Z
Lists: pgsql-hackers
On Tue, Jun 18, 2024 at 10:53 AM David Rowley <dgrowleyml@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
Commits
-
Fix possible Assert failure in cost_memoize_rescan
- dae9f16aa31a 14.13 landed
- 27c6242a0484 15.8 landed
- 6143c9c03f7f 16.4 landed
- aa901a37cf8a 17.0 landed