Added Christof's fixes.
This commit is contained in:
parent
4e37786f2f
commit
051a4f233f
@ -1196,5 +1196,10 @@ Tue Jan 8 15:16:37 CET 2002
|
|||||||
Thu Jan 10 11:12:14 CET 2002
|
Thu Jan 10 11:12:14 CET 2002
|
||||||
|
|
||||||
- Include sqlca.h automatically.
|
- Include sqlca.h automatically.
|
||||||
|
|
||||||
|
Fri Jan 11 15:43:39 CET 2002
|
||||||
|
|
||||||
|
- clear sqlca on : [de]allocate descriptor & get descriptor and set
|
||||||
|
sqlca.sqlerrd[2] accordingly (Christof).
|
||||||
- Set ecpg version to 2.9.0.
|
- Set ecpg version to 2.9.0.
|
||||||
- Set library version to 3.3.0.
|
- Set library version to 3.3.0.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* dynamic SQL support routines
|
/* dynamic SQL support routines
|
||||||
*
|
*
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/descriptor.c,v 1.20 2001/12/23 12:17:41 meskes Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/descriptor.c,v 1.21 2002/01/11 14:43:11 meskes Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -10,6 +10,7 @@
|
|||||||
#include "ecpglib.h"
|
#include "ecpglib.h"
|
||||||
#include "ecpgerrno.h"
|
#include "ecpgerrno.h"
|
||||||
#include "extern.h"
|
#include "extern.h"
|
||||||
|
#include "sqlca.h"
|
||||||
#include "sql3types.h"
|
#include "sql3types.h"
|
||||||
|
|
||||||
struct descriptor *all_descriptors = NULL;
|
struct descriptor *all_descriptors = NULL;
|
||||||
@ -49,12 +50,15 @@ ECPGDynamicType_DDT(Oid type)
|
|||||||
bool
|
bool
|
||||||
ECPGget_desc_header(int lineno, char *desc_name, int *count)
|
ECPGget_desc_header(int lineno, char *desc_name, int *count)
|
||||||
{
|
{
|
||||||
PGresult *ECPGresult = ECPGresultByDescriptor(lineno, desc_name);
|
PGresult *ECPGresult;
|
||||||
|
|
||||||
|
ECPGinit_sqlca();
|
||||||
|
ECPGresult = ECPGresultByDescriptor(lineno, desc_name);
|
||||||
if (!ECPGresult)
|
if (!ECPGresult)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
*count = PQnfields(ECPGresult);
|
*count = PQnfields(ECPGresult);
|
||||||
|
sqlca.sqlerrd[2]=1;
|
||||||
ECPGlog("ECPGget_desc_header: found %d attributes.\n", *count);
|
ECPGlog("ECPGget_desc_header: found %d attributes.\n", *count);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -140,13 +144,15 @@ bool
|
|||||||
ECPGget_desc(int lineno, char *desc_name, int index,...)
|
ECPGget_desc(int lineno, char *desc_name, int index,...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
PGresult *ECPGresult = ECPGresultByDescriptor(lineno, desc_name);
|
PGresult *ECPGresult;
|
||||||
enum ECPGdtype type;
|
enum ECPGdtype type;
|
||||||
int ntuples,
|
int ntuples,
|
||||||
act_tuple;
|
act_tuple;
|
||||||
struct variable data_var;
|
struct variable data_var;
|
||||||
|
|
||||||
va_start(args, index);
|
va_start(args, index);
|
||||||
|
ECPGinit_sqlca();
|
||||||
|
ECPGresult = ECPGresultByDescriptor(lineno, desc_name);
|
||||||
if (!ECPGresult)
|
if (!ECPGresult)
|
||||||
return (false);
|
return (false);
|
||||||
|
|
||||||
@ -359,7 +365,7 @@ ECPGget_desc(int lineno, char *desc_name, int index,...)
|
|||||||
ECPGlog("ECPGget_desc: INDICATOR[%d] = %d\n", act_tuple, -PQgetisnull(ECPGresult, act_tuple, index));
|
ECPGlog("ECPGget_desc: INDICATOR[%d] = %d\n", act_tuple, -PQgetisnull(ECPGresult, act_tuple, index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sqlca.sqlerrd[2]=ntuples;
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,6 +375,7 @@ ECPGdeallocate_desc(int line, const char *name)
|
|||||||
struct descriptor *i;
|
struct descriptor *i;
|
||||||
struct descriptor **lastptr = &all_descriptors;
|
struct descriptor **lastptr = &all_descriptors;
|
||||||
|
|
||||||
|
ECPGinit_sqlca();
|
||||||
for (i = all_descriptors; i; lastptr = &i->next, i = i->next)
|
for (i = all_descriptors; i; lastptr = &i->next, i = i->next)
|
||||||
{
|
{
|
||||||
if (!strcmp(name, i->name))
|
if (!strcmp(name, i->name))
|
||||||
@ -387,11 +394,26 @@ ECPGdeallocate_desc(int line, const char *name)
|
|||||||
bool
|
bool
|
||||||
ECPGallocate_desc(int line, const char *name)
|
ECPGallocate_desc(int line, const char *name)
|
||||||
{
|
{
|
||||||
struct descriptor *new = (struct descriptor *) ECPGalloc(sizeof(struct descriptor), line);
|
struct descriptor *new;
|
||||||
|
|
||||||
|
ECPGinit_sqlca();
|
||||||
|
new = (struct descriptor *) ECPGalloc(sizeof(struct descriptor), line);
|
||||||
|
if (!new) return false;
|
||||||
new->next = all_descriptors;
|
new->next = all_descriptors;
|
||||||
new->name = ECPGalloc(strlen(name) + 1, line);
|
new->name = ECPGalloc(strlen(name) + 1, line);
|
||||||
|
if (!new->name)
|
||||||
|
{
|
||||||
|
ECPGfree(new);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
new->result = PQmakeEmptyPGresult(NULL, 0);
|
new->result = PQmakeEmptyPGresult(NULL, 0);
|
||||||
|
if (!new->result)
|
||||||
|
{
|
||||||
|
ECPGfree(new->name);
|
||||||
|
ECPGfree(new);
|
||||||
|
ECPGraise(line, ECPG_OUT_OF_MEMORY, NULL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
strcpy(new->name, name);
|
strcpy(new->name, name);
|
||||||
all_descriptors = new;
|
all_descriptors = new;
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user