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/

Reply via email to