Skip to content

Commit ce05e07

Browse files
committed
Update implementation of custom query executor
1 parent c18b626 commit ce05e07

File tree

6 files changed

+217
-221
lines changed

6 files changed

+217
-221
lines changed

jdbc/src/main/java/tech/ydb/jdbc/context/QueryServiceExecutor.java

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import tech.ydb.jdbc.impl.YdbStaticResultSet;
2424
import tech.ydb.jdbc.query.QueryType;
2525
import tech.ydb.jdbc.query.YdbQuery;
26+
import tech.ydb.jdbc.settings.YdbOperationProperties;
2627
import tech.ydb.query.QueryClient;
2728
import tech.ydb.query.QuerySession;
2829
import tech.ydb.query.QueryStream;
@@ -42,27 +43,28 @@
4243
* @author Aleksandr Gorshenin
4344
*/
4445
public class QueryServiceExecutor extends BaseYdbExecutor {
45-
protected final Duration sessionTimeout;
46-
protected final QueryClient queryClient;
46+
private final Duration sessionTimeout;
47+
private final QueryClient queryClient;
4748
private final boolean useStreamResultSet;
4849

49-
protected int transactionLevel;
50-
protected boolean isReadOnly;
51-
protected boolean isAutoCommit;
52-
protected TxMode txMode;
50+
private int transactionLevel;
51+
private boolean isReadOnly;
52+
private boolean isAutoCommit;
53+
private TxMode txMode;
5354

54-
protected final AtomicReference<QueryTransaction> tx = new AtomicReference<>();
55-
protected volatile boolean isClosed;
55+
private final AtomicReference<QueryTransaction> tx = new AtomicReference<>();
56+
private volatile boolean isClosed;
5657

57-
public QueryServiceExecutor(YdbContext ctx, int transactionLevel, boolean autoCommit) throws SQLException {
58+
public QueryServiceExecutor(YdbContext ctx) throws SQLException {
5859
super(ctx);
59-
this.sessionTimeout = ctx.getOperationProperties().getSessionTimeout();
60+
YdbOperationProperties options = ctx.getOperationProperties();
61+
this.sessionTimeout = options.getSessionTimeout();
6062
this.queryClient = ctx.getQueryClient();
61-
this.useStreamResultSet = ctx.getOperationProperties().getUseStreamResultSets();
63+
this.useStreamResultSet = options.getUseStreamResultSets();
6264

63-
this.transactionLevel = transactionLevel;
65+
this.transactionLevel = options.getTransactionLevel();
66+
this.isAutoCommit = options.isAutoCommit();
6467
this.isReadOnly = transactionLevel != Connection.TRANSACTION_SERIALIZABLE;
65-
this.isAutoCommit = autoCommit;
6668
this.txMode = txMode(transactionLevel, isReadOnly);
6769
this.isClosed = false;
6870
}
@@ -179,22 +181,26 @@ public void commit(YdbContext ctx, YdbValidator validator) throws SQLException {
179181
return;
180182
}
181183

182-
YdbTracer tracer = ctx.getTracer();
183-
tracer.trace("--> commit");
184-
tracer.query(null);
185-
186-
CommitTransactionSettings settings = ctx.withRequestTimeout(CommitTransactionSettings.newBuilder()).build();
187184
try {
188-
validator.clearWarnings();
189-
validator.call("Commit TxId: " + localTx.getId(), tracer, () -> localTx.commit(settings));
185+
commitImpl(ctx, validator, localTx);
190186
} finally {
191187
if (tx.compareAndSet(localTx, null)) {
192188
localTx.getSession().close();
193189
}
194-
tracer.close();
190+
ctx.getTracer().close();
195191
}
196192
}
197193

194+
protected void commitImpl(YdbContext ctx, YdbValidator validator, QueryTransaction tx) throws SQLException {
195+
YdbTracer tracer = ctx.getTracer();
196+
tracer.trace("--> commit");
197+
tracer.query(null);
198+
199+
CommitTransactionSettings settings = ctx.withRequestTimeout(CommitTransactionSettings.newBuilder()).build();
200+
validator.clearWarnings();
201+
validator.call("Commit TxId: " + tx.getId(), tracer, () -> tx.commit(settings));
202+
}
203+
198204
@Override
199205
public void rollback(YdbContext ctx, YdbValidator validator) throws SQLException {
200206
ensureOpened();
@@ -223,9 +229,8 @@ public void rollback(YdbContext ctx, YdbValidator validator) throws SQLException
223229
}
224230

225231
@Override
226-
public YdbQueryResult executeDataQuery(
227-
YdbStatement statement, YdbQuery query, String preparedYql, Params params, long timeout, boolean keepInCache
228-
) throws SQLException {
232+
public YdbQueryResult executeDataQuery(YdbStatement statement, YdbQuery query, String preparedYql, Params params,
233+
long timeout, boolean keepInCache) throws SQLException {
229234
ensureOpened();
230235

231236
YdbValidator validator = statement.getValidator();

jdbc/src/main/java/tech/ydb/jdbc/context/QueryServiceExecutorExt.java

Lines changed: 0 additions & 137 deletions
This file was deleted.

jdbc/src/main/java/tech/ydb/jdbc/context/TableServiceExecutor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import tech.ydb.jdbc.impl.YdbStaticResultSet;
1616
import tech.ydb.jdbc.query.QueryType;
1717
import tech.ydb.jdbc.query.YdbQuery;
18+
import tech.ydb.jdbc.settings.YdbOperationProperties;
1819
import tech.ydb.table.Session;
1920
import tech.ydb.table.query.DataQueryResult;
2021
import tech.ydb.table.query.ExplainDataQueryResult;
@@ -35,10 +36,11 @@ public class TableServiceExecutor extends BaseYdbExecutor {
3536
private final boolean failOnTruncatedResult;
3637
private volatile TxState tx;
3738

38-
public TableServiceExecutor(YdbContext ctx, int transactionLevel, boolean autoCommit) throws SQLException {
39+
public TableServiceExecutor(YdbContext ctx) throws SQLException {
3940
super(ctx);
40-
this.tx = createTx(transactionLevel, autoCommit);
41-
this.failOnTruncatedResult = ctx.getOperationProperties().isFailOnTruncatedResult();
41+
YdbOperationProperties options = ctx.getOperationProperties();
42+
this.tx = createTx(options.getTransactionLevel(), options.isAutoCommit());
43+
this.failOnTruncatedResult = options.isFailOnTruncatedResult();
4244
}
4345

4446
@Override

0 commit comments

Comments
 (0)