mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Just another Informix compatibility change. They uses "free" for cursors as wellafter closing them.
This commit is contained in:
parent
d9b2401d90
commit
2cbaaee6c3
@ -1505,6 +1505,10 @@ Thu Jun 19 10:08:26 CEST 2003
|
|||||||
Fri Jun 20 13:23:07 CEST 2003
|
Fri Jun 20 13:23:07 CEST 2003
|
||||||
|
|
||||||
- Enabled constants in using clause.
|
- Enabled constants in using clause.
|
||||||
|
|
||||||
|
Fri Jun 20 15:34:29 CEST 2003
|
||||||
|
|
||||||
|
- For Informix compatibility we have to accept a "free <cursor>".
|
||||||
- Set ecpg version to 3.0.0
|
- Set ecpg version to 3.0.0
|
||||||
- Set ecpg library to 4.0.0
|
- Set ecpg library to 4.0.0
|
||||||
- Set pgtypes library to 1.0.0
|
- Set pgtypes library to 1.0.0
|
||||||
|
@ -695,6 +695,16 @@ ECPGconnect_informix(int lineno, const char *name, const char *user, const char
|
|||||||
return (ECPGconnect(lineno, informix_name, user, passwd, connection_name , autocommit));
|
return (ECPGconnect(lineno, informix_name, user, passwd, connection_name , autocommit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ECPGdeallocate_informix(int lineno, char *name)
|
||||||
|
{
|
||||||
|
ECPGdeallocate_one(lineno, name);
|
||||||
|
|
||||||
|
/* Just ignore all errors since we do not know the list of cursors we
|
||||||
|
* are allowed to free. We have to trust that the software. */
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static struct var_list
|
static struct var_list
|
||||||
{
|
{
|
||||||
int number;
|
int number;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.2 2003/06/15 04:07:58 momjian Exp $ */
|
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.3 2003/06/20 13:36:34 meskes Exp $ */
|
||||||
|
|
||||||
#define POSTGRES_ECPG_INTERNAL
|
#define POSTGRES_ECPG_INTERNAL
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -106,6 +106,18 @@ ECPGprepare(int lineno, char *name, char *variable)
|
|||||||
/* handle the EXEC SQL DEALLOCATE PREPARE statement */
|
/* handle the EXEC SQL DEALLOCATE PREPARE statement */
|
||||||
bool
|
bool
|
||||||
ECPGdeallocate(int lineno, char *name)
|
ECPGdeallocate(int lineno, char *name)
|
||||||
|
{
|
||||||
|
bool ret = ECPGdeallocate_one(lineno, name);
|
||||||
|
|
||||||
|
if (!ret)
|
||||||
|
ECPGraise(lineno, ECPG_INVALID_STMT, name);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ECPGdeallocate_one(int lineno, char *name)
|
||||||
{
|
{
|
||||||
struct prepared_statement *this,
|
struct prepared_statement *this,
|
||||||
*prev;
|
*prev;
|
||||||
@ -126,7 +138,6 @@ ECPGdeallocate(int lineno, char *name)
|
|||||||
ECPGfree(this);
|
ECPGfree(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
ECPGraise(lineno, ECPG_INVALID_STMT, name);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,5 +34,6 @@ extern int byleng(char *, int);
|
|||||||
extern void ldchar(char *, int, char *);
|
extern void ldchar(char *, int, char *);
|
||||||
|
|
||||||
extern bool ECPGconnect_informix(int, const char *, const char *, const char *, const char *, int);
|
extern bool ECPGconnect_informix(int, const char *, const char *, const char *, const char *, int);
|
||||||
|
extern bool ECPGdeallocate_informix(int, char *);
|
||||||
extern void ECPG_informix_set_var(int, void *, int);
|
extern void ECPG_informix_set_var(int, void *, int);
|
||||||
extern void *ECPG_informix_get_var(int);
|
extern void *ECPG_informix_get_var(int);
|
||||||
|
@ -51,6 +51,7 @@ bool ECPGtrans(int, const char *, const char *);
|
|||||||
bool ECPGdisconnect(int, const char *);
|
bool ECPGdisconnect(int, const char *);
|
||||||
bool ECPGprepare(int, char *, char *);
|
bool ECPGprepare(int, char *, char *);
|
||||||
bool ECPGdeallocate(int, char *);
|
bool ECPGdeallocate(int, char *);
|
||||||
|
bool ECPGdeallocate_one(int, char *);
|
||||||
bool ECPGdeallocate_all(int);
|
bool ECPGdeallocate_all(int);
|
||||||
char *ECPGprepared_statement(char *);
|
char *ECPGprepared_statement(char *);
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.235 2003/06/20 12:00:59 meskes Exp $ */
|
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.236 2003/06/20 13:36:34 meskes Exp $ */
|
||||||
|
|
||||||
/* Copyright comment */
|
/* Copyright comment */
|
||||||
%{
|
%{
|
||||||
@ -674,7 +674,10 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
|
|||||||
}
|
}
|
||||||
| ECPGFree
|
| ECPGFree
|
||||||
{
|
{
|
||||||
fprintf(yyout, "{ ECPGdeallocate(__LINE__, \"%s\");", $1);
|
if (compat == ECPG_COMPAT_INFORMIX)
|
||||||
|
fprintf(yyout, "{ ECPGdeallocate_informix(__LINE__, \"%s\");", $1);
|
||||||
|
else
|
||||||
|
fprintf(yyout, "{ ECPGdeallocate(__LINE__, \"%s\");", $1);
|
||||||
|
|
||||||
whenever_action(2);
|
whenever_action(2);
|
||||||
free($1);
|
free($1);
|
||||||
|
@ -13,13 +13,14 @@ EXEC SQL BEGIN DECLARE SECTION;
|
|||||||
int *did = &i;
|
int *did = &i;
|
||||||
int a[10] = {9,8,7,6,5,4,3,2,1,0};
|
int a[10] = {9,8,7,6,5,4,3,2,1,0};
|
||||||
char text[10] = "klmnopqrst";
|
char text[10] = "klmnopqrst";
|
||||||
char *t = "uvwxyz1234";
|
char *t = (char *)malloc(10);
|
||||||
double f;
|
double f;
|
||||||
bool b = true;
|
bool b = true;
|
||||||
varchar database[3];
|
varchar database[3];
|
||||||
EXEC SQL END DECLARE SECTION;
|
EXEC SQL END DECLARE SECTION;
|
||||||
FILE *dbgs;
|
FILE *dbgs;
|
||||||
|
|
||||||
|
strcpy(t, "0123456789");
|
||||||
setlocale(LC_ALL, "de_DE");
|
setlocale(LC_ALL, "de_DE");
|
||||||
|
|
||||||
if ((dbgs = fopen("log", "w")) != NULL)
|
if ((dbgs = fopen("log", "w")) != NULL)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user