pgLatLon
view create_test_db.data.sql @ 79:16787a19a325
Do not return CSTRING to static memory
Avoids wrong pfree under certain circumstances
(e.g. array_agg on empty EBOX or ECLUSTER).
Avoids wrong pfree under certain circumstances
(e.g. array_agg on empty EBOX or ECLUSTER).
| author | jbe |
|---|---|
| date | Thu Oct 23 10:16:01 2025 +0200 (2 days ago) |
| parents | 3cbce515387f |
| children |
line source
2 CREATE OR REPLACE FUNCTION tmp_three_points()
3 RETURNS epoint[]
4 LANGUAGE plpgsql VOLATILE AS $$
5 DECLARE
6 p1 epoint;
7 p2 epoint;
8 p3 epoint;
9 BEGIN
10 p1 := epoint((asin(2*random()-1) / pi()) * 180, (2*random()-1) * 180);
11 p2 := epoint(latitude(p1) + (2*random()-1), longitude(p1) + cos(latitude(p1)/180*pi()) * (2*random()-1));
12 p3 := epoint(latitude(p1) + (2*random()-1), longitude(p1) + cos(latitude(p1)/180*pi()) * (2*random()-1));
13 RETURN ARRAY[p1, p2, p3];
14 END;
15 $$;
17 INSERT INTO "test" ("location", "surrounding", "multipoint", "triangle", "votes") SELECT
18 epoint((asin(2*random()-1) / pi()) * 180, (2*random()-1) * 180),
19 ecircle((asin(2*random()-1) / pi()) * 180, (2*random()-1) * 180, -ln(1-random()) * 1000),
20 ecluster_create_multipoint(tmp_three_points()),
21 ecluster_create_polygon(tmp_three_points()),
22 floor(random()*101)
23 FROM generate_series(1, 10000);
25 DROP FUNCTION tmp_three_points();
