diff --git a/src/interfaces/ecpg/test/connect/test1.pgc b/src/interfaces/ecpg/test/connect/test1.pgc index 961bd72ef2..28db6e4a5e 100644 --- a/src/interfaces/ecpg/test/connect/test1.pgc +++ b/src/interfaces/ecpg/test/connect/test1.pgc @@ -61,5 +61,9 @@ exec sql end declare section; exec sql connect to unix:postgresql://localhost/ecpg2_regression user regress_ecpg_user1 identified by "wrongpw"; /* no disconnect necessary */ + /* skip trailing whitespace */ + exec sql connect to tcp:postgresql://localhost/ecpg2_regression?keepalives=1&keepalives_idle=1 as skip_trailing_whitespace user regress_ecpg_user1; + exec sql disconnect; + return 0; } diff --git a/src/interfaces/ecpg/test/expected/connect-test1.c b/src/interfaces/ecpg/test/expected/connect-test1.c index ffd24e2fc8..f8f966f58d 100644 --- a/src/interfaces/ecpg/test/expected/connect-test1.c +++ b/src/interfaces/ecpg/test/expected/connect-test1.c @@ -120,5 +120,13 @@ main(void) /* no disconnect necessary */ + /* skip trailing whitespace */ + { ECPGconnect(__LINE__, 0, "tcp:postgresql://localhost/ecpg2_regression?keepalives=1 & keepalives_idle=1" , "regress_ecpg_user1" , NULL , "skip_trailing_whitespace", 0); } +#line 65 "test1.pgc" + + { ECPGdisconnect(__LINE__, "CURRENT");} +#line 66 "test1.pgc" + + return 0; } diff --git a/src/interfaces/ecpg/test/expected/connect-test1.stderr b/src/interfaces/ecpg/test/expected/connect-test1.stderr index 073951c0ed..8c27ac65f6 100644 --- a/src/interfaces/ecpg/test/expected/connect-test1.stderr +++ b/src/interfaces/ecpg/test/expected/connect-test1.stderr @@ -71,3 +71,7 @@ [NO_PID]: sqlca: code: -402, state: 08001 [NO_PID]: ECPGconnect: opening database ecpg2_regression on port for user regress_ecpg_user1 [NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGconnect: opening database ecpg2_regression on localhost port with options keepalives=1 & keepalives_idle=1 for user regress_ecpg_user1 +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_finish: connection skip_trailing_whitespace closed +[NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index d5a72587d2..67d0444317 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -2169,14 +2169,14 @@ connectFailureMessage(PGconn *conn, int errorno) static int useKeepalives(PGconn *conn) { - char *ep; int val; if (conn->keepalives == NULL) return 1; - val = strtol(conn->keepalives, &ep, 10); - if (*ep) + + if (!pqParseIntParam(conn->keepalives, &val, conn, "keepalives")) return -1; + return val != 0 ? 1 : 0; }