Re: ERROR: failed to find conversion function from iso-8859-1 to text - Mailing list pgsql-hackers

From jian he
Subject Re: ERROR: failed to find conversion function from iso-8859-1 to text
Date
Msg-id CACJufxF7iSeRF2+bprERSwBe5zShVch1EJK-KcxQCcLT-UHBbg@mail.gmail.com
Whole thread
In response to Re: ERROR: failed to find conversion function from iso-8859-1 to text  (jian he <jian.universality@gmail.com>)
List pgsql-hackers
On Thu, Jan 29, 2026 at 11:53 AM jian he <jian.universality@gmail.com> wrote:
>
> To make it an error, meaning it's not possible to coerce to the unknown type.
> We can do it in the function find_coercion_pathway, just
> after the ``if (sourceTypeId == targetTypeId)`` check:
>
>     if (targetTypeId == UNKNOWNOID)
>         return COERCION_PATH_NONE;
>
> it's also doable in the function can_coerce_type,
> right after the ``if (inputTypeId == UNKNOWNOID)``:
>
>         if (targetTypeId == UNKNOWNOID)
>             return false;

I choose to disallow UNKNOWN target types in find_coercion_pathway.

do $$ declare a int;
begin a := '1'::text::unknown;
end$$;

This DO statement does not cause any error in the HEAD, because of
function find_coercion_pathway:
```
    /*
     * When parsing PL/pgSQL assignments, allow an I/O cast to be used
     * whenever no normal coercion is available.
     */
    if (result == COERCION_PATH_NONE &&
        ccontext == COERCION_PLPGSQL)
        result = COERCION_PATH_COERCEVIAIO;
```

but will result error with the attached V2:
ERROR:  cannot cast type text to unknown



--
jian
https://www.enterprisedb.com/

Attachment

pgsql-hackers by date:

Previous
From: Peter Smith
Date:
Subject: Re: Cleanup shadows variable warnings, round 1
Next
From: Yuchen Li
Date:
Subject: Re: Cleanup shadows variable warnings, round 1