cpp-ch/local-engine/proto/substrait/extensions/extensions.proto (64 lines of code) (raw):
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package substrait.extensions;
import "google/protobuf/any.proto";
option csharp_namespace = "Substrait.Protobuf";
option go_package = "github.com/substrait-io/substrait-go/proto/extensions";
option java_multiple_files = true;
option java_package = "io.substrait.proto";
message SimpleExtensionURI {
// A surrogate key used in the context of a single plan used to reference the
// URI associated with an extension.
uint32 extension_uri_anchor = 1;
// The URI where this extension YAML can be retrieved. This is the "namespace"
// of this extension.
string uri = 2;
}
// Describes a mapping between a specific extension entity and the uri where
// that extension can be found.
message SimpleExtensionDeclaration {
oneof mapping_type {
ExtensionType extension_type = 1;
ExtensionTypeVariation extension_type_variation = 2;
ExtensionFunction extension_function = 3;
}
// Describes a Type
message ExtensionType {
// references the extension_uri_anchor defined for a specific extension URI.
uint32 extension_uri_reference = 1;
// A surrogate key used in the context of a single plan to reference a
// specific extension type
uint32 type_anchor = 2;
// the name of the type in the defined extension YAML.
string name = 3;
}
message ExtensionTypeVariation {
// references the extension_uri_anchor defined for a specific extension URI.
uint32 extension_uri_reference = 1;
// A surrogate key used in the context of a single plan to reference a
// specific type variation
uint32 type_variation_anchor = 2;
// the name of the type in the defined extension YAML.
string name = 3;
}
message ExtensionFunction {
// references the extension_uri_anchor defined for a specific extension URI.
uint32 extension_uri_reference = 1;
// A surrogate key used in the context of a single plan to reference a
// specific function
uint32 function_anchor = 2;
// A simple name if there is only one impl for the function within the YAML.
// A compound name, referencing that includes type short names if there is
// more than one impl per name in the YAML.
string name = 3;
}
}
// A generic object that can be used to embed additional extension information
// into the serialized substrait plan.
message AdvancedExtension {
// An optimization is helpful information that don't influence semantics. May
// be ignored by a consumer.
google.protobuf.Any optimization = 1;
// An enhancement alter semantics. Cannot be ignored by a consumer.
google.protobuf.Any enhancement = 2;
}