Gluesql Versions Save

GlueSQL is quite sticky. It attaches to anywhere.

v0.7.0

2 years ago

🌊 Breaking Changes

INDEX support

Now GlueSQL support index! You can manipulate indexes using CREATE INDEX and DROP INDEX queries. Newly added query planner is not that smart enough for now, and it only supports single-expression index.

- This kind of multi-expr index is not supported, yet.
CREATE INDEX idx_test ON TableA (id ASC), (name DESC);

For more details, you can look around index integration tests in here - INDEX - integration tests

ORDER BY support

Sorting by multiple expressions and both ascending & descending orders are all supported. With the feature index, ORDER BY clause can be also indexed. ORDER BY support for non-indexed expressions are supported by optional feature sorter and it is enabled by default. If you consider to use GlueSQL for big data analysis purpose, then it would be better to turn off sorter feature which requires evaluation of all fetched rows for non-indexed ORDER BY clauses.

SELECT * FROM TableA ORDER BY id;
SELECT * FROM TableA ORDER BY id ASC, name DESC;
SELECT * FROM TableA ORDER BY id || name DESC, name;
...

πŸš€ Features

  • Update query planner to find index in subqueries, @panarch (#250)
  • Fix sled-storage to read & write less on index sync, @panarch (#247)
  • Implement ORDER BY {expr} index support @panarch (#244)
  • ORDER BY support @panarch (#243)
  • Implement TryFrom<&str> for Interval, @panarch (#239)
  • Add more expr support to DEFAULT & INSERT VALUES, @panarch (#236)
  • Add index expression validator @panarch (#231)
  • Implement basic single expression index, @panarch (#227)
  • New AST for execution layer @panarch (#223)

πŸ“š Changes

  • Fix Rust GitHub Action to check more feature combinations on clippy &… @panarch (#248)
  • Update query planner to find index in multi-expr-based ORDER BY, @panarch (#245)
  • Move Box from ast::Function to ast::Expr, @panarch (#241)
  • Split ast::Function into Function & Aggregate, @panarch (#240)
  • Remove unnecessary error formatting on expr & value types which impl … @panarch (#238)
  • Validate default expr @panarch (#237)
  • Update executor/limit to use evaluate, @panarch (#235)
  • Update dependency versions @panarch (#234)
  • Remove evaluate use_empty param, replace to handle in BlendContext @panarch (#233)
  • Fix benches/sled_benchmark.rs @panarch (#225)
  • Fix glue.rs test code to DROP TABLE at first, @panarch (#224)

πŸ› Bug Fixes

  • Pass FilterContext to blend, projection in nested select can use oute… @panarch (#249)
  • Fix sled-storage to read & write less on index sync, @panarch (#247)
  • Apply limit after aggregate & sort finished, @panarch (#246)
  • Fix ALTER TABLE DROP COLUMN to remove related indexes @panarch (#232)

v0.6.0

3 years ago

🌊 Breaking Changes

New data types! - DATE, TIMESTAMP, TIME and INTERVAL

  • Add TIME data type support @panarch (#221)
  • Implement INTERVAL data type @panarch (#218)
  • Add DATE & TIMESTAMP data type @panarch (#215)

πŸ“š Changes

  • Accept more timestamp input forms and add unit tests, @panarch (#222)
  • Remove unnecessary unwrap used in Interval codes @panarch (#220)
  • Replace value::TryFromLiteral trait to default trait impl, @panarch (#219)
  • Fix limit not to scan every row, @panarch (#217)
  • Add PartialEq between Value::I64 and Value::F64 @panarch (#216)
  • Remove Glue struct insert_vec function @panarch (#214)

v0.5.1

3 years ago

πŸš€ Features

  • Merge filter->check_expr function into evaluate @panarch (#208)
  • Support binary arithmetic operations between Value::I64 and Value::F64 @panarch (#207)
  • Implement text concat operator(||) support, @panarch (#206)

πŸ“š Changes

  • Remove implicit CAST from Evaluated to bool, @panarch (#209)
  • Update iter-enum to 1 @taiki-e (#205)
  • Small cleanups - reduce unwrap(), etc @panarch (#204)
  • API: Insert Vec @KyGost (#193)
  • Fix codes to be clippy(v0.1.51) clean @panarch (#192)
  • Select as string & parse single API @KyGost (#187)
  • Remove cargo bench from GitHub Action @panarch (#188)

πŸ› Bug Fixes

  • Fix CREATE TABLE IF NOT EXISTS not to call insert_schema when existin… @panarch (#185)

v0.5.0

3 years ago

🌊 Breaking Changes

  • Replace Value::Opt- and Empty to Value::Null! @panarch (#169)

Value is simplified and now it only has 5 types. No more Empty and Opt- prefixed types.

pub enum Value {
    Bool(bool), 
    I64(i64),   
    F64(f64),   
    Str(String),
    Null,       
}          

πŸš€ Features

  • Add validation to CREATE & ALTER TABLE @panarch (#184)

Changes

  • Merge Prepared & Execute in execute.rs @KyGost (#167)
  • Remove Value::from_data_type, merge to TryFromLiteral trait for Value @panarch (#181)
  • Add custom enum Literal, it replaces ast::Value @panarch (#180)
  • Remove Value::clone_by, replace to Value::TryFrom @panarch (#172)

Refactoring Evaluated enum

  • Apply Cow to Evaluate, remove -Ref types @panarch (#179)
  • Add EvaluatedRef to clean Evaluated binary operation codes @panarch (#177)
  • Remove Evaluated::StringRef, @panarch (#176)
  • Rename AstValue to Literal, @panarch (#170)

πŸ› Bug Fixes

  • Fix type validation to check all possible branches from INSERT & UPDATE @panarch (#183)
  • Remove fake unreachable errors in EvaluateError @panarch (#173)

v0.4.2

3 years ago

πŸš€ Features

  • LEFT and RIGHT functions @KyGost (#157)
  • Implement CAST function @KyGost (#144)
  • Inserting Single Quotes value support @KyGost (#145)
  • Add type checking validator @KyGost (#143)
  • Add Documentation @KyGost (#137)

Changes

  • Add OptStr test case to LOWER & UPPER tests @panarch (#168)
  • Migrate sqlparser dep version from v0.6.1 to v0.8.0 @panarch (#160)
  • Change literal casting function to return from AstValue to Value, @panarch (#162)
  • Update Value->cast to support nullable types, @panarch (#163)
  • Add mdbook.yml GitHub Action to automate mdBook deployment @panarch (#158)
  • Clean up evaluated.rs with macros @KyGost (#156)
  • Split data/value.rs single file module into multiple files @panarch (#154)

v0.4.1

3 years ago

πŸš€ Features

  • Implement UNIQUE constraint in CREATE TABLE @silathdiir (#141)
  • Allow Binary Operations Between <i64> and <f64> @yejihan-dev (#116)

πŸ” Changes

  • SledStorage atomic operation support @panarch (#136)

πŸ“– Documentation

  • Native English changes to README.md for easier readability @noproto (#138, #139)

v0.4.0

3 years ago

πŸš€ Features

  • Update StoreMut mutating data functions to accept multiple items @panarch (#133)

Changes

  • Replace Rc<Vec<_>> to Rc<[_]>, make codes clippy clean @panarch (#132)
  • Merge multi INSERT statements in tests into a single INSERT @panarch (#134)

v0.3.1

3 years ago

πŸš€ Features

  • Added benchmarks @Redblueflame (#123)
  • SledStorage Clone functionality @KyGost (#122)
  • INSERT INTO SELECT @KyGost (#120)
  • Update Store traits not to require std::marker::Send @panarch (#117)

Changes

  • Clean up sled_storage implementation codes @panarch (#128)
  • Changed parse.rs to parse_sql.rs @Redblueflame (#126)

v0.3.0

3 years ago

🌊 Breaking Changes

  • Convert store traits to async @panarch (#115)

πŸš€ Features

  • Support Plus(+) and Minus(-) signs in WHERE @yejihan-dev (#111)
  • Change Store->fetch_schema interface return type to Option<_>, @panarch (#107)
  • Support UPPER & LOWER non-aggregating functions @panarch (#106)
  • Rename Payload::Select aliases to labels @panarch (#104)
  • Support if not exists for create table and if exist for drop table @leoppro (#68)

v0.2.3

3 years ago

πŸš€ Features

  • Projection aliases support for SELECT queries @panarch (#103)
  • More expression support in blend @panarch (#99)
  • Add aliased projection support - AS keyword, @zhangchunzhong (#98)

Changes

  • Remove UnionContext, simplify Context uses @panarch (#100)