diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2023-11-12 21:25:31 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2023-11-12 21:39:54 +0300 |
commit | d28c55ab25cc8cedab8a5f4736c0d66e88b3da95 (patch) | |
tree | 73d373709b74fa2baaa4fe02a40a77c0a5baf6b7 /yt/yql/plugin | |
parent | 35b17f4f3b6e0ed855e7e47d3f1eb57470388a2c (diff) | |
download | ydb-d28c55ab25cc8cedab8a5f4736c0d66e88b3da95.tar.gz |
Intermediate changes
Diffstat (limited to 'yt/yql/plugin')
-rw-r--r-- | yt/yql/plugin/bridge/interface.h | 13 | ||||
-rw-r--r-- | yt/yql/plugin/bridge/plugin.cpp | 5 | ||||
-rw-r--r-- | yt/yql/plugin/dynamic/dylib.exports | 1 | ||||
-rw-r--r-- | yt/yql/plugin/dynamic/impl.cpp | 16 | ||||
-rw-r--r-- | yt/yql/plugin/native/CMakeLists.darwin-x86_64.txt | 2 | ||||
-rw-r--r-- | yt/yql/plugin/native/CMakeLists.linux-aarch64.txt | 2 | ||||
-rw-r--r-- | yt/yql/plugin/native/CMakeLists.linux-x86_64.txt | 2 | ||||
-rw-r--r-- | yt/yql/plugin/native/CMakeLists.windows-x86_64.txt | 2 | ||||
-rw-r--r-- | yt/yql/plugin/native/plugin.cpp | 9 | ||||
-rw-r--r-- | yt/yql/plugin/native/ya.make | 1 | ||||
-rw-r--r-- | yt/yql/plugin/plugin.h | 4 |
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; |