-- -- Replace obsolete function bitfromint4() by cast --- -- ... but keep emulation function still around in case somebody uses -- this still.... -- -- -- procedure int_to_tree_key/1 -- CREATE OR REPLACE FUNCTION int_to_tree_key( p_intkey integer ) RETURNS varbit AS $$ -- Convert an integer into the bit string format used to store -- tree sort keys. Using 4 bytes for the long keys requires -- using -2^31 rather than 2^31 to avoid a twos-complement -- "integer out of range" error in PG - if for some reason you -- want to use a smaller value use positive powers of two! -- There was an "out of range" check in here when I was using 15 -- bit long keys but the only check that does anything with the long -- keys is to check for negative numbers. DECLARE BEGIN if p_intkey < 0 then raise exception 'int_to_tree_key: key must be a positive integer'; end if; if p_intkey < 128 then return substring(p_intkey::bit(32), 25, 8); else return substring((cast (-2^31 + p_intkey as int4))::bit(32), 1, 32); end if; END; $$ LANGUAGE plpgsql immutable strict;