diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 5246b15..8e192a7 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -5,6 +5,7 @@ on:
branches:
- master
- develop
+ - release*
pull_request:
type: [opened, reopened, edited]
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6c48351..58e1c2b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 2.0.3 ##
+
+* Added SqlState info to YDB exceptions
+* Fixed getUpdateCount() after getMoreResults()
+* Fixed columns info for empty result sets from DatabaseMetaData
+
## 2.0.2 ##
* Removed obsolete options
diff --git a/README.md b/README.md
index 56ac6d8..d89b98e 100644
--- a/README.md
+++ b/README.md
@@ -25,14 +25,14 @@ Specify the YDB JDBC driver in the dependencies:
tech.ydb.jdbc
ydb-jdbc-driver
- 2.0.0
+ 2.0.3
tech.ydb.jdbc
ydb-jdbc-driver-shaded
- 2.0.0
+ 2.0.3
```
diff --git a/jdbc-shaded/pom.xml b/jdbc-shaded/pom.xml
index 7f15645..b2b3b58 100644
--- a/jdbc-shaded/pom.xml
+++ b/jdbc-shaded/pom.xml
@@ -6,7 +6,7 @@
tech.ydb.jdbc
ydb-jdbc-driver-parent
- 2.0.2
+ 2.0.3
ydb-jdbc-driver-shaded
diff --git a/jdbc/pom.xml b/jdbc/pom.xml
index 1ce204c..009e3ae 100644
--- a/jdbc/pom.xml
+++ b/jdbc/pom.xml
@@ -6,7 +6,7 @@
tech.ydb.jdbc
ydb-jdbc-driver-parent
- 2.0.2
+ 2.0.3
ydb-jdbc-driver
diff --git a/jdbc/src/main/java/tech/ydb/jdbc/common/FixedResultSetFactory.java b/jdbc/src/main/java/tech/ydb/jdbc/common/FixedResultSetFactory.java
new file mode 100644
index 0000000..4bccb52
--- /dev/null
+++ b/jdbc/src/main/java/tech/ydb/jdbc/common/FixedResultSetFactory.java
@@ -0,0 +1,465 @@
+package tech.ydb.jdbc.common;
+
+import java.nio.charset.Charset;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import tech.ydb.table.result.ResultSetReader;
+import tech.ydb.table.result.ValueReader;
+import tech.ydb.table.values.DecimalValue;
+import tech.ydb.table.values.PrimitiveType;
+import tech.ydb.table.values.PrimitiveValue;
+import tech.ydb.table.values.Type;
+import tech.ydb.table.values.Value;
+
+/**
+ *
+ * @author Aleksandr Gorshenin
+ */
+public class FixedResultSetFactory {
+ private final List columns;
+ private final Map columnIndexes;
+
+ private FixedResultSetFactory(List columns) {
+ this.columns = columns;
+ this.columnIndexes = new HashMap<>();
+ for (int idx = 0; idx < columns.size(); idx += 1) {
+ columnIndexes.put(columns.get(idx).name, idx);
+ }
+ }
+
+ public interface ResultSetBuilder {
+ public interface RowBuilder {
+ RowBuilder withTextValue(String name, String value);
+ RowBuilder withIntValue(String name, int value);
+ RowBuilder withShortValue(String name, short value);
+ RowBuilder withLongValue(String name, long value);
+ RowBuilder withBoolValue(String name, boolean value);
+
+ ResultSetBuilder build();
+ }
+
+ RowBuilder newRow();
+ ResultSetReader build();
+ }
+
+ public ResultSetBuilder createResultSet() {
+ return new ResultSetBuilderImpl();
+ }
+
+ private class ResultSetBuilderImpl implements ResultSetBuilder {
+ private final List