Lightweight SQL calculation engine, as the SQL layer of KipDB, implemented with TalentPlan's TinySQL as the reference standard
kip-sql = "0.0.1-alpha.0"
Install rust toolchain first.
cargo run
test command
create table t1 (a int primary key, b int);
insert into t1 (a, b) values (1, 1), (5, 3), (6, 2);
update t1 set a = 0 where b > 1;
delete from t1 where b > 1;
select * from t1;
select * from t1 order by a asc nulls first
select count(distinct a) from t1;
truncate table t1;
drop table t1;
Using KipSQL in code
let kipsql = Database::with_kipdb("./data").await?;
let tupes = db.run("select * from t1").await?;
Storage Support:
- KipDB
- Memory
- ORM Mapping
#[derive(Debug, Clone, Default)]
pub struct Post {
pub post_title: String,
pub post_date: NaiveDateTime,
pub post_body: String,
}
implement_from_tuple!(Post, (
post_title: String => |post: &mut Post, value: DataValue| {
if let Some(title) = value.utf8() {
post.post_title = title;
}
},
post_date: NaiveDateTime => |post: &mut Post, value: DataValue| {
if let Some(date_time) = value.datetime() {
post.post_date = date_time;
}
},
post_body: String => |post: &mut Post, value: DataValue| {
if let Some(body) = value.utf8() {
post.post_body = body;
}
}
));
- SQL field options
- not null
- null
- unique
- Supports index type
- Unique Index
- Supports multiple primary key types
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Varchar
- DDL
- Create
- Table
- Index
- Drop
- Table
- Index
- Truncate
- Create
- DQL
- Select
- SeqScan
- IndexScan
- Where
- Distinct
- Alias
- Aggregation: count()/sum()/avg()/min()/max()
- Subquery
- Join: Inner/Left/Right/Full Cross(x)
- Group By
- Having
- Order By
- Limit
- Select
- DML
- Insert
- Insert Overwrite
- Update
- Delete
- DataTypes
- Invalid
- SqlNull
- Boolean
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Float
- Double
- Varchar
- Date
- DateTime
- Optimizer rules
- Limit Project Transpose
- Eliminate Limits
- Push Limit Through Join
- Push Limit Into Scan
- Combine Filters
- Column Pruning
- Collapse Project
- Fedomn/sqlrs: 主要参考资料,Optimizer、Executor均参考自sqlrs的设计
- systemxlabs/bustubx