diff options
author | vvvv <vvvv@yandex-team.ru> | 2022-02-16 19:36:57 +0300 |
---|---|---|
committer | vvvv <vvvv@yandex-team.ru> | 2022-02-16 19:36:57 +0300 |
commit | ba7bb8654688e77fb83af2e6f9e82ef5ea10dfc5 (patch) | |
tree | f614a18ead523bcdef02a1e409a82122702423f8 | |
parent | d9e1a18c4bf7d9cda8a6922e36bd1408c46a7b78 (diff) | |
download | ydb-ba7bb8654688e77fb83af2e6f9e82ef5ea10dfc5.tar.gz |
YQL-13710 compatibility with unusual limit option
ref:e1e4eabf11d8ed90c25f492652fa275e8c7b6245
-rw-r--r-- | ydb/library/yql/sql/pg/pg_sql.cpp | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/ydb/library/yql/sql/pg/pg_sql.cpp b/ydb/library/yql/sql/pg/pg_sql.cpp index d0f665f3f7..120078e254 100644 --- a/ydb/library/yql/sql/pg/pg_sql.cpp +++ b/ydb/library/yql/sql/pg/pg_sql.cpp @@ -609,13 +609,8 @@ public: TAstNode* limit = nullptr; TAstNode* offset = nullptr; - if (value->limitOption != LIMIT_OPTION_DEFAULT) { - if (value->limitOption == LIMIT_OPTION_COUNT) { - if (!value->limitCount) { - AddError("Expected limitCount"); - return nullptr; - } - + if (value->limitOption == LIMIT_OPTION_COUNT || value->limitOption == LIMIT_OPTION_DEFAULT) { + if (value->limitCount) { TExprSettings settings; settings.AllowColumns = false; settings.Scope = "LIMIT"; @@ -623,18 +618,20 @@ public: if (!limit) { return nullptr; } + } - if (value->limitOffset) { - settings.Scope = "OFFSET"; - offset = ParseExpr(value->limitOffset, settings); - if (!offset) { - return nullptr; - } + if (value->limitOffset) { + TExprSettings settings; + settings.AllowColumns = false; + settings.Scope = "OFFSET"; + offset = ParseExpr(value->limitOffset, settings); + if (!offset) { + return nullptr; } - } else { - AddError(TStringBuilder() << "LimitOption unsupported value: " << (int)value->limitOption); - return nullptr; } + } else { + AddError(TStringBuilder() << "LimitOption unsupported value: " << (int)value->limitOption); + return nullptr; } TVector<TAstNode*> selectOptions; |