mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-12 12:44:20 +01:00
Closes #3892 Closes #3888 Stuff like: ```sql turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select case (select y, z from t2) when 1 then 'one' else 'other' end from t1; × Parse error: base expression in CASE must return 1 value turso> create table t(x, y); insert into t values (1, 2); select (select x, y from t) as result; × Parse error: result column must return 1 value, got 2 turso> create table t1(x,y); create table t2(y); insert into t1 values (1,1); insert into t2 values (1); select * from t2 where y = (select x,y from t1); × Parse error: all arguments to binary operator = must return the same number of │ values. Got: (1) = (2) turso> create table orders(customer_id, amount); create table thresholds(min_amount, max_amount); insert into orders values (100, 50), (100, 150); insert into thresholds values (100, 200); select customer_id, sum(amount) as total from orders group by customer_id having total > (select min_amount, max_amount from thresholds); × Parse error: all arguments to binary operator > must return the same number of │ values. Got: (1) > (2) turso> create table items(id); create table config(max_results, other_col); insert into items values (1), (2), (3); insert into config values (2, 3); select * from items limit (select max_results, other_col from config); × Parse error: limit expression must return 1 value, got 2 turso> create table items(id); create table config(skip_count, other_col); insert into items values (1), (2), (3); insert into config values (1, 2); select * from items limit 1 offset (select skip_count, other_col from config); × Parse error: offset expression must return 1 value, got 2 turso> create table items(id, name); create table sort_order(priority, other_col); insert into items values (1, 'a'), (2, 'b'); insert into sort_order values (1, 2); select * from items order by (select priority, other_col from sort_order); × Parse error: order by expression must return 1 value, got 2 turso> create table sales(product_id, amount); create table grouping(category, other_col); insert into sales values (1, 100), (2, 200); insert into grouping values (1, 2); select sum(amount) from sales group by (select category, other_col from grouping); × Parse error: group by expression must return 1 value, got 2 turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select case when (select y, z from t2) then 'yes' else 'no' end from t1; × Parse error: when expression in CASE must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select case when x = 1 then (select y, z from t2) else 0 end from t1; × Parse error: then expression in CASE must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select case when x = 2 then 0 else (select y, z from t2) end from t1; × Parse error: else expression in CASE must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select max((select y, z from t2)) from t1; × Parse error: argument 0 to function call max must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select x + (select y, z from t2) from t1; × Parse error: all arguments to binary operator + must return the same number of │ values. Got: (1) + (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (5); insert into t2 values (1, 2); select * from t1 where x between (select y, z from t2) and 10; × Parse error: all arguments to binary operator <= must return the same number of │ values. Got: (2) <= (1) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select cast((select y, z from t2) as integer) from t1; × Parse error: argument to CAST must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values ('a', 'b'); select (select y, z from t2) collate nocase from t1; × Parse error: argument to COLLATE must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select * from t1 where (select y, z from t2) is null; × Parse error: all arguments to binary operator IS must return the same number of │ values. Got: (2) IS (1) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select * from t1 where (select y, z from t2) not null; × Parse error: argument to NOT NULL must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values ('a', 'b'); select * from t1 where (select y, z from t2) like 'a%'; × Parse error: left operand of LIKE must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select -(select y, z from t2) from t1; × Parse error: argument to unary operator - must return 1 value. Got: (2) turso> create table t1(x); create table t2(y, z); insert into t1 values (1); insert into t2 values (1, 2); select abs((select y, z from t2)) from t1; × Parse error: argument 0 to function call abs must return 1 value. Got: (2) ``` Closes #3906