Skip to content

Commit f10e493

Browse files
Adjust the loading order of preload (#1027)
Prioritize loading the process_shared_preload_libraries.h header file, and then load the shared_preload_libraries from postgresql.conf.
1 parent f17138e commit f10e493

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/backend/utils/init/miscinit.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1764,40 +1764,41 @@ static char*
17641764
expand_shared_preload_libraries_string()
17651765
{
17661766
List *elemlist = NIL;
1767+
List *pg_elemlist = NIL;
17671768
List *deduplicate_elemlist = NIL;
17681769
ListCell *l;
17691770
char *rawstring;
17701771
char *libraries = shared_preload_libraries_string;
17711772

1773+
/* load process_shared_preload_libraries.h libraries */
1774+
int shared_preload_libraries_num = sizeof(process_shared_preload_libraries_array) / sizeof(char *);
1775+
if (shared_preload_libraries_num > 0)
1776+
{
1777+
for (int i = 0; i < shared_preload_libraries_num; i++)
1778+
{
1779+
elemlist = lappend(elemlist, pstrdup((char*)process_shared_preload_libraries_array[i]));
1780+
}
1781+
}
1782+
17721783
/* Need a modifiable copy of string */
17731784
rawstring = pstrdup(libraries);
17741785
if (libraries != NULL && libraries[0] != '\0')
17751786
{
17761787
/* Parse string into list of filename paths */
1777-
if (!SplitDirectoriesString(rawstring, ',', &elemlist))
1788+
if (!SplitDirectoriesString(rawstring, ',', &pg_elemlist))
17781789
{
17791790
/* syntax error in list */
1780-
list_free_deep(elemlist);
1791+
list_free_deep(pg_elemlist);
17811792
pfree(rawstring);
17821793
ereport(LOG,
17831794
(errcode(ERRCODE_SYNTAX_ERROR),
17841795
errmsg("invalid list syntax in parameter \"%s\"",
17851796
libraries)));
17861797
return NULL;
17871798
}
1788-
17891799
}
17901800

1791-
/* load expand libraries */
1792-
int shared_preload_libraries_num = sizeof(process_shared_preload_libraries_array) / sizeof(char *);
1793-
if (shared_preload_libraries_num > 0)
1794-
{
1795-
for (int i = 0; i < shared_preload_libraries_num; i++)
1796-
{
1797-
elemlist = lappend(elemlist, pstrdup((char*)process_shared_preload_libraries_array[i]));
1798-
}
1799-
1800-
}
1801+
elemlist = list_concat(elemlist, pg_elemlist);
18011802

18021803
if (list_length(elemlist) == 0)
18031804
{
@@ -1806,7 +1807,6 @@ expand_shared_preload_libraries_string()
18061807
return NULL;
18071808
}
18081809

1809-
18101810
/* deduplicate list string */
18111811
deduplicate_elemlist = removeDuplicates(elemlist);
18121812

0 commit comments

Comments
 (0)