aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2023-11-23 12:11:32 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2023-11-23 13:02:05 +0300
commit9201d0db8fffd56fed895bb7dc4e747dba1d0952 (patch)
tree013c38f07183a73acc38deee949011fb2c40de74
parent84dae038d8c9caf41667706b01c3785c5ae27242 (diff)
downloadydb-9201d0db8fffd56fed895bb7dc4e747dba1d0952.tar.gz
Intermediate changes
-rw-r--r--yt/yql/plugin/bridge/interface.h6
-rw-r--r--yt/yql/plugin/bridge/plugin.cpp15
-rw-r--r--yt/yql/plugin/bridge/ya.make1
-rw-r--r--yt/yql/plugin/dynamic/dylib.exports2
-rw-r--r--yt/yql/plugin/dynamic/impl.cpp4
-rw-r--r--yt/yql/plugin/plugin.h2
6 files changed, 16 insertions, 14 deletions
diff --git a/yt/yql/plugin/bridge/interface.h b/yt/yql/plugin/bridge/interface.h
index 0b1b82f7b5..4905264965 100644
--- a/yt/yql/plugin/bridge/interface.h
+++ b/yt/yql/plugin/bridge/interface.h
@@ -10,14 +10,12 @@
////////////////////////////////////////////////////////////////////////////////
// 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();
+using TFuncBridgeGetAbiVersion = ssize_t();
////////////////////////////////////////////////////////////////////////////////
struct TBridgeYqlPluginOptions
{
- ssize_t RequiredABIVersion;
-
const char* SingletonsConfig = nullptr;
ssize_t SingletonsConfigLength = 0;
@@ -96,6 +94,6 @@ using TFuncBridgeGetProgress = TBridgeQueryResult*(TBridgeYqlPlugin* plugin, con
XX(BridgeFreeQueryResult) \
XX(BridgeRun) \
XX(BridgeGetProgress) \
- XX(BridgeGetABIVersion)
+ XX(BridgeGetAbiVersion)
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yql/plugin/bridge/plugin.cpp b/yt/yql/plugin/bridge/plugin.cpp
index 5b00db4a08..0bc72592cf 100644
--- a/yt/yql/plugin/bridge/plugin.cpp
+++ b/yt/yql/plugin/bridge/plugin.cpp
@@ -3,10 +3,10 @@
#include "interface.h"
#include <yt/yql/plugin/plugin.h>
-#include <util/system/dynlib.h>
-#include <vector>
-#include <optional>
+#include <yt/yt/core/misc/error.h>
+
+#include <util/system/dynlib.h>
namespace NYT::NYqlPlugin {
namespace NBridge {
@@ -27,6 +27,10 @@ std::optional<TString> ToString(const char* str, size_t strLength)
////////////////////////////////////////////////////////////////////////////////
+const auto RequiredAbiVersion = 0;
+
+////////////////////////////////////////////////////////////////////////////////
+
class TDynamicYqlPlugin
{
public:
@@ -38,6 +42,10 @@ public:
#define XX(function) function = reinterpret_cast<TFunc ## function*>(Library_.Sym(#function));
FOR_EACH_BRIDGE_INTERFACE_FUNCTION(XX);
#undef XX
+
+ if (RequiredAbiVersion != BridgeGetAbiVersion()) {
+ THROW_ERROR_EXCEPTION("YQL plugin ABI version mismatch; expected version %v, actual version %v", RequiredAbiVersion, BridgeGetAbiVersion());
+ }
}
protected:
@@ -61,7 +69,6 @@ public:
TString singletonsConfig = options.SingletonsConfig ? options.SingletonsConfig.ToString() : "{}";
TBridgeYqlPluginOptions bridgeOptions {
- .RequiredABIVersion = options.RequiredABIVersion,
.SingletonsConfig = singletonsConfig.data(),
.SingletonsConfigLength = static_cast<int>(singletonsConfig.size()),
.GatewayConfig = options.GatewayConfig.AsStringBuf().Data(),
diff --git a/yt/yql/plugin/bridge/ya.make b/yt/yql/plugin/bridge/ya.make
index 93425c5284..3f2bc1fe04 100644
--- a/yt/yql/plugin/bridge/ya.make
+++ b/yt/yql/plugin/bridge/ya.make
@@ -6,6 +6,7 @@ SRCS(
PEERDIR(
yt/yql/plugin
+ yt/yt/core
)
END()
diff --git a/yt/yql/plugin/dynamic/dylib.exports b/yt/yql/plugin/dynamic/dylib.exports
index b979ce7e18..e4dd9fc44e 100644
--- a/yt/yql/plugin/dynamic/dylib.exports
+++ b/yt/yql/plugin/dynamic/dylib.exports
@@ -4,7 +4,7 @@ BridgeFreeYqlPlugin
BridgeFreeQueryResult
BridgeRun
BridgeGetProgress
-BridgeGetABIVersion
+BridgeGetAbiVersion
# YQL <-> YQL UDFs interface.
UdfAllocateWithSize
diff --git a/yt/yql/plugin/dynamic/impl.cpp b/yt/yql/plugin/dynamic/impl.cpp
index af1989d97c..aba5a5bc66 100644
--- a/yt/yql/plugin/dynamic/impl.cpp
+++ b/yt/yql/plugin/dynamic/impl.cpp
@@ -10,15 +10,13 @@ extern "C" {
////////////////////////////////////////////////////////////////////////////////
-ssize_t BridgeGetABIVersion()
+ssize_t BridgeGetAbiVersion()
{
return 0;
}
TBridgeYqlPlugin* BridgeCreateYqlPlugin(const TBridgeYqlPluginOptions* bridgeOptions)
{
- YT_VERIFY(bridgeOptions->RequiredABIVersion == BridgeGetABIVersion());
-
static const TYsonString EmptyMap = TYsonString(TString("{}"));
auto operationAttributes = bridgeOptions->OperationAttributes
diff --git a/yt/yql/plugin/plugin.h b/yt/yql/plugin/plugin.h
index f34e0ef070..9c9cc50798 100644
--- a/yt/yql/plugin/plugin.h
+++ b/yt/yql/plugin/plugin.h
@@ -26,8 +26,6 @@ using TQueryId = TGuid;
class TYqlPluginOptions
{
public:
- int RequiredABIVersion;
-
TYsonString SingletonsConfig;
TYsonString GatewayConfig;
TYsonString FileStorageConfig;