mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +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:
@ -487,11 +487,22 @@ parse_extension_control_file(ExtensionControlFile *control,
|
|||||||
|
|
||||||
if ((file = AllocateFile(filename, "r")) == NULL)
|
if ((file = AllocateFile(filename, "r")) == NULL)
|
||||||
{
|
{
|
||||||
if (version && errno == ENOENT)
|
if (errno == ENOENT)
|
||||||
{
|
{
|
||||||
/* no auxiliary file for this version */
|
/* no complaint for missing auxiliary file */
|
||||||
pfree(filename);
|
if (version)
|
||||||
return;
|
{
|
||||||
|
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,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
|
Reference in New Issue
Block a user