Skip to content

Commit 5b025e7

Browse files
feat: support uuid type
1 parent f0031ad commit 5b025e7

File tree

10 files changed

+113
-14
lines changed

10 files changed

+113
-14
lines changed

jooq-dialect/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.1.1 ##
2+
3+
- Supported UUID YDB Type
4+
15
## 1.1.0 ##
26
- Upgrade to new version of JDBC & SDK
37

jooq-dialect/pom.xml

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>tech.ydb.dialects</groupId>
66
<artifactId>jooq-ydb-dialect</artifactId>
7-
<version>1.1.0</version>
7+
<version>1.1.1-SNAPSHOT</version>
88

99
<name>YDB JOOQ Dialect module</name>
1010
<description>YDB JOOQ Dialect module</description>
@@ -46,9 +46,9 @@
4646

4747
<properties>
4848
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
49-
<maven.compiler.release>17</maven.compiler.release>
50-
<maven.compiler.source>17</maven.compiler.source>
51-
<maven.compiler.target>17</maven.compiler.target>
49+
<maven.compiler.release>21</maven.compiler.release>
50+
<maven.compiler.source>21</maven.compiler.source>
51+
<maven.compiler.target>21</maven.compiler.target>
5252

5353
<jooq.version>3.19.0</jooq.version>
5454

@@ -98,6 +98,50 @@
9898

9999
<build>
100100
<plugins>
101+
<!-- <plugin>-->
102+
<!-- <groupId>org.jooq</groupId>-->
103+
<!-- <artifactId>jooq-codegen-maven</artifactId>-->
104+
<!-- <version>3.19.11</version>-->
105+
<!-- <executions>-->
106+
<!-- <execution>-->
107+
<!-- <goals>-->
108+
<!-- <goal>generate</goal>-->
109+
<!-- </goals>-->
110+
<!-- </execution>-->
111+
<!-- </executions>-->
112+
<!-- <dependencies>-->
113+
<!-- <dependency>-->
114+
<!-- <groupId>tech.ydb.dialects</groupId>-->
115+
<!-- <artifactId>jooq-ydb-dialect</artifactId>-->
116+
<!-- <version>${project.version}</version>-->
117+
<!-- </dependency>-->
118+
<!-- <dependency>-->
119+
<!-- <groupId>tech.ydb.jdbc</groupId>-->
120+
<!-- <artifactId>ydb-jdbc-driver</artifactId>-->
121+
<!-- <version>${ydb.jdbc.version}</version>-->
122+
<!-- </dependency>-->
123+
<!-- </dependencies>-->
124+
<!-- <configuration>-->
125+
<!-- <jdbc>-->
126+
<!-- <driver>tech.ydb.jdbc.YdbDriver</driver>-->
127+
<!-- <url>jdbc:ydb:grpc://localhost:2136/local</url>-->
128+
<!-- </jdbc>-->
129+
<!-- <generator>-->
130+
<!-- <strategy>-->
131+
<!-- <name>tech.ydb.jooq.codegen.YdbGeneratorStrategy</name>-->
132+
<!-- </strategy>-->
133+
<!-- <database>-->
134+
<!-- <name>tech.ydb.jooq.codegen.YdbDatabase</name>-->
135+
<!-- &lt;!&ndash; исключение системных таблицы &ndash;&gt;-->
136+
<!-- <excludes>.sys.*</excludes>-->
137+
<!-- </database>-->
138+
<!-- <target>-->
139+
<!-- <packageName>jooq.generated.ydb</packageName>-->
140+
<!-- <directory>./src/test/java</directory>-->
141+
<!-- </target>-->
142+
<!-- </generator>-->
143+
<!-- </configuration>-->
144+
<!-- </plugin>-->
101145
<plugin>
102146
<groupId>org.apache.maven.plugins</groupId>
103147
<artifactId>maven-javadoc-plugin</artifactId>
@@ -134,7 +178,8 @@
134178
<configuration>
135179
<environmentVariables>
136180
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
137-
<YDB_DOCKER_IMAGE>cr.yandex/yc/yandex-docker-local-ydb:latest</YDB_DOCKER_IMAGE>
181+
<YDB_ENDPOINT>localhost:2136</YDB_ENDPOINT>
182+
<YDB_DATABASE>/local</YDB_DATABASE>
138183
</environmentVariables>
139184
</configuration>
140185
</plugin>

jooq-dialect/src/main/java/tech/ydb/jooq/YdbTypes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public static DataType<BigDecimal> DECIMAL(int precision, int scale) {
5252
public static final DataType<org.jooq.JSON> JSON = newDataType(SQLDataType.JSON, "json", new JsonBinding());
5353
public static final DataType<org.jooq.JSONB> JSONDOCUMENT = newDataType(SQLDataType.JSONB, "jsondocument", new JsonDocumentBinding());
5454
public static final DataType<YSON> YSON = newDataType(SQLDataType.OTHER, "yson", new YsonBinding());
55+
5556
public static final DataType<java.util.UUID> UUID = newDataType(SQLDataType.UUID, "uuid", new UuidBinding());
5657

5758
public static final DataType<LocalDate> DATE = newDataType(SQLDataType.LOCALDATE, "date", new DateBinding());

jooq-dialect/src/main/java/tech/ydb/jooq/codegen/YdbDatabase.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,28 @@
44
import java.util.ArrayList;
55
import java.util.Collections;
66
import java.util.List;
7-
8-
import org.jooq.*;
7+
import org.jooq.DSLContext;
8+
import org.jooq.Record12;
9+
import org.jooq.Record4;
10+
import org.jooq.Record5;
11+
import org.jooq.Record6;
12+
import org.jooq.ResultQuery;
913
import org.jooq.impl.DSL;
10-
import org.jooq.meta.*;
11-
import org.jooq.tools.JooqLogger;
12-
14+
import org.jooq.meta.AbstractDatabase;
15+
import org.jooq.meta.ArrayDefinition;
16+
import org.jooq.meta.CatalogDefinition;
17+
import org.jooq.meta.DefaultRelations;
18+
import org.jooq.meta.DomainDefinition;
19+
import org.jooq.meta.EnumDefinition;
20+
import org.jooq.meta.IndexDefinition;
21+
import org.jooq.meta.PackageDefinition;
22+
import org.jooq.meta.ResultQueryDatabase;
23+
import org.jooq.meta.RoutineDefinition;
24+
import org.jooq.meta.SchemaDefinition;
25+
import org.jooq.meta.SequenceDefinition;
26+
import org.jooq.meta.TableDefinition;
27+
import org.jooq.meta.UDTDefinition;
28+
import org.jooq.meta.XMLSchemaCollectionDefinition;
1329
import tech.ydb.jdbc.YdbConnection;
1430
import tech.ydb.jdbc.context.SchemeExecutor;
1531
import tech.ydb.jdbc.context.YdbContext;
@@ -24,7 +40,6 @@
2440
import tech.ydb.table.settings.DescribeTableSettings;
2541

2642
public class YdbDatabase extends AbstractDatabase implements ResultQueryDatabase {
27-
private static final JooqLogger log = JooqLogger.getLogger(YdbDatabase.class);
2843

2944
public YdbDatabase() {
3045
YdbTypes.initialize();

jooq-dialect/src/main/java/tech/ydb/jooq/codegen/YdbTableDefinition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import tech.ydb.jooq.binding.Uint32Binding;
3434
import tech.ydb.jooq.binding.Uint64Binding;
3535
import tech.ydb.jooq.binding.Uint8Binding;
36+
import tech.ydb.jooq.binding.UuidBinding;
3637
import tech.ydb.jooq.binding.YsonBinding;
3738
import tech.ydb.jooq.value.YSON;
3839
import tech.ydb.table.description.TableColumn;
@@ -73,7 +74,7 @@ protected List<ColumnDefinition> getElements0() {
7374
kind = type.getKind();
7475
}
7576

76-
int decimalDigits = kind == Type.Kind.DECIMAL ? ((DecimalType) type).getPrecision(): 0;
77+
int decimalDigits = kind == Type.Kind.DECIMAL ? ((DecimalType) type).getScale() : 0;
7778

7879
String typeName = type.toString();
7980
Class<? extends Binding<?, ?>> binding = getBinding(typeName);
@@ -130,6 +131,7 @@ public TableDescription getTableDescription() {
130131
case "Uint32" -> Uint32Binding.class;
131132
case "Uint64" -> Uint64Binding.class;
132133
case "Yson" -> YsonBinding.class;
134+
case "Uuid" -> UuidBinding.class;
133135
default -> null;
134136
};
135137
}

jooq-dialect/src/test/java/jooq/generated/ydb/default_schema/tables/DateTable.java

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jooq-dialect/src/test/java/jooq/generated/ydb/default_schema/tables/HardTable.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jooq-dialect/src/test/java/jooq/generated/ydb/default_schema/tables/records/HardTableRecord.java

Lines changed: 18 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jooq-dialect/src/test/java/tech/ydb/jooq/BaseTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public static void beforeAll() {
9898
.column("first", YdbTypes.JSON)
9999
.column("second", YdbTypes.JSONDOCUMENT)
100100
.column("third", YdbTypes.YSON)
101+
.column("uuid", YdbTypes.UUID)
101102
.primaryKey("id")
102103
.execute();
103104

jooq-dialect/src/test/java/tech/ydb/jooq/InsertTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tech.ydb.jooq;
22

33
import java.util.List;
4+
import java.util.UUID;
45
import static jooq.generated.ydb.default_schema.Tables.HARD_TABLE;
56
import static jooq.generated.ydb.default_schema.Tables.SERIES;
67
import jooq.generated.ydb.default_schema.tables.records.HardTableRecord;
@@ -71,10 +72,12 @@ public void testConditionalInsert() {
7172
@Test
7273
public void testInsertJsonTypes() {
7374
HardTableRecord record = new HardTableRecord();
75+
7476
record.setId("test-id".getBytes());
7577
record.setFirst(JSON.valueOf("{\"key\": \"value\"}"));
7678
record.setSecond(JSONB.valueOf("{\"list\": [1, 2, 3]}"));
7779
record.setThird(YSON.valueOf("{\"boolean\" = true}"));
80+
record.setUuid(UUID.randomUUID());
7881

7982
dsl.insertInto(HARD_TABLE)
8083
.set(record)
@@ -84,6 +87,11 @@ public void testInsertJsonTypes() {
8487
.where(HARD_TABLE.ID.eq("test-id".getBytes()))
8588
.fetch();
8689

90+
Result<HardTableRecord> recordsByUuid = dsl.selectFrom(HARD_TABLE)
91+
.where(HARD_TABLE.UUID.eq(record.getUuid()))
92+
.fetch();
93+
8794
assertEquals(List.of(record), records);
95+
assertEquals(List.of(record), recordsByUuid);
8896
}
8997
}

0 commit comments

Comments
 (0)