From: | Steve Crawford <scrawford(at)pinpointresearch(dot)com> |
---|---|
To: | Phil Couling <couling(at)gmail(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Error: timestamp with timezone + interval is not immutable while creating index |
Date: | 2011-10-13 23:49:26 |
Message-ID: | 4E977906.1020208@pinpointresearch.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 10/13/2011 04:32 PM, Tom Lane wrote:
> Phil Couling<couling(at)gmail(dot)com> writes:
>> main=> create index foo_next_update on foo( (last_updated + update_cycle) ) ;
>> ERROR: functions in index expression must be marked IMMUTABLE...
>
> timestamptz + interval is not immutable because the results can vary
> depending on timezone. For instance, in my zone (America/New_York):
>
So it seems like a potential workaround, depending on the nature of your
data and applications, would be to convert the timestamptz into a
timestamp at a reference TZ:
steve=# create table testfoo (a_timestamptz timestamptz, an_interval
interval);
CREATE TABLE
steve=# create index testfoo_index on testfoo ((a_timestamptz at time
zone 'UTC' + an_interval));
CREATE INDEX
You will have to be sure you are getting the results you want in the
vicinity of DST changes and if you are handling multiple timezones.
Cheers,
Steve
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-10-13 23:49:59 | Re: exclusive OR possible within a where clause? |
Previous Message | David Salisbury | 2011-10-13 23:44:50 | exclusive OR possible within a where clause? |