velox/substrait/proto/substrait/function.proto (111 lines of code) (raw):
syntax = "proto3";
package substrait;
import "velox/substrait/proto/substrait/type.proto";
import "velox/substrait/proto/substrait/parameterized_types.proto";
import "velox/substrait/proto/substrait/type_expressions.proto";
option java_multiple_files = true;
option java_package = "io.substrait.proto";
option csharp_namespace = "Substrait.Protobuf";
// List of function signatures available.
message FunctionSignature {
message FinalArgVariadic {
// the minimum number of arguments allowed for the list of final arguments
// (inclusive).
int64 min_args = 1;
// the maximum number of arguments allowed for the list of final arguments
// (exclusive)
int64 max_args = 2;
// the type of parameterized type consistency
ParameterConsistency consistency = 3;
enum ParameterConsistency {
PARAMETER_CONSISTENCY_UNSPECIFIED = 0;
// All argument must be the same concrete type.
PARAMETER_CONSISTENCY_CONSISTENT = 1;
// Each argument can be any possible concrete type afforded by the bounds
// of any parameter defined in the arguments specification.
PARAMETER_CONSISTENCY_INCONSISTENT = 2;
}
}
message FinalArgNormal {}
message Scalar {
repeated Argument arguments = 2;
repeated string name = 3;
Description description = 4;
bool deterministic = 7;
bool session_dependent = 8;
DerivationExpression output_type = 9;
oneof final_variable_behavior {
FinalArgVariadic variadic = 10;
FinalArgNormal normal = 11;
}
repeated Implementation implementations = 12;
}
message Aggregate {
repeated Argument arguments = 2;
string name = 3;
Description description = 4;
bool deterministic = 7;
bool session_dependent = 8;
DerivationExpression output_type = 9;
oneof final_variable_behavior {
FinalArgVariadic variadic = 10;
FinalArgNormal normal = 11;
}
bool ordered = 14;
uint64 max_set = 12;
Type intermediate_type = 13;
repeated Implementation implementations = 15;
}
message Window {
repeated Argument arguments = 2;
repeated string name = 3;
Description description = 4;
bool deterministic = 7;
bool session_dependent = 8;
DerivationExpression intermediate_type = 9;
DerivationExpression output_type = 10;
oneof final_variable_behavior {
FinalArgVariadic variadic = 16;
FinalArgNormal normal = 17;
}
bool ordered = 11;
uint64 max_set = 12;
WindowType window_type = 14;
repeated Implementation implementations = 15;
enum WindowType {
WINDOW_TYPE_UNSPECIFIED = 0;
WINDOW_TYPE_STREAMING = 1;
WINDOW_TYPE_PARTITION = 2;
}
}
message Description {
string language = 1;
string body = 2;
}
message Implementation {
Type type = 1;
string uri = 2;
enum Type {
TYPE_UNSPECIFIED = 0;
TYPE_WEB_ASSEMBLY = 1;
TYPE_TRINO_JAR = 2;
}
}
message Argument {
string name = 1;
oneof argument_kind {
ValueArgument value = 2;
TypeArgument type = 3;
EnumArgument enum = 4;
}
message ValueArgument {
ParameterizedType type = 1;
bool constant = 2;
}
message TypeArgument { ParameterizedType type = 1; }
message EnumArgument {
repeated string options = 1;
bool optional = 2;
}
}
}