OSDN Git Service

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 663e044..7a2f834 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 4a57573..6899bdd 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 c30a7c9..bcfbb98 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 c0991dd..412782b 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 f6db249..52ed96f 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
  */