From: | Cédric Villemain <cedric(dot)villemain(dot)debian(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: PL/pgSQL EXECUTE '..' USING with unknown |
Date: | 2010-08-17 18:46:40 |
Message-ID: | AANLkTi=k2YMDhpNZAe9Ddeai8OHKmdn7svO6b=7xoogB@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2010/8/17 Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:
> =?ISO-8859-1?Q?C=E9dric_Villemain?= <cedric(dot)villemain(dot)debian(at)gmail(dot)com> writes:
>> Here we are. A simple usecase.
>
> The reason you have an issue here is that the column is char(n) while
> the parameter is text. So the non-USING execute is equivalent to
>
> regression=# explain SELECT flag FROM foo where uid = 'cfcd208495d565ef66e7dff9f98764da';
> QUERY PLAN
> --------------------------------------------------------------------
> Index Scan using foo_pkey on foo (cost=0.00..8.27 rows=1 width=1)
> Index Cond: (uid = 'cfcd208495d565ef66e7dff9f98764da'::bpchar)
> (2 rows)
>
> while the EXECUTE USING is equivalent to
>
> regression=# explain SELECT flag FROM foo where uid = 'cfcd208495d565ef66e7dff9f98764da'::text;
> QUERY PLAN
> --------------------------------------------------------------------
> Seq Scan on foo (cost=0.00..24.02 rows=5 width=1)
> Filter: ((uid)::text = 'cfcd208495d565ef66e7dff9f98764da'::text)
> (2 rows)
>
> and the reason you don't get an indexscan on the latter is that it's a
> TEXT comparison not a BPCHAR comparison; which is different because of
> the rules about ignoring trailing blanks.
>
> char(n) sucks. Avoid it if possible. If you insist on using it,
> be very very careful about which comparison semantics you're asking for.
Oh! Thank you very much for those clarifications.
... and I am sorry for the noisy report ...
--
Cédric Villemain 2ndQuadrant
http://2ndQuadrant.fr/ PostgreSQL : Expertise, Formation et Support
From | Date | Subject | |
---|---|---|---|
Next Message | Kevin Grittner | 2010-08-17 18:46:58 | Re: Additional git conversion steps |
Previous Message | Tom Lane | 2010-08-17 18:42:25 | Re: Additional git conversion steps |