Skip to content

Commit 6cd1bf6

Browse files
committed
Added support of scheme and explain queries to PreparedStatement
1 parent 91a0239 commit 6cd1bf6

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

jdbc/src/main/java/tech/ydb/jdbc/YdbConst.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ public final class YdbConst {
8686
public static final String DATABASE_UNAVAILABLE = "Database is unavailable: ";
8787
public static final String CANNOT_LOAD_DATA_FROM_IS = "Unable to load data from input stream: ";
8888
public static final String CANNOT_LOAD_DATA_FROM_READER = "Unable to load data from reader: ";
89-
public static final String UNSUPPORTED_QUERY_TYPE_IN_PS = "Query type in prepared statement not supported: ";
9089
public static final String STATEMENT_IS_NOT_A_BATCH = "Statement cannot be executed as batch statement: ";
9190
public static final String MULTI_TYPES_IN_ONE_QUERY = "Query cannot contain expressions with different types: ";
9291
public static final String SCAN_QUERY_INSIDE_TRANSACTION = "Scan query cannot be executed inside active "

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import tech.ydb.jdbc.YdbConst;
2727
import tech.ydb.jdbc.YdbPrepareMode;
2828
import tech.ydb.jdbc.exception.ExceptionFactory;
29+
import tech.ydb.jdbc.query.QueryType;
2930
import tech.ydb.jdbc.query.YdbPreparedQuery;
3031
import tech.ydb.jdbc.query.YdbQuery;
3132
import tech.ydb.jdbc.query.params.BatchedQuery;
@@ -345,6 +346,10 @@ public YdbPreparedQuery findOrPrepareParams(YdbQuery query, YdbPrepareMode mode)
345346
}
346347
}
347348

349+
if (query.getType() == QueryType.EXPLAIN_QUERY || query.getType() == QueryType.SCHEME_QUERY) {
350+
return new InMemoryQuery(query, queryOptions.isDeclareJdbcParameters());
351+
}
352+
348353
if (query.getYqlBatcher() != null && mode == YdbPrepareMode.AUTO) {
349354
Map<String, Type> types = queryParamsCache.getIfPresent(query.getOriginQuery());
350355
if (types == null) {

jdbc/src/main/java/tech/ydb/jdbc/impl/YdbConnectionImpl.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import tech.ydb.jdbc.context.YdbExecutor;
3232
import tech.ydb.jdbc.context.YdbValidator;
3333
import tech.ydb.jdbc.query.ExplainedQuery;
34-
import tech.ydb.jdbc.query.QueryType;
3534
import tech.ydb.jdbc.query.YdbPreparedQuery;
3635
import tech.ydb.jdbc.query.YdbQuery;
3736
import tech.ydb.jdbc.settings.FakeTxMode;
@@ -307,10 +306,6 @@ private YdbPreparedStatement prepareStatement(String sql, int resultSetType, Ydb
307306

308307
YdbQuery query = ctx.findOrParseYdbQuery(sql);
309308

310-
if (query.getType() != QueryType.DATA_QUERY && query.getType() != QueryType.SCAN_QUERY) {
311-
throw new SQLException(YdbConst.UNSUPPORTED_QUERY_TYPE_IN_PS + query.getType());
312-
}
313-
314309
YdbPreparedQuery params = ctx.findOrPrepareParams(query, mode);
315310
return new YdbPreparedStatementImpl(this, query, params, resultSetType);
316311
}

jdbc/src/main/java/tech/ydb/jdbc/impl/YdbPreparedStatementImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,12 @@ public boolean execute() throws SQLException {
132132
case SCAN_QUERY:
133133
newState = executeScanQuery(query, prepared.getQueryText(prms), prms);
134134
break;
135+
case SCHEME_QUERY:
136+
newState = executeSchemeQuery(query);
137+
break;
138+
case EXPLAIN_QUERY:
139+
newState = executeExplainQuery(query);
140+
break;
135141
default:
136142
throw new IllegalStateException("Internal error. Unsupported query type " + query.getType());
137143
}

0 commit comments

Comments
 (0)