I tried stable, and that didn't help at all. How long does PostgreSQL
maintain the "state" of the function when using immutable? Until a
restart? Until the end of a session? Until the function is dropped and
re-added?
While this value isn't 100% absolutely positively guaranteed to never
change, it is pretty dang close. I have a strict correlation between
the username that someone uses to login and the ID returned. Changing
someone's username would break a whole lot more than this one app on the
project...
Erik Jones wrote:
> Tom Lane wrote:
>
>> John McCawley <nospam@hardgeus.com> writes:
>>
>>
>>> I think I got it:
>>> CREATE FUNCTION new_get_emp_id() RETURNS INTEGER AS $$ select emp_id
>>> from secureview.tbl_employee where username = (SELECT current_user)
>>> $$ LANGUAGE SQL IMMUTABLE;
>>> I made the function immutable so it only calls it once, therefore no
>>> longer requiring a call per-row.
>>>
>>
>>
>> Since it's obviously *not* immutable, this will come back to bite you
>> sooner or later (probably sooner). Labeling it STABLE would be
>> reasonable, although I'm not certain how much that helps you. Do you
>> have indexes on the columns it's being compared to?
>>
>
> Besides, a temp table is pretty much a session variable.
>