Skip to content

Commit 5cf41fd

Browse files
committed
init sqllogictest
1 parent d5070f9 commit 5cf41fd

8 files changed

Lines changed: 124 additions & 0 deletions

File tree

Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,8 @@ ctor = "0.2.0"
4747
env_logger = "0.10"
4848
paste = "^1.0"
4949
rstest = "0.17"
50+
51+
[workspace]
52+
members = [
53+
"tests/sqllogictest",
54+
]

tests/slt/create_table.slt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
onlyif sqlrs_v2
2+
statement ok
3+
create table t1(v1 varchar, v2 varchar, v3 varchar);
4+
insert into t1 values('a', 'b', 'c');
5+
6+
7+
onlyif sqlrs_v2
8+
statement error
9+
create table t1(v1 int);
10+
11+
12+
onlyif sqlrs_v2
13+
statement ok
14+
create table t2(v1 boolean, v2 tinyint, v3 smallint, v4 int, v5 bigint, v6 float, v7 double, v8 varchar);
15+
insert into t2 values(true, 1, 2, 3, 4, 5.1, 6.2, '7');
16+
17+
18+
onlyif sqlrs_v2
19+
statement ok
20+
create table t3(v1 boolean, v2 tinyint unsigned, v3 smallint unsigned, v4 int unsigned, v5 bigint unsigned, v6 float, v7 double, v8 varchar);
21+
insert into t3 values(true, 1, 2, 3, 4, 5.1, 6.2, '7');
22+
23+
24+
onlyif sqlrs_v2
25+
statement ok
26+
create table t4(v1 int);
27+
select v1 from t4;
28+
29+
30+
onlyif sqlrs_v2
31+
statement ok
32+
create table read_csv_table as select * from read_csv('tests/csv/t2.csv');
33+
34+
onlyif sqlrs_v2
35+
query I
36+
select a from read_csv_table limit 1;
37+
----
38+
10

tests/slt/csv/csv.slt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
onlyif sqlrs_v2
2+
statement ok
3+
create table state(id varchar, state_code varchar, state_name varchar);
4+
5+
onlyif sqlrs_v2
6+
statement ok
7+
copy state from 'tests/slt/csv/state1.csv' ( DELIMITER '|' );
8+
9+
onlyif sqlrs_v2
10+
statement ok
11+
copy state from 'tests/slt/csv/state2.csv' ( DELIMITER '|', HEADER false);
12+
13+
onlyif sqlrs_v2
14+
query I
15+
SELECT id FROM state
16+
----
17+
1
18+
2
19+
3
20+
4

tests/slt/csv/state1.csv

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
id|state_code|state_name
2+
1|CA|California State
3+
2|CO|Colorado State
4+
3|NJ|New Jersey
5+

tests/slt/csv/state2.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
4|CA|California State
2+

tests/sqllogictest/Cargo.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[package]
2+
name = "sqllogictest-test"
3+
version = "0.4.0"
4+
edition = "2021"
5+
6+
[dependencies]
7+
"kip-sql" = { path = "../.." }
8+
sqllogictest = "0.6"
9+
glob = "0.3"
10+
async-trait = "0.1"
11+
libtest-mimic = "0.6"
12+
13+
[[test]]
14+
name = "sqllogictest"
15+
harness = false

tests/sqllogictest/src/lib.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
2+
use std::sync::Arc;
3+
4+
use sqllogictest::{AsyncDB, Runner};
5+
use kip_sql::db::{Database,DatabaseError};
6+
7+
fn init_tables(){
8+
9+
let db = Arc::new( Database::new_on_mem());
10+
let mut tester = Runner::new(DatabaseWrapper {db});
11+
tester.run_file(sqlfile).unwrap()
12+
// tokio_test::block_on(async move {
13+
// let _ = database.run("create table t1 (a int, b boolean)").await?;
14+
// let _ = database.run("insert into t1 values (1, true), (2, false)").await?;
15+
// let vec_batch = database.run("select * from t1").await?;
16+
17+
// let table = database.storage
18+
// .get_catalog()
19+
// .get_table(0).unwrap().clone();
20+
// println!("{:#?}", concat_batches(&table.schema(), &vec_batch));
21+
22+
// Ok(())
23+
// })
24+
25+
}
26+
27+
struct DatabaseWrapper {
28+
db: Arc<Database>,
29+
}
30+
31+
#[async_trait::async_trait]
32+
impl AsyncDB for DatabaseWrapper {
33+
type Error = DatabaseError;
34+
async fn run(&mut self, sql: &str) -> Result<String, Self::Error> {
35+
let chunks = self.db.run(sql).await?;
36+
let output = chunks.iter().map(record_batch_to_string).try_collect();
37+
Ok(output?)
38+
}
39+
}

tests/sqllogictest/tests/sqllogictest.rs

Whitespace-only changes.

0 commit comments

Comments
 (0)