mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-27 13:04:20 +01:00
195 lines
5.2 KiB
Tcl
Executable File
195 lines
5.2 KiB
Tcl
Executable File
#!/usr/bin/env tclsh
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
|
|
do_execsql_test select-const-1 {
|
|
SELECT 1
|
|
} {1}
|
|
|
|
do_execsql_test select-const-2 {
|
|
SELECT 2
|
|
} {2}
|
|
|
|
do_execsql_test select-avg {
|
|
SELECT avg(age) FROM users;
|
|
} {50.396}
|
|
|
|
do_execsql_test select-sum {
|
|
SELECT sum(age) FROM users;
|
|
} {503960}
|
|
|
|
do_execsql_test select-total {
|
|
SELECT sum(age) FROM users;
|
|
} {503960}
|
|
|
|
do_execsql_test select-limit {
|
|
SELECT id FROM users LIMIT 1;
|
|
} {1}
|
|
|
|
do_execsql_test select-count {
|
|
SELECT count(id) FROM users;
|
|
} {10000}
|
|
|
|
do_execsql_test select-max {
|
|
SELECT max(age) FROM users;
|
|
} {100}
|
|
|
|
do_execsql_test select-min {
|
|
SELECT min(age) FROM users;
|
|
} {1}
|
|
|
|
do_execsql_test select-group-concat {
|
|
SELECT group_concat(name) FROM products;
|
|
} {hat,cap,shirt,sweater,sweatshirt,shorts,jeans,sneakers,boots,coat,accessories}
|
|
|
|
do_execsql_test select-group-concat-with-delimiter {
|
|
SELECT group_concat(name, ';') FROM products;
|
|
} {hat;cap;shirt;sweater;sweatshirt;shorts;jeans;sneakers;boots;coat;accessories}
|
|
|
|
do_execsql_test select-group-concat-with-column-delimiter {
|
|
SELECT group_concat(name, id) FROM products;
|
|
} {hat2cap3shirt4sweater5sweatshirt6shorts7jeans8sneakers9boots10coat11accessories}
|
|
|
|
do_execsql_test select-string-agg-with-delimiter {
|
|
SELECT string_agg(name, ',') FROM products;
|
|
} {hat,cap,shirt,sweater,sweatshirt,shorts,jeans,sneakers,boots,coat,accessories}
|
|
|
|
do_execsql_test select-string-agg-with-column-delimiter {
|
|
SELECT string_agg(name, id) FROM products;
|
|
} {hat2cap3shirt4sweater5sweatshirt6shorts7jeans8sneakers9boots10coat11accessories}
|
|
|
|
do_execsql_test select-limit-0 {
|
|
SELECT id FROM users LIMIT 0;
|
|
} {}
|
|
|
|
do_execsql_test pragma-cache-size {
|
|
PRAGMA cache_size
|
|
} {-2000}
|
|
|
|
|
|
do_execsql_test cross-join {
|
|
select * from users, products limit 1;
|
|
} {1|Jamie|Foster|dylan00@example.com|496-522-9493|62375\ Johnson\ Rest\ Suite\ 322|West\ Lauriestad|IL|35865|94|1|hat|79.0}
|
|
|
|
do_execsql_test cross-join-specific-columns {
|
|
select first_name, price from users, products limit 1;
|
|
} {Jamie|79.0}
|
|
|
|
do_execsql_test realify {
|
|
select price from products limit 1;
|
|
} {79.0}
|
|
|
|
do_execsql_test where-clause-eq {
|
|
select last_name from users where id = 2000;
|
|
} {Rodriguez}
|
|
|
|
do_execsql_test where-clause-eq-string {
|
|
select count(1) from users where last_name = 'Rodriguez';
|
|
} {61}
|
|
|
|
do_execsql_test where-clause-ne {
|
|
select count(1) from users where id != 2000;
|
|
} {9999}
|
|
|
|
do_execsql_test where-clause-gt {
|
|
select count(1) from users where id > 2000;
|
|
} {8000}
|
|
|
|
do_execsql_test where-clause-gte {
|
|
select count(1) from users where id >= 2000;
|
|
} {8001}
|
|
|
|
do_execsql_test where-clause-lt {
|
|
select count(1) from users where id < 2000;
|
|
} {1999}
|
|
|
|
do_execsql_test where-clause-lte {
|
|
select count(1) from users where id <= 2000;
|
|
} {2000}
|
|
|
|
do_execsql_test where-clause-unary-true {
|
|
select count(1) from users where 1;
|
|
} {10000}
|
|
|
|
# not correct? should be 0?
|
|
do_execsql_test where-clause-unary-false {
|
|
select count(1) from users where 0;
|
|
} {0}
|
|
|
|
do_execsql_test where-clause-no-table-unary-true {
|
|
select 1 where 1;
|
|
} {1}
|
|
|
|
do_execsql_test where-clause-no-table-unary-false {
|
|
select 1 where 0;
|
|
} {}
|
|
|
|
do_execsql_test coalesce {
|
|
select coalesce(NULL, 1);
|
|
} {1}
|
|
|
|
do_execsql_test coalesce-2 {
|
|
select coalesce(NULL, NULL, 1);
|
|
} {1}
|
|
|
|
do_execsql_test coalesce-null {
|
|
select coalesce(NULL, NULL, NULL);
|
|
} {}
|
|
|
|
do_execsql_test coalesce-first {
|
|
select coalesce(1, 2, 3);
|
|
} {1}
|
|
|
|
do_execsql_test coalesce-from-table {
|
|
select coalesce(NULL, 1) from users limit 1;
|
|
} {1}
|
|
|
|
do_execsql_test coalesce-from-table-column {
|
|
select coalesce(NULL, age) from users where age = 94 limit 1;
|
|
} {94}
|
|
|
|
do_execsql_test coalesce-from-table-multiple-columns {
|
|
select coalesce(NULL, age), coalesce(NULL, id) from users where age = 94 limit 1;
|
|
} {94|1}
|
|
|
|
do_execsql_test inner-join-pk {
|
|
select users.first_name as user_name, products.name as product_name from users join products on users.id = products.id;
|
|
} {Jamie|hat
|
|
Cindy|cap
|
|
Tommy|shirt
|
|
Jennifer|sweater
|
|
Edward|sweatshirt
|
|
Nicholas|shorts
|
|
Aimee|jeans
|
|
Rachel|sneakers
|
|
Matthew|boots
|
|
Daniel|coat
|
|
Travis|accessories}
|
|
|
|
do_execsql_test inner-join-non-pk-unqualified {
|
|
select first_name, name from users join products on first_name != name limit 1;
|
|
} {Jamie|hat}
|
|
|
|
do_execsql_test inner-join-non-pk-qualified {
|
|
select users.first_name as user_name, products.name as product_name from users join products on users.first_name = products.name;
|
|
} {}
|
|
|
|
do_execsql_test inner-join-self {
|
|
select u1.first_name as user_name, u2.first_name as neighbor_name from users u1 join users as u2 on u1.id = u2.id + 1 limit 1;
|
|
} {Cindy|Jamie}
|
|
|
|
do_execsql_test inner-join-self-with-where {
|
|
select u1.first_name as user_name, u2.first_name as neighbor_name from users u1 join users as u2 on u1.id = u2.id + 1 where u1.id = 5 limit 1;
|
|
} {Edward|Jennifer}
|
|
|
|
# Uncomment this test when it works. Sqlite3 returns 'Aaron' due to the way it reorders tables in the join based on the where clause.
|
|
#do_execsql_test inner-join-with-where-2 {
|
|
# select u.first_name from users u join products as p on u.first_name != p.name where u.last_name = 'Williams' limit 1;
|
|
#} {Laura} <-- sqlite3 returns 'Aaron'
|
|
|
|
do_execsql_test select-add {
|
|
select u.age + 1 from users u where u.age = 91 limit 1;
|
|
} {92}
|
|
|