Re: BUG #18885: ERROR: corrupt MVNDistinct entry - 2
Andrei Lepikhov <lepihov@gmail.com>
From: Andrei Lepikhov <lepihov@gmail.com>
To: Alexander Korotkov <aekorotkov@gmail.com>, Tomas Vondra <tomas@vondra.me>
Cc: tharakan@gmail.com, pgsql-bugs@lists.postgresql.org,
PG Bug reporting form <noreply@postgresql.org>
Date: 2025-04-14T14:41:22Z
Lists: pgsql-bugs
Attachments
- v0-0001-Be-more-conventional-in-estimating-hash-join-buck.patch (text/x-patch) patch v0-0001
On 4/12/25 00:30, Alexander Korotkov wrote: > On Thu, Apr 10, 2025 at 3:28 PM Andrei Lepikhov <lepihov@gmail.com> wrote: >> ... >> Here, I attempt to use this routine in the hash join bucket size >> estimation. I transformed it a little, made it more general. Not sure it >> is the best design, but it is debatable. > ... > SELECT FROM sb_1 LEFT JOIN sb_2 ON (sb_2.x=sb_1.x) AND (sb_1.x=sb_2.x) > AND (sb_1.y=sb_2.y); > > When you use add_unique_group_var() which keeps varinfos unique then > you can no longer expect that varinfos have the same order as > origin_rinfos. Ok, here is a patch that considers this issue. Now GroupVarInfo tracks source RestrictInfo. Not sure it is an ideal approach, but we don't need to synchronise the restrictions and corresponding varinfos. On Fri, 11 Apr 2025 at 01:31, Tomas Vondra <tomas@vondra.me> wrote: > I think estimate_multivariate_bucketsize() needs to be more careful > about building the GroupVarInfo list - in particular, it needs to do > dance with examine_variable + add_unique_group_var + pull_var_clause, > similar to estimate_num_groups() at line ~3532. Yeah, estimate_num_groups and bucket size estimation have a lot in common. It would be better to invent some common GroupVarInfo preparation/estimation code for them, but specifics of HashJoin bucket estimation need mcv_freq and result caching that limits intersection of these estimators. -- regards, Andrei Lepikhov
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Properly prepare varinfos in estimate_multivariate_bucketsize()
- 9f404d7922e8 18.0 landed
-
Improve comments for estimate_multivariate_ndistinct()
- f3281f9f9395 18.0 landed
-
Use extended stats for precise estimation of bucket size in hash join
- 6bb6a62f3cc4 18.0 cited
-
Ignore nullingrels when looking up statistics
- e28033fe1af8 18.0 cited