- Notifications
You must be signed in to change notification settings - Fork0
tkzt/FnckSQL
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Built by @KipData███████╗███╗ ██╗ ██████╗██╗ ██╗ ███████╗ ██████╗ ██╗ ██╔════╝████╗ ██║██╔════╝██║ ██╔╝ ██╔════╝██╔═══██╗██║ █████╗ ██╔██╗ ██║██║ █████╔╝ ███████╗██║ ██║██║ ██╔══╝ ██║╚██╗██║██║ ██╔═██╗ ╚════██║██║▄▄ ██║██║ ██║ ██║ ╚████║╚██████╗██║ ██╗ ███████║╚██████╔╝███████╗╚═╝ ╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝ ╚══════╝ ╚══▀▀═╝ ╚══════╝-----------------------------------🖕
FnckSQL individual developers independently implemented LSM KV-based SQL DBMS out of hobby. This SQL database will prove to you that anyone can write a database (even the core author cannot find a job). If you are also a database-related Enthusiastic, let us give this "beautiful" industry a middle finger🖕.
Welcome to our WebSite, Power By FnckSQL:http://www.kipdata.site/
Tips: Install rust toolchain first.
Clone the repository
git clone https://github.com/KipData/FnckSQL.git
then usepsql to enter sql
Using FnckSQL in code
let fnck_sql =DataBaseBuilder::path("./data").build().await?;let tuples = fnck_sql.run("select * from t1").await?;
Storage Support:
- KipDB
docker pull kould23333/fncksql:latest
git clone https://github.com/KipData/FnckSQL.gitcd FnckSQLdocker build -t kould23333/fncksql:latest.
We installed thepsql tool in the image for easy debug.
You can usepsql -h 127.0.0.1 -p 5432 to do this.
docker run -d \--name=fncksql \-p 5432:5432 \--restart=always \-v fncksql-data:/fnck_sql/fncksql_data \-v /etc/localtime:/etc/localtime:ro \kould23333/fncksql:latest
- ORM Mapping:
features = ["marcos"]
#[derive(Default,Debug,PartialEq)]structMyStruct{c1:i32,c2:String,}implement_from_tuple!(MyStruct,( c1:i32 => |inner:&mutMyStruct, value|{ifletDataValue::Int32(Some(val)) = value{ inner.c1 = val;}}, c2:String => |inner:&mutMyStruct, value|{ifletDataValue::Utf8(Some(val)) = value{ inner.c2 = val;}}));
- User-Defined Function:
features = ["marcos"]
function!(TestFunction::test(LogicalType::Integer,LogicalType::Integer) ->LogicalType::Integer => |v1:ValueRef, v2:ValueRef|{let plus_binary_evaluator =EvaluatorFactory::binary_create(LogicalType::Integer,BinaryOperator::Plus)?;let value = plus_binary_evaluator.binary_eval(&v1,&v2);let plus_unary_evaluator =EvaluatorFactory::unary_create(LogicalType::Integer,UnaryOperator::Minus)?;Ok(plus_unary_evaluator.unary_eval(&value))});let fnck_sql =DataBaseBuilder::path("./data").register_function(TestFunction::new()).build().await?;
- Optimizer
- RBO
- CBO based on RBO(Physical Selection)
- Execute
- Volcano
- Codegen on LuaJIT:
features = ["codegen_execute"]
- MVCC Transaction
- Optimistic
- Field options
- [not] null
- unique
- primary key
- SQL where options
- is [not] null
- [not] like
- [not] in
- Supports index type
- PrimaryKey
- Unique
- Normal
- Composite
- Supports multiple primary key types
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Char
- Varchar
- DDL
- Begin (Server only)
- Commit (Server only)
- Rollback (Server only)
- Create
- Table
- Index: Unique\Normal\Composite
- Drop
- Table
- Index
- Alert
- Add Column
- Drop Column
- Truncate
- DQL
- Select
- SeqScan
- IndexScan
- Where
- Distinct
- Alias
- Aggregation: count()/sum()/avg()/min()/max()
- SubQuery[select/from/where]
- Join: Inner/Left/Right/Full/Cross (Natural\Using)
- Group By
- Having
- Order By
- Limit
- Show Tables
- Explain
- Describe
- Union
- Select
- DML
- Insert
- Insert Overwrite
- Update
- Delete
- Analyze
- DataTypes
- Invalid
- SqlNull
- Boolean
- Tinyint
- UTinyint
- Smallint
- USmallint
- Integer
- UInteger
- Bigint
- UBigint
- Float
- Double
- Char
- Varchar
- Date
- DateTime
- Time
- Tuple
- SQL 2016
FnckSQL uses theApache 2.0 license to strike a balance betweenopen contributions and allowing you to use the software however you want.
- Fedomn/sqlrs: Main reference materials, Optimizer and Executor all refer to the design of sqlrs
- systemxlabs/bustubx
- duckdb/duckdb
About
SQL as a Function for Rust
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Languages
- Rust99.9%
- Dockerfile0.1%