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/column.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; FlushTableExpr flush_table = 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; repeated uint32 region_ids = 11; 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; } message FlushTableExpr { string catalog_name = 1; string schema_name = 2; string table_name = 3; optional uint32 region_id = 4; } message CreateDatabaseExpr { //TODO(hl): maybe rename to schema_name? string database_name = 1; bool create_if_not_exists = 2; } 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; bool is_key = 2; } message DropColumn { string name = 1; } message TableId { uint32 id = 1; }