Обсуждение: About the parameter of API: PQprepared

Поиск
Список
Период
Сортировка

About the parameter of API: PQprepared

От
iihero
Дата:
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?

Re: About the parameter of API: PQprepared

От
Tom Lane
Дата:
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


Re: About the parameter of API: PQprepared

От
"Merlin Moncure"
Дата:
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


Re: About the parameter of API: PQprepared

От
Andrew Chernow
Дата:
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/