Error: timestamp with timezone + interval is not immutable while creating index

Started by Phil Coulingover 14 years ago2 messagesgeneral
Jump to latest
#1Phil Couling
couling@gmail.com

Hi All

I've got a table with (amongst others) two fields:
last_updated timestamp with time zone;
update_cycle interval;

I'd like to create an index on these, to index time "next update" time
(last_updated + update_cycle).

When I try this I get an error though:

main=> create index foo_next_update on foo( (last_updated + update_cycle) ) ;
ERROR: functions in index expression must be marked IMMUTABLE

Does anyone know why adding two fields like this results in anything
other than an immutable function? Under what circumstances could it
return a different result?

Thanks very much for any help.

#2David Salisbury
salisbury@globe.gov
In reply to: Phil Couling (#1)
Re: Error: timestamp with timezone + interval is not immutable while creating index

On 10/13/11 4:38 PM, Phil Couling wrote:

Hi All

I've got a table with (amongst others) two fields:
last_updated timestamp with time zone;
update_cycle interval;

I'd like to create an index on these, to index time "next update" time
(last_updated + update_cycle).

When I try this I get an error though:

main=> create index foo_next_update on foo( (last_updated + update_cycle) ) ;
ERROR: functions in index expression must be marked IMMUTABLE

Does anyone know why adding two fields like this results in anything
other than an immutable function? Under what circumstances could it
return a different result?

Thanks very much for any help.

I believe the problem is that you have a TZ on your timestamp, and
that makes things mutable.

functions that deal with time can't be marked as immutable do to this
reason.

-Dave