aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <aneporada@yandex-team.ru>2022-03-20 01:16:36 +0300
committeraneporada <aneporada@yandex-team.ru>2022-03-20 01:16:36 +0300
commit3998f65e329635acbd09ced320d5b7242cbd9a79 (patch)
tree8883ac0c9ebcebd4b825a3ef8c77062efea32d04
parentfeecfe4e731d0335905f0d577722208ad3f4b215 (diff)
downloadydb-3998f65e329635acbd09ced320d5b7242cbd9a79.tar.gz
[YQL-14488] Support plain 'n' suffix for floating point literals (1.0p means 1.0pf8)
ref:3de49027fa2239937fd2e76c9c547dfab4f13aa9
-rw-r--r--ydb/library/yql/sql/v1/SQLv1.g.in2
-rw-r--r--ydb/library/yql/sql/v1/sql.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/ydb/library/yql/sql/v1/SQLv1.g.in b/ydb/library/yql/sql/v1/SQLv1.g.in
index f1fced62e0..78ed94549e 100644
--- a/ydb/library/yql/sql/v1/SQLv1.g.in
+++ b/ydb/library/yql/sql/v1/SQLv1.g.in
@@ -1365,7 +1365,7 @@ REAL:
DECDIGITS DOT DIGIT* FLOAT_EXP?
| DECDIGITS FLOAT_EXP
// | DOT DECDIGITS FLOAT_EXP? // Conflicts with tuple element access through DOT
- ) (F | P F ('4'|'8') | P N)?
+ ) (F | P (F ('4'|'8') | N)?)?
;
BLOB: X QUOTE_SINGLE HEXDIGIT+ QUOTE_SINGLE;
diff --git a/ydb/library/yql/sql/v1/sql.cpp b/ydb/library/yql/sql/v1/sql.cpp
index f3a46a34fc..891665d1ea 100644
--- a/ydb/library/yql/sql/v1/sql.cpp
+++ b/ydb/library/yql/sql/v1/sql.cpp
@@ -3717,6 +3717,8 @@ TNodePtr LiteralReal(TContext& ctx, const TRule_real& node) {
auto lower = to_lower(value);
if (lower.EndsWith("f")) {
return new TLiteralNumberNode<float>(ctx.Pos(), "Float", value.substr(0, value.size()-1));
+ } else if (lower.EndsWith("p")) {
+ return new TLiteralNumberNode<float>(ctx.Pos(), "PgFloat8", value.substr(0, value.size()-1));
} else if (lower.EndsWith("pf4")) {
return new TLiteralNumberNode<float>(ctx.Pos(), "PgFloat4", value.substr(0, value.size()-3));
} else if (lower.EndsWith("pf8")) {