aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2023-10-01 12:09:26 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2023-10-01 12:09:26 -0400
commita715c02122e7be8ff631e5ea28b80ec7307f39e6 (patch)
tree5c494bf74238059100f68e3e24ef816c69df2d3e
parent2d4f99bc693aef5387834333eef06776777f4783 (diff)
downloadpostgresql-a715c02122e7be8ff631e5ea28b80ec7307f39e6.tar.gz
postgresql-a715c02122e7be8ff631e5ea28b80ec7307f39e6.zip
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
-rw-r--r--src/backend/commands/copyfrom.c6
1 files changed, 6 insertions, 0 deletions
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 */