postgres.git / summary / log / commit / refs

commit    a715c02122e7be8ff631e5ea28b80ec7307f39e6
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Sun Oct 01 16:09:26 2023 +0000

    In COPY FROM, fail cleanly when unsupported encoding conversion is needed.
    
    In recent releases, such cases fail with "cache lookup failed for
    function 0" rather than complaining that the conversion function
    doesn't exist as prior versions did.  Seems to be a consequence of
    sloppy refactoring in commit f82de5c46.  Add the missing error check.
    
    Per report from Pierre Fortin.  Back-patch to v14 where the
    oversight crept in.
    
    Discussion: https://postgr.es/m/20230929163739.3bea46e5.pfortin@pfortin.com


src/backend/commands/copyfrom.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/backend/commands/copyfrom.c b/src/backend/commands/copyfrom.c index f31cc252002..63c4da07814 100644 --- a/src/backend/commands/copyfrom.c +++ b/src/backend/commands/copyfrom.c @@ -1334,6 +1334,12 @@ BeginCopyFrom(ParseState *pstate, cstate->need_transcoding = true; cstate->conversion_proc = FindDefaultConversionProc(cstate->file_encoding, GetDatabaseEncoding()); + if (!OidIsValid(cstate->conversion_proc)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_FUNCTION), + errmsg("default conversion function for encoding \"%s\" to \"%s\" does not exist", + pg_encoding_to_char(cstate->file_encoding), + pg_encoding_to_char(GetDatabaseEncoding())))); } cstate->copy_src = COPY_FILE; /* default */ [parent: 2d4f99bc693a]