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 (12 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();
