Re: BUG #17618: unnecessary filter column <> text even after adding index
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Jeff Janes <jeff.janes@gmail.com>, sindysenorita@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2022-09-26T11:42:05Z
Lists: pgsql-bugs
Attachments
- v2-0001-constant-folding-for-indexquals-in-bitmap-scan.patch (application/octet-stream) patch v2-0001
On Sat, Sep 24, 2022 at 8:41 AM Richard Guo <guofenglinux@gmail.com> wrote: > > On Sat, Sep 24, 2022 at 8:04 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > >> Richard Guo <guofenglinux@gmail.com> writes: >> > We should have already done that long before. It seems afterwards we may >> > do additional transformation on indexquals. In this case with a boolean >> > index, I can see we convert the indexqual to form 'indexkey = TRUE' in >> > match_boolean_index_clause. >> >> Of course, but what about that transformation would introduce something >> that eval_const_expressions could simplify? (Actually, now that I think >> about it, I think eval_const_expressions would break it completely because >> it'd re-canonicalize the expression as just 'indexkey', exactly what we >> don't want here.) In any case, if there's something between the >> eval_const_expressions pass and createplan.c that introduces simplifiable >> expressions, I think it's on that something's head to re-simplify; we >> don't want to do something so expensive in a main code path if it's >> usually going to be a complete waste. > > > Yeah, I agree that running eval_const_expressions here is expensive. > Maybe we can just do the reverse transformation in > create_bitmap_scan_plan against what we do for boolean index in > match_boolean_index_clause? > Following this idea, I come up with v2 patch. Is this the right direction to go? Thanks Richard
Commits
-
Produce more-optimal plans for bitmap scans on boolean columns.
- 042c9091f0fc 16.0 landed