1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-08 11:42:09 +03:00

Improve error message for missing extension.

If we get ENOENT while trying to read an extension control file,
report that as a missing extension (with a HINT to install it)
rather than as a filesystem access problem.  The message wording
was extensively bikeshedded in hopes of pointing people to the
idea that they need to do a software installation before they
can install the extension into the current database.

Nathan Bossart, with review/wording suggestions from Daniel
Gustafsson, Chapman Flack, and myself

Discussion: https://postgr.es/m/3950D56A-4E47-48E7-BF9B-F5F22E268BE7@amazon.com
This commit is contained in:
Tom Lane
2022-01-11 14:22:00 -05:00
parent 98e93a1fc9
commit 6f6943fc94

View File

@ -487,11 +487,22 @@ parse_extension_control_file(ExtensionControlFile *control,
if ((file = AllocateFile(filename, "r")) == NULL)
{
if (version && errno == ENOENT)
if (errno == ENOENT)
{
/* no auxiliary file for this version */
pfree(filename);
return;
/* no complaint for missing auxiliary file */
if (version)
{
pfree(filename);
return;
}
/* missing control file indicates extension is not installed */
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("extension \"%s\" is not available", control->name),
errdetail("Could not open extension control file \"%s\": %m.",
filename),
errhint("The extension must first be installed on the system where PostgreSQL is running.")));
}
ereport(ERROR,
(errcode_for_file_access(),