> 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.

Reply via email to