Dans l'une de mes instructions select, j'ai obtenu l'erreur suivante :
ERROR: failed to find conversion function from unknown to text
********** Error **********
ERROR: failed to find conversion function from unknown to text
SQL state: XX000
Ce problème a été facilement résolu à l'aide de cast
mais je ne comprends pas tout à fait pourquoi cela s'est produit. Je vais illustrer ma confusion par deux déclarations simples.
Celui-ci est correct :
select 'text'
union all
select 'text';
Une erreur est alors générée :
with t as (select 'text')
select * from t
union all
select 'text'
Je sais que je peux le réparer facilement :
with t as (select 'text'::text)
select * from t
union all
select 'text'
Pourquoi la conversion échoue-t-elle dans le deuxième exemple ? Y a-t-il une logique que je ne comprends pas ou cela sera-t-il corrigé dans une prochaine version de PostgreSQL ?
PostgreSQL 9.1.9
Même comportement sur PostgreSQL 9.2.4 ( Fidèle à SQL )