*** ../src/backend/parser/scan.l.orig Tue Mar 30 15:08:02 1999 --- ../src/backend/parser/scan.l Tue Apr 27 16:29:21 1999 *************** *** 152,161 **** xmstop - integer [\-]?{digit}+ /* - real [\-]?{digit}+\.{digit}+([Ee][-+]?{digit}+)? - */ real [\-]?(((({digit}*\.{digit}+)|({digit}+\.{digit}*))([Ee][-+]?{digit}+)?)|({digit}+[Ee][-+]?{digit}+)) param \${integer} --- 152,162 ---- xmstop - integer [\-]?{digit}+ + decimal [\-]?(({digit}*\.{digit}+)|({digit}+\.{digit}*)) + real [\-]?((({digit}*\.{digit}+)|({digit}+\.{digit}*)|({digit}+))([Ee][-+]?{digit}+)) /* real [\-]?(((({digit}*\.{digit}+)|({digit}+\.{digit}*))([Ee][-+]?{digit}+)?)|({digit}+[Ee][-+]?{digit}+)) + */ param \${integer} *************** *** 334,348 **** --- 335,369 ---- if (*endptr != '\0' || errno == ERANGE) { errno = 0; + #if 0 yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) elog(ERROR,"Bad integer input '%s'",yytext); CheckFloat8Val(yylval.dval); elog(NOTICE,"Integer input '%s' is out of range; promoted to float", yytext); return FCONST; + #endif + yylval.str = pstrdup((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) + elog(ERROR,"Bad float8 input '%s'",yytext); + CheckFloat8Val(yylval.dval); + return FCONST; + } + yylval.str = pstrdup((char*)yytext); + return SCONST; + } {real}/{space}*-{number} { char* endptr; *************** *** 362,375 **** --- 383,415 ---- if (*endptr != '\0' || errno == ERANGE) { errno = 0; + #if 0 yylval.dval = strtod(((char *)yytext),&endptr); if (*endptr != '\0' || errno == ERANGE) elog(ERROR,"Bad integer input '%s'",yytext); CheckFloat8Val(yylval.dval); elog(NOTICE,"Integer input '%s' is out of range; promoted to float", yytext); return FCONST; + #endif + yylval.str = pstrdup((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) + elog(ERROR,"Bad float input '%s'",yytext); + CheckFloat8Val(yylval.dval); + return FCONST; + } + yylval.str = pstrdup((char*)yytext); + return SCONST; } {real} { char* endptr;