- Notifications
You must be signed in to change notification settings - Fork5.2k
Commit9b681e2
committed
Fix incorrect return value in brin_minmax_multi_distance_numeric().
The result of "DirectFunctionCall1(numeric_float8, d)" is already inDatum form, but the code was incorrectly applying PG_RETURN_FLOAT8()to it. On machines where float8 is pass-by-reference, this wouldresult in complete garbage, since an unpredictable pointer valuewould be treated as an integer and then converted to float. It's notentirely clear how much of a problem would ensue on 64-bit hardware,but certainly interpreting a float8 bitpattern as uint64 and thenconverting that to float isn't the intended behavior.As luck would have it, even the complete-garbage case doesn't breakBRIN indexes, since the results are only used to make choices abouthow to merge values into ranges: at worst, we'd make poor choicesresulting in an inefficient index. Doubtless that explains the lackof field complaints. However, users with BRIN indexes that use thenumeric_minmax_multi_ops opclass may wish to reindex in hopes ofmaking their indexes more efficient.Author: Peter Eisentraut <peter@eisentraut.org>Co-authored-by: Tom Lane <tgl@sss.pgh.pa.us>Discussion:https://postgr.es/m/2093712.1753983215@sss.pgh.pa.usBackpatch-through: 141 parentf71ad5b commit9b681e2
1 file changed
+1
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2032 | 2032 | | |
2033 | 2033 | | |
2034 | 2034 | | |
2035 | | - | |
| 2035 | + | |
2036 | 2036 | | |
2037 | 2037 | | |
2038 | 2038 | | |
| |||
0 commit comments
Comments
(0)