Partial indexes on VARCHAR get double converted from text - Mailing list pgsql-bugs

From Josh Berkus
Subject Partial indexes on VARCHAR get double converted from text
Date
Msg-id 54B84278.2000800@agliodbs.com
Whole thread Raw
Responses Re: Partial indexes on VARCHAR get double converted from text  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
create table stately ( id int, filename varchar(255), state varchar(255) );

create index on stately(state) where state in ( 'pending', 'waiting',
'done' );

\d stately
            Table "public.stately"
  Column  |          Type          | Modifiers
----------+------------------------+-----------
 id       | integer                |
 filename | character varying(255) |
 state    | character varying(255) |
Indexes:
    "stately_state_idx" btree (state) WHERE state::text = ANY
(ARRAY['pending'::character varying, 'waiting'::character varying,
'done'::character varying]::text[])

There is no combination of typecasting which will prevent this outcome.
 I've tried.

Further, it seems to me from testing that this double type conversion
affects the planner's costing of the index, causing it to not want to
use the index.

--
Josh Berkus
PostgreSQL Experts Inc.
http://pgexperts.com

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #12556: Clause IN and NOT IN buggy
Next
From: Tom Lane
Date:
Subject: Re: Partial indexes on VARCHAR get double converted from text