diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index a330b5fd6ce..d073585c421 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -513,6 +513,7 @@ is_extension_script_filename(const char *filename) static List * get_extension_control_directories(void) { +#define EXTENSION_SYSTEM_MACRO "$system" char sharepath[MAXPGPATH]; char *system_dir; char *ecp; @@ -526,7 +527,7 @@ get_extension_control_directories(void) { ExtensionLocation *location = palloc_object(ExtensionLocation); - location->macro = NULL; + location->macro = pstrdup(EXTENSION_SYSTEM_MACRO); location->loc = system_dir; paths = lappend(paths, location); } @@ -556,10 +557,10 @@ get_extension_control_directories(void) * Substitute the path macro if needed or append "extension" * suffix if it is a custom extension control path. */ - if (strcmp(piece, "$system") == 0) + if (strcmp(piece, EXTENSION_SYSTEM_MACRO) == 0) { location->macro = pstrdup(piece); - mangled = substitute_path_macro(piece, "$system", system_dir); + mangled = substitute_path_macro(piece, EXTENSION_SYSTEM_MACRO, system_dir); } else { @@ -582,6 +583,7 @@ get_extension_control_directories(void) } return paths; +#undef EXTENSION_SYSTEM_MACRO } /* diff --git a/src/test/modules/test_extensions/t/001_extension_control_path.pl b/src/test/modules/test_extensions/t/001_extension_control_path.pl index c1cec0dc622..4a013a7da4b 100644 --- a/src/test/modules/test_extensions/t/001_extension_control_path.pl +++ b/src/test/modules/test_extensions/t/001_extension_control_path.pl @@ -109,10 +109,10 @@ is($ret, "t", "\$system extension is shown correctly in pg_available_extensions"); $ret = $node->safe_psql('postgres', - "set extension_control_path = ''; select count(*) > 0 as ok from pg_available_extensions where name = 'plpgsql'" + "set extension_control_path = ''; select location from pg_available_extensions where name = 'plpgsql'" ); -is($ret, "t", - "\$system extension is shown correctly in pg_available_extensions with empty extension_control_path" +is($ret, "\$system", + "\$system location is shown correctly in pg_available_extensions with empty extension_control_path" ); # Test with an extension that does not exists