// Copyright 2023 Greptime Team // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package greptime.v1.region; option java_package = "io.greptime.v1.region"; option java_outer_classname = "Server"; option go_package = "github.com/GreptimeTeam/greptime-proto/go/greptime/v1/region"; import "greptime/v1/common.proto"; import "greptime/v1/row.proto"; import "greptime/v1/ddl.proto"; service Region { rpc Handle(RegionRequest) returns (RegionResponse); } message RegionRequestHeader { // TraceID of request uint64 trace_id = 1; // SpanID of request uint64 span_id = 2; } message RegionRequest { RegionRequestHeader header = 1; // query request is handled in flight services. oneof body { InsertRequests inserts = 3; DeleteRequests deletes = 4; CreateRequest create = 5; DropRequest drop = 6; OpenRequest open = 7; CloseRequest close = 8; AlterRequest alter = 9; FlushRequest flush = 10; CompactRequest compact = 11; } } message RegionResponse { ResponseHeader header = 1; uint64 affected_rows = 2; } message InsertRequests { repeated InsertRequest requests = 1; } message DeleteRequests { repeated DeleteRequest requests = 1; } message InsertRequest { uint64 region_id = 1; Rows rows = 2; } message DeleteRequest { uint64 region_id = 1; Rows rows = 2; } message QueryRequest { RegionRequestHeader header = 1; uint64 region_id = 2; // substrait plan to query bytes plan = 3; } message CreateRequest { uint64 region_id = 1; // Region engine name string engine = 2; // Columns in this region. repeated RegionColumnDef column_defs = 3; // Column Id of primary keys. repeated uint32 primary_key = 4; // Create region if not exists. bool create_if_not_exists = 5; // catalog name and schema name is to accomplish storage path // catalog name string catalog = 6; // schema name string schema = 7; // Options of the created region. map options = 8; // TODO: add partition def } message DropRequest { uint64 region_id = 1; } message OpenRequest { uint64 region_id = 1; // Region engine name string engine = 2; // catalog name and schema name is to accomplish storage path // catalog name string catalog = 3; // schema name string schema = 4; // Options of the opened region. map options = 5; } message CloseRequest { uint64 region_id = 1; } message AlterRequest { uint64 region_id = 1; oneof kind { AddColumns add_columns = 2; DropColumns drop_columns = 3; } // The version of the schema before applying the alteration. uint64 schema_version = 4; } message AddColumns { repeated AddColumn add_columns = 1; } message DropColumns { repeated DropColumn drop_columns = 1; } message AddColumn { RegionColumnDef column_def = 1; AddColumnLocation location = 3; } message DropColumn { string name = 1; } message FlushRequest { uint64 region_id = 1; } message CompactRequest { uint64 region_id = 1; } // The column definition of a region. Unlike the message `ColumnDef` in // `ddl.proto` which is for clients outside GreptimeDB, this `RegionColumnDef` // is for region requests use only. So it carries an extra field `column_id` // that is known internally. message RegionColumnDef { ColumnDef column_def = 1; uint32 column_id = 2; }