Hi,
I worked on a patch to make PostgreSQL binaries use the new
PQconnectdbParams() libpq functions. I tried to mimic the way Joe Conway
changed my previous patch.
I know I'm way over the deadline for this commitfest. I couldn't do it
before because my previous patch (on this commit fest) proposed two
methods to do the new connection functions (a one array method, and a
two-arrays method). Joe chose the two arrays method. Anyways, I would
understand if it gets postponed to the first commitfest for 9.1.
Regards.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
Index: contrib/oid2name/oid2name.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/contrib/oid2name/oid2name.c,v
retrieving revision 1.36
diff -c -p -c -r1.36 oid2name.c
*** contrib/oid2name/oid2name.c 11 Jun 2009 14:48:51 -0000 1.36
--- contrib/oid2name/oid2name.c 31 Jan 2010 01:36:38 -0000
*************** sql_conn(struct options * my_opts)
*** 301,306 ****
--- 301,308 ----
PGconn *conn;
char *password = NULL;
bool new_pass;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
/*
* Start the connection. Loop until we have a password if requested by
*************** sql_conn(struct options * my_opts)
*** 308,321 ****
*/
do
{
new_pass = false;
! conn = PQsetdbLogin(my_opts->hostname,
! my_opts->port,
! NULL, /* options */
! NULL, /* tty */
! my_opts->dbname,
! my_opts->username,
! password);
if (!conn)
{
fprintf(stderr, "%s: could not connect to database %s\n",
--- 310,327 ----
*/
do
{
+ const char *values[] = {
+ my_opts->hostname,
+ my_opts->port,
+ my_opts->dbname,
+ my_opts->username,
+ password,
+ "oid2name",
+ NULL
+ };
+
new_pass = false;
! conn = PQconnectdbParams(keywords, values);
if (!conn)
{
fprintf(stderr, "%s: could not connect to database %s\n",
Index: contrib/pgbench/pgbench.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/contrib/pgbench/pgbench.c,v
retrieving revision 1.96
diff -c -p -c -r1.96 pgbench.c
*** contrib/pgbench/pgbench.c 6 Jan 2010 01:30:03 -0000 1.96
--- contrib/pgbench/pgbench.c 31 Jan 2010 01:41:45 -0000
*************** doConnect(void)
*** 345,350 ****
--- 345,352 ----
PGconn *conn;
static char *password = NULL;
bool new_pass;
+ const char *keywords[] = {"host","port","options","tty","dbname","user",
+ "password","application_name",NULL};
/*
* Start the connection. Loop until we have a password if requested by
*************** doConnect(void)
*** 352,361 ****
*/
do
{
new_pass = false;
!
! conn = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
! login, password);
if (!conn)
{
fprintf(stderr, "Connection to database \"%s\" failed\n",
--- 354,373 ----
*/
do
{
+ const char *values[] = {
+ pghost,
+ pgport,
+ pgoptions,
+ pgtty,
+ dbName,
+ login,
+ password,
+ "pgbench",
+ NULL
+ };
+
new_pass = false;
! conn = PQconnectdbParams(keywords, values);
if (!conn)
{
fprintf(stderr, "Connection to database \"%s\" failed\n",
Index: contrib/vacuumlo/vacuumlo.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/contrib/vacuumlo/vacuumlo.c,v
retrieving revision 1.44
diff -c -p -c -r1.44 vacuumlo.c
*** contrib/vacuumlo/vacuumlo.c 2 Jan 2010 16:57:33 -0000 1.44
--- contrib/vacuumlo/vacuumlo.c 31 Jan 2010 01:44:55 -0000
*************** vacuumlo(char *database, struct _param *
*** 70,75 ****
--- 70,77 ----
int i;
static char *password = NULL;
bool new_pass;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (param->pg_prompt == TRI_YES && password == NULL)
password = simple_prompt("Password: ", 100, false);
*************** vacuumlo(char *database, struct _param *
*** 80,94 ****
*/
do
{
new_pass = false;
!
! conn = PQsetdbLogin(param->pg_host,
! param->pg_port,
! NULL,
! NULL,
! database,
! param->pg_user,
! password);
if (!conn)
{
fprintf(stderr, "Connection to database \"%s\" failed\n",
--- 82,99 ----
*/
do
{
+ const char *values[] = {
+ param->pg_host,
+ param->pg_port,
+ database,
+ param->pg_user,
+ password,
+ "vacuumlo",
+ NULL
+ };
+
new_pass = false;
! conn = PQconnectdbParams(keywords, values);
if (!conn)
{
fprintf(stderr, "Connection to database \"%s\" failed\n",
Index: src/bin/pg_ctl/pg_ctl.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/src/bin/pg_ctl/pg_ctl.c,v
retrieving revision 1.118
diff -c -p -c -r1.118 pg_ctl.c
*** src/bin/pg_ctl/pg_ctl.c 2 Jan 2010 16:57:58 -0000 1.118
--- src/bin/pg_ctl/pg_ctl.c 30 Jan 2010 22:33:42 -0000
*************** test_postmaster_connection(bool do_check
*** 407,413 ****
char portstr[32];
char *p;
char *q;
! char connstr[128]; /* Should be way more than enough! */
*portstr = '\0';
--- 407,414 ----
char portstr[32];
char *p;
char *q;
! const char *keywords[] = {"dbname","port","connect_timeout",
! "application_name",NULL};
*portstr = '\0';
*************** test_postmaster_connection(bool do_check
*** 501,512 ****
* We need to set a connect timeout otherwise on Windows the SCM will
* probably timeout first
*/
! snprintf(connstr, sizeof(connstr),
! "dbname=postgres port=%s connect_timeout=5", portstr);
!
for (i = 0; i < wait_seconds; i++)
{
! if ((conn = PQconnectdb(connstr)) != NULL &&
(PQstatus(conn) == CONNECTION_OK ||
PQconnectionNeedsPassword(conn)))
{
--- 502,518 ----
* We need to set a connect timeout otherwise on Windows the SCM will
* probably timeout first
*/
! const char *values[] = {
! "postgres",
! portstr,
! 5,
! "pg_ctl",
! NULL
! };
!
for (i = 0; i < wait_seconds; i++)
{
! if ((conn = PQconnectdbParams(keywords, values)) != NULL &&
(PQstatus(conn) == CONNECTION_OK ||
PQconnectionNeedsPassword(conn)))
{
Index: src/bin/pg_dump/pg_backup_db.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/src/bin/pg_dump/pg_backup_db.c,v
retrieving revision 1.85
diff -c -p -c -r1.85 pg_backup_db.c
*** src/bin/pg_dump/pg_backup_db.c 14 Dec 2009 00:39:11 -0000 1.85
--- src/bin/pg_dump/pg_backup_db.c 30 Jan 2010 22:13:38 -0000
*************** _connectDB(ArchiveHandle *AH, const char
*** 131,136 ****
--- 131,138 ----
const char *newuser;
char *password = AH->savedPassword;
bool new_pass;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (!reqdb)
newdb = PQdb(AH->connection);
*************** _connectDB(ArchiveHandle *AH, const char
*** 154,163 ****
do
{
! new_pass = false;
! newConn = PQsetdbLogin(PQhost(AH->connection), PQport(AH->connection),
! NULL, NULL, newdb,
! newuser, password);
if (!newConn)
die_horribly(AH, modulename, "failed to reconnect to database\n");
--- 156,173 ----
do
{
! const char *values[] = {
! PQhost(AH->connection),
! PQport(AH->connection),
! newdb,
! newuser,
! password,
! progname,
! NULL
! };
!
! new_pass = false;
! newConn = PQconnectdbParams(keywords, values);
if (!newConn)
die_horribly(AH, modulename, "failed to reconnect to database\n");
*************** ConnectDatabase(Archive *AHX,
*** 219,224 ****
--- 229,236 ----
ArchiveHandle *AH = (ArchiveHandle *) AHX;
char *password = AH->savedPassword;
bool new_pass;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (AH->connection)
die_horribly(AH, modulename, "already connected to a database\n");
*************** ConnectDatabase(Archive *AHX,
*** 237,245 ****
*/
do
{
! new_pass = false;
! AH->connection = PQsetdbLogin(pghost, pgport, NULL, NULL,
! dbname, username, password);
if (!AH->connection)
die_horribly(AH, modulename, "failed to connect to database\n");
--- 249,266 ----
*/
do
{
! const char *values[] = {
! pghost,
! pgport,
! dbname,
! username,
! password,
! progname,
! NULL
! };
!
! new_pass = false;
! AH->connection = PQconnectdbParams(keywords, values);
if (!AH->connection)
die_horribly(AH, modulename, "failed to connect to database\n");
Index: src/bin/pg_dump/pg_dumpall.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/src/bin/pg_dump/pg_dumpall.c,v
retrieving revision 1.131
diff -c -p -c -r1.131 pg_dumpall.c
*** src/bin/pg_dump/pg_dumpall.c 6 Jan 2010 03:34:41 -0000 1.131
--- src/bin/pg_dump/pg_dumpall.c 30 Jan 2010 22:11:02 -0000
*************** connectDatabase(const char *dbname, cons
*** 1608,1613 ****
--- 1608,1615 ----
const char *remoteversion_str;
int my_version;
static char *password = NULL;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (prompt_password == TRI_YES && !password)
password = simple_prompt("Password: ", 100, false);
*************** connectDatabase(const char *dbname, cons
*** 1618,1625 ****
*/
do
{
! new_pass = false;
! conn = PQsetdbLogin(pghost, pgport, NULL, NULL, dbname, pguser, password);
if (!conn)
{
--- 1620,1637 ----
*/
do
{
! const char *values[] = {
! pghost,
! pgport,
! dbname,
! pguser,
! password,
! progname,
! NULL
! };
!
! new_pass = false;
! conn = PQconnectdbParams(keywords, values);
if (!conn)
{
Index: src/bin/psql/command.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/src/bin/psql/command.c,v
retrieving revision 1.213
diff -c -p -c -r1.213 command.c
*** src/bin/psql/command.c 2 Jan 2010 16:57:59 -0000 1.213
--- src/bin/psql/command.c 30 Jan 2010 22:23:52 -0000
*************** param_is_newly_set(const char *old_val,
*** 1212,1219 ****
*
* Connects to a database with given parameters. If there exists an
* established connection, NULL values will be replaced with the ones
! * in the current connection. Otherwise NULL will be passed for that
! * parameter to PQsetdbLogin(), so the libpq defaults will be used.
*
* In interactive mode, if connection fails with the given parameters,
* the old connection will be kept.
--- 1212,1218 ----
*
* Connects to a database with given parameters. If there exists an
* established connection, NULL values will be replaced with the ones
! * in the current connection. Otherwise the libpq defaults will be used.
*
* In interactive mode, if connection fails with the given parameters,
* the old connection will be kept.
*************** do_connect(char *dbname, char *user, cha
*** 1224,1229 ****
--- 1223,1230 ----
PGconn *o_conn = pset.db,
*n_conn;
char *password = NULL;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (!dbname)
dbname = PQdb(o_conn);
*************** do_connect(char *dbname, char *user, cha
*** 1255,1262 ****
while (true)
{
! n_conn = PQsetdbLogin(host, port, NULL, NULL,
! dbname, user, password);
/* We can immediately discard the password -- no longer needed */
if (password)
--- 1256,1272 ----
while (true)
{
! const char *values[] = {
! host,
! port,
! dbname,
! user,
! password,
! pset.progname,
! NULL
! };
!
! n_conn = PQconnectdbParams(keywords, values);
/* We can immediately discard the password -- no longer needed */
if (password)
Index: src/bin/scripts/common.c
===================================================================
RCS file: /opt/cvsroot_postgresql/pgsql/src/bin/scripts/common.c,v
retrieving revision 1.38
diff -c -p -c -r1.38 common.c
*** src/bin/scripts/common.c 2 Jan 2010 16:58:00 -0000 1.38
--- src/bin/scripts/common.c 30 Jan 2010 22:17:01 -0000
*************** connectDatabase(const char *dbname, cons
*** 98,103 ****
--- 98,105 ----
PGconn *conn;
char *password = NULL;
bool new_pass;
+ const char *keywords[] = {"host","port","dbname","user",
+ "password","application_name",NULL};
if (prompt_password == TRI_YES)
password = simple_prompt("Password: ", 100, false);
*************** connectDatabase(const char *dbname, cons
*** 108,115 ****
*/
do
{
new_pass = false;
! conn = PQsetdbLogin(pghost, pgport, NULL, NULL, dbname, pguser, password);
if (!conn)
{
--- 110,127 ----
*/
do
{
+ const char *values[] = {
+ pghost,
+ pgport,
+ dbname,
+ pguser,
+ password,
+ progname,
+ NULL
+ };
+
new_pass = false;
! conn = PQconnectdbParams(keywords, values);
if (!conn)
{
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers