@@ -8,6 +8,9 @@ using namespace NYT::NYson;
8
8
9
9
extern " C" {
10
10
11
+ #define FREE_STRING_FIELD (StringField ) delete[] result->StringField;
12
+ #define FILL_STRING_FIELD (StringField ) FillString(bridgeResult->StringField, bridgeResult->StringField##Length, result.StringField);
13
+
11
14
// //////////////////////////////////////////////////////////////////////////////
12
15
13
16
ssize_t BridgeGetAbiVersion ()
@@ -59,17 +62,14 @@ void BridgeFreeClustersResult(TBridgeClustersResult* result)
59
62
delete[] result->Clusters [i];
60
63
}
61
64
delete[] result->Clusters ;
62
- delete[] result->YsonError ;
65
+
66
+ FOR_EACH_BRIDGE_RESULT_STRING_FIELD (FREE_STRING_FIELD);
63
67
delete result;
64
68
}
65
69
66
70
void BridgeFreeQueryResult (TBridgeQueryResult* result)
67
71
{
68
- delete[] result->TaskInfo ;
69
- delete[] result->Statistics ;
70
- delete[] result->Plan ;
71
- delete[] result->YsonResult ;
72
- delete[] result->YsonError ;
72
+ FOR_EACH_QUERY_RESULT_STRING_FIELD (FREE_STRING_FIELD);
73
73
delete result;
74
74
}
75
75
@@ -97,7 +97,7 @@ TBridgeClustersResult* BridgeGetUsedClusters(
97
97
static const auto EmptyMap = TYsonString (TString (" {}" ));
98
98
99
99
auto * nativePlugin = reinterpret_cast <IYqlPlugin*>(plugin);
100
- auto * bridgeClustersResult = new TBridgeClustersResult;
100
+ auto * bridgeResult = new TBridgeClustersResult;
101
101
102
102
std::vector<TQueryFile> files (bridgeFileCount);
103
103
for (int index = 0 ; index < bridgeFileCount; index++) {
@@ -109,21 +109,21 @@ TBridgeClustersResult* BridgeGetUsedClusters(
109
109
});
110
110
}
111
111
112
- auto clustersResult = nativePlugin->GetUsedClusters (
112
+ auto result = nativePlugin->GetUsedClusters (
113
113
TString (queryText),
114
114
settings ? TYsonString (TString (settings, settingsLength)) : EmptyMap,
115
115
files);
116
116
117
- bridgeClustersResult ->Clusters = new const char *[clustersResult .Clusters .size ()];
118
- for (size_t i = 0 ; i < clustersResult .Clusters .size (); i++) {
117
+ bridgeResult ->Clusters = new const char *[result .Clusters .size ()];
118
+ for (size_t i = 0 ; i < result .Clusters .size (); i++) {
119
119
ssize_t clusterLength;
120
- FillString (bridgeClustersResult ->Clusters [i], clusterLength, clustersResult .Clusters [i]);
120
+ FillString (bridgeResult ->Clusters [i], clusterLength, result .Clusters [i]);
121
121
}
122
- bridgeClustersResult ->ClusterCount = clustersResult .Clusters .size ();
122
+ bridgeResult ->ClusterCount = result .Clusters .size ();
123
123
124
- FillString (bridgeClustersResult-> YsonError , bridgeClustersResult-> YsonErrorLength , clustersResult. YsonError );
124
+ FOR_EACH_BRIDGE_RESULT_STRING_FIELD (FILL_STRING_FIELD );
125
125
126
- return bridgeClustersResult ;
126
+ return bridgeResult ;
127
127
}
128
128
129
129
TBridgeQueryResult* BridgeRun (
@@ -161,12 +161,7 @@ TBridgeQueryResult* BridgeRun(
161
161
settings ? TYsonString (TString (settings, settingsLength)) : EmptyMap,
162
162
files,
163
163
executeMode);
164
- FillString (bridgeResult->YsonResult , bridgeResult->YsonResultLength , result.YsonResult );
165
- FillString (bridgeResult->Plan , bridgeResult->PlanLength , result.Plan );
166
- FillString (bridgeResult->Statistics , bridgeResult->StatisticsLength , result.Statistics );
167
- FillString (bridgeResult->Progress , bridgeResult->ProgressLength , result.Progress );
168
- FillString (bridgeResult->TaskInfo , bridgeResult->TaskInfoLength , result.TaskInfo );
169
- FillString (bridgeResult->YsonError , bridgeResult->YsonErrorLength , result.YsonError );
164
+ FOR_EACH_QUERY_RESULT_STRING_FIELD (FILL_STRING_FIELD);
170
165
171
166
return bridgeResult;
172
167
}
@@ -177,8 +172,7 @@ TBridgeQueryResult* BridgeGetProgress(TBridgeYqlPlugin* plugin, const char* quer
177
172
auto * bridgeResult = new TBridgeQueryResult;
178
173
179
174
auto result = nativePlugin->GetProgress (NYT::TGuid::FromString (queryId));
180
- FillString (bridgeResult->Plan , bridgeResult->PlanLength , result.Plan );
181
- FillString (bridgeResult->Progress , bridgeResult->ProgressLength , result.Progress );
175
+ FOR_EACH_QUERY_RESULT_STRING_FIELD (FILL_STRING_FIELD);
182
176
183
177
return bridgeResult;
184
178
}
@@ -189,14 +183,14 @@ TBridgeAbortResult* BridgeAbort(TBridgeYqlPlugin* plugin, const char* queryId)
189
183
auto * bridgeResult = new TBridgeAbortResult;
190
184
191
185
auto result = nativePlugin->Abort (NYT::TGuid::FromString (queryId));
192
- FillString (bridgeResult-> YsonError , bridgeResult-> YsonErrorLength , result. YsonError );
186
+ FOR_EACH_ABORT_RESULT_STRING_FIELD (FILL_STRING_FIELD );
193
187
194
188
return bridgeResult;
195
189
}
196
190
197
191
void BridgeFreeAbortResult (TBridgeAbortResult* result)
198
192
{
199
- delete[] result-> YsonError ;
193
+ FOR_EACH_ABORT_RESULT_STRING_FIELD (FREE_STRING_FIELD) ;
200
194
delete result;
201
195
}
202
196
0 commit comments