]> granicus.if.org Git - postgresql/commitdiff
Changed the way symbols are defined in C in INFORMIX mode.
authorMichael Meskes <meskes@postgresql.org>
Fri, 15 Feb 2008 11:20:21 +0000 (11:20 +0000)
committerMichael Meskes <meskes@postgresql.org>
Fri, 15 Feb 2008 11:20:21 +0000 (11:20 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/include/datetime.h
src/interfaces/ecpg/include/decimal.h
src/interfaces/ecpg/include/ecpg_informix.h
src/interfaces/ecpg/preproc/pgc.l

index 663e044184c9ac8c30c9ed485a3129eef121af7d..7a2f8346a648928225de68884b6def934ea54643 100644 (file)
@@ -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.
+
index 4a575733c9511240538dbc703f9dbfee18652ad6..6899bdda861b9e68226523bf37c1846db0d26e99 100644 (file)
@@ -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 */
index c30a7c9ed3f4db05a98354f123041b054af2850b..bcfbb98b474905d9fd06cbb9378ebbbeeabd45a3 100644 (file)
@@ -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 */
index c0991ddd47d752335ab6a2bbba7b308138995e72..412782b4808eb7e50b21ae948aa44116e9450f70 100644 (file)
@@ -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
index f6db249a26f82f1e072689771195456ca6538277..52ed96f52c6c48023369ca1955e5cb8f70912304 100644 (file)
@@ -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
  */