summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruzhas <[email protected]>2022-07-20 23:04:37 +0300
committeruzhas <[email protected]>2022-07-20 23:04:37 +0300
commit6b94014b1082ce9c3c702bdc7051efd00658da1b (patch)
tree045304b478b5a65d03a1ea5d25585cb5b3953c5b
parenta0d1b8fbd32f19cc0452eec48b3ec75fe1c6a5c7 (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.cpp33
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) {