Skip to content

Commit a850b29

Browse files
authored
[JOOQ]: Update JDBC driver to 2.1.2 (#129)
1 parent 9376490 commit a850b29

File tree

3 files changed

+157
-160
lines changed

3 files changed

+157
-160
lines changed

jooq-dialect/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<dependency>
7070
<groupId>tech.ydb.jdbc</groupId>
7171
<artifactId>ydb-jdbc-driver-shaded</artifactId>
72-
<version>2.0.7</version>
72+
<version>2.1.2</version>
7373
<scope>compile</scope>
7474
</dependency>
7575
<dependency>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.jooq.types.ULong;
1111
import org.jooq.types.UShort;
1212
import tech.ydb.jdbc.YdbConnection;
13+
import tech.ydb.jdbc.context.SchemeExecutor;
1314
import tech.ydb.jdbc.context.YdbContext;
1415
import tech.ydb.jooq.YDB;
1516
import tech.ydb.jooq.YdbTypes;
@@ -166,6 +167,7 @@ protected List<TableDefinition> getTables0() {
166167

167168
YdbContext context = getContext();
168169
SchemeClient client = context.getSchemeClient();
170+
SchemeExecutor schemeExecutor = new SchemeExecutor(context);
169171
DescribeTableSettings settings = context.withDefaultTimeout(new DescribeTableSettings());
170172

171173
List<String> schemas = schemas();
@@ -178,7 +180,7 @@ protected List<TableDefinition> getTables0() {
178180
String tableName = entry.getName();
179181
String fullPath = dirPath + "/" + tableName;
180182

181-
TableDescription tableDescription = context.describeTable(fullPath, settings).join().getValue();
183+
TableDescription tableDescription = schemeExecutor.describeTable(fullPath, settings).join().getValue();
182184
TableDefinition tableDefinition = getTableDefinition(tableName, dirPath, fullPath, tableDescription);
183185

184186
result.add(tableDefinition);

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

Lines changed: 153 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import org.jooq.Result;
66
import org.jooq.types.ULong;
77
import org.junit.jupiter.api.Test;
8-
import tech.ydb.scheme.SchemeClient;
9-
import tech.ydb.table.TableClient;
108

119
import java.util.List;
1210
import java.util.stream.IntStream;
@@ -15,162 +13,159 @@
1513
import static org.jooq.impl.DSL.*;
1614
import static org.junit.jupiter.api.Assertions.*;
1715

18-
/**
19-
* Doesn't work until the <a href="https://github.com/ydb-platform/ydb-jdbc-driver/pull/52">replace fix</a> is released
20-
*/
2116
public class ReplaceTest extends BaseTest {
2217

23-
// @Test
24-
// public void testSimpleInsertViaReplace() {
25-
// SeriesRecord newRecord = new SeriesRecord();
26-
// newRecord.setSeriesId(ULong.valueOf(1));
27-
// newRecord.setTitle("New Series");
28-
// newRecord.setSeriesInfo("Info about the new series");
29-
// newRecord.setReleaseDate(ULong.valueOf(20220101));
30-
//
31-
// dsl.replaceInto(SERIES)
32-
// .set(newRecord)
33-
// .execute();
34-
//
35-
// Result<SeriesRecord> replacedRecord = dsl.selectFrom(SERIES)
36-
// .where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
37-
// .fetch();
38-
//
39-
// assertEquals(List.of(newRecord), replacedRecord);
40-
// }
41-
//
42-
// @Test
43-
// public void testSimpleUpdateViaReplace() {
44-
// dsl.batchInsert(getExampleRecords()).execute();
45-
//
46-
// dsl.replaceInto(SERIES)
47-
// .set(SERIES.SERIES_ID, ULong.valueOf(1))
48-
// .set(SERIES.TITLE, "Updated Series One")
49-
// .set(SERIES.SERIES_INFO, "Updated Info One")
50-
// .execute();
51-
//
52-
// SeriesRecord updatedRecord = dsl.selectFrom(SERIES)
53-
// .where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
54-
// .fetchOne();
55-
//
56-
// assertNotNull(updatedRecord);
57-
// assertEquals("Updated Series One", updatedRecord.getTitle());
58-
// assertEquals("Updated Info One", updatedRecord.getSeriesInfo());
59-
// }
60-
//
61-
// @Test
62-
// public void testMultipleInsertWithSetViaReplace() {
63-
// List<SeriesRecord> records = getExampleRecords();
64-
//
65-
// dsl.replaceInto(SERIES)
66-
// .set(records.get(0))
67-
// .newRecord()
68-
// .set(records.get(1))
69-
// .newRecord()
70-
// .set(records.get(2))
71-
// .execute();
72-
//
73-
// Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
74-
//
75-
// assertEquals(records, replacedRecords);
76-
// }
77-
//
78-
// @Test
79-
// public void testMultipleInsertViaReplace() {
80-
// List<SeriesRecord> records = getExampleRecords();
81-
//
82-
// dsl.replaceInto(SERIES)
83-
// .values(records.get(0).getSeriesId(), records.get(0).getTitle(), records.get(0).getSeriesInfo(), records.get(0).getReleaseDate())
84-
// .values(records.get(1).getSeriesId(), records.get(1).getTitle(), records.get(1).getSeriesInfo(), records.get(1).getReleaseDate())
85-
// .values(records.get(2).getSeriesId(), records.get(2).getTitle(), records.get(2).getSeriesInfo(), records.get(2).getReleaseDate())
86-
// .execute();
87-
//
88-
// Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
89-
//
90-
// assertEquals(records, replacedRecords);
91-
// }
92-
//
93-
// @Test
94-
// public void testMultipleInsertWithFullListingViaReplace() {
95-
// List<SeriesRecord> records = getExampleRecords();
96-
//
97-
// var upsertQuery = dsl.replaceInto(SERIES, SERIES.SERIES_ID, SERIES.TITLE, SERIES.SERIES_INFO, SERIES.RELEASE_DATE);
98-
//
99-
// for (SeriesRecord record : records) {
100-
// upsertQuery = upsertQuery.values(record.getSeriesId(), record.getTitle(), record.getSeriesInfo(), record.getReleaseDate());
101-
// }
102-
//
103-
// upsertQuery.execute();
104-
//
105-
// Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
106-
//
107-
// assertEquals(records, replacedRecords);
108-
// }
109-
//
110-
// @Test
111-
// public void testReplaceNumericTable() {
112-
// List<?> values = IntStream.rangeClosed(0, 23).boxed().toList();
113-
//
114-
// dsl.replaceInto(table("numeric"),
115-
// field(name("id"), YdbTypes.INT32),
116-
// field(name("1"), YdbTypes.INT32),
117-
// field(name("2"), YdbTypes.INT32),
118-
// field(name("3"), YdbTypes.INT32),
119-
// field(name("4"), YdbTypes.INT32),
120-
// field(name("5"), YdbTypes.INT32),
121-
// field(name("6"), YdbTypes.INT32),
122-
// field(name("7"), YdbTypes.INT32),
123-
// field(name("8"), YdbTypes.INT32),
124-
// field(name("9"), YdbTypes.INT32),
125-
// field(name("10"), YdbTypes.INT32),
126-
// field(name("11"), YdbTypes.INT32),
127-
// field(name("12"), YdbTypes.INT32),
128-
// field(name("13"), YdbTypes.INT32),
129-
// field(name("14"), YdbTypes.INT32),
130-
// field(name("15"), YdbTypes.INT32),
131-
// field(name("16"), YdbTypes.INT32),
132-
// field(name("17"), YdbTypes.INT32),
133-
// field(name("18"), YdbTypes.INT32),
134-
// field(name("19"), YdbTypes.INT32),
135-
// field(name("20"), YdbTypes.INT32),
136-
// field(name("21"), YdbTypes.INT32),
137-
// field(name("22"), YdbTypes.INT32),
138-
// field(name("23"), YdbTypes.INT32)
139-
// )
140-
// .values(values)
141-
// .execute();
142-
//
143-
// Record record = dsl.selectFrom("numeric").fetchOne();
144-
//
145-
// assertNotNull(record);
146-
//
147-
// List<Object> result = record.intoList();
148-
//
149-
// assertEquals(values.size(), result.size());
150-
// assertTrue(values.containsAll(result));
151-
// }
152-
//
153-
// @Test
154-
// public void testReplaceDiffByUpsert() {
155-
// List<SeriesRecord> records = getExampleRecords();
156-
//
157-
// dsl.replaceInto(SERIES)
158-
// .set(records.get(0))
159-
// .newRecord()
160-
// .set(records.get(1))
161-
// .newRecord()
162-
// .set(records.get(2))
163-
// .execute();
164-
//
165-
// dsl.replaceInto(SERIES, SERIES.SERIES_ID, SERIES.TITLE)
166-
// .values(ULong.valueOf(1), "New title")
167-
// .execute();
168-
//
169-
// SeriesRecord replacedRecords = dsl.selectFrom(SERIES)
170-
// .where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
171-
// .fetchOne();
172-
//
173-
// assertEquals("", replacedRecords.getSeriesInfo());
174-
// assertEquals(ULong.valueOf(0), replacedRecords.getReleaseDate());
175-
// }
18+
@Test
19+
public void testSimpleInsertViaReplace() {
20+
SeriesRecord newRecord = new SeriesRecord();
21+
newRecord.setSeriesId(ULong.valueOf(1));
22+
newRecord.setTitle("New Series");
23+
newRecord.setSeriesInfo("Info about the new series");
24+
newRecord.setReleaseDate(ULong.valueOf(20220101));
25+
26+
dsl.replaceInto(SERIES)
27+
.set(newRecord)
28+
.execute();
29+
30+
Result<SeriesRecord> replacedRecord = dsl.selectFrom(SERIES)
31+
.where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
32+
.fetch();
33+
34+
assertEquals(List.of(newRecord), replacedRecord);
35+
}
36+
37+
@Test
38+
public void testSimpleUpdateViaReplace() {
39+
dsl.batchInsert(getExampleRecords()).execute();
40+
41+
dsl.replaceInto(SERIES)
42+
.set(SERIES.SERIES_ID, ULong.valueOf(1))
43+
.set(SERIES.TITLE, "Updated Series One")
44+
.set(SERIES.SERIES_INFO, "Updated Info One")
45+
.execute();
46+
47+
SeriesRecord updatedRecord = dsl.selectFrom(SERIES)
48+
.where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
49+
.fetchOne();
50+
51+
assertNotNull(updatedRecord);
52+
assertEquals("Updated Series One", updatedRecord.getTitle());
53+
assertEquals("Updated Info One", updatedRecord.getSeriesInfo());
54+
}
55+
56+
@Test
57+
public void testMultipleInsertWithSetViaReplace() {
58+
List<SeriesRecord> records = getExampleRecords();
59+
60+
dsl.replaceInto(SERIES)
61+
.set(records.get(0))
62+
.newRecord()
63+
.set(records.get(1))
64+
.newRecord()
65+
.set(records.get(2))
66+
.execute();
67+
68+
Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
69+
70+
assertEquals(records, replacedRecords);
71+
}
72+
73+
@Test
74+
public void testMultipleInsertViaReplace() {
75+
List<SeriesRecord> records = getExampleRecords();
76+
77+
dsl.replaceInto(SERIES)
78+
.values(records.get(0).getSeriesId(), records.get(0).getTitle(), records.get(0).getSeriesInfo(), records.get(0).getReleaseDate())
79+
.values(records.get(1).getSeriesId(), records.get(1).getTitle(), records.get(1).getSeriesInfo(), records.get(1).getReleaseDate())
80+
.values(records.get(2).getSeriesId(), records.get(2).getTitle(), records.get(2).getSeriesInfo(), records.get(2).getReleaseDate())
81+
.execute();
82+
83+
Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
84+
85+
assertEquals(records, replacedRecords);
86+
}
87+
88+
@Test
89+
public void testMultipleInsertWithFullListingViaReplace() {
90+
List<SeriesRecord> records = getExampleRecords();
91+
92+
var upsertQuery = dsl.replaceInto(SERIES, SERIES.SERIES_ID, SERIES.TITLE, SERIES.SERIES_INFO, SERIES.RELEASE_DATE);
93+
94+
for (SeriesRecord record : records) {
95+
upsertQuery = upsertQuery.values(record.getSeriesId(), record.getTitle(), record.getSeriesInfo(), record.getReleaseDate());
96+
}
97+
98+
upsertQuery.execute();
99+
100+
Result<SeriesRecord> replacedRecords = dsl.selectFrom(SERIES).fetch();
101+
102+
assertEquals(records, replacedRecords);
103+
}
104+
105+
@Test
106+
public void testReplaceNumericTable() {
107+
List<?> values = IntStream.rangeClosed(0, 23).boxed().toList();
108+
109+
dsl.replaceInto(table("numeric"),
110+
field(name("id"), YdbTypes.INT32),
111+
field(name("1"), YdbTypes.INT32),
112+
field(name("2"), YdbTypes.INT32),
113+
field(name("3"), YdbTypes.INT32),
114+
field(name("4"), YdbTypes.INT32),
115+
field(name("5"), YdbTypes.INT32),
116+
field(name("6"), YdbTypes.INT32),
117+
field(name("7"), YdbTypes.INT32),
118+
field(name("8"), YdbTypes.INT32),
119+
field(name("9"), YdbTypes.INT32),
120+
field(name("10"), YdbTypes.INT32),
121+
field(name("11"), YdbTypes.INT32),
122+
field(name("12"), YdbTypes.INT32),
123+
field(name("13"), YdbTypes.INT32),
124+
field(name("14"), YdbTypes.INT32),
125+
field(name("15"), YdbTypes.INT32),
126+
field(name("16"), YdbTypes.INT32),
127+
field(name("17"), YdbTypes.INT32),
128+
field(name("18"), YdbTypes.INT32),
129+
field(name("19"), YdbTypes.INT32),
130+
field(name("20"), YdbTypes.INT32),
131+
field(name("21"), YdbTypes.INT32),
132+
field(name("22"), YdbTypes.INT32),
133+
field(name("23"), YdbTypes.INT32)
134+
)
135+
.values(values)
136+
.execute();
137+
138+
Record record = dsl.selectFrom("numeric").fetchOne();
139+
140+
assertNotNull(record);
141+
142+
List<Object> result = record.intoList();
143+
144+
assertEquals(values.size(), result.size());
145+
assertTrue(values.containsAll(result));
146+
}
147+
148+
@Test
149+
public void testReplaceDiffByUpsert() {
150+
List<SeriesRecord> records = getExampleRecords();
151+
152+
dsl.replaceInto(SERIES)
153+
.set(records.get(0))
154+
.newRecord()
155+
.set(records.get(1))
156+
.newRecord()
157+
.set(records.get(2))
158+
.execute();
159+
160+
dsl.replaceInto(SERIES, SERIES.SERIES_ID, SERIES.TITLE)
161+
.values(ULong.valueOf(1), "New title")
162+
.execute();
163+
164+
SeriesRecord replacedRecords = dsl.selectFrom(SERIES)
165+
.where(SERIES.SERIES_ID.eq(ULong.valueOf(1)))
166+
.fetchOne();
167+
168+
assertNull(replacedRecords.getSeriesInfo());
169+
assertEquals(ULong.valueOf(0), replacedRecords.getReleaseDate());
170+
}
176171
}

0 commit comments

Comments
 (0)