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