1919import tech .ydb .jdbc .YdbConst ;
2020import tech .ydb .jdbc .YdbResultSet ;
2121import tech .ydb .jdbc .YdbStatement ;
22+ import tech .ydb .jdbc .YdbTracer ;
2223import tech .ydb .jdbc .exception .ExceptionFactory ;
2324import tech .ydb .jdbc .impl .YdbQueryResult ;
2425import tech .ydb .jdbc .impl .YdbStaticResultSet ;
@@ -187,14 +188,18 @@ public void commit(YdbContext ctx, YdbValidator validator) throws SQLException {
187188 return ;
188189 }
189190
191+ YdbTracer tracer = trace ("--> commit" );
190192 CommitTransactionSettings settings = ctx .withRequestTimeout (CommitTransactionSettings .newBuilder ()).build ();
191193 try {
192194 validator .clearWarnings ();
193- validator .call ("Commit TxId: " + localTx .getId (), () -> localTx .commit (settings ));
195+ validator .call ("Commit TxId: " + localTx .getId (), tracer , () -> localTx .commit (settings ));
194196 } finally {
195197 if (tx .compareAndSet (localTx , null )) {
196198 localTx .getSession ().close ();
197199 }
200+ if (tracer != null ) {
201+ tracer .close ();
202+ }
198203 }
199204 }
200205
@@ -207,16 +212,20 @@ public void rollback(YdbContext ctx, YdbValidator validator) throws SQLException
207212 return ;
208213 }
209214
215+ YdbTracer tracer = trace ("--> rollback" );
210216 RollbackTransactionSettings settings = ctx .withRequestTimeout (RollbackTransactionSettings .newBuilder ())
211217 .build ();
212218
213219 try {
214220 validator .clearWarnings ();
215- validator .execute ("Rollback TxId: " + localTx .getId (), () -> localTx .rollback (settings ));
221+ validator .execute ("Rollback TxId: " + localTx .getId (), tracer , () -> localTx .rollback (settings ));
216222 } finally {
217223 if (tx .compareAndSet (localTx , null )) {
218224 localTx .getSession ().close ();
219225 }
226+ if (tracer != null ) {
227+ tracer .close ();
228+ }
220229 }
221230 }
222231
@@ -246,8 +255,9 @@ public YdbQueryResult executeDataQuery(
246255 final QueryTransaction localTx = nextTx ;
247256
248257 if (useStreamResultSet ) {
258+ YdbTracer tracer = trace ("--> stream query >>\n " + yql );
249259 String msg = "STREAM_QUERY >>\n " + yql ;
250- StreamQueryResult lazy = validator .call (msg , () -> {
260+ StreamQueryResult lazy = validator .call (msg , null , () -> {
251261 final CompletableFuture <Result <StreamQueryResult >> future = new CompletableFuture <>();
252262 final QueryStream stream = localTx .createQuery (yql , isAutoCommit , params , settings );
253263 final StreamQueryResult result = new StreamQueryResult (msg , statement , query , stream ::cancel );
@@ -274,11 +284,27 @@ public void onNextPart(QueryResultPart part) {
274284 if (th != null ) {
275285 future .completeExceptionally (th );
276286 result .onStreamFinished (th );
287+ if (tracer != null ) {
288+ tracer .trace ("<-- " + th .getMessage ());
289+ if (localTx .isActive ()) {
290+ tracer .setId (localTx .getId ());
291+ } else {
292+ tracer .close ();
293+ }
294+ }
277295 }
278296 if (res != null ) {
279297 validator .addStatusIssues (res .getStatus ());
280298 future .complete (res .isSuccess () ? Result .success (result ) : Result .fail (res .getStatus ()));
281299 result .onStreamFinished (res .getStatus ());
300+ if (tracer != null ) {
301+ tracer .trace ("<-- " + res .getStatus ().toString ());
302+ if (localTx .isActive ()) {
303+ tracer .setId (localTx .getId ());
304+ } else {
305+ tracer .close ();
306+ }
307+ }
282308 }
283309 });
284310
@@ -288,8 +314,9 @@ public void onNextPart(QueryResultPart part) {
288314 return updateCurrentResult (lazy );
289315 }
290316
317+ YdbTracer tracer = trace ("--> data query >>\n " + yql );
291318 try {
292- QueryReader result = validator .call (QueryType .DATA_QUERY + " >>\n " + yql ,
319+ QueryReader result = validator .call (QueryType .DATA_QUERY + " >>\n " + yql , tracer ,
293320 () -> QueryReader .readFrom (localTx .createQuery (yql , isAutoCommit , params , settings ))
294321 );
295322 validator .addStatusIssues (result .getIssueList ());
@@ -305,6 +332,14 @@ public void onNextPart(QueryResultPart part) {
305332 localTx .getSession ().close ();
306333 }
307334 }
335+
336+ if (tracer != null ) {
337+ if (localTx .isActive ()) {
338+ tracer .setId (localTx .getId ());
339+ } else {
340+ tracer .close ();
341+ }
342+ }
308343 }
309344 }
310345
@@ -317,14 +352,20 @@ public YdbQueryResult executeSchemeQuery(YdbStatement statement, YdbQuery query)
317352 YdbValidator validator = statement .getValidator ();
318353
319354 // Scheme query does not affect transactions or result sets
355+ YdbTracer tracer = trace ("--> scheme query >>\n " + yql );
320356 ExecuteQuerySettings settings = ctx .withRequestTimeout (ExecuteQuerySettings .newBuilder ()).build ();
321357 try (QuerySession session = createNewQuerySession (validator )) {
322- validator .call (QueryType .SCHEME_QUERY + " >>\n " + yql , () -> session
358+ validator .call (QueryType .SCHEME_QUERY + " >>\n " + yql , tracer , () -> session
323359 .createQuery (yql , TxMode .NONE , Params .empty (), settings )
324360 .execute (new IssueHandler (validator ))
325361 );
362+ } finally {
363+ if (tracer != null && tx .get () == null ) {
364+ tracer .close ();
365+ }
326366 }
327367
368+
328369 return updateCurrentResult (new StaticQueryResult (query , Collections .emptyList ()));
329370 }
330371
@@ -340,9 +381,10 @@ public YdbQueryResult executeExplainQuery(YdbStatement statement, YdbQuery query
340381 ExecuteQuerySettings settings = ctx .withRequestTimeout (ExecuteQuerySettings .newBuilder ())
341382 .withExecMode (QueryExecMode .EXPLAIN )
342383 .build ();
384+ YdbTracer tracer = trace ("--> explain query >>\n " + yql );
343385
344386 try (QuerySession session = createNewQuerySession (validator )) {
345- QueryInfo res = validator .call (QueryType .EXPLAIN_QUERY + " >>\n " + yql , () -> session
387+ QueryInfo res = validator .call (QueryType .EXPLAIN_QUERY + " >>\n " + yql , tracer , () -> session
346388 .createQuery (yql , TxMode .NONE , Params .empty (), settings )
347389 .execute (new IssueHandler (validator ))
348390 );
@@ -354,6 +396,10 @@ public YdbQueryResult executeExplainQuery(YdbStatement statement, YdbQuery query
354396 return updateCurrentResult (
355397 new StaticQueryResult (statement , res .getStats ().getQueryAst (), res .getStats ().getQueryPlan ())
356398 );
399+ } finally {
400+ if (tracer != null && tx .get () == null ) {
401+ tracer .close ();
402+ }
357403 }
358404 }
359405
0 commit comments