cpp-ch/local-engine/proto/substrait/plan.proto (68 lines of code) (raw):
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package substrait;
import "substrait/algebra.proto";
import "substrait/extensions/extensions.proto";
option csharp_namespace = "Substrait.Protobuf";
option go_package = "github.com/substrait-io/substrait-go/proto";
option java_multiple_files = true;
option java_package = "io.substrait.proto";
// Either a relation or root relation
message PlanRel {
oneof rel_type {
// Any relation (used for references and CTEs)
Rel rel = 1;
// The root of a relation tree
RelRoot root = 2;
}
}
// Describe a set of operations to complete.
// For compactness sake, identifiers are normalized at the plan level.
message Plan {
// Substrait version of the plan. Optional up to 0.17.0, required for later
// versions.
Version version = 6;
// a list of yaml specifications this plan may depend on
repeated substrait.extensions.SimpleExtensionURI extension_uris = 1;
// a list of extensions this plan may depend on
repeated substrait.extensions.SimpleExtensionDeclaration extensions = 2;
// one or more relation trees that are associated with this plan.
repeated PlanRel relations = 3;
// additional extensions associated with this plan.
substrait.extensions.AdvancedExtension advanced_extensions = 4;
// A list of com.google.Any entities that this plan may use. Can be used to
// warn if some embedded message types are unknown. Note that this list may
// include message types that are ignorable (optimizations) or that are
// unused. In many cases, a consumer may be able to work with a plan even if
// one or more message types defined here are unknown.
repeated string expected_type_urls = 5;
}
// This message type can be used to deserialize only the version of a Substrait
// Plan message. This prevents deserialization errors when there were breaking
// changes between the Substrait version of the tool that produced the plan and
// the Substrait version used to deserialize it, such that a consumer can emit
// a more helpful error message in this case.
message PlanVersion {
Version version = 6;
}
message Version {
// Substrait version number.
uint32 major_number = 1;
uint32 minor_number = 2;
uint32 patch_number = 3;
// If a particular version of Substrait is used that does not correspond to
// a version number exactly (for example when using an unofficial fork or
// using a version that is not yet released or is between versions), set this
// to the full git hash of the utilized commit of
// https://github.com/substrait-io/substrait (or fork thereof), represented
// using a lowercase hex ASCII string 40 characters in length. The version
// number above should be set to the most recent version tag in the history
// of that commit.
string git_hash = 4;
// Identifying information for the producer that created this plan. Under
// ideal circumstances, consumers should not need this information. However,
// it is foreseen that consumers may need to work around bugs in particular
// producers in practice, and therefore may need to know which producer
// created the plan.
string producer = 5;
}