I admit, I originally thought this talk was titled “You can do THAT with Perl?!?” and got kind of annoyed when I didn’t see any Perl at all. You see, this talk was about new features in SQL, specifically their implementation in Postgres.
The coolest thing in this talk (and at YAPC so far, in my opinion) was creating a graphic of the Mandelbrot set in SQL:
WITH RECURSIVE
Z(Ix, Iy, Cx, Cy, X, Y, I)
AS (
SELECT Ix, Iy, X::float, Y::float, X::float, Y::float, 0
FROM
(SELECT -2.2 + 0.031 * i, i FROM generate_series(0,101) AS i) AS xgen(x,ix)
CROSS JOIN
(SELECT -1.5 + 0.031 * i, i FROM generate_series(0,101) AS i) AS ygen(y,iy)
UNION ALL
SELECT Ix, Iy, Cx, Cy, X * X - Y * Y + Cx AS X, Y * X * 2 + Cy, I + 1
FROM Z
WHERE X * X + Y * Y < 16::float
AND I < 100
),
Zt (Ix, Iy, I) AS (
SELECT Ix, Iy, MAX(I) AS I
FROM Z
GROUP BY Iy, Ix
ORDER BY Iy, Ix
)
SELECT array_to_string(
array_agg(
SUBSTRING(
' .,,,-----++++%%%%@@@@#### ',
GREATEST(I,1)
),''
)
FROM Zt
GROUP BY Iy
ORDER BY Iy;
I think I got that right...
Brad YAPC 10 david fetter, mandelbrot set, sql
Recent Comments