Re: Output parameters problem

From: Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>
To: Bart Samwel <bart(at)samwel(dot)tk>
Cc: pgsql-odbc(at)postgresql(dot)org
Subject: Re: Output parameters problem
Date: 2006-08-24 00:21:01
Message-ID: 44ECF0ED.4080508@tpf.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Bart Samwel wrote:
> Hi there,
>
> I've found a problem with psqlodbc and output parameters. The problem is
> as follows: if I execute {CALL foobar(?,x,y,z)} where the parameter is
> an output parameter, the psqlodbc will execute

> "SELECT foobar(,x,y,z)",

Oops my oversight.

> instead of "SELECT foobar(x,y,z)". Output parameters in the second or
> later position are no problem, it's only the first parameter that's
> treated incorrectly. This is because even though the output parameter
> '?' is ignored, psqlodbc then tries to remove the comma _preceding_ the
> parameter from the output. If there is no comma (as is the case with the
> first parameter) this doesn't work, of course.
>
> I've fixed it as follows, by making the following changes in convert.c:
>
> 1. Pass an optional QueryParse *qp to ResolveOneParam(), i.e.:
>
> static int
> ResolveOneParam(QueryBuild *qb, QueryParse *qp);
>
> 2. In ResolveOneParam, there is the following segment of code:
>
> if (outputDiscard)
> {
> for (npos = qb->npos - 1; npos >= 0 &&
> isspace(qb->query_statement[npos]) ; npos--) ;
> if (npos >= 0 && qb->query_statement[npos] == ',')
> {
> qb->npos = npos;
> qb->query_statement[npos] = '\0';
> }
> return SQL_SUCCESS_WITH_INFO;
> }
>
>
> Immediately before the return statement, I added:
>
> else if (npos >= 0 && qb->query_statement[npos] == '(' && qp)
> {
> for (npos = qp->opos+1; isspace(qp->statement[npos]); npos++) ;
> if (qp->statement[npos] == ',')
> {
> qp->opos = npos;
> }
> }

Thanks a lot.
I would take care of it.

regards,
Hiroshi Inoue

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message Andreas 2006-08-24 01:10:45 Re: ADO and sequences
Previous Message Hiroshi Inoue 2006-08-24 00:07:19 Re: ADO and sequences