Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
forked fromKipData/KiteSQL

SQL as a Function for Rust

License

NotificationsYou must be signed in to change notification settings

tkzt/FnckSQL

 
 

Repository files navigation

Built by @KipData███████╗███╗   ██╗ ██████╗██╗  ██╗    ███████╗ ██████╗ ██╗     ██╔════╝████╗  ██║██╔════╝██║ ██╔╝    ██╔════╝██╔═══██╗██║     █████╗  ██╔██╗ ██║██║     █████╔╝     ███████╗██║   ██║██║     ██╔══╝  ██║╚██╗██║██║     ██╔═██╗     ╚════██║██║▄▄ ██║██║     ██║     ██║ ╚████║╚██████╗██║  ██╗    ███████║╚██████╔╝███████╗╚═╝     ╚═╝  ╚═══╝ ╚═════╝╚═╝  ╚═╝    ╚══════╝ ╚══▀▀═╝ ╚══════╝-----------------------------------🖕

 

CI

github stargithub fork

What is FnckSQL

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/

Quick Started

Tips: Install rust toolchain first.

Clone the repository

git clone https://github.com/KipData/FnckSQL.git

startthen usepsql to enter sqlpgUsing 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 Image

docker pull kould23333/fncksql:latest

Build From Source

git clone https://github.com/KipData/FnckSQL.gitcd FnckSQLdocker build -t kould23333/fncksql:latest.

Run

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

Features

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

Roadmap

  • SQL 2016

License

FnckSQL uses theApache 2.0 license to strike a balance betweenopen contributions and allowing you to use the software however you want.

Contributors

Thanks For

About

SQL as a Function for Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust99.9%
  • Dockerfile0.1%

[8]ページ先頭

©2009-2025 Movatter.jp