Changed the way symbols are defined in C in INFORMIX mode.
This commit is contained in:
parent
df1e965e12
commit
efac2796e6
@ -2313,3 +2313,7 @@ Thu, 14 Feb 2008 13:11:34 +0100
|
||||
- EXECUTE can return NOT FOUND so it should be checked here too.
|
||||
- Changed regression test accordingly.
|
||||
|
||||
Fri, 15 Feb 2008 12:01:13 +0100
|
||||
|
||||
- Changed the way symbols are defined in C in INFORMIX mode.
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/datetime.h,v 1.14 2008/02/14 12:27:26 meskes Exp $ */
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/datetime.h,v 1.15 2008/02/15 11:20:21 meskes Exp $ */
|
||||
|
||||
#ifndef _ECPG_DATETIME_H
|
||||
#define _ECPG_DATETIME_H
|
||||
|
||||
#include <ecpg_informix.h>
|
||||
|
||||
typedef timestamp dtime_t;
|
||||
typedef interval intrvl_t;
|
||||
/* brought in by ecpg_informix.h nowadays
|
||||
* typedef timestamp dtime_t;
|
||||
* typedef interval intrvl_t; */
|
||||
|
||||
#endif /* ndef _ECPG_DATETIME_H */
|
||||
|
@ -1,10 +1,11 @@
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/decimal.h,v 1.16 2008/02/14 12:27:26 meskes Exp $ */
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/decimal.h,v 1.17 2008/02/15 11:20:21 meskes Exp $ */
|
||||
|
||||
#ifndef _ECPG_DECIMAL_H
|
||||
#define _ECPG_DECIMAL_H
|
||||
|
||||
#include <ecpg_informix.h>
|
||||
|
||||
typedef decimal dec_t;
|
||||
/* brought in by ecpg_informix.h nowadays
|
||||
* typedef decimal dec_t; */
|
||||
|
||||
#endif /* ndef _ECPG_DECIMAL_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* This file contains stuff needed to be as compatible to Informix as possible.
|
||||
* $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.20 2008/02/14 12:27:26 meskes Exp $
|
||||
* $PostgreSQL: pgsql/src/interfaces/ecpg/include/ecpg_informix.h,v 1.21 2008/02/15 11:20:21 meskes Exp $
|
||||
*/
|
||||
#ifndef _ECPG_INFORMIX_H
|
||||
#define _ECPG_INFORMIX_H
|
||||
@ -82,6 +82,11 @@ extern int dttofmtasc(timestamp *, char *, int, char *);
|
||||
extern int intoasc(interval *, char *);
|
||||
extern int dtcvfmtasc(char *, char *, timestamp *);
|
||||
|
||||
/* we also define Informix datatypes here */
|
||||
typedef timestamp dtime_t;
|
||||
typedef interval intrvl_t;
|
||||
typedef decimal dec_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -12,7 +12,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.161 2008/02/14 12:27:26 meskes Exp $
|
||||
* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.162 2008/02/15 11:20:21 meskes Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -47,7 +47,6 @@ static void addlitchar (unsigned char);
|
||||
static void parse_include (void);
|
||||
static bool ecpg_isspace(char ch);
|
||||
static bool isdefine(void);
|
||||
static bool isinformixdefine(void);
|
||||
|
||||
char *token_start;
|
||||
int state_before;
|
||||
@ -744,9 +743,7 @@ cppline {space}*#(.*\\{space})*.*{newline}
|
||||
<C>{identifier} {
|
||||
const ScanKeyword *keyword;
|
||||
|
||||
/* Informix uses SQL defines only in SQL space */
|
||||
/* however, some defines have to be taken care of for compatibility */
|
||||
if ((!INFORMIX_MODE || !isinformixdefine()) && !isdefine())
|
||||
if (!isdefine())
|
||||
{
|
||||
keyword = ScanCKeywordLookup(yytext);
|
||||
if (keyword != NULL)
|
||||
@ -1318,36 +1315,6 @@ static bool isdefine(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool isinformixdefine(void)
|
||||
{
|
||||
const char *new = NULL;
|
||||
|
||||
if (strcmp(yytext, "dec_t") == 0)
|
||||
new = "decimal";
|
||||
else if (strcmp(yytext, "intrvl_t") == 0)
|
||||
new = "interval";
|
||||
else if (strcmp(yytext, "dtime_t") == 0)
|
||||
new = "timestamp";
|
||||
|
||||
if (new)
|
||||
{
|
||||
struct _yy_buffer *yb;
|
||||
|
||||
yb = mm_alloc(sizeof(struct _yy_buffer));
|
||||
|
||||
yb->buffer = YY_CURRENT_BUFFER;
|
||||
yb->lineno = yylineno;
|
||||
yb->filename = mm_strdup(input_filename);
|
||||
yb->next = yy_buffer;
|
||||
yy_buffer = yb;
|
||||
|
||||
yy_scan_string(new);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Called before any actual parsing is done
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user