diff --git a/liquibase-dialect/CHANGELOG.md b/liquibase-dialect/CHANGELOG.md
index a0cf5d7..d02d0a8 100644
--- a/liquibase-dialect/CHANGELOG.md
+++ b/liquibase-dialect/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.1.0 ##
+
+* Supported UUID type in .xml, .yaml, and .json formats
+
## 1.0.2 ##
* Added duration format for `Interval` type and ISO for time types when loading data into tables
diff --git a/liquibase-dialect/pom.xml b/liquibase-dialect/pom.xml
index a5b0826..77b154a 100644
--- a/liquibase-dialect/pom.xml
+++ b/liquibase-dialect/pom.xml
@@ -6,7 +6,7 @@
tech.ydb.dialects
liquibase-ydb-dialect
- 1.1.0-SNAPSHOT
+ 1.1.0
Liquibase YDB Dialect
Support Liquibase YDB Dialect
@@ -43,7 +43,7 @@
1.8
4.24.0
- 2.2.0
+ 2.3.3
@@ -119,7 +119,7 @@
true
- cr.yandex/yc/yandex-docker-local-ydb:24.1
+ cr.yandex/yc/yandex-docker-local-ydb:trunk
src/test/resources/logging.properties
diff --git a/liquibase-dialect/src/main/java/tech/ydb/liquibase/type/UuidTypeYdb.java b/liquibase-dialect/src/main/java/tech/ydb/liquibase/type/UuidTypeYdb.java
new file mode 100644
index 0000000..f190ab5
--- /dev/null
+++ b/liquibase-dialect/src/main/java/tech/ydb/liquibase/type/UuidTypeYdb.java
@@ -0,0 +1,28 @@
+package tech.ydb.liquibase.type;
+
+import liquibase.change.core.LoadDataChange;
+import liquibase.datatype.DataTypeInfo;
+import liquibase.datatype.LiquibaseDataType;
+
+/**
+ * @author Kirill Kurdyukov
+ */
+@DataTypeInfo(
+ name = "UUID",
+ aliases = {"uniqueidentifier", "java.util.UUID"},
+ minParameters = 0,
+ maxParameters = 0,
+ priority = LiquibaseDataType.PRIORITY_DATABASE
+)
+public class UuidTypeYdb extends BaseTypeYdb {
+
+ @Override
+ public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() {
+ return LoadDataChange.LOAD_DATA_TYPE.UUID;
+ }
+
+ @Override
+ protected String objectToSql(Object value) {
+ return "Uuid('" + value + "')";
+ }
+}
diff --git a/liquibase-dialect/src/main/resources/META-INF/services/liquibase.datatype.LiquibaseDataType b/liquibase-dialect/src/main/resources/META-INF/services/liquibase.datatype.LiquibaseDataType
index 50d9525..351f4e5 100644
--- a/liquibase-dialect/src/main/resources/META-INF/services/liquibase.datatype.LiquibaseDataType
+++ b/liquibase-dialect/src/main/resources/META-INF/services/liquibase.datatype.LiquibaseDataType
@@ -17,4 +17,5 @@ tech.ydb.liquibase.type.TinyIntTypeYdb
tech.ydb.liquibase.type.Uint8TypeYdb
tech.ydb.liquibase.type.Uint16TypeYdb
tech.ydb.liquibase.type.Uint32TypeYdb
-tech.ydb.liquibase.type.Uint64TypeYdb
\ No newline at end of file
+tech.ydb.liquibase.type.Uint64TypeYdb
+tech.ydb.liquibase.type.UuidTypeYdb
\ No newline at end of file
diff --git a/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseCSVLoadTest.java b/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseCSVLoadTest.java
index a631fe8..16addd6 100644
--- a/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseCSVLoadTest.java
+++ b/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseCSVLoadTest.java
@@ -24,32 +24,32 @@ void changeLogLoadCSVFileTest() throws SQLException, LiquibaseException {
assertTrue(migrationStr.contains("UPSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
"tinyint_column, float_column, double_column, decimal_column, uint8_column, " +
"uint16_column, uint32_column, uint64_column, text_column, binary_column, json_column, " +
- "jsondocument_column, date_column, datetime_column, timestamp_column, interval_column) VALUES " +
+ "jsondocument_column, date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
"('1', 'true', '123123', '13000', '113', '1.123', '1.123123', '1.123123', '12', '13', '14', " +
"'15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', '{\"asd\": \"asd\"}', " +
- "'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S');"
+ "'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305');"
));
assertTrue(migrationStr.contains("UPSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
"tinyint_column, float_column, double_column, decimal_column, uint8_column, " +
"uint16_column, uint32_column, uint64_column, text_column, binary_column, json_column, " +
- "jsondocument_column, date_column, datetime_column, timestamp_column, interval_column) VALUES " +
+ "jsondocument_column, date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
"('5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, " +
- "NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
+ "NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
));
assertTrue(migrationStr.contains("INSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
"tinyint_column, float_column, double_column, decimal_column, uint8_column, uint16_column, " +
"uint32_column, uint64_column, text_column, binary_column, json_column, jsondocument_column, " +
- "date_column, datetime_column, timestamp_column, interval_column) VALUES " +
+ "date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
"('2', 'true', '123123', '13000', '112', '1.123', '1.123123', '1.123123', '12', '13', " +
"'14', '15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', '{\"asd\": \"asd\"}', " +
- "'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S'), " +
+ "'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305'), " +
"('3', 'true', '123123', '13000', '112', '1.123', '1.123123', '1.123123', '12', " +
"'13', '14', '15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', " +
- "'{\"asd\": \"asd\"}', '2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S'), " +
+ "'{\"asd\": \"asd\"}', '2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305'), " +
"('6', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, " +
- "NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
+ "NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
));
migrateChangeFile(changeLogFile);
diff --git a/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseLiquibaseAllTypesTableTest.java b/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseLiquibaseAllTypesTableTest.java
index f5ae155..ad6927f 100644
--- a/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseLiquibaseAllTypesTableTest.java
+++ b/liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseLiquibaseAllTypesTableTest.java
@@ -38,6 +38,7 @@ void changelogXmlMigrationAllTypesTableTest() throws SQLException, LiquibaseExce
"datetime_column DATETIME, " +
"timestamp_column TIMESTAMP, " +
"interval_column INTERVAL, " +
+ "uuid_column UUID, " +
"PRIMARY KEY (id) " +
");"
)
diff --git a/liquibase-dialect/src/test/resources/changelogs/csv/test-insert.csv b/liquibase-dialect/src/test/resources/changelogs/csv/test-insert.csv
index 1cc0f33..77c7539 100644
--- a/liquibase-dialect/src/test/resources/changelogs/csv/test-insert.csv
+++ b/liquibase-dialect/src/test/resources/changelogs/csv/test-insert.csv
@@ -1,4 +1,4 @@
-id,bool_column,bigint_column,smallint_column,tinyint_column,float_column,double_column,decimal_column,uint8_column,uint16_column,uint32_column,uint64_column,text_column,binary_column,json_column,jsondocument_column,date_column,datetime_column,timestamp_column,interval_column
-2,true,123123,13000,112,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S
-3,true,123123,13000,112,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S
-6,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
\ No newline at end of file
+id,bool_column,bigint_column,smallint_column,tinyint_column,float_column,double_column,decimal_column,uint8_column,uint16_column,uint32_column,uint64_column,text_column,binary_column,json_column,jsondocument_column,date_column,datetime_column,timestamp_column,interval_column,uuid_column
+2,true,123123,13000,112,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S,689fd2b6-5764-4c43-8803-519da8f5f305
+3,true,123123,13000,112,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S,689fd2b6-5764-4c43-8803-519da8f5f305
+6,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/liquibase-dialect/src/test/resources/changelogs/csv/test-upsert.csv b/liquibase-dialect/src/test/resources/changelogs/csv/test-upsert.csv
index 39b8d6a..bcff415 100644
--- a/liquibase-dialect/src/test/resources/changelogs/csv/test-upsert.csv
+++ b/liquibase-dialect/src/test/resources/changelogs/csv/test-upsert.csv
@@ -1,3 +1,3 @@
-id,bool_column,bigint_column,smallint_column,tinyint_column,float_column,double_column,decimal_column,uint8_column,uint16_column,uint32_column,uint64_column,text_column,binary_column,json_column,jsondocument_column,date_column,datetime_column,timestamp_column,interval_column
-1,true,123123,13000,113,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S
-5,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
\ No newline at end of file
+id,bool_column,bigint_column,smallint_column,tinyint_column,float_column,double_column,decimal_column,uint8_column,uint16_column,uint32_column,uint64_column,text_column,binary_column,json_column,jsondocument_column,date_column,datetime_column,timestamp_column,interval_column,uuid_column
+1,true,123123,13000,113,1.123,1.123123,1.123123,12,13,14,15,Кирилл Курдюков Алексеевич,binary,{"asd": "asd"},{"asd": "asd"},2014-04-06,2023-09-16T12:30,2023-07-31T17:00:00.000000Z,PT10S,689fd2b6-5764-4c43-8803-519da8f5f305
+5,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
\ No newline at end of file
diff --git a/liquibase-dialect/src/test/resources/changelogs/migration/all_types_table.xml b/liquibase-dialect/src/test/resources/changelogs/migration/all_types_table.xml
index e1cb5ef..4b5a868 100644
--- a/liquibase-dialect/src/test/resources/changelogs/migration/all_types_table.xml
+++ b/liquibase-dialect/src/test/resources/changelogs/migration/all_types_table.xml
@@ -51,6 +51,8 @@
+
+
diff --git a/liquibase-dialect/stress-test/run.sh b/liquibase-dialect/stress-test/run.sh
index c68920d..82de411 100644
--- a/liquibase-dialect/stress-test/run.sh
+++ b/liquibase-dialect/stress-test/run.sh
@@ -1,4 +1,4 @@
-YDB_JDBC_DRIVER_VERSION=2.2.0
+YDB_JDBC_DRIVER_VERSION=2.3.3
echo Stress test using ydb-jdbc-driver-shaded:"$YDB_JDBC_DRIVER_VERSION"