Skip to content

Fix geoparquet types breaking client-server protocol#84020

Merged
al13n321 merged 5 commits intomasterfrom
geonull
Sep 27, 2025
Merged

Fix geoparquet types breaking client-server protocol#84020
al13n321 merged 5 commits intomasterfrom
geonull

Conversation

@al13n321
Copy link
Copy Markdown
Member

Changelog category (leave one):

  • Bug Fix (user-visible misbehavior in an official stable release)

Changelog entry (a user-readable short description of the changes that goes into CHANGELOG.md):

Fixed GeoParquet causing client protocol errors.


  1. getNamesAndRecursivelyNullableTypes took type Point, aka Tuple(Float64, Float64), turned it into Tuple(Nullable(Float64), Nullable(Float64)), and named the resulting type "Point" again (!).
  2. When server sends blocks with such columns, it sends data type name "Point" and column serialized as nullable (Tuple(Nullable(Float64), Nullable(Float64))).
  3. Client then receives type name "Point", calls DataTypeFactory::get("Point") to learn that "Point" means Tuple(Float64, Float64), and proceeds to deserialize column data as non-nullable. So it outputs garbage data and some error like "Unknown packet 0 from server".

This PR removes the code that reassigns custom name to a different type, and adds code to avoid making parts of named types nullable. So getNamesAndRecursivelyNullableTypes leaves Point unchanged, non-nullable.

(Same for the other geo types: LineString, Polygon, MultiLineString, MultiPolygon.)

@clickhouse-gh
Copy link
Copy Markdown
Contributor

clickhouse-gh bot commented Jul 18, 2025

Workflow [PR], commit [8e98988]

Summary:

@clickhouse-gh clickhouse-gh bot added the pr-bugfix Pull request with bugfix, not backported by default label Jul 18, 2025
@al13n321 al13n321 enabled auto-merge September 27, 2025 01:23
@al13n321 al13n321 added this pull request to the merge queue Sep 27, 2025
Merged via the queue into master with commit cc9841d Sep 27, 2025
123 checks passed
@al13n321 al13n321 deleted the geonull branch September 27, 2025 06:16
@robot-ch-test-poll2 robot-ch-test-poll2 added the pr-synced-to-cloud The PR is synced to the cloud repo label Sep 27, 2025
@robot-clickhouse-ci-2 robot-clickhouse-ci-2 added pr-backports-created-cloud deprecated label, NOOP pr-must-backport-synced The `*-must-backport` labels are synced into the cloud Sync PR labels Sep 27, 2025
robot-clickhouse-ci-2 added a commit that referenced this pull request Sep 27, 2025
Cherry pick #84020 to 25.7: Fix geoparquet types breaking client-server protocol
robot-clickhouse-ci-2 added a commit that referenced this pull request Sep 27, 2025
Cherry pick #84020 to 25.8: Fix geoparquet types breaking client-server protocol
robot-clickhouse-ci-2 added a commit that referenced this pull request Sep 27, 2025
Cherry pick #84020 to 25.9: Fix geoparquet types breaking client-server protocol
@robot-ch-test-poll robot-ch-test-poll added the pr-backports-created Backport PRs are successfully created, it won't be processed by CI script anymore label Sep 27, 2025
clickhouse-gh bot added a commit that referenced this pull request Sep 27, 2025
Backport #84020 to 25.7: Fix geoparquet types breaking client-server protocol
clickhouse-gh bot added a commit that referenced this pull request Sep 27, 2025
Backport #84020 to 25.8: Fix geoparquet types breaking client-server protocol
al13n321 pushed a commit that referenced this pull request Sep 27, 2025
…protocol (#87744)

Co-authored-by: robot-clickhouse <robot-clickhouse@users.noreply.github.com>
azat added a commit that referenced this pull request Sep 29, 2025
* u/25.9:
  Backport #87614 to 25.9: Small fixes for jemalloc profiler
  Backport #84020 to 25.9: Fix geoparquet types breaking client-server protocol (#87744)
  Backport #78873 to 25.9: Fix RMV tryEnqueueReplicatedDDL shutdown crash again (#87753)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-backports-created Backport PRs are successfully created, it won't be processed by CI script anymore pr-backports-created-cloud deprecated label, NOOP pr-bugfix Pull request with bugfix, not backported by default pr-must-backport-synced The `*-must-backport` labels are synced into the cloud Sync PR pr-synced-to-cloud The PR is synced to the cloud repo v25.8-must-backport

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants