3个版本
0.1.2 | 2020年10月20日 |
---|---|
0.1.1 | 2020年9月8日 |
0.1.0 | 2020年9月3日 |
#2366 在 数据库接口
60KB
1.5K SLoC
一个不完整的Clickhouse SQL语法的Rust解析器。
状态:对CREATE TABLE语句提供基本支持。解析引擎选项作为String。解析列作为包含所有选项(类型、编解码器、ttl、注释等)的结构体。
# cargo b --example parse
...
Running `target/debug/examples/parse`
SQL statement: CREATE TABLE `default`.access (
`remote_addr` String CODEC(ZSTD(1)),
`remote_addr_long` Int32
) ENGINE = DISTRIBUTED( 'cluster', '', 'access', rand());
[examples/parse.rs:20] &schema = CreateTable(
CreateTableStatement {
table: Table {
name: "access",
alias: None,
schema: Some(
"default",
),
},
fields: [
ColumnSpecification {
column: Column {
name: "remote_addr",
alias: None,
table: Some(
"access",
),
},
sql_type: String,
codec: Some(
CodecList(
[
ZSTD(
Some(
1,
),
),
],
),
),
ttl: None,
nullable: false,
option: None,
comment: None,
lowcardinality: false,
},
ColumnSpecification {
column: Column {
name: "remote_addr_long",
alias: None,
table: Some(
"access",
),
},
sql_type: Int(
B32,
),
codec: None,
ttl: None,
nullable: false,
option: None,
comment: None,
lowcardinality: false,
},
],
engine: Distributed(
EngineDistributed {
cluster_name: "\'cluster\'",
schema: "\'\'",
table: "\'access\'",
sharding_key: Some(
"rand()",
),
policy_name: None,
},
),
},
)
依赖项
~1MB
~18K SLoC