Skip to content

Commit a655952

Browse files
committed
more fixtures
1 parent 266c507 commit a655952

File tree

3 files changed

+132
-0
lines changed

3 files changed

+132
-0
lines changed

__fixtures__/generated/generated.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
"pretty/select_statements-4.sql": "SELECT name FROM customers\nUNION ALL\nSELECT name FROM suppliers\nORDER BY name",
66
"pretty/select_statements-5.sql": "SELECT name, email FROM users WHERE status = 'active'",
77
"pretty/select_statements-6.sql": "SELECT u.name, o.total FROM users u, orders o WHERE u.id = o.user_id",
8+
"pretty/misc-1.sql": "WITH recent_orders AS (\n SELECT o.id, o.user_id, o.created_at\n FROM orders o\n WHERE o.created_at > NOW() - INTERVAL '30 days'\n), high_value_orders AS (\n SELECT r.user_id, COUNT(*) AS order_count, SUM(oi.price * oi.quantity) AS total_spent\n FROM recent_orders r\n JOIN order_items oi ON r.id = oi.order_id\n GROUP BY r.user_id\n)\nSELECT u.id, u.name, h.total_spent\nFROM users u\nJOIN high_value_orders h ON u.id = h.user_id\nWHERE h.total_spent > 1000\nORDER BY h.total_spent DESC",
9+
"pretty/misc-2.sql": "SELECT\n department,\n employee_id,\n COUNT(*) FILTER (WHERE status = 'active') OVER (PARTITION BY department) AS active_count,\n RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank\nFROM employee_status\nGROUP BY GROUPING SETS ((department), (department, employee_id))",
10+
"pretty/misc-3.sql": "SELECT u.id, u.name, j.key, j.value\nFROM users u,\nLATERAL jsonb_each_text(u.preferences) AS j(key, value)\nWHERE j.key LIKE 'notif_%' AND j.value::boolean = true",
11+
"pretty/misc-4.sql": "SELECT p.id, p.title,\n CASE\n WHEN EXISTS (\n SELECT 1 FROM reviews r\n WHERE r.product_id = p.id AND r.rating >= 4\n ) THEN 'Popular'\n ELSE 'Unrated'\n END AS status\nFROM products p\nWHERE p.archived = false",
12+
"pretty/misc-5.sql": "WITH logs AS (\n SELECT id, payload::json->>'event' AS event, (payload::json->>'ts')::timestamp AS ts\n FROM event_log\n WHERE ts > NOW() - INTERVAL '7 days'\n)\nSELECT event, COUNT(*) AS freq\nFROM (\n SELECT DISTINCT event, ts::date AS event_day\n FROM logs\n) d\nGROUP BY event\nORDER BY freq DESC",
13+
"pretty/misc-6.sql": "SELECT \n o.id AS order_id,\n u.name AS user_name,\n p.name AS product_name,\n s.status,\n sh.shipped_at,\n r.refund_amount\nFROM orders o\nJOIN users u \n ON o.user_id = u.id\nJOIN order_items oi \n ON oi.order_id = o.id\nJOIN products p \n ON (\n (p.id = oi.product_id AND p.available = true)\n OR \n (p.sku = oi.product_sku AND (p.discontinued = false OR p.replacement_id IS NOT NULL))\n )\nLEFT JOIN shipping sh \n ON (\n sh.order_id = o.id \n AND (\n (sh.carrier = 'UPS' AND sh.tracking_number IS NOT NULL)\n OR \n (sh.carrier = 'FedEx' AND sh.shipped_at > o.created_at + INTERVAL '1 day')\n )\n )\nLEFT JOIN statuses s \n ON s.id = o.status_id \n AND (\n s.name != 'cancelled'\n OR (s.name = 'cancelled' AND s.updated_at > NOW() - INTERVAL '7 days')\n )\nLEFT JOIN refunds r \n ON r.order_id = o.id \n AND (\n (r.status = 'approved' AND r.processed_at IS NOT NULL)\n OR \n (r.status = 'pending' AND r.requested_at < NOW() - INTERVAL '14 days')\n )\nWHERE o.created_at > NOW() - INTERVAL '90 days'\n AND u.active = true\n AND (\n s.status = 'shipped' \n OR (\n s.status = 'processing' \n AND EXISTS (\n SELECT 1 FROM order_notes n WHERE n.order_id = o.id AND n.note ILIKE '%expedite%'\n )\n )\n )\nORDER BY o.created_at DESC",
814
"pretty/create_table-1.sql": "CREATE TABLE users (\n id SERIAL PRIMARY KEY,\n name TEXT NOT NULL,\n email TEXT UNIQUE\n)",
915
"pretty/create_table-2.sql": "CREATE TABLE products (\n id SERIAL PRIMARY KEY,\n name VARCHAR(255) NOT NULL,\n price DECIMAL(10,2) CHECK (price > 0),\n category_id INTEGER,\n description TEXT,\n created_at TIMESTAMP DEFAULT now(),\n updated_at TIMESTAMP,\n UNIQUE (name, category_id),\n FOREIGN KEY (category_id) REFERENCES categories(id)\n)",
1016
"pretty/create_table-3.sql": "CREATE TABLE orders (\n id SERIAL PRIMARY KEY,\n subtotal DECIMAL(10,2) NOT NULL,\n tax_rate DECIMAL(5,4) DEFAULT 0.0825,\n tax_amount DECIMAL(10,2) GENERATED ALWAYS AS (subtotal * tax_rate) STORED,\n total DECIMAL(10,2) GENERATED ALWAYS AS (subtotal + tax_amount) STORED\n)",
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
-- 1. Deeply nested CTEs with joins and aggregation
2+
WITH recent_orders AS (
3+
SELECT o.id, o.user_id, o.created_at
4+
FROM orders o
5+
WHERE o.created_at > NOW() - INTERVAL '30 days'
6+
), high_value_orders AS (
7+
SELECT r.user_id, COUNT(*) AS order_count, SUM(oi.price * oi.quantity) AS total_spent
8+
FROM recent_orders r
9+
JOIN order_items oi ON r.id = oi.order_id
10+
GROUP BY r.user_id
11+
)
12+
SELECT u.id, u.name, h.total_spent
13+
FROM users u
14+
JOIN high_value_orders h ON u.id = h.user_id
15+
WHERE h.total_spent > 1000
16+
ORDER BY h.total_spent DESC;
17+
18+
-- 2. Complex SELECT with window functions, FILTER, and GROUPING SETS
19+
SELECT
20+
department,
21+
employee_id,
22+
COUNT(*) FILTER (WHERE status = 'active') OVER (PARTITION BY department) AS active_count,
23+
RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank
24+
FROM employee_status
25+
GROUP BY GROUPING SETS ((department), (department, employee_id));
26+
27+
-- 3. Query with JSON accessors, lateral joins, and functions
28+
SELECT u.id, u.name, j.key, j.value
29+
FROM users u,
30+
LATERAL jsonb_each_text(u.preferences) AS j(key, value)
31+
WHERE j.key LIKE 'notif_%' AND j.value::boolean = true;
32+
33+
-- 4. Use of EXISTS with nested correlated subqueries and CASE logic
34+
SELECT p.id, p.title,
35+
CASE
36+
WHEN EXISTS (
37+
SELECT 1 FROM reviews r
38+
WHERE r.product_id = p.id AND r.rating >= 4
39+
) THEN 'Popular'
40+
ELSE 'Unrated'
41+
END AS status
42+
FROM products p
43+
WHERE p.archived = false;
44+
45+
-- 5. Inlined functions, CTEs, multi-level nesting with type casts
46+
WITH logs AS (
47+
SELECT id, payload::json->>'event' AS event, (payload::json->>'ts')::timestamp AS ts
48+
FROM event_log
49+
WHERE ts > NOW() - INTERVAL '7 days'
50+
)
51+
SELECT event, COUNT(*) AS freq
52+
FROM (
53+
SELECT DISTINCT event, ts::date AS event_day
54+
FROM logs
55+
) d
56+
GROUP BY event
57+
ORDER BY freq DESC;
58+
59+
-- 6. A massive one for ya
60+
61+
SELECT
62+
o.id AS order_id,
63+
u.name AS user_name,
64+
p.name AS product_name,
65+
s.status,
66+
sh.shipped_at,
67+
r.refund_amount
68+
FROM orders o
69+
JOIN users u
70+
ON o.user_id = u.id
71+
JOIN order_items oi
72+
ON oi.order_id = o.id
73+
JOIN products p
74+
ON (
75+
(p.id = oi.product_id AND p.available = true)
76+
OR
77+
(p.sku = oi.product_sku AND (p.discontinued = false OR p.replacement_id IS NOT NULL))
78+
)
79+
LEFT JOIN shipping sh
80+
ON (
81+
sh.order_id = o.id
82+
AND (
83+
(sh.carrier = 'UPS' AND sh.tracking_number IS NOT NULL)
84+
OR
85+
(sh.carrier = 'FedEx' AND sh.shipped_at > o.created_at + INTERVAL '1 day')
86+
)
87+
)
88+
LEFT JOIN statuses s
89+
ON s.id = o.status_id
90+
AND (
91+
s.name != 'cancelled'
92+
OR (s.name = 'cancelled' AND s.updated_at > NOW() - INTERVAL '7 days')
93+
)
94+
LEFT JOIN refunds r
95+
ON r.order_id = o.id
96+
AND (
97+
(r.status = 'approved' AND r.processed_at IS NOT NULL)
98+
OR
99+
(r.status = 'pending' AND r.requested_at < NOW() - INTERVAL '14 days')
100+
)
101+
WHERE o.created_at > NOW() - INTERVAL '90 days'
102+
AND u.active = true
103+
AND (
104+
s.status = 'shipped'
105+
OR (
106+
s.status = 'processing'
107+
AND EXISTS (
108+
SELECT 1 FROM order_notes n WHERE n.order_id = o.id AND n.note ILIKE '%expedite%'
109+
)
110+
)
111+
)
112+
ORDER BY o.created_at DESC;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
2+
import { FixtureTestUtils } from '../../test-utils';
3+
const fixtures = new FixtureTestUtils();
4+
5+
it('pretty-misc', async () => {
6+
await fixtures.runFixtureTests([
7+
"pretty/misc-1.sql",
8+
"pretty/misc-2.sql",
9+
"pretty/misc-3.sql",
10+
"pretty/misc-4.sql",
11+
"pretty/misc-5.sql",
12+
"pretty/misc-6.sql"
13+
]);
14+
});

0 commit comments

Comments
 (0)