Skip to content

Commit 38d119d

Browse files
committed
feat: tests for Date32, Datetime64, Timestamp64, Interval64
1 parent 971e61d commit 38d119d

17 files changed

+1266
-422
lines changed

jdbc/pom.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
<environmentVariables>
7878
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
7979
<YDB_DOCKER_IMAGE>ydbplatform/local-ydb:trunk</YDB_DOCKER_IMAGE>
80-
<YDB_DOCKER_FEATURE_FLAGS>enable_parameterized_decimal</YDB_DOCKER_FEATURE_FLAGS>
8180
</environmentVariables>
8281
<systemPropertyVariables>
8382
<java.util.logging.config.file>src/test/resources/logging.properties</java.util.logging.config.file>

jdbc/src/test/java/tech/ydb/jdbc/impl/YdbDatabaseMetaDataImplTest.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,11 @@ public void getTypeInfo() throws SQLException {
424424
rs.nextRow(name.eq("Timestamp"), type.eq(Types.TIMESTAMP), precision.eq(26), unsigned.eq(false)).assertAll();
425425
rs.nextRow(name.eq("Interval"), type.eq(Types.BIGINT), precision.eq(8), unsigned.eq(false)).assertAll();
426426

427+
rs.nextRow(name.eq("Date32"), type.eq(Types.DATE), precision.eq(10), unsigned.eq(false)).assertAll();
428+
rs.nextRow(name.eq("Datetime64"), type.eq(Types.TIMESTAMP), precision.eq(19), unsigned.eq(false)).assertAll();
429+
rs.nextRow(name.eq("Timestamp64"), type.eq(Types.TIMESTAMP), precision.eq(26), unsigned.eq(false)).assertAll();
430+
rs.nextRow(name.eq("Interval64"), type.eq(Types.BIGINT), precision.eq(8), unsigned.eq(false)).assertAll();
431+
427432
rs.nextRow(name.eq("Decimal(22, 9)"), type.eq(Types.DECIMAL), precision.eq(22),
428433
unsigned.eq(false), fixedPrec.eq(true), minScale.eq(9), maxScale.eq(9)).assertAll();
429434

@@ -618,12 +623,24 @@ public void getColumns() throws SQLException {
618623
rs.nextRow(columnName.eq("c_Interval"), dataType.eq(Types.BIGINT), typeName.eq("Interval"),
619624
columnSize.eq(8), ordinal.eq(22)).assertAll();
620625

626+
rs.nextRow(columnName.eq("c_Date32"), dataType.eq(Types.DATE), typeName.eq("Date32"),
627+
columnSize.eq(10), ordinal.eq(23)).assertAll();
628+
rs.nextRow(columnName.eq("c_Datetime64"), dataType.eq(Types.TIMESTAMP), typeName.eq("Datetime64"),
629+
columnSize.eq(19), ordinal.eq(24)).assertAll();
630+
rs.nextRow(columnName.eq("c_Timestamp64"), dataType.eq(Types.TIMESTAMP), typeName.eq("Timestamp64"),
631+
columnSize.eq(26), ordinal.eq(25)).assertAll();
632+
rs.nextRow(columnName.eq("c_Interval64"), dataType.eq(Types.BIGINT), typeName.eq("Interval64"),
633+
columnSize.eq(8), ordinal.eq(26)).assertAll();
634+
621635
rs.nextRow(columnName.eq("c_Decimal"), dataType.eq(Types.DECIMAL), typeName.eq("Decimal(22, 9)"),
622-
columnSize.eq(22), ordinal.eq(23), decimalDigits.eq(22)).assertAll();
636+
columnSize.eq(22), ordinal.eq(27), decimalDigits.eq(22)).assertAll();
623637
rs.nextRow(columnName.eq("c_BigDecimal"), dataType.eq(Types.DECIMAL), typeName.eq("Decimal(35, 0)"),
624-
columnSize.eq(35), ordinal.eq(24), decimalDigits.eq(35)).assertAll();
638+
columnSize.eq(35), ordinal.eq(28), decimalDigits.eq(35)).assertAll();
625639
rs.nextRow(columnName.eq("c_BankDecimal"), dataType.eq(Types.DECIMAL), typeName.eq("Decimal(31, 9)"),
626-
columnSize.eq(31), ordinal.eq(25), decimalDigits.eq(31)).assertAll();
640+
columnSize.eq(31), ordinal.eq(29), decimalDigits.eq(31)).assertAll();
641+
642+
rs.nextRow(columnName.eq("c_Extra"), dataType.eq(Types.INTEGER), typeName.eq("Int32"),
643+
columnSize.eq(4), ordinal.eq(30)).assertAll();
627644

628645
rs.assertNoRows();
629646

jdbc/src/test/java/tech/ydb/jdbc/impl/YdbLazyResultSetImplTest.java

Lines changed: 373 additions & 197 deletions
Large diffs are not rendered by default.

jdbc/src/test/java/tech/ydb/jdbc/impl/YdbPreparedStatementImplTest.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,10 @@ public void testSetNull(SqlQueries.YqlQuery mode) throws SQLException {
426426
ps.setNull("c_Decimal", Types.DECIMAL);
427427
ps.setNull("c_BigDecimal", Types.DECIMAL);
428428
ps.setNull("c_BankDecimal", Types.DECIMAL);
429+
ps.setNull("c_Date32", Types.DATE);
430+
ps.setNull("c_Datetime64", Types.TIMESTAMP);
431+
ps.setNull("c_Timestamp64", Types.TIMESTAMP);
432+
ps.setNull("c_Interval64", Types.JAVA_OBJECT);
429433

430434
ps.executeUpdate();
431435
}
@@ -456,6 +460,10 @@ public void testSetNull(SqlQueries.YqlQuery mode) throws SQLException {
456460
ps.setNull("c_Decimal", -1, "Decimal(22, 9)");
457461
ps.setNull("c_BigDecimal", -1, "Decimal(35, 0)");
458462
ps.setNull("c_BankDecimal", -1, "Decimal(31, 9)");
463+
ps.setNull("c_Date32", -1, "Date32");
464+
ps.setNull("c_Datetime64", -1, "Datetime64");
465+
ps.setNull("c_Timestamp64", -1, "Timestamp64");
466+
ps.setNull("c_Interval64", -1, "Interval64");
459467

460468
ps.executeUpdate();
461469
}
@@ -486,6 +494,10 @@ public void testSetNull(SqlQueries.YqlQuery mode) throws SQLException {
486494
ps.setNull("c_Decimal", -1);
487495
ps.setNull("c_BigDecimal", -1);
488496
ps.setNull("c_BankDecimal", -1);
497+
ps.setNull("c_Date32", -1);
498+
ps.setNull("c_Datetime64", -1);
499+
ps.setNull("c_Timestamp64", -1);
500+
ps.setNull("c_Interval64", -1);
489501

490502
ps.executeUpdate();
491503
}
@@ -497,7 +509,7 @@ public void testSetNull(SqlQueries.YqlQuery mode) throws SQLException {
497509
Assertions.assertTrue(rs.next());
498510

499511
ResultSetMetaData metaData = rs.getMetaData();
500-
Assertions.assertEquals(25, metaData.getColumnCount());
512+
Assertions.assertEquals(29, metaData.getColumnCount());
501513
Assertions.assertEquals(key, rs.getInt("key")); // key
502514

503515
for (int i = 2; i <= metaData.getColumnCount(); i++) {
@@ -521,7 +533,7 @@ public void testParametersMeta(SqlQueries.YqlQuery mode) throws SQLException {
521533
() -> meta.getParameterType(335)
522534
);
523535

524-
Assertions.assertEquals(25, meta.getParameterCount());
536+
Assertions.assertEquals(29, meta.getParameterCount());
525537
for (int param = 1; param <= meta.getParameterCount(); param++) {
526538
String name = ydbMeta.getParameterName(param);
527539
boolean isKey = "key".equals(name);
@@ -600,15 +612,19 @@ public void testParametersMeta(SqlQueries.YqlQuery mode) throws SQLException {
600612
expectClassName = UUID.class.getName();
601613
break;
602614
case "c_Date":
615+
case "c_Date32":
603616
expectClassName = LocalDate.class.getName();
604617
break;
605618
case "c_Datetime":
619+
case "c_Datetime64":
606620
expectClassName = LocalDateTime.class.getName();
607621
break;
608622
case "c_Timestamp":
623+
case "c_Timestamp64":
609624
expectClassName = Instant.class.getName();
610625
break;
611626
case "c_Interval":
627+
case "c_Interval64":
612628
expectClassName = Duration.class.getName();
613629
break;
614630
case "c_Decimal":

0 commit comments

Comments
 (0)