// 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; option java_package = "io.greptime.v1"; option java_outer_classname = "Ddl"; option go_package = "github.com/GreptimeTeam/greptime-proto/go/greptime/v1"; import "greptime/v1/common.proto"; // "Data Definition Language" requests, that create, modify or delete the // database structures but not the data. `DdlRequest` could carry more // information than plain SQL, for example, the "table_id" in `CreateTableExpr`. // So create a new DDL expr if you need it. message DdlRequest { oneof expr { CreateDatabaseExpr create_database = 1; CreateTableExpr create_table = 2; AlterExpr alter = 3; DropTableExpr drop_table = 4; TruncateTableExpr truncate_table = 7; CreateFlowExpr create_flow = 8; DropFlowExpr drop_flow = 9; CreateViewExpr create_view = 10; DropViewExpr drop_view = 11; } } // Create a flow to run the SQL when new data arrives. message CreateFlowExpr { string catalog_name = 1; string flow_name = 2; repeated TableName source_table_names = 3; TableName sink_table_name = 4; bool or_replace = 5; bool create_if_not_exists = 6; // Expire data older than the given duration seconds. ExpireAfter expire_after = 7; string comment = 8; string sql = 9; map flow_options = 10; } // Drop a flow. message DropFlowExpr { string catalog_name = 1; string flow_name = 2; FlowId flow_id = 3; bool drop_if_exists = 5; } // Create a view message CreateViewExpr { string catalog_name = 1; string schema_name = 2; string view_name = 3; bytes logical_plan = 4; bool create_if_not_exists = 5; bool or_replace = 6; } // Drop a view message DropViewExpr { string catalog_name = 1; string schema_name = 2; string view_name = 3; TableId view_id = 4; bool drop_if_exists = 5; } message CreateTableExpr { string catalog_name = 1; string schema_name = 2; string table_name = 3; string desc = 4; repeated ColumnDef column_defs = 5; string time_index = 6; repeated string primary_keys = 7; bool create_if_not_exists = 8; map table_options = 9; TableId table_id = 10; string engine = 12; } message AlterExpr { string catalog_name = 1; string schema_name = 2; string table_name = 3; oneof kind { AddColumns add_columns = 4; DropColumns drop_columns = 5; RenameTable rename_table = 6; ChangeColumnTypes change_column_types = 7; } } message DropTableExpr { string catalog_name = 1; string schema_name = 2; string table_name = 3; TableId table_id = 4; bool drop_if_exists = 5; } message CreateDatabaseExpr { string catalog_name = 1; string schema_name = 2; bool create_if_not_exists = 3; map options = 4; } message TruncateTableExpr { string catalog_name = 1; string schema_name = 2; string table_name = 3; TableId table_id = 4; } message DropDatabaseExpr { string catalog_name = 1; string schema_name = 2; bool drop_if_exists = 3; } message AddColumns { repeated AddColumn add_columns = 1; } message DropColumns { repeated DropColumn drop_columns = 1; } message ChangeColumnTypes { repeated ChangeColumnType change_column_types = 1; } message RenameTable { string new_table_name = 1; } message AddColumn { ColumnDef column_def = 1; AddColumnLocation location = 3; } message ChangeColumnType { string column_name = 1; ColumnDataType target_type = 2; ColumnDataTypeExtension target_type_extension = 3; } message DropColumn { string name = 1; } message TableId { uint32 id = 1; } message FlowId { uint32 id = 1; } message ColumnDef { string name = 1; ColumnDataType data_type = 2; bool is_nullable = 3; bytes default_constraint = 4; SemanticType semantic_type = 5; string comment = 6; // Extension for ColumnDataType. ColumnDataTypeExtension datatype_extension = 7; } message AddColumnLocation { enum LocationType { FIRST = 0; AFTER = 1; } LocationType location_type = 1; string after_column_name = 2; }