dbeaver/dbeaver · info · DBCException

Editing of geo data is not yet supported

Error message

Editing of geo data is not yet supported

What it means

Thrown unconditionally by ClickhouseGeometryValueHandler.bindParameter whenever the editor attempts to write/bind a geo value. Geo data editing is intentionally unsupported, so any INSERT/UPDATE parameter binding for a geo column hits this guard rather than attempting an unsupported conversion.

Source

Thrown at plugins/org.jkiss.dbeaver.ext.clickhouse/src/org/jkiss/dbeaver/ext/clickhouse/model/data/ClickhouseGeometryValueHandler.java:101

    @Override
    protected Object fetchColumnValue(
        @NotNull DBCSession session,
        @NotNull JDBCResultSet resultSet,
        @NotNull DBSTypedObject type,
        int index
    ) throws DBCException, SQLException {
        return getValueFromObject(session, type, resultSet.getObject(index), false, false);
    }

    @Override
    protected void bindParameter(
        @NotNull JDBCSession session,
        @NotNull JDBCPreparedStatement statement,
        @NotNull DBSTypedObject paramType,
        int paramIndex,
        Object value
    ) throws DBCException {
        throw new DBCException("Editing of geo data is not yet supported", null, session.getExecutionContext());
    }

    @NotNull
    @Override
    public Class<?> getValueObjectType(@NotNull DBSTypedObject attribute) {
        return DBGeometry.class;
    }

    @NotNull
    private static Point createPoint(@NotNull GeometryFactory factory, @NotNull double[] object) {
        return factory.createPoint(new Coordinate(object[0], object[1]));
    }

    @NotNull
    private static LinearRing createRing(@NotNull GeometryFactory factory, @NotNull double[][] object) {
        var coordinates = Stream.concat(Arrays.stream(object), Arrays.stream(object).limit(1))
            .map(point -> new Coordinate(point[0], point[1]))
            .toArray(Coordinate[]::new);

View on GitHub (pinned to 1e5ee1042b)

Solutions

  1. Do not edit geo columns through the DBeaver data editor — write geo values via raw SQL using ClickHouse's textual geo literals instead.
  2. For INSERTs, cast the literal text (e.g. '(10.0,20.0)') directly in the SQL rather than binding a parameter.
  3. Watch / upvote the upstream feature request for geo editing support.
  4. Hide geo columns from the editable view if accidental edits are common.
Defensive patterns

Strategy: validation

Validate before calling

// Disable editing for geo columns before bindParameter is reached
if (ClickhouseGeometryValueHandler.isGeometryType(col.getTypeName())) {
    setColumnEditable(col, false);
}

Try / catch

try {
    handler.bindParameter(session, stmt, paramType, idx, value);
} catch (DBCException e) {
    if (e.getMessage().contains("not yet supported")) {
        log.info("Geo edit blocked; use raw SQL with a text literal instead");
    }
    throw e;
}

Prevention

When it happens

Trigger: A user triggers an edit (inline edit, INSERT/UPDATE generation, parameter bind) on a ClickHouse geo column (point/ring/linestring/polygon/...). bindParameter is invoked and immediately throws — there is no code path that succeeds.

Common situations: User tries to inline-edit a Point/Polygon cell in the DBeaver data editor; a generated INSERT includes a geo column; a parameterized statement binds a geo value. This is a design limitation, not an environmental fault.

Related errors


AI-assisted analysis of dbeaver/dbeaver@1e5ee1042b (2026-08-13). Data as JSON: /api/errors/8954647dcedd9971. Report an issue: GitHub.