diff options
author | vvvv <vvvv@ydb.tech> | 2023-06-14 14:58:18 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2023-06-14 14:58:18 +0300 |
commit | 45778d653271fd7de0a5436379ad2c0de3128f83 (patch) | |
tree | f0e9c0cec670644977b35de6eb9d51f94cb1ec0f | |
parent | 69557b89626f16179aadf066e0b2b6154eaaf596 (diff) | |
download | ydb-45778d653271fd7de0a5436379ad2c0de3128f83.tar.gz |
Fixed PG float literals
-rw-r--r-- | ydb/library/yql/sql/pg/pg_sql.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/ydb/library/yql/sql/pg/pg_sql.cpp b/ydb/library/yql/sql/pg/pg_sql.cpp index 9ad7aa7b229..1b3e9010db9 100644 --- a/ydb/library/yql/sql/pg/pg_sql.cpp +++ b/ydb/library/yql/sql/pg/pg_sql.cpp @@ -63,11 +63,6 @@ int IntVal(const Value& node) { return intVal(&node); } -double FloatVal(const Value& node) { - Y_ENSURE(node.type == T_Float); - return floatVal(&node); -} - const char* StrFloatVal(const Value& node) { Y_ENSURE(node.type == T_Float); return strVal(&node); @@ -2038,7 +2033,10 @@ public: return L(A("PgConst"), QA(ToString(IntVal(val))), L(A("PgType"), QA("int4"))); } case T_Float: { - return L(A("PgConst"), QA(ToString(StrFloatVal(val))), L(A("PgType"), QA("float8"))); + auto s = StrFloatVal(val); + i64 v; + const bool isInt8 = TryFromString<i64>(s, v); + return L(A("PgConst"), QA(ToString(s)), L(A("PgType"), isInt8 ? QA("int8") : QA("numeric"))); } case T_String: { return L(A("PgConst"), QAX(ToString(StrVal(val))), L(A("PgType"), QA("text"))); |