11---
22options:
3- supported_version: 4.3 .2.0
3+ supported_version: 4.7 .2.0
44---
55schema_template:
66 create table products(id bigint, name string, category string, price bigint, stock integer, primary key(id))
77 create index name_idx as select name from products order by name
8+ create index price_idx as select price from products order by price
9+ create index name_price_idx as select name, price from products order by name
810---
911setup:
1012 steps:
@@ -31,7 +33,7 @@ test_block:
3133 END AS stock_status
3234 FROM products
3335 ORDER BY name
34- - supported_version: 4.3 .2.0
36+ - supported_version: 4.7 .2.0
3537 - result: [{name: "Gadget X", stock: 0, stock_status: "Out of Stock"},
3638 {name: "Tool A", stock: 100, stock_status: "Well Stocked"},
3739 {name: "Tool B", stock: 15, stock_status: "In Stock"},
@@ -42,70 +44,21 @@ test_block:
4244 -
4345 - query: SELECT name,
4446 category,
45- CASE category
46- WHEN 'Electronics' THEN 'E'
47- WHEN 'Hardware' THEN 'H'
48- WHEN 'Media' THEN 'M'
47+ CASE
48+ WHEN category = 'Electronics' THEN 'E'
49+ WHEN category = 'Hardware' THEN 'H'
50+ WHEN category = 'Media' THEN 'M'
4951 ELSE 'Other'
5052 END AS category_code
5153 FROM products
5254 ORDER BY name
53- - supported_version: 4.3 .2.0
55+ - supported_version: 4.7 .2.0
5456 - result: [{name: "Gadget X", category: "Electronics", category_code: "E"},
5557 {name: "Tool A", category: "Hardware", category_code: "H"},
5658 {name: "Tool B", category: "Hardware", category_code: "H"},
5759 {name: "Widget A", category: "Electronics", category_code: "E"},
5860 {name: "Widget B", category: "Electronics", category_code: "E"}]
5961
60- # CASE without ELSE (returns NULL)
61- -
62- - query: SELECT name,
63- price,
64- CASE
65- WHEN price > 150 THEN 'Expensive'
66- WHEN price < 100 THEN 'Cheap'
67- END AS price_category
68- FROM products
69- ORDER BY name
70- - supported_version: 4.3.2.0
71- - result: [{name: "Gadget X", price: 200, price_category: "Expensive"},
72- {name: "Tool A", price: 80, price_category: "Cheap"},
73- {name: "Tool B", price: 120, price_category: null},
74- {name: "Widget A", price: 100, price_category: null},
75- {name: "Widget B", price: 150, price_category: null}]
76-
77- # CASE in WHERE clause
78- -
79- - query: SELECT name, category, price
80- FROM products
81- WHERE CASE
82- WHEN category = 'Electronics' THEN price > 100
83- ELSE price > 80
84- END
85- ORDER BY name
86- - supported_version: 4.3.2.0
87- - result: [{name: "Gadget X", category: "Electronics", price: 200},
88- {name: "Tool B", category: "Hardware", price: 120},
89- {name: "Widget B", category: "Electronics", price: 150}]
90-
91- # CASE in ORDER BY
92- -
93- - query: SELECT name, stock
94- FROM products
95- ORDER BY
96- CASE
97- WHEN stock = 0 THEN 1
98- WHEN stock < 10 THEN 2
99- ELSE 3
100- END,
101- name
102- - supported_version: 4.3.2.0
103- - result: [{name: "Gadget X", stock: 0},
104- {name: "Widget B", stock: 5},
105- {name: "Tool A", stock: 100},
106- {name: "Tool B", stock: 15},
107- {name: "Widget A", stock: 50}]
108-
10962 # Nested CASE
11063 -
11164 - query: SELECT name,
@@ -121,7 +74,7 @@ test_block:
12174 END AS product_tier
12275 FROM products
12376 ORDER BY name
124- - supported_version: 4.3 .2.0
77+ - supported_version: 4.7 .2.0
12578 - result: [{name: "Gadget X", price: 200, stock: 0, product_tier: "Unavailable"},
12679 {name: "Tool A", price: 80, stock: 100, product_tier: "Budget"},
12780 {name: "Tool B", price: 120, stock: 15, product_tier: "Standard"},
0 commit comments