> I'd like to propose the patch that fixes the issue. > We already have a way to return heaptuple from IndexOnlyScan, > but it was not applied to b-tree for some reason. > > Attached patch solves the reported bug. > Moreover, it will come in handy for "index with included attributes" feature > , > where we can store long (and even TOASTed) attributes in indextuple. > >  https://commitfest.postgresql.org/17/1350/
I believe the patch should include a test that tries to reproduce an issue it tries to fix.
Also maybe this code that repeats 3 times can be moved to a separate procedure?