Skip to content
Snippets Groups Projects
Commit 2cbaaee6 authored by Michael Meskes's avatar Michael Meskes
Browse files

Just another Informix compatibility change. They uses "free" for cursors as wellafter closing them.

parent d9b2401d
No related branches found
No related tags found
No related merge requests found
...@@ -1505,6 +1505,10 @@ Thu Jun 19 10:08:26 CEST 2003 ...@@ -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 ...@@ -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;
......
/* $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) ...@@ -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) ...@@ -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); ...@@ -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 *); ...@@ -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 *);
......
/* $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); } ...@@ -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; ...@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment