diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 663e044184c9ac8c30c9ed485a3129eef121af7d..7a2f8346a648928225de68884b6def934ea54643 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -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. + diff --git a/src/interfaces/ecpg/include/datetime.h b/src/interfaces/ecpg/include/datetime.h index 4a575733c9511240538dbc703f9dbfee18652ad6..6899bdda861b9e68226523bf37c1846db0d26e99 100644 --- a/src/interfaces/ecpg/include/datetime.h +++ b/src/interfaces/ecpg/include/datetime.h @@ -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 -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 */ diff --git a/src/interfaces/ecpg/include/decimal.h b/src/interfaces/ecpg/include/decimal.h index c30a7c9ed3f4db05a98354f123041b054af2850b..bcfbb98b474905d9fd06cbb9378ebbbeeabd45a3 100644 --- a/src/interfaces/ecpg/include/decimal.h +++ b/src/interfaces/ecpg/include/decimal.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 -typedef decimal dec_t; +/* brought in by ecpg_informix.h nowadays + * typedef decimal dec_t; */ #endif /* ndef _ECPG_DECIMAL_H */ diff --git a/src/interfaces/ecpg/include/ecpg_informix.h b/src/interfaces/ecpg/include/ecpg_informix.h index c0991ddd47d752335ab6a2bbba7b308138995e72..412782b4808eb7e50b21ae948aa44116e9450f70 100644 --- a/src/interfaces/ecpg/include/ecpg_informix.h +++ b/src/interfaces/ecpg/include/ecpg_informix.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 diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l index f6db249a26f82f1e072689771195456ca6538277..52ed96f52c6c48023369ca1955e5cb8f70912304 100644 --- a/src/interfaces/ecpg/preproc/pgc.l +++ b/src/interfaces/ecpg/preproc/pgc.l @@ -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} {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 */