Don't allow partial (intra-value) schema inference #5959
Labels
breaking-change
P1
Slightly lower priority to P0 ;)
streaming-engine
Tickets owned by the ksqlDB Streaming Team
Thanks for the detailed thoughts @big-andy-coates!
This frames the problem nicely, but I want to suggest a different solution: don't allow inline specification of columns in ksql for schemas already registered in schema registry. I think allowing this is really a bug - it introduces a lot of problems (including some more serious, like #5673) and there are compatibility features in some data formats that don't have a sql/ksql equivalent (e.g.
additionlProperties
described in #5798). If you want a projection of fields in a schema (I'm guessing the only use case for specifying subset fields), you should specify it as a projection - not do it sneakily in the serde suite.The big benefit is that we don't have to reason about compatibility - that's a hard problem and we should delegate it 100% to schema registry. We also don't want to be in the business of doing this per format, which is something we'd need to get into because each format has their own compatibility requirements.
We can get away with this if we separate the case-sensitivity from the serialization layer. We can always coerce the
GenericRow
into the desired serialization schema and vice-versa if the SQL schema and the serialization schema are compatible (which we know they are in CT/CS statements because we generate the SQL schema from it).Originally posted by @agavra in #5801 (comment)
The text was updated successfully, but these errors were encountered: