github-actions[bot] commented on code in PR #69032:
URL: https://github.com/apache/doris/pull/69032#discussion_r4384986093
##########
fe/fe-connector/fe-connector-spi/src/main/java/org/apache/doris/connector/spi/ConnectorCapability.java:
##########
@@ -304,5 +304,13 @@ public enum ConnectorCapability {
* data tables while declining it on the subset of system tables whose
readers cannot observe a
* selected snapshot.</p>
*/
- SUPPORTS_SCAN_PARAM_OPTIONS
+ SUPPORTS_SCAN_PARAM_OPTIONS,
+ /**
+ * Admits spatial leaves inside ARRAY elements, MAP values and STRUCT
fields in column DDL.
+ * The connector still validates table format/version and spatial identity
before mutations.
+ *
+ * <p><b>Scope: catalog-wide only.</b> CREATE needs this answer before the
target table exists.
+ * This does not admit spatial MAP keys, Variant fields, or Doris
internal-table storage.</p>
+ */
+ SUPPORTS_NESTED_SPATIAL_TYPES
Review Comment:
[P2] Bump the connector API major for the spatial SPI additions
A connector jar built by this head still advertises API `23.0` because
`fe/fe-connector/pom.xml` is unchanged. Deploying that Iceberg plugin to a
pre-PR API-23 FE therefore passes `ApiVersionGate`, which checks only the
major. The SPI is loaded parent-first from the FE, so
`IcebergConnector.getCapabilities()` then references this missing enum constant
and throws `NoSuchFieldError`, including for ordinary tables; the new
`ConnectorType` methods have the same compatibility problem. Give the expanded
SPI a new major and update the pinned version so the loader rejects this
incompatible plugin/kernel pair before executing it.
##########
gensrc/proto/types.proto:
##########
@@ -124,6 +128,8 @@ message PGenericType {
TIMESTAMPTZ = 42;
TIMESTAMP_NS = 43;
UUID = 44;
+ GEOMETRY = 45;
Review Comment:
[P1] Reserve the protocol IDs already assigned to FILE
`branch-4.1` (cabcf2549d7) already defines `PGenericType.TypeId.FILE = 45`;
`gensrc/thrift/Types.thrift` there also assigns `TPrimitiveType.FILE = 47`.
This PR reuses both identities for Geometry. A branch-4.1 FILE `PColumnMeta`
therefore enters the new Geometry case in `DataTypeFactory::create_data_type`,
ignores its six child fields and defaults the missing CRS; `Block::deserialize`
then feeds the FILE child streams to the spatial length/WKB deserializer. It is
interpreted as another type instead of being rejected as unsupported. This
violates the required cross-branch stable-ID contract independently of the
earlier heartbeat/feature-negotiation decision. Reserve FILE's existing numbers
and allocate unused spatial enum values in both protocol domains, with a
compatibility guard against the release definitions.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]