Re: Suggestions please: names for function cachabilityattributes

Peter Eisentraut <peter_e@gmx.net>

From: Peter Eisentraut <peter_e@gmx.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: mlw <markw@mohawksoft.com>, <pgsql-hackers@postgresql.org>
Date: 2002-04-03T23:19:31Z
Lists: pgsql-hackers
Tom Lane writes:

> Peter Eisentraut <peter_e@gmx.net> writes:
> > It could also be considered deterministic, strict, cacheable,
> > mathematically sensible, real, pleasant, or good. ;-)
>
> > Out of those, I believe "const" is the worst term, because saying "sin(x)
> > is a constant function" sounds pretty wrong.
>
> Yeah, that was my problem with "const" too.  But "deterministic" has the
> same problem --- in the ordinary meaning of the term, a function doesn't
> become nondeterministic just because it depends on SET TIMEZONE as well
> as its explicit parameters.  It's also too long and too hard to spell
> correctly ;-).

As it turns out, Oracle, IBM, and Microsoft use it for exactly the same
purpose, and it is standard ...

If you're not happy with labelling case 2 nondeterministic, add an
additional clause, like USES EXTERNAL STATE.  We could dig through all the
adjectives in the world, but I don't think any will catch the situation
quite like saying what's actually going on.

> So far the only suggestion I've seen that really makes me happy is
> "volatile" for case 3.

Volatile means "subject to rapid or unexpected change", which is not
really what case 3 is.

> Brad's idea of "invariant" for case 1 isn't too bad, but as a partner
> for "cacheable" it seems a bit weak; if you haven't looked at the
> manual lately, will you remember which is which?

Actually, IBM has VARIANT as an alias for NOT DETERMINISTIC (and NOT
VARIANT for DETERMINISTIC).

-- 
Peter Eisentraut   peter_e@gmx.net