Files
orion_greptime_proto/proto/greptime/v1/common.proto
T
Yingwen 97e298d119 feat: add explain options to query request (#225)
* feat: add verbose flag

* feat: use options for explain

* chore: generate codes
2025-03-25 10:25:01 +08:00

197 lines
4.9 KiB
Protocol Buffer

// 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 = "Common";
option go_package = "github.com/GreptimeTeam/greptime-proto/go/greptime/v1";
message QueryContext {
string current_catalog = 1;
string current_schema = 2;
string timezone = 4;
map<string, string> extensions = 5;
uint32 channel = 6;
SnapshotSequences snapshot_seqs = 7;
// Explain options for the query.
ExplainOptions explain = 8;
}
message SnapshotSequences {
// mapping of RegionId to SequenceNumber, for snapshot read, meaning that the
// read should only container data that was committed before (and include) the
// given sequence number
map<uint64, uint64> snapshot_seqs = 7;
}
message ExplainOptions {
// Whether to enable verbose explain output.
bool verbose = 1;
}
message RequestHeader {
// The `catalog` that is selected to be used in this request.
string catalog = 1;
// The `schema` that is selected to be used in this request.
string schema = 2;
// The `authorization` header, much like http's authorization header.
AuthHeader authorization = 3;
// The `dbname` for the request
string dbname = 4;
// Encoded trace_id & span_id, follow the w3c Trace Context
// https://www.w3.org/TR/trace-context/#header-name
map<string, string> tracing_context = 5;
// The `timezone` for the request
string timezone = 6;
}
message ResponseHeader { Status status = 1; }
message Status {
// Corresponding to the `StatusCode` definition of GreptimeDB
uint32 status_code = 1;
string err_msg = 2;
}
message AuthHeader {
oneof auth_scheme {
Basic basic = 1;
Token token = 2;
}
}
message Basic {
string username = 1;
string password = 2;
}
message Token { string token = 1; }
message TableName {
string catalog_name = 1;
string schema_name = 2;
string table_name = 3;
}
message AffectedRows { uint32 value = 1; }
message Metrics { bytes metrics = 1; }
message ExpireAfter { int64 value = 1; }
message FlightMetadata {
AffectedRows affected_rows = 1;
Metrics metrics = 2;
}
enum SemanticType {
TAG = 0;
FIELD = 1;
TIMESTAMP = 2;
}
enum ColumnDataType {
BOOLEAN = 0;
INT8 = 1;
INT16 = 2;
INT32 = 3;
INT64 = 4;
UINT8 = 5;
UINT16 = 6;
UINT32 = 7;
UINT64 = 8;
FLOAT32 = 9;
FLOAT64 = 10;
BINARY = 11;
STRING = 12;
DATE = 13;
DATETIME = 14;
TIMESTAMP_SECOND = 15;
TIMESTAMP_MILLISECOND = 16;
TIMESTAMP_MICROSECOND = 17;
TIMESTAMP_NANOSECOND = 18;
TIME_SECOND = 19;
TIME_MILLISECOND = 20;
TIME_MICROSECOND = 21;
TIME_NANOSECOND = 22;
INTERVAL_YEAR_MONTH = 23;
INTERVAL_DAY_TIME = 24;
INTERVAL_MONTH_DAY_NANO = 25;
DECIMAL128 = 30;
JSON = 31;
VECTOR = 32;
}
message IntervalMonthDayNano {
int32 months = 1;
int32 days = 2;
int64 nanoseconds = 3;
}
// (hi: high 64 bits, lo: low 64 bits) are used to keep the decimal128 value.
message Decimal128 {
int64 hi = 1;
int64 lo = 2;
}
// Type extension for some complex types
message ColumnDataTypeExtension {
oneof type_ext {
DecimalTypeExtension decimal_type = 1;
// Marks the binary column in proto is actually a JSON column.
JsonTypeExtension json_type = 2;
VectorTypeExtension vector_type = 3;
}
}
message DecimalTypeExtension {
int32 precision = 1;
int32 scale = 2;
}
enum JsonTypeExtension {
JSON_BINARY = 0;
}
message VectorTypeExtension {
uint32 dim = 1;
}
// Additional options for the column.
message ColumnOptions {
// Supported keys:
// "fulltext":
// A JSON encoded string containing full-text search options for the column.
//
// The fulltext options JSON structure:
// {
// "enable": bool, // Indicates whether full-text search is
// // enabled for the column.
//
// "analyzer": string, // The language-specific text analyzer to
// // use for indexing and searching text.
// // Supported values: ["English" (Default), "Chinese"].
//
// "case-sensitive": bool // Indicates whether the text should be treated
// // as case-sensitive during full-text search.
// }
//
// Example:
// "fulltext": "{\"enable\": true, \"analyzer\": \"English\", \"case-sensitive\": false}"
map<string, string> options = 1;
}