Hello Michael,
this works like charm. Although I did fix the argument for lo_lseek:
CREATE OR REPLACE FUNCTION md5(id oid)
RETURNS text
as $$DECLARE fd integer; size integer; hashval text; INV_READ constant integer := 262144; -- 0x40000
fromlibpq-fs.h SEEK_SET constant integer := 0; SEEK_END constant integer := 2;BEGIN IF id is null THEN RETURN NULL;
ENDIF; fd := lo_open(id, INV_READ); size := lo_lseek(fd, 0, SEEK_END); PERFORM lo_lseek(fd, 0, SEEK_SET); hashval :=
md5(loread(fd,size)); PERFORM lo_close(fd); RETURN hashval;END;
$$
language plpgsql stable strict;
comment on FUNCTION md5(id oid) is 'Calculates the md5 sum of a large object.';
I vote for this function beeing included either somewhere in the
contrib directories, as you often don't need the full power of
pgcrypto is md5 suffices for your hashing needs.
--
---> Dirk Jagdmann
----> http://cubic.org/~doj
-----> http://llg.cubic.org