sqlplannertest

Crates.iosqlplannertest
lib.rssqlplannertest
version0.2.0
sourcesrc
created_at2022-06-09 11:13:49.25599
updated_at2024-11-08 03:25:29.843111
descriptionA yaml-based SQL planner test framework.
homepagehttps://github.com/risinglightdb/sqlplannertest-rs
repositoryhttps://github.com/risinglightdb/sqlplannertest-rs
max_upload_size
id602555
size29,541
crates-io (github:risinglightdb:crates-io)

documentation

README

SQLPlannerTest

A yaml-based SQL planner test framework.

SQLPlannerTest is a regression test framework. It will read a special yaml file for describing the test cases, call the database system to generate result, and store the result in a special regression test file format.

Here's an example of test description file:

- id: sql1
  sql: |
    CREATE TABLE t1(v1 int);
- id: sql2
  sql: |
    CREATE TABLE t2(v2 int);
- sql: |
    SELECT * FROM t1, t2 WHERE t1.v1 = t2.v2;
  desc: Test whether join works correctly.
  before: ["*sql1", "*sql2", "CREATE TABLE t3(v3 int);"]
  tasks:
  - logical
  - physical

Basically, it is like:

- id: <test case id> # which will be referenced by `before`
  sql: SELECT * FROM table;
  desc: Description of this test case
  before:
  - "*test_case_1"           # use *id to reference to another test case
  - "*test_case_2"
  - CREATE TABLE t2(v2 int); # or directly write a SQL here
  tasks:                      # run logical and physical test for this case
  - logical
  - physical

And it will generate a file describing the result. Developers can diff the regression test result to see what have been changed throughout the process.

NaiveDB

The naive database system for testing sqlplannertest.

Update the test cases

cargo run -p naivedb --bin apply

Verify the test cases

cargo test -p naivedb
# or use nextest
cargo nextest run -p naivedb
Commit count: 9

cargo fmt