RisingLight uses two test frameworks to do end-to-end tests.
SQLLogicTest will run a special slt
file and compare the result from the expected output.
The test cases are stored under tests/sql
folder.
For example, let's see order_by.slt
:
statement ok
create table t(v1 int not null, v2 int not null)
statement ok
insert into t values(1, 1), (4, 2), (3, 3), (10, 12), (2, 5)
query I
select v1 from t order by v1 asc
----
1
2
3
4
10
The first 3 test cases of this test file are
- check whether create table works
- check whether insert table works
- select data from table
We use statement ok
to ensure statement successfully runs, and query
to compare the query result.
When running make test
, the test runner will run all files under tests/sql
folder.
SQLPlannerTest is a regression test. We will write yaml files to describe the cases we want to test.
The test cases are stored in tests/planner_test
. Use the following command:
make apply_planner_test
to generate a sql file containing explain results for each yaml file.
Generally, we will compare the explain result before and after a commit, so as to know how the commit affects the optimizer result. We don't really care about the correctness -- we just compare the explain result before and after a PR.