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!