aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@yandex-team.ru>2022-02-16 19:36:57 +0300
committervvvv <vvvv@yandex-team.ru>2022-02-16 19:36:57 +0300
commitba7bb8654688e77fb83af2e6f9e82ef5ea10dfc5 (patch)
treef614a18ead523bcdef02a1e409a82122702423f8
parentd9e1a18c4bf7d9cda8a6922e36bd1408c46a7b78 (diff)
downloadydb-ba7bb8654688e77fb83af2e6f9e82ef5ea10dfc5.tar.gz
YQL-13710 compatibility with unusual limit option
ref:e1e4eabf11d8ed90c25f492652fa275e8c7b6245
-rw-r--r--ydb/library/yql/sql/pg/pg_sql.cpp29
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;