Skip to content

Commit 72354b6

Browse files
authored
Merge pull request #18 from ydb-platform/batch_support
Batch support for all query types
2 parents 0ccd4f0 + 2f11543 commit 72354b6

File tree

65 files changed

+3708
-3479
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+3708
-3479
lines changed

jdbc/pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,35 @@
6767
<configuration>
6868
<environmentVariables>
6969
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
70+
<YDB_DOCKER_IMAGE>cr.yandex/yc/yandex-docker-local-ydb:trunk</YDB_DOCKER_IMAGE>
7071
</environmentVariables>
7172
<systemPropertyVariables>
7273
<java.util.logging.config.file>src/test/resources/logging.properties</java.util.logging.config.file>
7374
</systemPropertyVariables>
75+
76+
<!--
77+
Enable support of test's custom display names
78+
https://maven.apache.org/surefire/maven-surefire-plugin/examples/junit-platform.html#surefire-extensions-and-reports-configuration-for-displayname
79+
-->
80+
<statelessTestsetReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5Xml30StatelessReporter">
81+
<disable>false</disable>
82+
<version>3.0</version>
83+
<usePhrasedFileName>false</usePhrasedFileName>
84+
<usePhrasedTestSuiteClassName>true</usePhrasedTestSuiteClassName>
85+
<usePhrasedTestCaseClassName>true</usePhrasedTestCaseClassName>
86+
<usePhrasedTestCaseMethodName>true</usePhrasedTestCaseMethodName>
87+
</statelessTestsetReporter>
88+
<consoleOutputReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5ConsoleOutputReporter">
89+
<disable>false</disable>
90+
<encoding>UTF-8</encoding>
91+
<usePhrasedFileName>false</usePhrasedFileName>
92+
</consoleOutputReporter>
93+
<statelessTestsetInfoReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoReporter">
94+
<disable>false</disable>
95+
<usePhrasedFileName>false</usePhrasedFileName>
96+
<usePhrasedClassNameInRunning>true</usePhrasedClassNameInRunning>
97+
<usePhrasedClassNameInTestCaseSummary>true</usePhrasedClassNameInTestCaseSummary>
98+
</statelessTestsetInfoReporter>
7499
</configuration>
75100
</plugin>
76101
<!-- Code Coverage report generation -->

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

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55

66
import javax.annotation.Nullable;
77

8-
import tech.ydb.jdbc.common.YdbQuery;
9-
import tech.ydb.jdbc.connection.YdbContext;
10-
import tech.ydb.jdbc.connection.YdbExecutor;
8+
import tech.ydb.jdbc.context.YdbQuery;
9+
import tech.ydb.jdbc.context.YdbContext;
10+
import tech.ydb.jdbc.context.YdbExecutor;
1111
import tech.ydb.table.query.DataQueryResult;
1212
import tech.ydb.table.query.ExplainDataQueryResult;
1313
import tech.ydb.table.query.Params;
1414
import tech.ydb.table.result.ResultSetReader;
15+
import tech.ydb.table.settings.ExecuteDataQuerySettings;
1516

1617
public interface YdbConnection extends Connection {
1718

@@ -47,11 +48,12 @@ public interface YdbConnection extends Connection {
4748
*
4849
* @param query query to execute
4950
* @param params parameters for query
51+
* @param settings settings of execution
5052
* @param executor executor for logging and warnings
5153
* @return list of result set
5254
* @throws SQLException if query cannot be executed
5355
*/
54-
DataQueryResult executeDataQuery(YdbQuery query, Params params, YdbExecutor executor) throws SQLException;
56+
DataQueryResult executeDataQuery(YdbQuery query, YdbExecutor executor, ExecuteDataQuerySettings settings, Params params) throws SQLException;
5557

5658
/**
5759
* Explicitly execute query as a scan query
@@ -62,7 +64,7 @@ public interface YdbConnection extends Connection {
6264
* @return single result set with rows
6365
* @throws SQLException if query cannot be executed
6466
*/
65-
ResultSetReader executeScanQuery(YdbQuery query, Params params, YdbExecutor executor) throws SQLException;
67+
ResultSetReader executeScanQuery(YdbQuery query, YdbExecutor executor, Params params) throws SQLException;
6668

6769
/**
6870
* Explicitly explain this query
@@ -124,12 +126,5 @@ YdbPreparedStatement prepareStatement(String sql, int resultSetType, int resultS
124126
* @return prepared statement
125127
* @throws SQLException in case of any internal error
126128
*/
127-
YdbPreparedStatement prepareStatement(String sql, PreparedStatementMode mode) throws SQLException;
128-
129-
enum PreparedStatementMode {
130-
DEFAULT,
131-
IN_MEMORY,
132-
DATA_QUERY,
133-
DATA_QUERY_BATCH
134-
}
129+
YdbPreparedStatement prepareStatement(String sql, YdbPrepareMode mode) throws SQLException;
135130
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public final class YdbConst {
5555
public static final String OBJECT_TYPED_UNSUPPORTED = "Object with type conversion is not supported yet";
5656
public static final String QUERY_EXPECT_RESULT_SET = "Query must return ResultSet";
5757
public static final String QUERY_EXPECT_UPDATE = "Query must not return ResultSet";
58-
public static final String UNABLE_TO_SET_NULL_VALUE = "Unable to set NULL value, param is mandatory: ";
58+
public static final String UNABLE_TO_SET_NULL_OBJECT = "Unable to set null object, type is required";
5959
public static final String DIRECTION_UNSUPPORTED = "Direction is not supported: ";
6060
public static final String RESULT_SET_MODE_UNSUPPORTED = "ResultSet mode is not supported: ";
6161
public static final String RESULT_SET_UNAVAILABLE = "ResultSet is not available at index: ";
@@ -65,8 +65,7 @@ public final class YdbConst {
6565
public static final String COLUMN_NUMBER_NOT_FOUND = "Column is out of range: ";
6666
public static final String PARAMETER_NUMBER_NOT_FOUND = "Parameter is out of range: ";
6767
public static final String PARAMETER_NOT_FOUND = "Parameter not found: ";
68-
public static final String PARAMETER_TYPE_UNKNOWN = "Unable to convert sqlType %s (name %s) to " +
69-
"YDB type for parameter: %s";
68+
public static final String PARAMETER_TYPE_UNKNOWN = "Unable to convert sqlType %s to YDB type for parameter: %s";
7069
public static final String INVALID_ROW = "Current row index is out of bounds: ";
7170
public static final String BATCH_UNSUPPORTED = "Batches are not supported in simple prepared statements";
7271
public static final String BATCH_INVALID = "Batches are not supported for query type: ";
@@ -94,7 +93,8 @@ public final class YdbConst {
9493
public static final String STATEMENT_IS_NOT_A_BATCH = "Statement cannot be executed as batch statement: ";
9594
public static final String TRY_EXECUTE_ON_BATCH_STATEMENT = "Cannot call #execute method after #addBatch, " +
9695
"must use #executeBatch";
97-
public static final String INDEXED_PARAMETERS_UNSUPPORTED = "Indexed parameters are not supported here";
96+
public static final String INDEXES_PARAMETERS_UNSUPPORTED =
97+
"Indexed parameters are not supported in prepared query: ";
9898

9999
// Cast errors
100100

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212

1313
import javax.annotation.Nullable;
1414

15-
import tech.ydb.jdbc.connection.YdbConfig;
16-
import tech.ydb.jdbc.connection.YdbConnectionImpl;
17-
import tech.ydb.jdbc.connection.YdbContext;
15+
import tech.ydb.jdbc.context.YdbConfig;
16+
import tech.ydb.jdbc.impl.YdbConnectionImpl;
17+
import tech.ydb.jdbc.context.YdbContext;
1818
import tech.ydb.jdbc.settings.YdbJdbcTools;
1919
import tech.ydb.scheme.SchemeClient;
2020
import tech.ydb.table.TableClient;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package tech.ydb.jdbc;
22

3-
import tech.ydb.jdbc.impl.JdbcDriverVersion;
3+
import tech.ydb.jdbc.common.JdbcDriverVersion;
44

55
public final class YdbDriverInfo {
66
// Driver info

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

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,8 @@
33
import java.sql.ParameterMetaData;
44
import java.sql.SQLException;
55

6-
public interface YdbParameterMetaData extends ParameterMetaData {
7-
8-
/**
9-
* Returns parameter index by it's name, could be useful sometimes; basically because in YDB you should always
10-
* work with names (columns or parameters), indexes are just internal details
11-
*
12-
* @param parameterName column name to find
13-
* @return parameter (1..N)
14-
* @throws SQLException if parameter is unknown
15-
*/
16-
int getParameterIndex(String parameterName) throws SQLException;
176

7+
public interface YdbParameterMetaData extends ParameterMetaData {
188
/**
199
* Returns parameter name by it's index
2010
*
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package tech.ydb.jdbc;
2+
3+
/**
4+
*
5+
* @author Aleksandr Gorshenin
6+
*/
7+
public enum YdbPrepareMode {
8+
AUTO,
9+
IN_MEMORY,
10+
DATA_QUERY,
11+
DATA_QUERY_BATCH
12+
}

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

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@
2020
import tech.ydb.table.values.Type;
2121

2222
public interface YdbPreparedStatement extends YdbStatement, PreparedStatement {
23-
24-
// TODO: add future calls
25-
2623
/**
2724
* Returns query text
2825
*
@@ -46,7 +43,12 @@ public interface YdbPreparedStatement extends YdbStatement, PreparedStatement {
4643
*/
4744
YdbResultSet executeExplainQuery() throws SQLException;
4845

49-
//
46+
47+
@Override
48+
YdbResultSet executeQuery() throws SQLException;
49+
50+
@Override
51+
YdbParameterMetaData getParameterMetaData() throws SQLException;
5052

5153
void setObject(String parameterName, Object value, Type type) throws SQLException;
5254

@@ -147,13 +149,4 @@ public interface YdbPreparedStatement extends YdbStatement, PreparedStatement {
147149
void setBlob(String parameterName, InputStream inputStream) throws SQLException;
148150

149151
void setNClob(String parameterName, Reader reader) throws SQLException;
150-
151-
//
152-
153-
154-
@Override
155-
YdbResultSet executeQuery() throws SQLException;
156-
157-
@Override
158-
YdbParameterMetaData getParameterMetaData() throws SQLException;
159152
}

jdbc/src/main/java/tech/ydb/jdbc/impl/JdbcDriverVersion.java renamed to jdbc/src/main/java/tech/ydb/jdbc/common/JdbcDriverVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tech.ydb.jdbc.impl;
1+
package tech.ydb.jdbc.common;
22

33
import java.io.IOException;
44
import java.io.InputStream;

0 commit comments

Comments
 (0)