On 10/01/2018 11:58 AM, Tom Lane wrote:
Mark Wong <[email protected]> writes:a | a | uuid_cmp --------------------------------------+--------------------------------------+------------- 11111111-1111-1111-1111-111111111111 | 11111111-1111-1111-1111-111111111111 | 0 11111111-1111-1111-1111-111111111111 | 22222222-2222-2222-2222-222222222222 | -2147483648 11111111-1111-1111-1111-111111111111 | 3f3e3c3b-3a30-3938-3736-353433a2313e | -2147483648 22222222-2222-2222-2222-222222222222 | 11111111-1111-1111-1111-111111111111 | 1 22222222-2222-2222-2222-222222222222 | 22222222-2222-2222-2222-222222222222 | 0 22222222-2222-2222-2222-222222222222 | 3f3e3c3b-3a30-3938-3736-353433a2313e | -2147483648 3f3e3c3b-3a30-3938-3736-353433a2313e | 11111111-1111-1111-1111-111111111111 | 1 3f3e3c3b-3a30-3938-3736-353433a2313e | 22222222-2222-2222-2222-222222222222 | 1 3f3e3c3b-3a30-3938-3736-353433a2313e | 3f3e3c3b-3a30-3938-3736-353433a2313e | 0 (9 rows)Oooh ... apparently, on that platform, memcmp() is willing to produce INT_MIN in some cases. That's not a safe value for a sort comparator to produce --- we explicitly say that somewhere, IIRC. I think we implement DESC by negating the comparator's result, which explains why only the DESC case fails.
Is there a standard that forbids this, or have we just been lucky up to now? cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
