Hi Florin, On Thu, Jul 30, 2026 at 4:55 PM Florin Irion <[email protected]> wrote:
> Hi, > > Thank you for reviewing,all confirmed, and fixed in v4. > > 1. False conflict via PGS_CONSIDER_INDEXONLY: that's an enforcement > detail, not a scan method. Added pgpa_scan_semantic_mask(), which strips > PGS_CONSIDER_INDEXONLY before comparing tags for conflict purposes. > BITMAP_HEAP_SCAN(t) NO_INDEX_ONLY_SCAN(t) now comes back clean, no > conflict. > > 2. Conflict cancelling unrelated NO_ tags: Replaced the single > all-or-nothing scan_pos_neg_conflict/jm_pos_neg_conflict gate with > per-tag conflict tracking. Each NO_ tag is now checked independently; > only the ones that actually clash get marked conflicting and skipped, > everything else still gets enforced. Verified with your examples — > NO_BITMAP_HEAP_SCAN and NO_HASH_JOIN(d) now apply despite an unrelated > conflict on a different method. > > 3. Also caught while testing: index-selection side effect on conflict. > Separately, found that the "enforce choice of index" block only checked > !scan_pos_conflict, not !scan_pos_neg_conflict. So INDEX_SCAN(t idx) > NO_INDEX_SCAN(t) — a genuine conflict, correctly left unenforced at the > mask level — was still silently disabling every other index on t, > steering the plan toward idx anyway. Fixed by adding the missing check. Thanks for v4. I've tested it and everything looks correct -- all three issues fixed, and the index-selection side effect is handled nicely too. +1 from me. Regards, -- Ze Chen (Neil) HighGo Software Co., Ltd. https://www.highgo.com/
