|
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 | + 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