Skip to content
/ KipSQL Public
forked from KipData/FnckSQL

build the SQL layer of KipDB database

Notifications You must be signed in to change notification settings

loloxwg/KipSQL

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KipSQL

Lightweight SQL calculation engine, as the SQL layer of KipDB, implemented with TalentPlan's TinySQL as the reference standard

Architecture

architecture

Get Started

组件引入

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

demo

Features

  • 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
  • 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
  • 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

Thanks For

About

build the SQL layer of KipDB database

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%