summaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-09-22 10:42:28 +0300
committervvvv <[email protected]>2025-09-22 11:19:58 +0300
commitc3b1ec6787697f6bfd4e9af60e6535d6bd7448db (patch)
treee839795d8631215910f96053df586e267b66f65d /yql/essentials/sql
parent6153345dae69e862003993069afe458677cd432a (diff)
YQL-20339 expr low level funcs
init commit_hash:ededd246fa929931de6e89fd5f809157d9fe4d16
Diffstat (limited to 'yql/essentials/sql')
-rw-r--r--yql/essentials/sql/v1/builtin.cpp19
-rw-r--r--yql/essentials/sql/v1/list_builtin.cpp44
-rw-r--r--yql/essentials/sql/v1/list_builtin.h29
3 files changed, 92 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/builtin.cpp b/yql/essentials/sql/v1/builtin.cpp
index 52504f88523..234282d4945 100644
--- a/yql/essentials/sql/v1/builtin.cpp
+++ b/yql/essentials/sql/v1/builtin.cpp
@@ -3076,6 +3076,25 @@ struct TBuiltinFuncData {
{"dictlookup", {"DictLookup", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Lookup", 2, 2) }},
{"dictcontains", {"DictContains", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("Contains", 2, 2)}},
+ {"todynamiclinear", {"ToDynamicLinear", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("ToDynamicLinear", 1, 1) }},
+ {"fromdynamiclinear", {"FromDynamicLinear", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromDynamicLinear", 1, 1) }},
+ // MutDict builtins
+ {"mutdictcreate", {"MutDictCreate", "Normal", BuildSimpleBuiltinFactoryCallback<TMutDictCreateBuiltin>()}},
+ {"tomutdict", {"ToMutDict", "Normal", BuildSimpleBuiltinFactoryCallback<TToMutDictBuiltin>()}},
+ {"frommutdict", {"FromMutDict", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("FromMutDict", 1, 1)}},
+ {"mutdictinsert", {"MutDictInsert", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictInsert", 3, 3)}},
+ {"mutdictupsert", {"MutDictUpsert", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictUpsert", 3, 3)}},
+ {"mutdictupdate", {"MutDictUpdate", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictUpdate", 3, 3)}},
+ {"mutdictremove", {"MutDictRemove", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictRemove", 2, 2)}},
+ {"mutdictpop", {"MutDictPop", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictPop", 2, 2)}},
+ {"mutdictcontains", {"MutDictContains", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictContains", 2, 2)}},
+ {"mutdictlookup", {"MutDictLookup", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictLookup", 2, 2)}},
+ {"mutdicthasitems", {"MutDictHasItems", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictHasItems", 1, 1)}},
+ {"mutdictlength", {"MutDictLength", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictLength", 1, 1)}},
+ {"mutdictitems", {"MutDictItems", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictItems", 1, 1)}},
+ {"mutdictkeys", {"MutDictKeys", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictKeys", 1, 1)}},
+ {"mutdictpayloads", {"MutDictPayloads", "Normal", BuildNamedArgcBuiltinFactoryCallback<TCallNodeImpl>("MutDictPayloads", 1, 1)}},
+
// Atom builtins
{"asatom", {"AsAtom", "Normal", BuildSimpleBuiltinFactoryCallback<TYqlAsAtom>()}},
{"secureparam", {"SecureParam", "Normal", BuildNamedBuiltinFactoryCallback<TYqlAtom>("SecureParam")}},
diff --git a/yql/essentials/sql/v1/list_builtin.cpp b/yql/essentials/sql/v1/list_builtin.cpp
index a6965a70755..b1ba690dcde 100644
--- a/yql/essentials/sql/v1/list_builtin.cpp
+++ b/yql/essentials/sql/v1/list_builtin.cpp
@@ -139,4 +139,48 @@ void TSetCreateBuiltin::DoUpdateState() const {
State_.Set(ENodeState::Const);
}
+bool TMutDictCreateBuiltin::DoInit(TContext& ctx, ISource* src) {
+ if (Args_.size() < 3) {
+ ctx.Error(Pos_) << OpName_ << " requires at least 3 parameters";
+ return false;
+ }
+
+ for (ui32 i = 0; i < Args_.size(); ++i) {
+ if (!Args_[i]->Init(ctx, src)) {
+ return false;
+ }
+ }
+
+ Node_ = Y("MutDictCreate", Y("DictType", Args_[0], Args_[1]));
+ for (ui32 i = 2; i < Args_.size(); ++i) {
+ Node_ = L(Node_, Y("DependsOn", Args_[i]));
+ }
+
+ return true;
+}
+
+void TMutDictCreateBuiltin::DoUpdateState() const {
+ State_.Set(ENodeState::Const);
+}
+
+bool TToMutDictBuiltin::DoInit(TContext& ctx, ISource* src) {
+ if (Args_.size() < 2) {
+ ctx.Error(Pos_) << OpName_ << " requires at least 2 parameters";
+ return false;
+ }
+
+ for (ui32 i = 0; i < Args_.size(); ++i) {
+ if (!Args_[i]->Init(ctx, src)) {
+ return false;
+ }
+ }
+
+ Node_ = Y("ToMutDict", Args_[0]);
+ for (ui32 i = 1; i < Args_.size(); ++i) {
+ Node_ = L(Node_, Y("DependsOn", Args_[i]));
+ }
+
+ return true;
+}
+
} // namespace NSQLTranslationV1
diff --git a/yql/essentials/sql/v1/list_builtin.h b/yql/essentials/sql/v1/list_builtin.h
index 92961e2840d..d4e11e4951c 100644
--- a/yql/essentials/sql/v1/list_builtin.h
+++ b/yql/essentials/sql/v1/list_builtin.h
@@ -157,4 +157,33 @@ public:
}
};
+class TMutDictCreateBuiltin final: public TListBuiltin {
+public:
+ TMutDictCreateBuiltin(TPosition pos,
+ const TVector<TNodePtr>& args)
+ : TListBuiltin(pos, "MutDictCreate", args)
+ {}
+
+ bool DoInit(TContext& ctx, ISource* src) override;
+ void DoUpdateState() const override;
+
+ TNodePtr DoClone() const final {
+ return new TMutDictCreateBuiltin(Pos_, CloneContainer(Args_));
+ }
+};
+
+class TToMutDictBuiltin final: public TListBuiltin {
+public:
+ TToMutDictBuiltin(TPosition pos,
+ const TVector<TNodePtr>& args)
+ : TListBuiltin(pos, "ToMutDict", args)
+ {}
+
+ bool DoInit(TContext& ctx, ISource* src) override;
+
+ TNodePtr DoClone() const final {
+ return new TToMutDictBuiltin(Pos_, CloneContainer(Args_));
+ }
+};
+
} // namespace NSQLTranslationV1