Re: contrib/pgcrypto functions not IMMUTABLE? - Mailing list pgsql-hackers

From Michael Fuhr
Subject Re: contrib/pgcrypto functions not IMMUTABLE?
Date
Msg-id 20050703064332.GA34783@winnie.fuhr.org
Whole thread Raw
In response to Re: contrib/pgcrypto functions not IMMUTABLE?  (Russell Smith <mr-russ@pws.com.au>)
Responses Re: contrib/pgcrypto functions not IMMUTABLE?
List pgsql-hackers
On Sun, Jul 03, 2005 at 04:24:31PM +1000, Russell Smith wrote:
> On Sun, 3 Jul 2005 03:32 pm, Michael Fuhr wrote:
> > I've noticed that contrib/pgcrypto/pgcrypto.sql.in doesn't include
> > a volatility category in its CREATE FUNCTION statements, so the
> > functions are all created VOLATILE.  Shouldn't most of them be
> > IMMUTABLE?  Or do the algorithms have side effects?
>
> I know the salt functions MUST stay volatile, as they produce different output
> every time you call them.  I've not looked at the pgcrypto code, so I can't
> make further comment than that.

Yeah, I see that gen_salt() needs to be volatile, but I was thinking
about functions like digest(), encrypt(), decrypt(), etc., that
would be expected to return the same output given the same input.
For example, the core md5() function is immutable, but pgcrypto's
digest() is volatile.  I was wondering if that's intentional or
just an oversight.

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/


pgsql-hackers by date:

Previous
From: Russell Smith
Date:
Subject: Re: contrib/pgcrypto functions not IMMUTABLE?
Next
From: Greg Stark
Date:
Subject: Re: Checkpoint cost, looks like it is WAL/CRC