ghtOn Wed, Sep 21, 2011 at 07:29:23AM +0800, Craig Ringer wrote:
> On 21/09/2011 12:05 AM, Lionel Elie Mamane wrote:
>>Bug reference: 6216
>>Logged by: Lionel Elie Mamane
>>Email address: [email protected]
>> In C++, a "char**" value is not convertible to a "const char**"
>> value, (...)
>> This means one cannot call libpq's PQconnectdbParams and friends
>> passing them a "char**" value for keywords and/or values, as these
>> arguments are declared "const char**".
> Lionel: Can I get you to add the patch to the commitfest app?
> https://commitfest.postgresql.org/
Sure.
Topic "performance" is not right, but only value I was allowed to put,
and it wanted a value...
I added my initial patch, and as far as I understand, I have to send
the revised patch to the list before I can register it at the
commitfest. So here is my revised patch, that uses "const char *const * "
like elsewhere in the same file instead of "char const* const*".
--
Lionel
--- postgresql-9.1-9.1.0.orig/src/interfaces/libpq/fe-connect.c
+++ postgresql-9.1-9.1.0/src/interfaces/libpq/fe-connect.c
@@ -291,8 +291,8 @@ static void freePGconn(PGconn *conn);
static void closePGconn(PGconn *conn);
static PQconninfoOption *conninfo_parse(const char *conninfo,
PQExpBuffer errorMessage, bool use_defaults);
-static PQconninfoOption *conninfo_array_parse(const char **keywords,
- const char **values, PQExpBuffer errorMessage,
+static PQconninfoOption *conninfo_array_parse(const char *const * keywords,
+ const char *const * values, PQExpBuffer errorMessage,
bool use_defaults, int expand_dbname);
static char *conninfo_getval(PQconninfoOption *connOptions,
const char *keyword);
@@ -362,8 +362,8 @@ pgthreadlock_t pg_g_threadlock = default
* call succeeded.
*/
PGconn *
-PQconnectdbParams(const char **keywords,
- const char **values,
+PQconnectdbParams(const char *const * keywords,
+ const char *const * values,
int expand_dbname)
{
PGconn *conn = PQconnectStartParams(keywords, values, expand_dbname);
@@ -381,8 +381,8 @@ PQconnectdbParams(const char **keywords,
* check server status, accepting parameters identical to PQconnectdbParams
*/
PGPing
-PQpingParams(const char **keywords,
- const char **values,
+PQpingParams(const char *const * keywords,
+ const char *const * values,
int expand_dbname)
{
PGconn *conn = PQconnectStartParams(keywords, values, expand_dbname);
@@ -464,8 +464,8 @@ PQping(const char *conninfo)
* See PQconnectPoll for more info.
*/
PGconn *
-PQconnectStartParams(const char **keywords,
- const char **values,
+PQconnectStartParams(const char *const * keywords,
+ const char *const * values,
int expand_dbname)
{
PGconn *conn;
@@ -4249,7 +4249,7 @@ conninfo_parse(const char *conninfo, PQE
* keywords will take precedence, however.
*/
static PQconninfoOption *
-conninfo_array_parse(const char **keywords, const char **values,
+conninfo_array_parse(const char *const * keywords, const char *const * values,
PQExpBuffer errorMessage, bool use_defaults,
int expand_dbname)
{
--- postgresql-9.1-9.1.0.orig/src/interfaces/libpq/libpq-fe.h
+++ postgresql-9.1-9.1.0/src/interfaces/libpq/libpq-fe.h
@@ -235,14 +235,14 @@ typedef struct pgresAttDesc
/* make a new client connection to the backend */
/* Asynchronous (non-blocking) */
extern PGconn *PQconnectStart(const char *conninfo);
-extern PGconn *PQconnectStartParams(const char **keywords,
- const char **values, int expand_dbname);
+extern PGconn *PQconnectStartParams(const char *const * keywords,
+ const char *const * values, int expand_dbname);
extern PostgresPollingStatusType PQconnectPoll(PGconn *conn);
/* Synchronous (blocking) */
extern PGconn *PQconnectdb(const char *conninfo);
-extern PGconn *PQconnectdbParams(const char **keywords,
- const char **values, int expand_dbname);
+extern PGconn *PQconnectdbParams(const char *const * keywords,
+ const char *const * , int expand_dbname);
extern PGconn *PQsetdbLogin(const char *pghost, const char *pgport,
const char *pgoptions, const char *pgtty,
const char *dbName,
@@ -413,8 +413,8 @@ extern int PQsetnonblocking(PGconn *conn
extern int PQisnonblocking(const PGconn *conn);
extern int PQisthreadsafe(void);
extern PGPing PQping(const char *conninfo);
-extern PGPing PQpingParams(const char **keywords,
- const char **values, int expand_dbname);
+extern PGPing PQpingParams(const char *const * keywords,
+ const char *const * values, int expand_dbname);
/* Force the write buffer to be written (or at least try) */
extern int PQflush(PGconn *conn);
--
Sent via pgsql-bugs mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs