Re: Patch: Implement failover on libpq connect level.
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Mithun Cy <mithun.cy@enterprisedb.com>
Cc: Peter van Hardenberg <pvh@pvh.ca>, Peter Eisentraut <peter_e@gmx.net>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2016-11-01T16:12:32Z
Lists: pgsql-hackers
Attachments
- multihost-v3.patch (application/x-download) patch v3
On Tue, Nov 1, 2016 at 11:21 AM, Mithun Cy <mithun.cy@enterprisedb.com> wrote: > On Tue, Nov 1, 2016 at 7:44 PM, Robert Haas <robertmhaas@gmail.com> wrote: >>> Starting program: /home/mithun/libpqbin/bin/./psql >>> postgres://%2home%2mithun:5555/postgres -U mithun1 >>Can you provide a concrete test scenario or some test code that fails? >>connhost is supposed to be getting set in connectOptions2(), which is >>run (AIUI) when the PGconn is first created. So I think that it will >>be set in all scenarios of the type you mention, but I might be >>missing something. > > Sorry if my sentence is confusing > If I give a proper hexadecimal encoding % followed by 2 hexadigit (i.e. for > e.g %2f, %2a) every thing is fine. When I pass a invalid hexadigit encoding > eg: %2h, %2m among the host string e.g > "postgres://%2home%2mithun:5555/postgres". then "PQconnectdbParams()" fails > before calling connectOptions2(). In that case failed PQconnectdbParams() > also return a PGconn where connhost is not set. If we call PQpass(), > PQReset() on such a PGconn we get a crash. > > A simple test case which crash is: > ./psql 'postgres://%2hxxx:5555/postgres' > > Call stack: > -------------- > #0 0x00007ffff7bb8d4f in PQpass (conn=0x68aa10) at fe-connect.c:5582 > #1 0x00007ffff7bb907a in PQconnectionNeedsPassword (conn=0x68aa10) at > fe-connect.c:5727 > #2 0x00000000004130aa in main (argc=2, argv=0x7fffffffdff8) at > startup.c:250 Ah, nuts. Thanks, good catch. Should be fixed in the attached version. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
libpq: Add target_session_attrs parameter.
- 721f7bd3cbcc 10.0 landed
-
Remove superuser checks in pgstattuple
- fd321a1dfd64 10.0 cited
-
Fix unwanted flushing of libpq's input buffer when socket EOF is seen.
- c405918858c0 9.6.0 cited