About the parameter of API: PQprepared

Started by iiheroover 17 years ago4 messages
#1iihero
iihero@gmail.com

In libpq, the definition is like:
PGresult *
PQprepare(PGconn *conn,
const char *stmtName, const char *query,
int nParams, const Oid *paramTypes)

Could we remove the parameter "nParams"?
e.g. "insert into foo(id, name, address) values ($1, $2, $3)"
PostgreSQL possibly can parse the prepared sql statement to get the real
paramters count.

Or, is there another alternate way?

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: iihero (#1)
Re: About the parameter of API: PQprepared

iihero <iihero@gmail.com> writes:

In libpq, the definition is like:
PGresult *
PQprepare(PGconn *conn,
const char *stmtName, const char *query,
int nParams, const Oid *paramTypes)

Could we remove the parameter "nParams"?

No. We are not going to break every existing user of the function.
But you can already set it to zero if you don't feel like prespecifying
the parameter types.

regards, tom lane

#3Merlin Moncure
mmoncure@gmail.com
In reply to: iihero (#1)
Re: About the parameter of API: PQprepared

On Fri, Sep 26, 2008 at 2:45 AM, iihero <iihero@gmail.com> wrote:

In libpq, the definition is like:
PGresult *
PQprepare(PGconn *conn,
const char *stmtName, const char *query,
int nParams, const Oid *paramTypes)

Could we remove the parameter "nParams"?
e.g. "insert into foo(id, name, address) values ($1, $2, $3)"
PostgreSQL possibly can parse the prepared sql statement to get the real
paramters count.

Or, is there another alternate way?

if you are looking for easier way to do things like prepared
statements, etc. over libpq, you may want to look at libpqtypes (it's
a external library that will require a patched libpq for versions
<8.4):

http://libpqtypes.esilo.com/

merlin

#4Andrew Chernow
ac@esilo.com
In reply to: Merlin Moncure (#3)
Re: About the parameter of API: PQprepared

Merlin Moncure wrote:

On Fri, Sep 26, 2008 at 2:45 AM, iihero <iihero@gmail.com> wrote:

In libpq, the definition is like:
PGresult *
PQprepare(PGconn *conn,
const char *stmtName, const char *query,
int nParams, const Oid *paramTypes)

Could we remove the parameter "nParams"?
e.g. "insert into foo(id, name, address) values ($1, $2, $3)"
PostgreSQL possibly can parse the prepared sql statement to get the real
paramters count.

Or, is there another alternate way?

if you are looking for easier way to do things like prepared
statements, etc. over libpq, you may want to look at libpqtypes (it's
a external library that will require a patched libpq for versions
<8.4):

http://libpqtypes.esilo.com/

merlin

Sounds like you could make use of libpqtypes, which abstracts you from
the standard parameterized API.

Latest version of libpqtypes is finally online (v1.2a):

http://pgfoundry.org/frs/?group_id=1000370

NOTE: requires using cvs head because libpqtypes needs the new
libpq-events feature.

--
Andrew Chernow
eSilo, LLC
every bit counts
http://www.esilo.com/