Hey Maxime!

Thank you for reviewing my changes so far and for proposing the changes in your
patch! And thank you for the kind words!

1)

I think we still need to check `InvalidOid` because execIndexing.c:~800
initializes scan keys ('ScanKeyEntryInitialize') with `InvalidOid` as the
subtype. Running the 'not_equal', 'partitions' and 'without_overlaps' tests
confirms that 'InvalidOid' must be handled. I can add the check again in the
switch. (attaching patch)

2) and 3)

I completely agree, your patch makes it much cleaner.
I applied your patch (with the 'InvalidOid' fix) on top of mine and ran all the
tests and benchmarks that I prepared previously. These are the results before
the entire patchset and after:


duration=15s/run, reps=10, 1 client, interleaved, lower is better
------------------------------------------------------------------------
before consistent min/med/mean = 51.246   51.361   51.378 ms
after consistent min/med/mean    = 51.849   51.958   51.967 ms
------------------------------------------------------------------------
before distance min/med/mean = 76.441    76.561   76.567 ms
after distance min/med/mean    = 76.568   76.678   76.681 ms
------------------------------------------------------------------------

I added one more commit that adds a small description of this fix in the docs.

The current patchset has been rebased on top of ef01ca6dbca54e9bf3abea01c357b346847ebcf3

Best regards!