@@ -179,6 +179,72 @@ Y_UNIT_TEST_SUITE(KqpQuery) {
179
179
UNIT_ASSERT_VALUES_EQUAL (counters.RecompileRequestGet ()->Val (), 1 );
180
180
}
181
181
182
+ Y_UNIT_TEST (ExecuteDataQueryCollectFullDiagnostics) {
183
+ auto setting = NKikimrKqp::TKqpSetting ();
184
+ auto serverSettings = TKikimrSettings ()
185
+ .SetKqpSettings ({setting});
186
+
187
+ TKikimrRunner kikimr (serverSettings);
188
+ auto db = kikimr.GetTableClient ();
189
+ auto session = db.CreateSession ().GetValueSync ().GetSession ();
190
+
191
+ {
192
+ UNIT_ASSERT (session.ExecuteSchemeQuery (R"(
193
+ CREATE TABLE `/Root/TestTable` (
194
+ Key Uint64,
195
+ Value String,
196
+ PRIMARY KEY (Key)
197
+ );
198
+ )" ).GetValueSync ().IsSuccess ());
199
+ }
200
+
201
+ {
202
+ const TString query (Q1_ (R"(
203
+ SELECT * FROM `/Root/TestTable`;
204
+ )" ));
205
+
206
+ {
207
+ auto settings = TExecDataQuerySettings ();
208
+ settings.CollectFullDiagnostics (true );
209
+
210
+ auto result = session.ExecuteDataQuery (query, TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
211
+
212
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ().c_str ());
213
+
214
+ UNIT_ASSERT_C (!result.GetDiagnostics ().empty (), " Query result diagnostics is empty" );
215
+
216
+ TStringStream in;
217
+ in << result.GetDiagnostics ();
218
+ NJson::TJsonValue value;
219
+ ReadJsonTree (&in, &value);
220
+
221
+ UNIT_ASSERT_C (value.IsMap (), " Incorrect Diagnostics" );
222
+ UNIT_ASSERT_C (value.Has (" query_id" ), " Incorrect Diagnostics" );
223
+ UNIT_ASSERT_C (value.Has (" version" ), " Incorrect Diagnostics" );
224
+ UNIT_ASSERT_C (value.Has (" query_text" ), " Incorrect Diagnostics" );
225
+ UNIT_ASSERT_C (value.Has (" query_parameter_types" ), " Incorrect Diagnostics" );
226
+ UNIT_ASSERT_C (value.Has (" table_metadata" ), " Incorrect Diagnostics" );
227
+ UNIT_ASSERT_C (value[" table_metadata" ].IsArray (), " Incorrect Diagnostics: table_metadata type should be an array" );
228
+ UNIT_ASSERT_C (value.Has (" created_at" ), " Incorrect Diagnostics" );
229
+ UNIT_ASSERT_C (value.Has (" query_syntax" ), " Incorrect Diagnostics" );
230
+ UNIT_ASSERT_C (value.Has (" query_database" ), " Incorrect Diagnostics" );
231
+ UNIT_ASSERT_C (value.Has (" query_cluster" ), " Incorrect Diagnostics" );
232
+ UNIT_ASSERT_C (value.Has (" query_plan" ), " Incorrect Diagnostics" );
233
+ UNIT_ASSERT_C (value.Has (" query_type" ), " Incorrect Diagnostics" );
234
+ }
235
+
236
+ {
237
+ auto settings = TExecDataQuerySettings ();
238
+
239
+ auto result = session.ExecuteDataQuery (query, TTxControl::BeginTx ().CommitTx (), settings).ExtractValueSync ();
240
+
241
+ UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ().c_str ());
242
+
243
+ UNIT_ASSERT_C (result.GetDiagnostics ().empty (), " Query result diagnostics should be empty, but it's not" );
244
+ }
245
+ }
246
+ }
247
+
182
248
Y_UNIT_TEST (QueryCachePermissionsLoss) {
183
249
TKikimrRunner kikimr;
184
250
auto db = kikimr.GetTableClient ();
0 commit comments