> 15 сент. 2020 г., в 22:07, Heikki Linnakangas <hlinn...@iki.fi> написал(а):
>
> regression=# SELECT f1, f1 <-> '0,1' FROM point_tbl ORDER BY f1 <-> '0,1';
> f1 | ?column?
> -------------------+------------------
> (0,0) | 1
> (1e-300,-1e-300) | 1
> (-3,4) | 4.24264068711929
> (-10,0) | 10.0498756211209
> (10,10) | 13.4536240470737
> (-5,-12) | 13.9283882771841
> (5.1,34.5) | 33.885985303662
> (1e+300,Infinity) | Infinity
> (NaN,NaN) | NaN
> |
> (10 rows)
>
> It is arbitrary which one you get first.
>
> It's not very nice to have a not-well defined order of rows in the expected
> output, as it could change in the future if we change the index build
> algorithm again. But we have plenty of cases that depend on the physical row
> order, and it's not like this changes very often, so I think it's ok to just
> memorize the new order in the expected output.
I think this is valid reasoning. GiST choose subtree algorithm is not
deterministic, it calls random(), but not in tested paths.
I was thinking that machine epsilon is near 1e-300, but I was wrong. It's
actually near 1e-15.
Actually, I just want to understand what changes between v18 and v19 changed
on-page order of items. I look into patch diff and cannot figure it out. There
are only logging changes. How this affects scan?
Best regards, Andrey Borodin.