Re: Passing current_database to BackgroundWorkerInitializeConnection - Mailing list pgsql-hackers

From Jeremy Finzel
Subject Re: Passing current_database to BackgroundWorkerInitializeConnection
Date
Msg-id CAMa1XUiGpgGh0PD84X9y-FhYjufdyp=16g5czaB+uWwmjy53Sg@mail.gmail.com
Whole thread Raw
In response to Re: Passing current_database to BackgroundWorkerInitializeConnection  (Andres Freund <andres@anarazel.de>)
Responses Re: Passing current_database to BackgroundWorkerInitializeConnection  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers


On Fri, Mar 30, 2018 at 5:37 PM, Andres Freund <andres@anarazel.de> wrote:


On March 30, 2018 3:16:31 PM PDT, Jeremy Finzel <finzelj@gmail.com> wrote:
>> What do you mean with "current database"? Before you
>> BackgroundWorkerInitializeConnection() there is no such thing?
>
>
>My module is based directly off the worker_spi example. The worker is
>dynamically launched via SQL command. But in the worker_spi example,
>the
>database postgres is just hardcoded as the database in which to start
>the
>background worker process. Instead, I want to start it in the database
>in
>which I run the SQL command.

The started worker isn't associated with the original database. You can pass the database oid as an argument to the launched bgworker.


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?  I was going to try passing an array instead of an int, but I'm not liking that much.  I am trying to pass naptime and database_name (or oid).

Thanks,
Jeremy

pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Commit 4dba331cb3 broke ATTACH PARTITION behaviour.
Next
From: Andres Freund
Date:
Subject: Re: Passing current_database to BackgroundWorkerInitializeConnection