diff options
author | uzhas <[email protected]> | 2022-07-20 23:04:37 +0300 |
---|---|---|
committer | uzhas <[email protected]> | 2022-07-20 23:04:37 +0300 |
commit | 6b94014b1082ce9c3c702bdc7051efd00658da1b (patch) | |
tree | 045304b478b5a65d03a1ea5d25585cb5b3953c5b | |
parent | a0d1b8fbd32f19cc0452eec48b3ec75fe1c6a5c7 (diff) |
support new syntax to replace .object when select from pq/yds
-rw-r--r-- | ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp index 2b99e52484a..0864b7b6170 100644 --- a/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp +++ b/ydb/library/yql/providers/pq/provider/yql_pq_topic_key_parser.cpp @@ -21,19 +21,40 @@ TTopicKeyParser::TTopicKeyParser(const TExprNode& expr, TExprNode::TPtr readSett } bool TTopicKeyParser::Parse(const TExprNode& expr, TExprNode::TPtr readSettings, TExprContext& ctx) { - if (expr.IsCallable("MrTableConcat")) { - return TryParseKey(expr.Head(), ctx); + if (readSettings && expr.IsCallable("MrObject")) { // todo: remove MrObject support + return TryParseObject(expr, readSettings); + } + + if (!expr.IsCallable("MrTableConcat") && !expr.IsCallable(NNodes::TCoKey::CallableName())) { + ctx.AddError(TIssue(ctx.GetPosition(expr.Pos()), "Expected MrTableConcat or Key")); + return false; } if (expr.IsCallable(NNodes::TCoKey::CallableName())) { return TryParseKey(expr, ctx); } - if (readSettings && expr.IsCallable("MrObject")) { - return TryParseObject(expr, readSettings); + if (readSettings) { + for (auto i = 0U; i < readSettings->ChildrenSize(); ++i) { + if (readSettings->Child(i)->Head().IsAtom("userschema")) { + UserSchema = readSettings->Child(i)->ChildPtr(1); + if (readSettings->Child(i)->ChildrenSize() > 2) { + ColumnOrder = readSettings->Child(i)->TailPtr(); + } + continue; + } + if (readSettings->Child(i)->Head().IsAtom("format")) { + Format = readSettings->Child(i)->Child(1)->Content(); + continue; + } + if (readSettings->Child(i)->Head().IsAtom("compression")) { + Compression = readSettings->Child(i)->Child(1)->Content(); + continue; + } + } } - ctx.AddError(TIssue(ctx.GetPosition(expr.Pos()), "Expected MrTableConcat or Key or MrObject")); - return false; + + return TryParseKey(expr.Head(), ctx); } bool TTopicKeyParser::TryParseKey(const TExprNode& expr, TExprContext& ctx) { |