Skip to content

Instantly share code, notes, and snippets.

@simonw
Last active August 26, 2025 16:12
Show Gist options
  • Save simonw/14cab44a5a169806263bcb8e481944aa to your computer and use it in GitHub Desktop.
Save simonw/14cab44a5a169806263bcb8e481944aa to your computer and use it in GitHub Desktop.
-- Example from https://www.sqlite.org/lang_with.html#outlandish_recursive_query_examples
CREATE TABLE mandelbrot AS WITH RECURSIVE
xaxis(x) AS (VALUES(-2.0) UNION ALL SELECT x+0.05 FROM xaxis WHERE x<1.2),
yaxis(y) AS (VALUES(-1.0) UNION ALL SELECT y+0.1 FROM yaxis WHERE y<1.0),
m(iter, cx, cy, x, y) AS (
SELECT 0, x, y, 0.0, 0.0 FROM xaxis, yaxis
UNION ALL
SELECT iter+1, cx, cy, x*x-y*y + cx, 2.0*x*y + cy FROM m
WHERE (x*x + y*y) < 4.0 AND iter<28
),
m2(iter, cx, cy) AS (
SELECT max(iter), cx, cy FROM m GROUP BY cx, cy
),
a(t) AS (
SELECT group_concat( substr(' .+*#', 1+min(iter/7,4), 1), '')
FROM m2 GROUP BY cy
)
SELECT group_concat(rtrim(t),x'0a') FROM a;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment