proposal: function pg_setting_value_split() to parse shared_preload_libraries etc.

Поиск
Список
Период
Сортировка
От Ian Lawrence Barwick
Тема proposal: function pg_setting_value_split() to parse shared_preload_libraries etc.
Дата
Msg-id CAB8KJ=gi67GQcEur2HebEbZxTr-EZLUaKOekUnk30v08GaCNVQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: proposal: function pg_setting_value_split() to parse shared_preload_libraries etc.  (Ian Lawrence Barwick <barwick@gmail.com>)
Список pgsql-hackers
Hi

From time to time I find myself in a situation where it would be very useful to
be able to programatically determine whether a particular library is included in
"shared_preload_libraries", which accepts a comma-separated list of values.

Unfortunately it's not as simple as splitting the list on the commas, as while
that will *usually* work, the following is also valid:

    shared_preload_libraries = 'foo,bar,"baz ,"'

and reliably splitting it up into its constituent parts would mean re-inventing
a wheel (and worse possibly introducing some regular expressions into the
process, cf. https://xkcd.com/1171/ ).

Now, while it's highly unlikely someone will go to the trouble of creating a
library name with commas and spaces in it, "highly unlikely" is not the same as
"will definitely never ever happen". So it would be very handy to be able to use
the same function PostgreSQL uses internally ("SplitDirectoriesString()") to
produce the guaranteed same result.

Attached patch provides a new function "pg_setting_value_split()" which does
exactly this, i.e. called with a string containing such a list, it calls
"SplitDirectoriesString()" and returns the result as a set of text, e.g.:

    postgres# SELECT setting FROM pg_setting_value_split('foo,bar,"baz ,"');

     setting
    ---------
     foo
     bar
     baz ,
    (3 rows)

though a more likely use would be:

   SELECT setting FROM
pg_setting_value_split(current_setting('shared_preload_libraries'));

Other GUCs this applies to:

  - local_preload_libraries
  - session_preload_libraries
  - unix_socket_directories

I will add this to the next CF.

Regards

Ian Barwick

-- 
EnterpriseDB: https://www.enterprisedb.com

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: [patch] Fix checksum verification in base backups for zero page headers
Следующее
От: "tsunakawa.takay@fujitsu.com"
Дата:
Сообщение: RE: [Patch] Optimize dropping of relation buffers using dlist