Re: pg_basebackup with -R option and start standby have problems with escaped password
От | Boszormenyi Zoltan |
---|---|
Тема | Re: pg_basebackup with -R option and start standby have problems with escaped password |
Дата | |
Msg-id | 51223C3A.7020101@cybertec.at обсуждение исходный текст |
Ответ на | Re: pg_basebackup with -R option and start standby have problems with escaped password (Magnus Hagander <magnus@hagander.net>) |
Ответы |
Re: pg_basebackup with -R option and start standby have problems with escaped password
Re: pg_basebackup with -R option and start standby have problems with escaped password |
Список | pgsql-hackers |
2013-01-29 11:15 keltezéssel, Magnus Hagander írta: > On Thu, Jan 24, 2013 at 7:04 AM, Hari Babu <haribabu.kommi@huawei.com> wrote: >> On Wed, Jan 23, 2013 11:48 PM, Magnus Hagander wrote: >>> On Wed, Jan 23, 2013 at 10:18 AM, Hari Babu <haribabu.kommi@huawei.com> >> wrote: >>>> Test scenario to reproduce: >>>> 1. Start the server >>>> 2. create the user as follows >>>> ./psql postgres -c "create user user1 superuser login >>>> password 'use''1'" >>>> >>>> 3. Take the backup with -R option as follows. >>>> ./pg_basebackup -D ../../data1 -R -U user1 -W >>>> >>>> The following errors are occurring when the new standby on the backup >>>> database starts. >>>> >>>> FATAL: could not connect to the primary server: missing "=" after "1'" >> in >>>> connection info string >>> What does the resulting recovery.conf file look like? >> The recovery.conf which is generated is as follows >> >> standby_mode = 'on' >> primary_conninfo = 'user=''user1'' password=''use''1'' port=''5432'' ' >> >> >> I observed the problem is while reading primary_conninfo from the >> recovery.conf file >> the function "GUC_scanstr" removes the quotes of the string and also makes >> the >> continuos double quote('') as single quote('). >> >> By using the same connection string while connecting to primary server the >> function "conninfo_parse" the escape quotes are not able to parse properly >> and it is leading >> to problem. >> >> please correct me if any thing wrong in my observation. > Well, it's clearly broken at least :O > > Zoltan, do you have time to look at it? I won't have time until at > least after FOSDEM, unfortunately. I looked at it shortly. What I tried first is adding another pair of single quotes manually like this: primary_conninfo = 'user=''user1'' password=''use''''1'' host=''192.168.1.2'' port=''5432'' sslmode=''disable'' sslcompression=''1'' ' But it doesn't solve the problem either, I got: FATAL: could not connect to the primary server: missing "=" after "'1'" in connection info string This worked though: primary_conninfo = 'user=user1 password=use\'1 host=192.168.1.2 port=5432 sslmode=disable sslcompression=1 ' When I added an elog() to print the conninfo string in libpqrcv_connect(), I saw that the double quotes were properly eliminated by ParseConfigFp() in the first case. So, there is a bug in generating recovery.conf by not double-escaping the values and another bug in parsing the connection string in libpq when the parameter value starts with a single-quote character. Attached are two patches to fix these two bugs, the libpq part can be back-patched. Best regards, Zoltán Böszörményi -- ---------------------------------- Zoltán Böszörményi Cybertec Schönig & Schönig GmbH Gröhrmühlgasse 26 A-2700 Wiener Neustadt, Austria Web: http://www.postgresql-support.de http://www.postgresql.at/
Вложения
В списке pgsql-hackers по дате отправления: