Substrait Plans contain a required
|
// Substrait version of the plan. Optional up to 0.17.0, required for later |
|
// versions. |
|
Version version = 6; |
field.
In the ecosystem today, the version is effectively just the version of the spec used to generate the protobuf bindings. This is a very weak use of the version field, because it doesn't actually tell us if the producing library supports any specification features from that version.
It would be beneficial to be able to ascribe more powerful constraints to the version field, to the effect of "A plan claiming version X correctly supports the specification at version X". This would allow us to do things like define compatability shims between versions or reject plans claiming a specific version but not implementing features correctly.
Substrait Plans contain a required
substrait/proto/substrait/plan.proto
Lines 30 to 32 in 7b5cfd9
field.
In the ecosystem today, the version is effectively just the version of the spec used to generate the protobuf bindings. This is a very weak use of the version field, because it doesn't actually tell us if the producing library supports any specification features from that version.
It would be beneficial to be able to ascribe more powerful constraints to the version field, to the effect of "A plan claiming version X correctly supports the specification at version X". This would allow us to do things like define compatability shims between versions or reject plans claiming a specific version but not implementing features correctly.