DescribParam

DescribParam

am 07.06.2006 21:03:56 von gblawler

When I call SQLDescribeParam using PostgreSQL ODBC Driver psqlodbc-08_02_0002
SQL_ERROR is the return code.

What I am trying to do with this call is determine the buffer size needed to allocate a buffer
so I can call SQLBindParameter with a big enough buffer.

I have tried defaulting this to a number > 255, but this causes some other drivers, like
MS Access to choke.

MS SQL Server and others return the correct parameter size.

My only thought was to provide an override for this in my library to force the parameter
size when the driver does not return it.

Does anyone have a better workaround for this?

Glenn Lawler
www.incodesystems.com


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Re: DescribParam

am 07.06.2006 21:23:31 von Ludek Finstrle

> When I call SQLDescribeParam using PostgreSQL ODBC Driver
> psqlodbc-08_02_0002 SQL_ERROR is the return code.

This API has never been supported. Why do you use it when psqlODBC
returns info that it doesn't support SQLDescribeParam?

> What I am trying to do with this call is determine the buffer size
> needed to allocate a buffer so I can call SQLBindParameter with
> a big enough buffer.

There is the problem that PgSQL backend doesn't support it before
execution (I haven't found another information yet).

> My only thought was to provide an override for this in my library
> to force the parameter size when the driver does not return it.

Maybe you may depend on other information like PostgreSQL driver, ...

> Does anyone have a better workaround for this?

Sorry, I don't have one.

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Re: DescribParam

am 07.06.2006 21:50:01 von gblawler

Luf,

So, if SQLDescribeParam is not supported, how do you
know how big to make the buffers?

I assume everyone must either use a standard size for
all parameters or the caller must know the right size to
use.

I guess I'll have to add an optional call to my library to
override the buffer size after the statement has been
prepared.

Glenn Lawler
www.incodesystems.com


-----Original Message-----
From: Ludek Finstrle [SMTP:luf@pzkagis.cz]
Sent: Wednesday, June 07, 2006 2:24 PM
To: Glenn B. Lawler
Cc: 'PostgreSQL ODBC List'
Subject: Re: [ODBC] DescribParam

> When I call SQLDescribeParam using PostgreSQL ODBC Driver
> psqlodbc-08_02_0002 SQL_ERROR is the return code.

This API has never been supported. Why do you use it when psqlODBC
returns info that it doesn't support SQLDescribeParam?

> What I am trying to do with this call is determine the buffer size
> needed to allocate a buffer so I can call SQLBindParameter with
> a big enough buffer.

There is the problem that PgSQL backend doesn't support it before
execution (I haven't found another information yet).

> My only thought was to provide an override for this in my library
> to force the parameter size when the driver does not return it.

Maybe you may depend on other information like PostgreSQL driver, ...

> Does anyone have a better workaround for this?

Sorry, I don't have one.

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Re: DescribParam

am 07.06.2006 22:08:45 von Ludek Finstrle

> So, if SQLDescribeParam is not supported, how do you
> know how big to make the buffers?

I don't know. I'm sorry. If you find the way with PgSQL backend
we'll be glad.

> I assume everyone must either use a standard size for
> all parameters or the caller must know the right size to
> use.

Or you have to know what you ask for. Please try standard size
and hope that it's enough. I don't have better advice.
Maybe I'm wrong and someone more experienced correct it.

BTW this is comment from psqlODBC:
/*
* Returns the description of a parameter marker.
* This function is listed as not being supported by SQLGetFunctions() because it is
* used to describe "parameter markers" (not bound parameters), in which case,
* the dbms should return info on the markers. Since Postgres doesn't support that,
* it is best to say this function is not supported and let the application assume a
* data type (most likely varchar).
*/

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Re: DescribParam

am 08.06.2006 01:22:22 von Hiroshi Inoue

Glenn B. Lawler wrote:
> When I call SQLDescribeParam using PostgreSQL ODBC Driver psqlodbc-08_02_0002
> SQL_ERROR is the return code.

Are you checking the 7.4+ Protocol option ?

regards,
Hiroshi Inoue

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Re: DescribParam

am 08.06.2006 16:46:56 von gblawler

Yes.

-----Original Message-----
From: Hiroshi Inoue [SMTP:inoue@tpf.co.jp]
Sent: Wednesday, June 07, 2006 6:22 PM
To: Glenn B. Lawler
Cc: 'PostgreSQL ODBC List'
Subject: Re: [ODBC] DescribParam

Glenn B. Lawler wrote:
> When I call SQLDescribeParam using PostgreSQL ODBC Driver psqlodbc-08_02_0002
> SQL_ERROR is the return code.

Are you checking the 7.4+ Protocol option ?

regards,
Hiroshi Inoue

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Re: DescribParam

am 08.06.2006 22:42:07 von Hiroshi Inoue

Glenn B. Lawler wrote:
> Yes.
>

Isn't the error message "Invalid parameter number for
PGAPI_DescribeParam." ?
If so, could you call SQLNumParams before calling SQLDescribeParam on
trial ?

regards,
Hiroshi Inoue

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster