From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Andrus <kobruleht2(at)hot(dot)ee>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Creating index on concatenated char columns fails is Postgres 9 (regression) |
Date: | 2014-10-03 00:11:26 |
Message-ID: | 542DE9AE.4010800@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 10/02/2014 01:49 PM, Andrus wrote:
> Steps to reproduce:
> Run commands
> create temp table test (kuupaev date, kellaaeg char(5) ) on commit
> drop;
> create index test on test ((kuupaev||kellaaeg));
> in
> "PostgreSQL 9.3.4, compiled by Visual C++ build 1600, 32-bit"
> Observed result:
> ERROR: functions in index expression must be marked IMMUTABLE
> In
> "PostgreSQL 8.4.4, compiled by Visual C++ build 1400, 32-bit"
> those commands work OK.
> I need this index to speed up query
> SELECT
> max( kuupaev||kellaaeg )
> from ALGSA
> where laonr=?nlaonr and kuupaev <=?prmLOPP and kuupaev||kellaaeg <=
> ?someparam
> How to fix or other way to speed this query?
My guess is you are seeing the result of this commit:
which was back ported to 8.x but after 8.4.4. As I recall there has been
a general tightening up of checks for VOLATILE vs IMMUTABLE.
For a possible solution see here:
http://dba.stackexchange.com/questions/71133/creating-unique-constraint-to-be-validated-from-input
> Posted also in
> http://stackoverflow.com/questions/26161561/how-to-create-composite-index-in-postgres-9
> Andrus.
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Jim Nasby | 2014-10-03 02:44:38 | Re: How to find greatest record before known values fast |
Previous Message | Adrian Klaver | 2014-10-02 23:37:50 | Re: installing on mac air development machine |