Re: Issue with creation of Partial_indexes (Immutable?)

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Ow Mun Heng <Ow(dot)Mun(dot)Heng(at)wdc(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Issue with creation of Partial_indexes (Immutable?)
Date: 2008-08-25 14:18:24
Message-ID: 19501.1219673904@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ow Mun Heng <Ow(dot)Mun(dot)Heng(at)wdc(dot)com> writes:
> On Mon, 2008-08-25 at 12:23 +0800, Ow Mun Heng wrote:
>> CREATE INDEX idx_d_trh_code_id_partial
>> ON xmms.d_trh_table
>> USING btree
>> (code_id) where code_id not in ('P000','000') and code_id is not null;
>> ERROR: functions in index predicate must be marked IMMUTABLE

> BTW, this is on 8.2.9 Seems to work OK on 8.3.3.

I suppose code_id is varchar or some such?

Try "where code_id::text not in ...". There's an array type coercion
underlying the right-hand side of the NOT IN, and 8.2 had some problems
with correctly identifying the volatility of such coercions.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message John T. Dow 2008-08-25 14:21:54 Dump/restore with bad data and large objects
Previous Message Tino Wildenhain 2008-08-25 13:04:52 Re: Easy upgrade on Cpanel *without* downtime