> 7 окт. 2020 г., в 17:38, Heikki Linnakangas <hlinn...@iki.fi> написал(а): > > On 07/10/2020 15:27, Andrey Borodin wrote: >> Here's draft patch with implementation of sortsupport for ints and floats. > >> +static int >> +gbt_int4_cmp(Datum a, Datum b, SortSupport ssup) >> +{ >> + int32KEY *ia = (int32KEY *) DatumGetPointer(a); >> + int32KEY *ib = (int32KEY *) DatumGetPointer(b); >> + >> + if (ia->lower == ib->lower) >> + { >> + if (ia->upper == ib->upper) >> + return 0; >> + >> + return (ia->upper > ib->upper) ? 1 : -1; >> + } >> + >> + return (ia->lower > ib->lower) ? 1 : -1; >> +} > > We're only dealing with leaf items during index build, so the 'upper' and > 'lower' should always be equal here, right? Maybe add a comment and an > assertion on that. > > (It's pretty sad that the on-disk representation is identical for leaf and > internal items, because that wastes a lot of disk space, but that's way out > of scope for this patch.)
Thanks, I've added assert() where is was easy to test equalty. PFA patch with all types. I had a plan to implement and test one type each day. I did not quite understood how rich our type system is. Thanks! Best regards, Andrey Borodin.
0001-Sortsupport-for-sorting-GiST-build-for-gist_btree-ty.patch
Description: Binary data