On 18.02.2013 06:07, Amit Kapila wrote:
On Sunday, February 17, 2013 8:44 PM Phil Sorber wrote:
On Sun, Feb 17, 2013 at 1:35 AM, Amit kapila<amit.kap...@huawei.com>
wrote:
Now the patch of Phil Sober provides 2 new API's
PQconninfoParseParams(), and PQconninfodefaultsMerge(),
using these API's I can think of below way for patch "pass a
connection string to pg_basebackup, ..."

1. Call existing function PQconinfoParse() with connection string
input by user and get PQconninfoOption.

2. Now use the existing keywords (individual options specified by
user) and extract the keywords from
    PQconninfoOption structure and call new API
PQconninfoParseParams() which will return PQconninfoOption.
    The PQconninfoOption structure returned in this step will contain
all keywords

3. Call PQconninfodefaultsMerge() to merge any default values if
exist. Not sure if this step is required?

4. Extract individual keywords from PQconninfoOption structure and
call PQconnectdbParams.

Is this inline with what you have in mind or you have thought of some
other simpler way of using new API's?

Yep, that's roughly what I had in mind. I don't think it's necessary to merge defaults in step 3, but it needs to add the "replication=true" and "dbname=replication" options.

I think what would be nice is an additional connect function that took
PQconninfoOption as a parameter. Or at least something that can
convert from PQconninfoOption to a connection string or keyword/value
arrays.

Yes, it would be better if we would like to use new API's, I think it can
save step-4 and some part in step-2.

pg_basebackup needs to add options to the array, so I don't think a new connect function would help much. It's not a lot of code to iterate through the PGconnInfoOption array and turn it back into keywords and values arrays, so I'd just do that straight in the client code.

- Heikki


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to