Thread: character_not_in_repertoire vs. untranslatable_character

character_not_in_repertoire vs. untranslatable_character

From
Chapman Flack
Date:
So there's an ISO error 22021 "character not in repertoire" and
a PostgreSQL error 22P05 "untranslatable character" that seem
very similar.

If I look in backend/utils/mb/wchar.c, it looks as if PostgreSQL
uses the first for the case of a corrupted encoding (bytes that
can't be decoded to a character at all), and the second for the
case of a valid character that isn't available in a conversion's
destination encoding.

Am I right about that? The names seem sort of confusable, and even
reading ISO 9075 drafts I haven't really found any additional detail
on what they wanted 22021 to mean, so I guess as long as I know what
it means in PG, that's as good as it gets. :)

-Chap



Re: character_not_in_repertoire vs. untranslatable_character

From
Tom Lane
Date:
Chapman Flack <chap@anastigmatix.net> writes:
> So there's an ISO error 22021 "character not in repertoire" and
> a PostgreSQL error 22P05 "untranslatable character" that seem
> very similar.

> If I look in backend/utils/mb/wchar.c, it looks as if PostgreSQL
> uses the first for the case of a corrupted encoding (bytes that
> can't be decoded to a character at all), and the second for the
> case of a valid character that isn't available in a conversion's
> destination encoding.

Yeah, that's the intended distinction I believe, though I would not
want to swear that we've been 100% consistent.  22021 means "this
character is bad in isolation", AFAICT, so it didn't seem appropriate
for the conversion scenario.
        regards, tom lane