Re: BUG #6534: Passing numeric Bind variables to ODBC driver convers to "Double precision"

From: Amit Kapila <amit(dot)kapila(at)huawei(dot)com>
To: 'Barry Bell' <Barry_Bell(at)harte-hanks(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #6534: Passing numeric Bind variables to ODBC driver convers to "Double precision"
Date: 2012-04-12 06:23:54
Message-ID: 001e01cd1874$d7f60530$87e20f90$%kapila@huawei.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

>> Is there an ODBC setting for incoming numeric bind variables?
I don't think there is any such kind of setting, atleast I am not aware.

I am guessing mostly it’s the Postgres behavior or some problem in the way
the application is using ODBC.

>> Select function call below will work if they function is defined as
"Double precision"
>>(that and the error I am getting from Postgres says it is be passed
"Double precision")

>>We will get the "unknown function "Double precision" parameter" error when
>>We are calling a function with numeric or integer parameters.

Can you provide this with an example like how you have defined your function
and how it is getting called from ODBC.

-----Original Message-----
From: Barry Bell [mailto:Barry_Bell(at)harte-hanks(dot)com]
Sent: Wednesday, April 11, 2012 6:24 PM
To: Amit Kapila
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: RE: [BUGS] BUG #6534: Passing numeric Bind variables to ODBC driver
convers to "Double precision"

Yes, this is happening when variables are passed to a function
The call below does work:
Nvar
Select * from mytable where id=?nvar

Select function call below will work if they function is defined as "Double
precision"
(that and the error I am getting from Postgres says it is be passed "Double
precision")

We will get the "unknown function "Double precision" parameter" error when
We are calling a function with numeric or integer parameters.

Is there an ODBC setting for incoming numeric bind variables?

Thanks
Barry Bell, IT Department
Office: 954-429-3771 x267 Fax: 954-281-1464 email Barry_Bell(at)harte-hanks(dot)com

-----Original Message-----
From: Amit Kapila [mailto:amit(dot)kapila(at)huawei(dot)com]
Sent: Wednesday, April 11, 2012 6:15 AM
To: Barry Bell
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: RE: [BUGS] BUG #6534: Passing numeric Bind variables to ODBC driver
convers to "Double precision"

Does it happen only for function call or otherwise for Insert statement
also?
What is your function declaration.
How have you verified that in postgres it is double precision.

-----Original Message-----
From: Barry Bell [mailto:Barry_Bell(at)harte-hanks(dot)com]
Sent: Tuesday, April 10, 2012 6:00 PM
To: Amit Kapila
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: RE: [BUGS] BUG #6534: Passing numeric Bind variables to ODBC driver
convers to "Double precision"

No matter what numeric type I try to pass,(integer, numeric, currency) the
ODBC driver is turning it into "Double Precision"
Only If I send the value as a string
Declare nvar as numeric(10,2)
Nvar=1, nvar=1.0000 or nvar=1.00 will come across as "Double Precision"
input bind variable.
Sending
Nvar="1" will work but there are issues with converting numbers to
character,

Any Ideas?

Thanks
Barry Bell, IT Department
Office: 954-429-3771 x267 Fax: 954-281-1464 email Barry_Bell(at)harte-hanks(dot)com

-----Original Message-----
From: Amit Kapila [mailto:amit(dot)kapila(at)huawei(dot)com]
Sent: Monday, April 09, 2012 8:49 PM
To: Barry Bell
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: RE: [BUGS] BUG #6534: Passing numeric Bind variables to ODBC driver
convers to "Double precision"

In ODBC while binding variable using SQLBindParameter(..) API you might be
using SQL_DOUBLE or SQL_Numeric or some similar datatype to send the
variable, that's why in postgres it is showing as "Double precision"

-----Original Message-----
From: pgsql-bugs-owner(at)postgresql(dot)org
[mailto:pgsql-bugs-owner(at)postgresql(dot)org] On Behalf Of Robert Haas
Sent: Monday, April 09, 2012 7:31 PM
To: barry_bell(at)harte-hanks(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: [BUGS] BUG #6534: Passing numeric Bind variables to ODBC driver
convers to "Double precision"

On Thu, Mar 15, 2012 at 3:04 PM, <barry_bell(at)harte-hanks(dot)com> wrote:
> The following bug has been logged on the website:
>
> Bug reference:      6534
> Logged by:          Barry Bell
> Email address:      barry_bell(at)harte-hanks(dot)com PostgreSQL version:
> 9.1.2 Operating system:   Windows Server 2003
> Description:
>
> Using the lastest of ODBC ANSI driver for windows 32bit ver 9.00.03
> Calling from MS VFP 9.0
>
> public nvar as interger
> nvar=1
> running the following sql:
> "( select function_pkg(?nvar) "
>
> The bind variable nvar will show in postgres as "Double Precision"
> format instead of integer.
>
> Is there a setting on the ODBC driver for incoming vairables?
> If not it is a buf.

Given the lack of any response here, I suggest reposting this to the
pgsql-odbc mailing list.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company

--
Sent via pgsql-bugs mailing list (pgsql-bugs(at)postgresql(dot)org) To make changes
to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message biju.george 2012-04-12 08:55:08 BUG #6583: for loop cursor
Previous Message Ashesh Vashi 2012-04-12 05:13:02 Re: ERROR: operator does not exist: integer = integer[]