aboutsummaryrefslogtreecommitdiffstats
path: root/yt/yql/plugin
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2023-11-12 21:25:31 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2023-11-12 21:39:54 +0300
commitd28c55ab25cc8cedab8a5f4736c0d66e88b3da95 (patch)
tree73d373709b74fa2baaa4fe02a40a77c0a5baf6b7 /yt/yql/plugin
parent35b17f4f3b6e0ed855e7e47d3f1eb57470388a2c (diff)
downloadydb-d28c55ab25cc8cedab8a5f4736c0d66e88b3da95.tar.gz
Intermediate changes
Diffstat (limited to 'yt/yql/plugin')
-rw-r--r--yt/yql/plugin/bridge/interface.h13
-rw-r--r--yt/yql/plugin/bridge/plugin.cpp5
-rw-r--r--yt/yql/plugin/dynamic/dylib.exports1
-rw-r--r--yt/yql/plugin/dynamic/impl.cpp16
-rw-r--r--yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt2
-rw-r--r--yt/yql/plugin/native/CMakeLists.linux-aarch64.txt2
-rw-r--r--yt/yql/plugin/native/CMakeLists.linux-x86_64.txt2
-rw-r--r--yt/yql/plugin/native/CMakeLists.windows-x86_64.txt2
-rw-r--r--yt/yql/plugin/native/plugin.cpp9
-rw-r--r--yt/yql/plugin/native/ya.make1
-rw-r--r--yt/yql/plugin/plugin.h4
11 files changed, 54 insertions, 3 deletions
diff --git a/yt/yql/plugin/bridge/interface.h b/yt/yql/plugin/bridge/interface.h
index 08e765b3d0..ba08b657aa 100644
--- a/yt/yql/plugin/bridge/interface.h
+++ b/yt/yql/plugin/bridge/interface.h
@@ -9,8 +9,18 @@
////////////////////////////////////////////////////////////////////////////////
+// NB(mpereskokova): don't forget to update min_required_abi_version at yt/yql/agent/config.cpp and abi_version in yt/yql/plugin/dynamic/impl.cpp during breaking changes
+using TFuncBridgeGetABIVersion = ssize_t();
+
+////////////////////////////////////////////////////////////////////////////////
+
struct TBridgeYqlPluginOptions
{
+ ssize_t RequiredABIVersion;
+
+ const char* SingletonsConfig;
+ ssize_t SingletonsConfigLength;
+
const char* MRJobBinary;
const char* UdfDirectory;
@@ -95,6 +105,7 @@ using TFuncBridgeGetProgress = TBridgeQueryResult*(TBridgeYqlPlugin* plugin, con
XX(BridgeFreeYqlPlugin) \
XX(BridgeFreeQueryResult) \
XX(BridgeRun) \
- XX(BridgeGetProgress)
+ XX(BridgeGetProgress) \
+ XX(BridgeGetABIVersion)
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yql/plugin/bridge/plugin.cpp b/yt/yql/plugin/bridge/plugin.cpp
index 18e2e9e639..5c461616e9 100644
--- a/yt/yql/plugin/bridge/plugin.cpp
+++ b/yt/yql/plugin/bridge/plugin.cpp
@@ -72,7 +72,12 @@ public:
? options.DefaultCluster->data()
: nullptr;
+ TString singletonsConfig = options.SingletonsConfig ? options.SingletonsConfig.ToString() : "{}";
+
TBridgeYqlPluginOptions bridgeOptions {
+ .RequiredABIVersion = options.RequiredABIVersion,
+ .SingletonsConfig = singletonsConfig.data(),
+ .SingletonsConfigLength = static_cast<int>(singletonsConfig.size()),
.MRJobBinary = options.MRJobBinary.data(),
.UdfDirectory = options.UdfDirectory.data(),
.ClusterCount = ssize(bridgeClusters),
diff --git a/yt/yql/plugin/dynamic/dylib.exports b/yt/yql/plugin/dynamic/dylib.exports
index fc77529eaf..b979ce7e18 100644
--- a/yt/yql/plugin/dynamic/dylib.exports
+++ b/yt/yql/plugin/dynamic/dylib.exports
@@ -4,6 +4,7 @@ BridgeFreeYqlPlugin
BridgeFreeQueryResult
BridgeRun
BridgeGetProgress
+BridgeGetABIVersion
# YQL <-> YQL UDFs interface.
UdfAllocateWithSize
diff --git a/yt/yql/plugin/dynamic/impl.cpp b/yt/yql/plugin/dynamic/impl.cpp
index 5966a8a8ec..6beb5bf8c2 100644
--- a/yt/yql/plugin/dynamic/impl.cpp
+++ b/yt/yql/plugin/dynamic/impl.cpp
@@ -10,8 +10,17 @@ extern "C" {
////////////////////////////////////////////////////////////////////////////////
+ssize_t BridgeGetABIVersion()
+{
+ return 0;
+}
+
TBridgeYqlPlugin* BridgeCreateYqlPlugin(const TBridgeYqlPluginOptions* bridgeOptions)
{
+ YT_VERIFY(bridgeOptions->RequiredABIVersion == BridgeGetABIVersion());
+
+ static const TYsonString EmptyMap = TYsonString(TString("{}"));
+
THashMap<TString, TString> clusters;
for (auto clusterIndex = 0; clusterIndex < bridgeOptions->ClusterCount; ++clusterIndex) {
const auto& Cluster = bridgeOptions->Clusters[clusterIndex];
@@ -20,9 +29,14 @@ TBridgeYqlPlugin* BridgeCreateYqlPlugin(const TBridgeYqlPluginOptions* bridgeOpt
auto operationAttributes = bridgeOptions->OperationAttributes
? TYsonString(TString(bridgeOptions->OperationAttributes, bridgeOptions->OperationAttributesLength))
- : TYsonString();
+ : EmptyMap;
+
+ auto singletonsConfig = bridgeOptions->SingletonsConfig
+ ? TYsonString(TString(bridgeOptions->SingletonsConfig, bridgeOptions->SingletonsConfigLength))
+ : EmptyMap;
TYqlPluginOptions options{
+ .SingletonsConfig = singletonsConfig,
.MRJobBinary = TString(bridgeOptions->MRJobBinary),
.UdfDirectory = TString(bridgeOptions->UdfDirectory),
.Clusters = std::move(clusters),
diff --git a/yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt b/yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt
index 7c002160ee..04a6b539a5 100644
--- a/yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt
+++ b/yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt
@@ -20,6 +20,7 @@ target_link_libraries(yql-plugin-native PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
@@ -65,6 +66,7 @@ target_link_libraries(yql-plugin-native.global PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
diff --git a/yt/yql/plugin/native/CMakeLists.linux-aarch64.txt b/yt/yql/plugin/native/CMakeLists.linux-aarch64.txt
index b85008e3c5..b9ac27203c 100644
--- a/yt/yql/plugin/native/CMakeLists.linux-aarch64.txt
+++ b/yt/yql/plugin/native/CMakeLists.linux-aarch64.txt
@@ -21,6 +21,7 @@ target_link_libraries(yql-plugin-native PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
@@ -67,6 +68,7 @@ target_link_libraries(yql-plugin-native.global PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
diff --git a/yt/yql/plugin/native/CMakeLists.linux-x86_64.txt b/yt/yql/plugin/native/CMakeLists.linux-x86_64.txt
index b85008e3c5..b9ac27203c 100644
--- a/yt/yql/plugin/native/CMakeLists.linux-x86_64.txt
+++ b/yt/yql/plugin/native/CMakeLists.linux-x86_64.txt
@@ -21,6 +21,7 @@ target_link_libraries(yql-plugin-native PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
@@ -67,6 +68,7 @@ target_link_libraries(yql-plugin-native.global PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
diff --git a/yt/yql/plugin/native/CMakeLists.windows-x86_64.txt b/yt/yql/plugin/native/CMakeLists.windows-x86_64.txt
index 7c002160ee..04a6b539a5 100644
--- a/yt/yql/plugin/native/CMakeLists.windows-x86_64.txt
+++ b/yt/yql/plugin/native/CMakeLists.windows-x86_64.txt
@@ -20,6 +20,7 @@ target_link_libraries(yql-plugin-native PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
@@ -65,6 +66,7 @@ target_link_libraries(yql-plugin-native.global PUBLIC
cpp-yson-node
cpp-mapreduce-client
cpp-mapreduce-common
+ yt-library-program
library-yql-ast
yql-sql-pg
yql-parser-pg_wrapper
diff --git a/yt/yql/plugin/native/plugin.cpp b/yt/yql/plugin/native/plugin.cpp
index 9bb6c2261e..38ccbbdf3b 100644
--- a/yt/yql/plugin/native/plugin.cpp
+++ b/yt/yql/plugin/native/plugin.cpp
@@ -24,7 +24,11 @@
#include <ydb/library/yql/utils/log/log.h>
#include <ydb/library/yql/utils/backtrace/backtrace.h>
-#include <yt/cpp/mapreduce/interface/config.h>
+#include <yt/yt/core/ytree/convert.h>
+
+#include <yt/yt/library/program/config.h>
+#include <yt/yt/library/program/helpers.h>
+
#include <yt/cpp/mapreduce/interface/logging/logger.h>
#include <library/cpp/yt/threading/rw_spin_lock.h>
@@ -115,6 +119,9 @@ public:
TYqlPlugin(TYqlPluginOptions& options)
{
try {
+ auto singletonsConfig = NYTree::ConvertTo<TSingletonsConfigPtr>(options.SingletonsConfig);
+ ConfigureSingletons(singletonsConfig);
+
NYql::NLog::InitLogger(std::move(options.LogBackend));
auto& logger = NYql::NLog::YqlLogger();
diff --git a/yt/yql/plugin/native/ya.make b/yt/yql/plugin/native/ya.make
index 15f3851411..fe1a657c69 100644
--- a/yt/yql/plugin/native/ya.make
+++ b/yt/yql/plugin/native/ya.make
@@ -13,6 +13,7 @@ PEERDIR(
library/cpp/yson/node
yt/cpp/mapreduce/client
yt/cpp/mapreduce/common
+ yt/yt/library/program
ydb/library/yql/ast
ydb/library/yql/sql/pg
ydb/library/yql/parser/pg_wrapper
diff --git a/yt/yql/plugin/plugin.h b/yt/yql/plugin/plugin.h
index 2d2c45d54c..68b01da922 100644
--- a/yt/yql/plugin/plugin.h
+++ b/yt/yql/plugin/plugin.h
@@ -26,6 +26,10 @@ using TQueryId = TGuid;
class TYqlPluginOptions
{
public:
+ int RequiredABIVersion;
+
+ TYsonString SingletonsConfig;
+
TString MRJobBinary = "./mrjob";
TString UdfDirectory;