优化和收尾
This commit is contained in:
1 parent
7f5bcc289e
commit
9e8c5f1ef0
33 files changed
+3332
-598
No files matched your search
@@ -22,42 +22,104 @@ pub struct SchemaColumn {
|
||||
pub ty: ColumnType,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
/// 一列的统计(随数据字典一起走)
|
||||
pub struct ColumnStatWire {
|
||||
pub name: String,
|
||||
/// 不同值个数;`capped` 为真时它只是下界
|
||||
pub distinct: u64,
|
||||
#[serde(default)]
|
||||
pub capped: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
/// 一条索引定义
|
||||
pub struct IndexWire {
|
||||
pub column: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(tag = "method", rename_all = "snake_case")]
|
||||
/// 请求:method 字段决定类型
|
||||
pub enum Request {
|
||||
Ping,
|
||||
Scan { table: String },
|
||||
Scan {
|
||||
table: String,
|
||||
},
|
||||
/// 插一行;要不要写索引由表上的索引决定(调用方不用管)
|
||||
Insert {
|
||||
table: String,
|
||||
row: Row,
|
||||
#[serde(default)]
|
||||
key: Option<i64>,
|
||||
},
|
||||
LookupByIndex { table: String, key: i64 },
|
||||
ReplaceAll { table: String, rows: Vec<Row> },
|
||||
/// 一批行一起插:一次 WAL、一次 fsync
|
||||
InsertBatch {
|
||||
table: String,
|
||||
rows: Vec<Row>,
|
||||
},
|
||||
/// 按 id 批量删行
|
||||
DeleteKeys {
|
||||
table: String,
|
||||
keys: Vec<i64>,
|
||||
},
|
||||
/// 按某一列的索引取一行(列名默认 "id",兼容老客户端)
|
||||
LookupByIndex {
|
||||
table: String,
|
||||
#[serde(default = "default_id_column")]
|
||||
column: String,
|
||||
key: i64,
|
||||
},
|
||||
ReplaceAll {
|
||||
table: String,
|
||||
rows: Vec<Row>,
|
||||
},
|
||||
ListTables,
|
||||
DescribeTable { table: String },
|
||||
DescribeTable {
|
||||
table: String,
|
||||
},
|
||||
CreateTable {
|
||||
table: String,
|
||||
columns: Vec<SchemaColumn>,
|
||||
},
|
||||
DropTable { table: String },
|
||||
ListCatalog
|
||||
DropTable {
|
||||
table: String,
|
||||
},
|
||||
ListCatalog,
|
||||
/// 给某一列建索引(要求这一列整数取值唯一)
|
||||
CreateIndex {
|
||||
table: String,
|
||||
column: String,
|
||||
},
|
||||
/// 去掉某一列的索引
|
||||
DropIndex {
|
||||
table: String,
|
||||
column: String,
|
||||
},
|
||||
}
|
||||
|
||||
/// 没写 column 时按 `id` 算
|
||||
fn default_id_column() -> String {
|
||||
"id".to_string()
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(tag = "status", rename_all = "lowercase")]
|
||||
#[serde(tag = "status", rename_all = "snake_case")]
|
||||
/// 响应:status 字段决定类型
|
||||
pub enum Response {
|
||||
Pong,
|
||||
Rows { rows: Vec<Row> },
|
||||
Tables { tables: Vec<String> },
|
||||
Schema {
|
||||
table: String,
|
||||
columns: Vec<SchemaColumn>,
|
||||
#[serde(default)]
|
||||
row_count: u64,
|
||||
#[serde(default)]
|
||||
indexes: Vec<IndexWire>,
|
||||
#[serde(default)]
|
||||
stats: Vec<ColumnStatWire>,
|
||||
},
|
||||
/// 这一列没有索引 —— 调用方应该退回全表扫描
|
||||
NoIndex,
|
||||
Ok,
|
||||
Error { message: String },
|
||||
Catalog { schemas: Vec<TableSchemaWire> },
|
||||
@@ -69,4 +131,8 @@ pub struct TableSchemaWire {
|
||||
pub columns: Vec<SchemaColumn>,
|
||||
#[serde(default)]
|
||||
pub row_count: u64,
|
||||
#[serde(default)]
|
||||
pub indexes: Vec<IndexWire>,
|
||||
#[serde(default)]
|
||||
pub stats: Vec<ColumnStatWire>,
|
||||
}
|
||||
Reference in new issue
Block a user