Thread: pgsql: Fix netmask handling in inet_minmax_multi_ops

pgsql: Fix netmask handling in inet_minmax_multi_ops

From
Tomas Vondra
Date:
Fix netmask handling in inet_minmax_multi_ops

When calculating distance in brin_minmax_multi_distance_inet(), the
netmask was applied incorrectly. This results in (seemingly) incorrect
ordering of values, triggering an assert.

For builds without asserts this is mostly harmless - we may merge other
ranges, possibly resulting in slightly less efficient index. But it's
still correct and the greedy algorithm doesn't guarantee optimality
anyway.

Backpatch to 14, where minmax-multi indexes were introduced.

Reported by Dmitry Dolgov, investigation and fix by me.

Reported-by: Dmitry Dolgov
Backpatch-through: 14
Discussion: https://postgr.es/m/17774-c6f3e36dd4471e67@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e8583126833a53f4eebe28a8de45d128f01ff664

Modified Files
--------------
src/backend/access/brin/brin_minmax_multi.c | 4 ++--
src/test/regress/expected/brin_multi.out    | 6 ++++++
src/test/regress/sql/brin_multi.sql         | 7 +++++++
3 files changed, 15 insertions(+), 2 deletions(-)


Re: pgsql: Fix netmask handling in inet_minmax_multi_ops

From
Tomas Vondra
Date:
On 3/20/23 10:28, Tomas Vondra wrote:
> Fix netmask handling in inet_minmax_multi_ops
> 
> When calculating distance in brin_minmax_multi_distance_inet(), the
> netmask was applied incorrectly. This results in (seemingly) incorrect
> ordering of values, triggering an assert.
> 
> For builds without asserts this is mostly harmless - we may merge other
> ranges, possibly resulting in slightly less efficient index. But it's
> still correct and the greedy algorithm doesn't guarantee optimality
> anyway.
> 
> Backpatch to 14, where minmax-multi indexes were introduced.
> 
> Reported by Dmitry Dolgov, investigation and fix by me.
> 
> Reported-by: Dmitry Dolgov

Correction - the issue was reported by Robins Tharakan, I got confused
while writing the commit message. I don't know if this issue is to be
mentioned in release notes (considering it mostly affects just assert
builds), but if we do we should the correct name.


regards

-- 
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: pgsql: Fix netmask handling in inet_minmax_multi_ops

From
Tom Lane
Date:
Tomas Vondra <tomas.vondra@enterprisedb.com> writes:
> On 3/20/23 10:28, Tomas Vondra wrote:
>> Reported by Dmitry Dolgov, investigation and fix by me.
>> Reported-by: Dmitry Dolgov

> Correction - the issue was reported by Robins Tharakan, I got confused
> while writing the commit message. I don't know if this issue is to be
> mentioned in release notes (considering it mostly affects just assert
> builds), but if we do we should the correct name.

We don't normally cite the bug reporter's name in release notes,
just the person(s) who wrote the patch.  So this won't be an issue
for the notes.

            regards, tom lane