[7485] Added support for PostgreSQL connection using Unix sockets.

For using socket connection specify host name as . and port as
path to Unix socket directory or . for default path specified
in PostgreSQL compile time.

Signed-off-by: ApoC <apoc@nymfe.net>
This commit is contained in:
ApoC 2009-03-18 12:06:11 +01:00 committed by ApoC
parent 9ddb37c6c1
commit 3c819a6269
3 changed files with 16 additions and 9 deletions

View file

@ -77,14 +77,14 @@ bool DatabasePostgre::Initialize(const char *infoString)
Tokens::iterator iter;
std::string host, port_or_socket, user, password, database;
std::string host, port_or_socket_dir, user, password, database;
iter = tokens.begin();
if(iter != tokens.end())
host = *iter++;
if(iter != tokens.end())
port_or_socket = *iter++;
port_or_socket_dir = *iter++;
if(iter != tokens.end())
user = *iter++;
if(iter != tokens.end())
@ -92,7 +92,10 @@ bool DatabasePostgre::Initialize(const char *infoString)
if(iter != tokens.end())
database = *iter++;
mPGconn = PQsetdbLogin(host.c_str(), port_or_socket.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str());
if (host == ".")
mPGconn = PQsetdbLogin(NULL, port_or_socket_dir == "." ? NULL : port_or_socket_dir.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str());
else
mPGconn = PQsetdbLogin(host.c_str(), port_or_socket_dir.c_str(), NULL, NULL, database.c_str(), user.c_str(), password.c_str());
/* check to see that the backend connection was successfully made */
if (PQstatus(mPGconn) != CONNECTION_OK)