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
commitea0e7cd6b87fe16937604ac1829d6d94bd99065d (patch)
treead72986a33cd6793118de09d7da7736a47733ef7
parent910eb61b2bbdb729c242ed20d5f6e0a392eb62da (diff)
downloadpostgresql-ea0e7cd6b87fe16937604ac1829d6d94bd99065d.tar.gz
postgresql-ea0e7cd6b87fe16937604ac1829d6d94bd99065d.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 65b3e56cd49..81aef4aca8a 100644
--- a/src/backend/commands/copyfrom.c
+++ b/src/backend/commands/copyfrom.c
@@ -1481,6 +1481,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 */