|
5 | 5 | import java.sql.SQLFeatureNotSupportedException;
|
6 | 6 | import java.time.Duration;
|
7 | 7 | import java.util.ArrayList;
|
| 8 | +import java.util.Arrays; |
8 | 9 | import java.util.List;
|
9 | 10 | import java.util.concurrent.TimeUnit;
|
10 | 11 |
|
11 | 12 | import tech.ydb.common.transaction.TxMode;
|
| 13 | +import tech.ydb.core.Issue; |
12 | 14 | import tech.ydb.core.Result;
|
13 | 15 | import tech.ydb.core.UnexpectedResultException;
|
14 | 16 | import tech.ydb.jdbc.YdbConst;
|
|
17 | 19 | import tech.ydb.jdbc.query.YdbQuery;
|
18 | 20 | import tech.ydb.query.QueryClient;
|
19 | 21 | import tech.ydb.query.QuerySession;
|
| 22 | +import tech.ydb.query.QueryStream; |
20 | 23 | import tech.ydb.query.QueryTransaction;
|
| 24 | +import tech.ydb.query.result.QueryResultPart; |
21 | 25 | import tech.ydb.query.settings.CommitTransactionSettings;
|
22 | 26 | import tech.ydb.query.settings.ExecuteQuerySettings;
|
23 | 27 | import tech.ydb.query.settings.RollbackTransactionSettings;
|
@@ -228,12 +232,31 @@ public void executeSchemeQuery(YdbContext ctx, YdbValidator validator, YdbQuery
|
228 | 232 | final String yql = query.getYqlQuery(null);
|
229 | 233 |
|
230 | 234 | try (QuerySession session = createNewQuerySession(validator)) {
|
231 |
| - validator.call(QueryType.SCHEME_QUERY + " >>\n" + yql, |
232 |
| - () -> session.createQuery(yql, TxMode.NONE, Params.empty(), settings).execute() |
| 235 | + validator.call(QueryType.SCHEME_QUERY + " >>\n" + yql, () -> session |
| 236 | + .createQuery(yql, TxMode.NONE, Params.empty(), settings) |
| 237 | + .execute(new IssueHandler(validator)) |
233 | 238 | );
|
234 | 239 | }
|
235 | 240 | }
|
236 | 241 |
|
| 242 | + private class IssueHandler implements QueryStream.PartsHandler { |
| 243 | + private final YdbValidator validator; |
| 244 | + |
| 245 | + public IssueHandler(YdbValidator validator) { |
| 246 | + this.validator = validator; |
| 247 | + } |
| 248 | + |
| 249 | + @Override |
| 250 | + public void onIssues(Issue[] issues) { |
| 251 | + validator.addStatusIssues(Arrays.asList(issues)); |
| 252 | + } |
| 253 | + |
| 254 | + @Override |
| 255 | + public void onNextPart(QueryResultPart part) { |
| 256 | + // nothing |
| 257 | + } |
| 258 | + } |
| 259 | + |
237 | 260 | @Override
|
238 | 261 | public boolean isValid(YdbValidator validator, int timeout) throws SQLException {
|
239 | 262 | ensureOpened();
|
|
0 commit comments