kopia lustrzana https://github.com/openmaptiles/openmaptiles
Fix & optimize incorrect function declarations (#918)
* All functions that access database must be declared as `STABLE`, not `IMMUTABLE` -- because database can change at any moment, e.g. during an update * there are a few functions that could be made `STRICT` -- passing `NULL` as a parameter will always result in a `NULL`, but for some reason that causes a significant decrease in perf. * tagged one function as parallel safe NOTE: somehow `ST_AsMVT()` method of tile generation is showing 70-90% slowdown with this patch. I am not sure of why this is happening. If the reason is the `IMMUTABLE` -> `STABLE` change, we may have to dig deeper into PG optimizationpull/896/head^2
rodzic
ad8bd41567
commit
2b95d1cffa
|
@ -38,5 +38,6 @@ SELECT
|
|||
FROM osm_aerodrome_label_point
|
||||
WHERE geometry && bbox
|
||||
AND zoom_level >= 10;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -56,5 +56,6 @@ FROM (
|
|||
WHERE zoom_level >= 14
|
||||
) AS zoom_levels
|
||||
WHERE geometry && bbox;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -206,7 +206,10 @@ SELECT CASE
|
|||
THEN replace(SUBSTRING(name, POSITION(' at ' IN name) + 4), ' ', '')
|
||||
ELSE replace(replace(name, ' ', ''), 'Extentof', '')
|
||||
END;
|
||||
$$ LANGUAGE SQL IMMUTABLE;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE
|
||||
;
|
||||
|
||||
|
||||
-- etldoc: ne_110m_admin_0_boundary_lines_land -> boundary_z0
|
||||
|
@ -625,5 +628,6 @@ FROM (
|
|||
WHERE geometry && bbox
|
||||
AND zoom_level >= 13
|
||||
) AS zoom_levels;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -112,6 +112,9 @@ FROM (
|
|||
AND geometry && bbox
|
||||
) AS zoom_levels
|
||||
ORDER BY render_height ASC, ST_YMin(geometry) DESC;
|
||||
$$ LANGUAGE SQL IMMUTABLE;
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE
|
||||
;
|
||||
|
||||
-- not handled: where a building outline covers building parts
|
||||
|
|
|
@ -18,5 +18,6 @@ SELECT
|
|||
FROM osm_housenumber_point
|
||||
WHERE zoom_level >= 14
|
||||
AND geometry && bbox;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -15,6 +15,7 @@ SELECT CASE
|
|||
%%FIELD_MAPPING: class %%
|
||||
END;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
||||
-- etldoc: ne_110m_glaciated_areas -> landcover_z0
|
||||
|
@ -185,5 +186,6 @@ FROM (
|
|||
WHERE zoom_level >= 14
|
||||
AND geometry && bbox
|
||||
) AS zoom_levels;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -214,5 +214,6 @@ FROM (
|
|||
WHERE zoom_level >= 14
|
||||
) AS zoom_levels
|
||||
WHERE geometry && bbox;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -57,5 +57,6 @@ WHERE zoom_level >= 7
|
|||
AND (rank <= 5 OR zoom_level >= 14)
|
||||
ORDER BY "rank" ASC;
|
||||
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
PARALLEL SAFE;
|
||||
-- TODO: Check if the above can be made STRICT -- i.e. if pixel_width could be NULL
|
||||
|
|
|
@ -336,5 +336,6 @@ FROM (
|
|||
AND geometry_point && bbox
|
||||
) AS park_point
|
||||
) AS park_all;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
PARALLEL SAFE;
|
||||
-- TODO: Check if the above can be made STRICT -- i.e. if pixel_width could be NULL
|
||||
|
|
|
@ -74,5 +74,6 @@ FROM (
|
|||
OR (zoom_level BETWEEN 11 AND 12 AND (gridrank <= 14 OR "rank" IS NOT NULL))
|
||||
OR (zoom_level >= 13)
|
||||
) AS city_all;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -142,5 +142,6 @@ FROM (
|
|||
FROM layer_city(bbox, zoom_level, pixel_width)
|
||||
ORDER BY "rank" ASC
|
||||
) AS place_all
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
PARALLEL SAFE;
|
||||
-- TODO: Check if the above can be made STRICT -- i.e. if pixel_width could be NULL
|
||||
|
|
|
@ -94,5 +94,6 @@ FROM (
|
|||
AND zoom_level >= 14
|
||||
) AS poi_union
|
||||
ORDER BY "rank"
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
PARALLEL SAFE;
|
||||
-- TODO: Check if the above can be made STRICT -- i.e. if pixel_width could be NULL
|
||||
|
|
|
@ -698,5 +698,6 @@ FROM (
|
|||
) AS zoom_levels
|
||||
WHERE geometry && bbox
|
||||
ORDER BY z_order ASC;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -147,5 +147,6 @@ FROM (
|
|||
) AS zoom_levels
|
||||
WHERE geometry && bbox
|
||||
ORDER BY z_order ASC;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -385,5 +385,6 @@ FROM (
|
|||
WHERE zoom_level >= 14
|
||||
) AS zoom_levels
|
||||
WHERE geometry && bbox;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -74,5 +74,6 @@ WHERE geometry && bbox
|
|||
OR (zoom_level >= "rank" AND "rank" IS NOT NULL)
|
||||
OR (zoom_level >= 8)
|
||||
);
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
|
@ -220,5 +220,6 @@ FROM (
|
|||
WHERE zoom_level >= 14
|
||||
) AS zoom_levels
|
||||
WHERE geometry && bbox;
|
||||
$$ LANGUAGE SQL IMMUTABLE
|
||||
$$ LANGUAGE SQL STABLE
|
||||
-- STRICT
|
||||
PARALLEL SAFE;
|
||||
|
|
Ładowanie…
Reference in New Issue