Properly initialize SortSupport for ORDER BY rechecks in nodeIndexscan.c.
Tom Lane <tgl@sss.pgh.pa.us>
Properly initialize SortSupport for ORDER BY rechecks in nodeIndexscan.c. Fix still another bug in commit 35fcb1b3d: it failed to fully initialize the SortSupport states it introduced to allow the executor to re-check ORDER BY expressions containing distance operators. That led to a null pointer dereference if the sortsupport code tried to use ssup_cxt. The problem only manifests in narrow cases, explaining the lack of previous field reports. It requires a GiST-indexable distance operator that lacks SortSupport and is on a pass-by-ref data type, which among core+contrib seems to be only btree_gist's interval opclass; and it requires the scan to be done as an IndexScan not an IndexOnlyScan, which explains how btree_gist's regression test didn't catch it. Per bug #14134 from Jihyun Yu. Peter Geoghegan Report: <20160511154904.2603.43889@wrigleys.postgresql.org>
Files
| Path | Change | +/− |
|---|---|---|
| contrib/btree_gist/expected/interval.out | modified | +18 −0 |
| contrib/btree_gist/sql/interval.sql | modified | +6 −0 |
| src/backend/executor/nodeIndexscan.c | modified | +13 −2 |