]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
*** empty log message ***
authorMichael Meskes <meskes@postgresql.org>
Thu, 10 Jun 1999 19:11:33 +0000 (19:11 +0000)
committerMichael Meskes <meskes@postgresql.org>
Thu, 10 Jun 1999 19:11:33 +0000 (19:11 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/preproc/pgc.l
src/interfaces/ecpg/preproc/preproc.y

index 8895cfab4c387fa2b8fefcba4264aea7b6e740b6..e77ecf377b72d4b5184e99980273da376784984f 100644 (file)
@@ -590,5 +590,10 @@ Fri May 21 18:13:44 CEST 1999
 Sun May 23 11:19:32 CEST 1999
 
        - Add braces around each statement so that a simple if/else works.
+
+Thu Jun 10 21:09:12 CEST 1999
+
+       - Fixed typo in preproc.y.
+       - Synced pgc.l with scan.l.
        - Set library version to 3.0.0
        - Set ecpg version to 2.6.0
index 44542cb83bf7b1982bb42579c8de3bffc760bfcf..d942a65b3ea304bf1bf1a0f8c28837f7529114c7 100644 (file)
@@ -146,10 +146,11 @@ operator          {op_and_self}+
 xmstop                 -
 
 integer                        [\-]?{digit}+
+decimal                        [\-]?(({digit}*\.{digit}+)|({digit}+\.{digit}*))
+real                   [\-]?((({digit}*\.{digit}+)|({digit}+\.{digit}*)|({digit}+))([Ee][-+]?{digit}+))
 /*
-real                   [\-]?{digit}+\.{digit}+([Ee][-+]?{digit}+)?
-*/
 real                   [\-]?(((({digit}*\.{digit}+)|({digit}+\.{digit}*))([Ee][-+]?{digit}+)?)|({digit}+[Ee][-+]?{digit}+))
+*/
 
 param                  \${integer}
 
@@ -391,14 +392,34 @@ cppline           {space}*#.*(\\{space}*\n)*\n*
                                        if (*endptr != '\0' || errno == ERANGE)
                                        {
                                                errno = 0;
+#if 0
                                                yylval.dval = strtod(((char *)yytext),&endptr);
                                                if (*endptr != '\0' || errno == ERANGE)
                                                        yyerror("ERROR: Bad integer input");
                                                yyerror("WARNING: Integer input is out of range; promoted to float");
                                                return FCONST;
+#endif
+                                               yylval.str = mm_strdup((char*)yytext);
+                                                return SCONST;
                                        }
                                        return ICONST;
                                }
+{decimal}/{space}*-{number} {
+                                        char* endptr;
+
+                                        BEGIN(xm);
+                                        if (strlen((char *)yytext) <= 17)
+                                        {
+                                                errno = 0;
+                                               yylval.dval = strtod(((char *)yytext),&endptr);
+                                               if (*endptr != '\0' || errno == ERANGE)
+                                                       yyerror("ERROR: Bad float8 input");
+                                               return FCONST;
+                                        }
+                                        yylval.str = mm_strdup((char*)yytext);
+                                        return SCONST;
+                                }
+
 <C,SQL>{real}/{space}*-{number} {
                                        char* endptr;
 
@@ -417,14 +438,32 @@ cppline           {space}*#.*(\\{space}*\n)*\n*
                                        if (*endptr != '\0' || errno == ERANGE)
                                        {
                                                errno = 0;
+#if 0
                                                yylval.dval = strtod(((char *)yytext),&endptr);
                                                if (*endptr != '\0' || errno == ERANGE)
                                                        yyerror("ERROR: Bad integer input");
                                                yyerror("WARNING: Integer input is out of range; promoted to float");
                                                return FCONST;
+#endif
+                                               yylval.str = mm_strdup((char*)yytext);
+                                                return SCONST;
                                        }
                                        return ICONST;
                                }
+{decimal}                      {
+                                        char* endptr;
+
+                                        if (strlen((char *)yytext) <= 17)
+                                        {
+                                                errno = 0;
+                                                yylval.dval = strtod((char *)yytext,&endptr);
+                                               if (*endptr != '\0' || errno == ERANGE)
+                                                       yyerror("ERROR: Bad float8 input");
+                                               return FCONST;
+                                        }
+                                        yylval.str = mm_strdup((char*)yytext);
+                                        return SCONST;
+                                }
 <C,SQL>{real}                  {
                                        char* endptr;
 
index bb1bc14cd0f0b861a8255bdeb341c7c463cfbfab..d541dbf0c8550027968a904163d753030eed77a1 100644 (file)
@@ -2918,7 +2918,7 @@ name_list:  name
                                {       $$ = cat3_str($1, make1_str(","), $3); }
                ;
 
-group_clause:  GROUP BY expr_list                      { $$ = cat2_str(make1_str("groub by"), $3); }
+group_clause:  GROUP BY expr_list                      { $$ = cat2_str(make1_str("group by"), $3); }
                | /*EMPTY*/                             { $$ = make1_str(""); }
                ;