Feat: Add syntax highlighting for a lot more languages
This commit is contained in:
83
samples/sql.sql
Normal file
83
samples/sql.sql
Normal file
@@ -0,0 +1,83 @@
|
||||
-- Sample SQL to exercise the highlight rules
|
||||
|
||||
-- DDL
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS public.users (
|
||||
user_id BIGSERIAL PRIMARY KEY,
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
profile JSONB,
|
||||
balance DECIMAL(12,2) DEFAULT 0.00,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ,
|
||||
CONSTRAINT email_chk CHECK (email LIKE '%@%')
|
||||
);
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX CONCURRENTLY IF NOT EXISTS users_email_idx ON public.users USING btree (email);
|
||||
CREATE INDEX IF NOT EXISTS users_profile_gin_idx ON public.users USING gin (profile);
|
||||
|
||||
-- Insert & returning
|
||||
INSERT INTO public.users (email, profile, balance)
|
||||
VALUES
|
||||
('alice@example.com', '{"plan":"pro","tags":["a","b"]}'::jsonb, 25.50),
|
||||
('bob@example.com', '{"plan":"free","tags":["c"]}'::jsonb, 0.00)
|
||||
RETURNING user_id, email, profile;
|
||||
|
||||
-- Update with CASE and CAST
|
||||
UPDATE public.users u
|
||||
SET balance = balance + CAST(5 AS DECIMAL),
|
||||
updated_at = CURRENT_TIMESTAMP,
|
||||
profile = jsonb_set(profile, '{last_seen}', to_jsonb(CURRENT_TIMESTAMP)),
|
||||
email = CASE
|
||||
WHEN email LIKE '%@example.com' THEN replace(email, '@example.com', '@example.org')
|
||||
ELSE email
|
||||
END
|
||||
WHERE u.balance >= 0
|
||||
RETURNING user_id, email, balance;
|
||||
|
||||
-- Delete with USING
|
||||
DELETE FROM public.users AS u
|
||||
USING public.users AS t
|
||||
WHERE u.user_id = t.user_id
|
||||
AND u.email LIKE 'bob@%';
|
||||
|
||||
-- Window, CTE, aggregates
|
||||
WITH recent AS (
|
||||
SELECT *
|
||||
FROM public.users
|
||||
WHERE created_at > NOW() - INTERVAL '30 days'
|
||||
)
|
||||
SELECT
|
||||
user_id,
|
||||
email,
|
||||
balance,
|
||||
SUM(balance) OVER (PARTITION BY 1 ORDER BY created_at ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total,
|
||||
ROW_NUMBER() OVER (ORDER BY created_at DESC) AS rn
|
||||
FROM recent
|
||||
ORDER BY created_at DESC
|
||||
LIMIT 50 OFFSET 0;
|
||||
|
||||
-- Joins and JSON
|
||||
CREATE TEMP TABLE events (
|
||||
event_id BIGSERIAL PRIMARY KEY,
|
||||
user_id BIGINT REFERENCES public.users(user_id),
|
||||
payload JSONB,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
INSERT INTO events (user_id, payload) VALUES
|
||||
(1, '{"type":"login","ip":"127.0.0.1"}'),
|
||||
(1, '{"type":"purchase","amount":9.99,"items":[{"sku":"A1","qty":1}]}' ),
|
||||
(2, '{"type":"login","ip":"10.0.0.2"}');
|
||||
|
||||
SELECT u.email, e.payload->>'type' AS event_type, e.payload
|
||||
FROM public.users u
|
||||
LEFT JOIN events e ON e.user_id = u.user_id
|
||||
WHERE e.payload ? 'type'
|
||||
ORDER BY e.created_at DESC;
|
||||
|
||||
-- Transaction control
|
||||
BEGIN;
|
||||
UPDATE public.users SET balance = balance - 5 WHERE email LIKE 'alice%';
|
||||
INSERT INTO events (user_id, payload)
|
||||
SELECT user_id, jsonb_build_object('type','adjust','delta',-5) FROM public.users WHERE email LIKE 'alice%';
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user