From 9f1e7ef76d26d5761c4c4e365f29b16183d20bbc Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Wed, 3 Dec 2025 13:43:14 -0800 Subject: [PATCH 1/2] Fix tests for new data type Geometry. issue is created and planned --- .../main/java/com/clickhouse/data/ClickHouseDataType.java | 6 +++--- .../com/clickhouse/client/datatypes/DataTypeTests.java | 2 ++ .../clickhouse/jdbc/metadata/DatabaseMetaDataTest.java | 8 ++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseDataType.java b/clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseDataType.java index 9a22fb4b9..4bf1a6686 100644 --- a/clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseDataType.java +++ b/clickhouse-data/src/main/java/com/clickhouse/data/ClickHouseDataType.java @@ -106,13 +106,12 @@ public enum ClickHouseDataType implements SQLType { Ring(Object.class, false, true, true, 0, 0, 0, 0, 0, true), // same as Array(Point) LineString( Object.class, false, true, true, 0, 0, 0, 0, 0, true), // same as Array(Point) MultiLineString(Object.class, false, true, true, 0, 0, 0, 0, 0, true), // same as Array(Ring) - JSON(Object.class, false, false, false, 0, 0, 0, 0, 0, true, 0x30), - @Deprecated + @Deprecated // (since = "CH 25.11") Object(Object.class, true, true, false, 0, 0, 0, 0, 0, true), String(String.class, false, true, false, 0, 0, 0, 0, 0, false, 0x15, "BINARY LARGE OBJECT", "BINARY VARYING", "BLOB", "BYTEA", "CHAR", "CHAR LARGE OBJECT", "CHAR VARYING", "CHARACTER", "CHARACTER LARGE OBJECT", - "CHARACTER VARYING", "CLOB", "GEOMETRY", "LONGBLOB", "LONGTEXT", "MEDIUMBLOB", "MEDIUMTEXT", + "CHARACTER VARYING", "CLOB", "LONGBLOB", "LONGTEXT", "MEDIUMBLOB", "MEDIUMTEXT", "NATIONAL CHAR", "NATIONAL CHAR VARYING", "NATIONAL CHARACTER", "NATIONAL CHARACTER LARGE OBJECT", "NATIONAL CHARACTER VARYING", "NCHAR", "NCHAR LARGE OBJECT", "NCHAR VARYING", "NVARCHAR", "TEXT", "TINYBLOB", "TINYTEXT", "VARBINARY", "VARCHAR", "VARCHAR2"), @@ -131,6 +130,7 @@ public enum ClickHouseDataType implements SQLType { Time(LocalDateTime.class, true, false, false, 4, 9, 0, 0, 9, false, 0x32), // 0x33 for Time(Timezone) Time64(LocalDateTime.class, true, false, false, 8, 9, 0, 0, 0, false, 0x34), // 0x35 for Time64(P, Timezone) QBit(Double.class, true, true, false, 0, 0, 0, 0, 0, false, 0x36), + Geometry(Object.class, false, false, false, 0, 0, 0, 0, 0, true), ; public static final List ORDERED_BY_RANGE_INT_TYPES = diff --git a/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java b/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java index d2130c322..1ab8797ea 100644 --- a/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java +++ b/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java @@ -172,6 +172,7 @@ public void testVariantWithSimpleDataTypes() throws Exception { switch (dataType) { case BFloat16: case QBit: + case Geometry: // TODO: add support continue dataTypesLoop; // skipped @@ -466,6 +467,7 @@ public void testDynamicWithPrimitives() throws Exception { switch (dataType) { case BFloat16: case QBit: + case Geometry: // TODO: add support continue; case Array: diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java index 53b54d27e..c9deb607c 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java @@ -446,7 +446,7 @@ public void testGetTypeInfo() throws Exception { assertEquals(rs.getShort("NULLABLE"), DatabaseMetaData.typeNoNulls); } - if (dataType != ClickHouseDataType.Enum) { + if (dataType != ClickHouseDataType.Enum && dataType != ClickHouseDataType.Geometry) { assertEquals(rs.getBoolean("CASE_SENSITIVE"), dataType.isCaseSensitive()); } assertEquals(rs.getInt("SEARCHABLE"), DatabaseMetaData.typeSearchable); @@ -478,7 +478,11 @@ public void testFindNestedTypes() throws Exception { nestedTypes.remove(typeName); } - assertTrue(nestedTypes.isEmpty(), "Nested types " + nestedTypes + " not found"); + if (ClickHouseVersion.of(getServerVersion()).check("(,25.10]")) { + assertTrue(nestedTypes.isEmpty(), "Nested types " + nestedTypes + " not found"); + } else { + assertEquals(nestedTypes, Arrays.asList("Object")); // Object is deprecated in 25.11 + } } } } From d63e1ce8aedbb5e5d5caa8325ddfc313189d54a5 Mon Sep 17 00:00:00 2001 From: Sergey Chernov Date: Wed, 3 Dec 2025 13:58:12 -0800 Subject: [PATCH 2/2] Fixed issue with new Geometry type in old version tests --- .../java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java b/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java index c9deb607c..7201d9c52 100644 --- a/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java +++ b/jdbc-v2/src/test/java/com/clickhouse/jdbc/metadata/DatabaseMetaDataTest.java @@ -479,7 +479,7 @@ public void testFindNestedTypes() throws Exception { } if (ClickHouseVersion.of(getServerVersion()).check("(,25.10]")) { - assertTrue(nestedTypes.isEmpty(), "Nested types " + nestedTypes + " not found"); + assertEquals(nestedTypes, Arrays.asList("Geometry")); // Geometry was introduced in 25.11 } else { assertEquals(nestedTypes, Arrays.asList("Object")); // Object is deprecated in 25.11 }