icholy <ilia.choly@gmail.com> writes:
> libpq will automatically reconnect if the connection is dropped.
No it won't. You'd have to do a PQreset() to make that happen.
> auto con = PQconnectdb("info"); while (true) { PQclear(PQexec(con,
> "SELECT * FROM foo LIMIT 1"));
> std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << "here
> " << i++ << std::endl; }
This test case doesn't prove much of anything, since it's not examining
the PGresult to see if it was OK or an error.
> $ sudo ifconfig eth0 down
> output stops
I suspect this action isn't dropping the TCP connection. It's only
equivalent to a momentary glitch in your network connectivity --- and
you'd be very unhappy if that caused TCP connections to go down, because
networks have glitches all the time. Generally, the operating system
tries hard to prevent applications from even knowing that a glitch
happened. (Connections will time out eventually if connectivity doesn't
come back, but typically such timeouts are many minutes. Possibly
whatever your real complaint is could be addressed by twiddling the TCP
timeout parameters for the socket.)
regards, tom lane