Re: SLOPE - Planner optimizations on monotonic expressions.

Alexandre Felipe <o.alexandre.felipe@gmail.com>

From: Alexandre Felipe <o.alexandre.felipe@gmail.com>
To: Zsolt Parragi <zsolt.parragi@percona.com>
Cc: Dean Rasheed <dean.a.rasheed@gmail.com>, Corey Huinker <corey.huinker@gmail.com>, pgsql-hackers@postgresql.org
Date: 2026-06-01T13:07:47Z
Lists: pgsql-hackers

Attachments

This patch set adds 0007 "FIX NaN special cases"
filter the index pathkeys that could produce NaN values out of order

By special values I mean the non-real numeric values +Infinity, -Infinity,
NaN.

Cases considered.
(1) Input type supports special values, and functions are decreasing.
(2) Adding or subtracting infinity to a variable of a type that supports
special values.
(3) Multiplication by infinity, as the 0 * Infinity is out of order.
(4) Dividing by infinity a variable that supports special values.

The case (1) is treated when building the pathkey to handle properly cases
like (1 - (1 - x)) where the expression is increased but depends on some
decreasing sub expression.


Regards,
Alexandre



On Sun, May 10, 2026 at 4:53 PM Alexandre Felipe <
o.alexandre.felipe@gmail.com> wrote:

>
> On Fri, May 8, 2026 at 11:19 PM Zsolt Parragi <zsolt.parragi@percona.com>
> wrote:
>
>> I found one more corner case with infinities (same applies also with
>> negative infinity):
>>
>
> This will restrict a lot of cases.
>
>
> slope_corner_cases.sql enumerate experssions and orders producing
> permutations of (-inf, -1, 0, 1, +inf, nan) mapped to (1,2,3,4,5,6)
> to visualize other similar corner cases.
>
> Apparently the violations boil down to two cases
> * All basic arithmetic operations with infinity constant (with a lucky
> exception x - inf)
> * Every decreasing function where the index key.
> e.g. `-x desc` would have NaNs first
>
> Should I simply detect and disable the above cases?
>
> sqrt(x < 0) already raise an exception, is it safe to assume that for all
> the limited domain functions?
>
>
>
>