// 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; CreateFlowTaskExpr create_flow_task = 8; DropFlowTaskExpr drop_flow_task = 9; } } // Create a flow task to run the SQL when new data arrives. message CreateFlowTaskExpr { string catalog_name = 1; string task_name = 2; repeated TableName source_table_names = 3; TableName sink_table_name = 4; bool or_replace = 5; bool create_if_not_exists = 6; string expire_when = 7; string comment = 8; string sql = 9; map task_options = 10; } // Remove a flow task. message DropFlowTaskExpr { string catalog_name = 1; string task_name = 2; } 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; } } 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 RenameTable { string new_table_name = 1; } message AddColumn { ColumnDef column_def = 1; AddColumnLocation location = 3; } message DropColumn { string name = 1; } message TableId { 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; }