[client-v2, jdbc-v2] Add MultiPoint type support

Open
#3,048 1 comment 0 reactions 1 assignee View on GitHub

@polyglotAI-bot is already working on this.

Since Aug 13, 2026.

Assessment

This issue has not been assessed yet.

Description

area:data-type enhancement

Follow-up to #2577. At the time it was noted that ClickHouse has no MultiPoint type:

ClickHouse doesn't support GeometryCollection, MultiPoint. Here is link for supported types https://clickhouse.com/docs/sql-reference/data-types/geo

There is a Ring what may be a MultiPoint.

Originally posted by @chernser in #2577

That has since changed on the server side. MultiPoint is now a first-class geo type documented on that same page, defined as Array(Point), and Geometry is documented as a common type for all the geo types listed there.

Note on versions: this is a heads-up, not a regression report. MultiPoint is not in 26.7 or earlier — I'm testing against a master/head build (26.8.1.146), so it should land in the next release. Filing now so client support can be in place before then.

The client already ships Geometry support (#2815) for CH 25.11+, where Geometry became Variant(Point, Ring, LineString, MultiLineString, Polygon, MultiPolygon). MultiPoint appears to be the one geo type left out of both the concrete-type path and that variant list.

GeometryCollection remains correctly out of scope — Geometry is the ClickHouse equivalent.

Reproduction

CREATE TABLE geo_multipoint (mp MultiPoint) ENGINE = Memory();
INSERT INTO geo_multipoint VALUES([(0, 0), (10, 0), (10, 10), (0, 10)]);
SELECT mp, toTypeName(mp) FROM geo_multipoint;

-- via WKT, and through the unified type
SELECT readWKT('MULTIPOINT(0 0, 10 0, 10 10)') AS mp, toTypeName(mp);
CREATE TABLE geo_any (g Geometry) ENGINE = Memory();
INSERT INTO geo_any SELECT readWKT('MULTIPOINT(0 0, 10 0, 10 10)');
SELECT g, toTypeName(g) FROM geo_any;

Expected: MultiPoint is recognised as a geo column type and returned in the same geometry-aware representation the other geo types got after #2581, and it round-trips on insert.

Actual: reading a MultiPoint column via jdbc-v2 gives:

Caused by: java.lang.IllegalArgumentException: Unsupported data type: MultiPoint

Proposed changes

  • Add MultiPoint to the ClickHouse data-type enum / type parser.
  • Read path: map MultiPoint to the same geometry representation used for Ring / LineString (both are also Array(Point)).
  • Write path: support inserting MultiPoint, including via readWKT / WKB round-trip.
  • JDBC metadata: getColumnType / getColumnTypeName / getColumnClassName for MultiPoint columns, so v2 doesn't NPE the way the types in #2711 did.
  • Extend Geometry variant handling if the server includes MultiPoint in it.

Environment

  • clickhouse-java: 0.9.8
  • Driver: jdbc-v2 / client-v2
  • ClickHouse server: 26.8.1.146 (master/head build — not a stable release)
Dominant language
Java
Stars
1.6k
Forks
637
Avg merge
2d 12h
Merged PRs (30d)
28

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ClickHouse/clickhouse-java

All issues in ClickHouse/clickhouse-java

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.