diff options
author | aneporada <aneporada@yandex-team.ru> | 2022-03-19 01:04:20 +0300 |
---|---|---|
committer | aneporada <aneporada@yandex-team.ru> | 2022-03-19 01:04:20 +0300 |
commit | dc49aeeb5ef43e6b5044d4243666e18c319f89e2 (patch) | |
tree | c723c5c5f2529a89d1b6358657c6605e5af2fa1e | |
parent | 639b93b1e18f29d7aa4d0ad0bafc73e75632ae3a (diff) | |
download | ydb-dc49aeeb5ef43e6b5044d4243666e18c319f89e2.tar.gz |
[YQL-14488] Fix numeric floating point pg literals
ref:bee10c76bcd390092b25ac6dfd1e7bbc05f7dd77
-rw-r--r-- | ydb/library/yql/sql/v1/SQLv1.g.in | 8 | ||||
-rw-r--r-- | ydb/library/yql/sql/v1/sql.cpp | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/ydb/library/yql/sql/v1/SQLv1.g.in b/ydb/library/yql/sql/v1/SQLv1.g.in index bcf648137d..f1fced62e0 100644 --- a/ydb/library/yql/sql/v1/SQLv1.g.in +++ b/ydb/library/yql/sql/v1/SQLv1.g.in @@ -1361,9 +1361,11 @@ INTEGER_VALUE: DIGITS ((P | U)? (L | S | T | I | B | N)?); fragment FLOAT_EXP : E (PLUS | MINUS)? DECDIGITS ; REAL: - DECDIGITS DOT DIGIT* FLOAT_EXP? (F | P F ('4'|'8'))? - | DECDIGITS FLOAT_EXP F? -// | DOT DECDIGITS FLOAT_EXP? // Conflicts with tuple element access through DOT + ( + 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)? ; 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 1d1dc7a797..f3a46a34fc 100644 --- a/ydb/library/yql/sql/v1/sql.cpp +++ b/ydb/library/yql/sql/v1/sql.cpp @@ -3705,8 +3705,6 @@ TNodePtr LiteralNumber(TContext& ctx, const TRule_integer& node) { return new TLiteralNumberNode<i32>(ctx.Pos(), "PgInt4", ToString(value)); } else if (suffix == "pb") { return new TLiteralNumberNode<i64>(ctx.Pos(), "PgInt8", ToString(value)); - } else if (suffix == "pn") { - return new TLiteralNode(ctx.Pos(), "PgNumeric", ToString(value)); } else { ctx.Error(ctx.Pos()) << "Failed to parse number from string: " << intergerString << ", invalid suffix: " << suffix; return {}; @@ -3723,6 +3721,8 @@ TNodePtr LiteralReal(TContext& ctx, const TRule_real& node) { return new TLiteralNumberNode<float>(ctx.Pos(), "PgFloat4", value.substr(0, value.size()-3)); } else if (lower.EndsWith("pf8")) { return new TLiteralNumberNode<float>(ctx.Pos(), "PgFloat8", value.substr(0, value.size()-3)); + } else if (lower.EndsWith("pn")) { + return new TLiteralNode(ctx.Pos(), "PgNumeric", value.substr(0, value.size()-2)); } else { return new TLiteralNumberNode<double>(ctx.Pos(), "Double", value); } |