Skip to content

Commit 0d73497

Browse files
feat: support UUID type (#163)
1 parent e940f1d commit 0d73497

File tree

10 files changed

+56
-20
lines changed

10 files changed

+56
-20
lines changed

liquibase-dialect/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.1.0 ##
2+
3+
* Supported UUID type in .xml, .yaml, and .json formats
4+
15
## 1.0.2 ##
26

37
* Added duration format for `Interval` type and ISO for time types when loading data into tables

liquibase-dialect/pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>tech.ydb.dialects</groupId>
88
<artifactId>liquibase-ydb-dialect</artifactId>
9-
<version>1.1.0-SNAPSHOT</version>
9+
<version>1.1.0</version>
1010

1111
<name>Liquibase YDB Dialect</name>
1212
<description>Support Liquibase YDB Dialect</description>
@@ -43,7 +43,7 @@
4343
<maven.compiler.source>1.8</maven.compiler.source>
4444

4545
<liquibase.core.version>4.24.0</liquibase.core.version>
46-
<ydb.jdbc.version>2.2.0</ydb.jdbc.version>
46+
<ydb.jdbc.version>2.3.3</ydb.jdbc.version>
4747
</properties>
4848

4949
<dependencies>
@@ -119,7 +119,7 @@
119119
<configuration>
120120
<environmentVariables>
121121
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
122-
<YDB_DOCKER_IMAGE>cr.yandex/yc/yandex-docker-local-ydb:24.1</YDB_DOCKER_IMAGE>
122+
<YDB_DOCKER_IMAGE>cr.yandex/yc/yandex-docker-local-ydb:trunk</YDB_DOCKER_IMAGE>
123123
</environmentVariables>
124124
<systemPropertyVariables>
125125
<java.util.logging.config.file>src/test/resources/logging.properties</java.util.logging.config.file>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package tech.ydb.liquibase.type;
2+
3+
import liquibase.change.core.LoadDataChange;
4+
import liquibase.datatype.DataTypeInfo;
5+
import liquibase.datatype.LiquibaseDataType;
6+
7+
/**
8+
* @author Kirill Kurdyukov
9+
*/
10+
@DataTypeInfo(
11+
name = "UUID",
12+
aliases = {"uniqueidentifier", "java.util.UUID"},
13+
minParameters = 0,
14+
maxParameters = 0,
15+
priority = LiquibaseDataType.PRIORITY_DATABASE
16+
)
17+
public class UuidTypeYdb extends BaseTypeYdb {
18+
19+
@Override
20+
public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() {
21+
return LoadDataChange.LOAD_DATA_TYPE.UUID;
22+
}
23+
24+
@Override
25+
protected String objectToSql(Object value) {
26+
return "Uuid('" + value + "')";
27+
}
28+
}

liquibase-dialect/src/main/resources/META-INF/services/liquibase.datatype.LiquibaseDataType

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ tech.ydb.liquibase.type.TinyIntTypeYdb
1717
tech.ydb.liquibase.type.Uint8TypeYdb
1818
tech.ydb.liquibase.type.Uint16TypeYdb
1919
tech.ydb.liquibase.type.Uint32TypeYdb
20-
tech.ydb.liquibase.type.Uint64TypeYdb
20+
tech.ydb.liquibase.type.Uint64TypeYdb
21+
tech.ydb.liquibase.type.UuidTypeYdb

liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseCSVLoadTest.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -24,32 +24,32 @@ void changeLogLoadCSVFileTest() throws SQLException, LiquibaseException {
2424
assertTrue(migrationStr.contains("UPSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
2525
"tinyint_column, float_column, double_column, decimal_column, uint8_column, " +
2626
"uint16_column, uint32_column, uint64_column, text_column, binary_column, json_column, " +
27-
"jsondocument_column, date_column, datetime_column, timestamp_column, interval_column) VALUES " +
27+
"jsondocument_column, date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
2828
"('1', 'true', '123123', '13000', '113', '1.123', '1.123123', '1.123123', '12', '13', '14', " +
2929
"'15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', '{\"asd\": \"asd\"}', " +
30-
"'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S');"
30+
"'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305');"
3131
));
3232

3333
assertTrue(migrationStr.contains("UPSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
3434
"tinyint_column, float_column, double_column, decimal_column, uint8_column, " +
3535
"uint16_column, uint32_column, uint64_column, text_column, binary_column, json_column, " +
36-
"jsondocument_column, date_column, datetime_column, timestamp_column, interval_column) VALUES " +
36+
"jsondocument_column, date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
3737
"('5', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, " +
38-
"NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
38+
"NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
3939
));
4040

4141
assertTrue(migrationStr.contains("INSERT INTO all_types_table (id, bool_column, bigint_column, smallint_column, " +
4242
"tinyint_column, float_column, double_column, decimal_column, uint8_column, uint16_column, " +
4343
"uint32_column, uint64_column, text_column, binary_column, json_column, jsondocument_column, " +
44-
"date_column, datetime_column, timestamp_column, interval_column) VALUES " +
44+
"date_column, datetime_column, timestamp_column, interval_column, uuid_column) VALUES " +
4545
"('2', 'true', '123123', '13000', '112', '1.123', '1.123123', '1.123123', '12', '13', " +
4646
"'14', '15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', '{\"asd\": \"asd\"}', " +
47-
"'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S'), " +
47+
"'2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305'), " +
4848
"('3', 'true', '123123', '13000', '112', '1.123', '1.123123', '1.123123', '12', " +
4949
"'13', '14', '15', 'Кирилл Курдюков Алексеевич', 'binary', '{\"asd\": \"asd\"}', " +
50-
"'{\"asd\": \"asd\"}', '2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S'), " +
50+
"'{\"asd\": \"asd\"}', '2014-04-06', '2023-09-16T12:30', '2023-07-31T17:00:00.000000Z', 'PT10S', '689fd2b6-5764-4c43-8803-519da8f5f305'), " +
5151
"('6', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, " +
52-
"NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
52+
"NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"
5353
));
5454

5555
migrateChangeFile(changeLogFile);

liquibase-dialect/src/test/java/tech/ydb/liquibase/YdbDatabaseLiquibaseAllTypesTableTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ void changelogXmlMigrationAllTypesTableTest() throws SQLException, LiquibaseExce
3838
"datetime_column DATETIME, " +
3939
"timestamp_column TIMESTAMP, " +
4040
"interval_column INTERVAL, " +
41+
"uuid_column UUID, " +
4142
"PRIMARY KEY (id) " +
4243
");"
4344
)
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
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-
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-
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
4-
6,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
1+
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+
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+
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
4+
6,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
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-
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
3-
5,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null
1+
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+
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
3+
5,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null

liquibase-dialect/src/test/resources/changelogs/migration/all_types_table.xml

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
<column name="datetime_column" type="datetime" remarks="Date/time, precision to the second."/>
5252
<column name="timestamp_column" type="timestamp" remarks="Date/time, precision to the microsecond."/>
5353
<column name="interval_column" type="interval" remarks="Time interval (signed), precision to microseconds"/>
54+
55+
<column name="uuid_column" type="uuid" remarks="UUID value."/>
5456
</createTable>
5557

5658
<rollback>

liquibase-dialect/stress-test/run.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
YDB_JDBC_DRIVER_VERSION=2.2.0
1+
YDB_JDBC_DRIVER_VERSION=2.3.3
22

33
echo Stress test using ydb-jdbc-driver-shaded:"$YDB_JDBC_DRIVER_VERSION"
44

0 commit comments

Comments
 (0)