mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
Obviously noone has ever tested the doubling of availiable result ids
up to reaching the hard limit. After opening 16(=current REST_START value) results via pg_exec, the next pg_exec tries to find an empty slot forever :-( . In PgSetResultId file pgtclId.c in the for loop there has to be done a break, if res_max ist reached. The piece of code should look like if (resid == connid->res_max) { resid = 0; break; /* the break as to be added */ } now everything works (double available results after reaching RES_START up to reaching RES_HARD_MAX) Gerhard Hintermayer
This commit is contained in:
@ -13,7 +13,7 @@
|
|||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.35 2002/09/04 20:31:46 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.36 2002/09/23 01:43:23 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -343,7 +343,10 @@ PgSetResultId(Tcl_Interp *interp, char *connid_c, PGresult *res)
|
|||||||
for (resid = connid->res_last + 1; resid != connid->res_last; resid++)
|
for (resid = connid->res_last + 1; resid != connid->res_last; resid++)
|
||||||
{
|
{
|
||||||
if (resid == connid->res_max)
|
if (resid == connid->res_max)
|
||||||
|
{
|
||||||
resid = 0;
|
resid = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (!connid->results[resid])
|
if (!connid->results[resid])
|
||||||
{
|
{
|
||||||
connid->res_last = resid;
|
connid->res_last = resid;
|
||||||
|
Reference in New Issue
Block a user