You're correct that the bug is older. I'm not sure about backporting the fix to 16 and earlier though, because it depends on BtreeCheckState having the snapshot member which was only added in commit 5ae2087202af. It's not a difficult patch -- attached.
The issue itself in fact doesn't depend on BtreeCheckState's snapshot member.
So the fix for 14-16 can make snapshot a local variable in the bt_check_every_level
function to make the scope small. Do you think it's worth changing it to a local variable?
I don't think the issue itself is related to 5ae2087202af but actually 7f563c09f890 where
the heapallindexed flag is introduced for bt_index_check. The committed test
also doesn't check the uniqueness of an index. Should the commit message be restated
to reflect this and also restate it's backport to 14 and up?
I applied the patch in 14 and noticed that it needs to fix the test number to get the test passed.
(One thing I realized is that the comment for BtreeCheckState->snapshot says that it's used for the uniqueness test only, but that's no longer the case. So that needs fixed ...)
I think we'll have another chance to reflect that the issue is since 7f563c09f890 but not 5ae2087202af