提交 a1f58513 编写于 作者: T Tom Lane

Replace ad-hoc atof() code with call to float4in, per Andrew Dunstan.

上级 85b2facd
......@@ -418,8 +418,7 @@ SELECT '1 e7'::seg AS seg;
ERROR: bad seg representation
DETAIL: syntax error at or near "e"
SELECT '1e700'::seg AS seg;
ERROR: syntax error
DETAIL: numeric value 1e700 unrepresentable
ERROR: "1e700" is out of range for type real
--
-- testing the operators
--
......
......@@ -5,6 +5,8 @@
#include <math.h>
#include "fmgr.h"
#include "utils/builtins.h"
#include "segdata.h"
#undef yylex /* failure to redefine yylex will result in calling the */
......@@ -129,22 +131,13 @@ deviation:
%%
float seg_atof ( char *value ) {
float result;
char *buf = (char *) palloc(256);
float
seg_atof(char *value)
{
Datum datum;
errno = 0;
sscanf(value, "%f", &result);
if ( errno ) {
snprintf(buf, 256, "numeric value %s unrepresentable", value);
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("syntax error"),
errdetail("%s", buf)));
}
return result;
datum = DirectFunctionCall1(float4in, CStringGetDatum(value));
return DatumGetFloat4(datum);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册