Re: Passing current_database to BackgroundWorkerInitializeConnection

Поиск
Список
Период
Сортировка
От Jeremy Finzel
Тема Re: Passing current_database to BackgroundWorkerInitializeConnection
Дата
Msg-id CAMa1XUigRtJxc3kELAhmOX9rj=zh9ax9x_esctssjRyMKTAtbA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Passing current_database to BackgroundWorkerInitializeConnection  (Andres Freund <andres@anarazel.de>)
Ответы Re: Passing current_database to BackgroundWorkerInitializeConnection  (Andres Freund <andres@anarazel.de>)
Список pgsql-hackers


On Mon, Apr 2, 2018 at 2:27 PM, Andres Freund <andres@anarazel.de> wrote:
Hi,

On 2018-04-02 14:24:53 -0500, Jeremy Finzel wrote:
> Thank you, this makes sense.  However, how can this be done since I can
> only pass one argument to bgw_main?  Is there any way to do this without
> having to store the value in shared memory?

No (I mean you can store it in the filesystem or such as well, but
...). Pretty fundamentally sharing data between concurrently running
processes needs a medium to share the data over. The bgw infrastructure
allocates just enough so you can put an index to it into
shmem. Allocating more would be wasteful and/or not enough for some
users.

Greetings,

Andres Freund

Hmmm... not sure if I follow.  My goal is to run a SQL statement every 10 seconds (or what value is chosen) in a particular database, using a background worker.  Those are the two arguments.  Am I missing some way to implement this apart from passing those 2 arguments into the launcher function?  Is the way to do this properly then to allocate shared memory for it, as opposed to trying to pass args into the main function?

Thanks,
Jeremy

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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS
Следующее
От: Andres Freund
Дата:
Сообщение: Re: Passing current_database to BackgroundWorkerInitializeConnection