Thread: [ psqlodbc-Bugs-1000412 ] Server Side Prepare doesn't work

[ psqlodbc-Bugs-1000412 ] Server Side Prepare doesn't work

From
Date:
Bugs item #1000412, was opened at 2005-11-07 11:05
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1000412&group_id=1000125

Category: None
Group: None
>Status: Closed
Resolution: None
Priority: 3
Submitted By: Dave Page  (dpage)
Assigned to: Nobody (None)
Summary: Server Side Prepare doesn't work

Initial Comment:
To reproduce in the ODBC Test suite

SQL command: "SELECT relname FROM pg_class WHERE relname!=?"

Bind the input [SQLBindParameter] and output [SQLBindCol] parameter before
calling SQLPrepare().

The following call to SQLExecute() returns SQL_SUCCESS. But the first call to
SQLFetch() produces this error message:
<1> {HY010}(3) Null statement result in PGAPI_ExtendedFetch.



----------------------------------------------------------------------

>Comment By: Dave Page  (dpage)
Date: 2005-11-30 13:44

Message:
Excellent work Luf - tests perfectly here! Patch applied to CVS. Thanks :-)

----------------------------------------------------------------------

Comment By: Ludek Finstrle (luf)
Date: 2005-11-30 13:33

Message:
I've  fixed it (see later pgsql-odbc@postgresql.org mailing list subject: Fixed server side prepare).

I have some problems with connectivity to mail server now so I copy&paste diff here (it's only add one "if" to the
rightplace - 8 hours of work for me :-( ). 
Please test it and report errors back.

diff -c psqlodbc.orig\execute.c psqlodbc\execute.c
*** psqlodbc.orig\execute.c    Wed Nov 30 15:10:05 2005
--- psqlodbc\execute.c    Wed Nov 30 13:46:24 2005
***************
*** 301,312 ****
          {
              QResultClass    *kres;

!             kres = res->next;
!             SC_set_Result(stmt, kres);
!             res->next = NULL;
!             QR_Destructor(res);
!             res = kres;
!             SC_set_prepared(stmt, TRUE);
          }
          else
          {
--- 301,315 ----
          {
              QResultClass    *kres;

!             if (kres = res->next, kres)
!             {
!                 kres = res->next;
!                 SC_set_Result(stmt, kres);
!                 res->next = NULL;
!                 QR_Destructor(res);
!                 res = kres;
!                 SC_set_prepared(stmt, TRUE);
!             }
          }
          else
          {

----------------------------------------------------------------------

You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1000412&group_id=1000125