-- -- cmp_pg_version/1 -- create or replace function cmp_pg_version( p__version character varying ) returns int4 as $$ DECLARE pg_version integer[]; user_pg_version integer[]; index integer; ret_val integer; i integer; BEGIN ret_val = 0; user_pg_version := string_to_array(trim(p__version),'.')::int[]; select string_to_array(setting, '.')::int[] into pg_version from pg_settings where name = 'server_version'; for index in array_length(user_pg_version, 1) + 1..array_length(pg_version, 1) loop user_pg_version[index] := 0; end loop; index := 1; while (index <= array_length(pg_version, 1) and ret_val = 0) loop if user_pg_version[index] > pg_version[index] then ret_val := -1; elsif user_pg_version[index] < pg_version[index] then ret_val := 1; end if; index := index + 1; end loop; return ret_val; END; $$ language plpgsql;