fix(spec): reject non-primitive primary-key and partition-key types - #976
jackylee-ch wants to merge 1 commit into
Conversation
`validate_key_field_types` rejected only `VECTOR`, and only for primary keys and an explicit `bucket-key` — partition keys were never checked. Java `SchemaValidation.validateOnlyContainPrimitiveType` forbids `MAP`, `ARRAY`, `ROW`, `MULTISET`, `VECTOR`, and `VARIANT` for both primary keys and partition keys. We therefore accepted tables Java rejects: such a key has no ordering, and a partition value is encoded into a directory path, so bucket/merge and partition-path behavior is undefined and the table is unreadable across engines. Reject the full set for primary, partition, and bucket keys.
|
[P2] Do not apply the primary/partition VARIANT restriction to hash bucket keys At I verified a Parquet append table with The upgrade also affects existing tables. Loading the persisted baseline schema succeeds, but a filesystem Catalog Please separate bucket restrictions from primary/partition restrictions and retain the supported VARIANT hash-key path. Java's primitive-key validation applies to primary/partition keys; its separate nested bucket check lists ARRAY/MULTISET/MAP/ROW, not VARIANT. I am not claiming Java's full VARIANT write path is supported—the reproduced regression is in the existing Rust write/read and ALTER paths. Validation on head |
validate_key_field_typesrejected onlyVECTOR, and only for primary keysand an explicit
bucket-key— partition keys were never checked. JavaSchemaValidation.validateOnlyContainPrimitiveTypeforbidsMAP,ARRAY,ROW,MULTISET,VECTOR, andVARIANTfor both primary keys and partitionkeys. We therefore accepted tables Java rejects: such a key has no ordering,
and a partition value is encoded into a directory path, so bucket/merge and
partition-path behavior is undefined and the table is unreadable across
engines. Reject the full set for primary, partition, and bucket keys, and add
create-time tests.