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
|
FROM osm_aerodrome_label_point
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
AND zoom_level >= 10;
|
AND zoom_level >= 10;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -56,5 +56,6 @@ FROM (
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox;
|
WHERE geometry && bbox;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -206,7 +206,10 @@ SELECT CASE
|
||||||
THEN replace(SUBSTRING(name, POSITION(' at ' IN name) + 4), ' ', '')
|
THEN replace(SUBSTRING(name, POSITION(' at ' IN name) + 4), ' ', '')
|
||||||
ELSE replace(replace(name, ' ', ''), 'Extentof', '')
|
ELSE replace(replace(name, ' ', ''), 'Extentof', '')
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE SQL IMMUTABLE;
|
$$ LANGUAGE SQL IMMUTABLE
|
||||||
|
-- STRICT
|
||||||
|
PARALLEL SAFE
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
-- etldoc: ne_110m_admin_0_boundary_lines_land -> boundary_z0
|
-- etldoc: ne_110m_admin_0_boundary_lines_land -> boundary_z0
|
||||||
|
@ -625,5 +628,6 @@ FROM (
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
AND zoom_level >= 13
|
AND zoom_level >= 13
|
||||||
) AS zoom_levels;
|
) AS zoom_levels;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -112,6 +112,9 @@ FROM (
|
||||||
AND geometry && bbox
|
AND geometry && bbox
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
ORDER BY render_height ASC, ST_YMin(geometry) DESC;
|
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
|
-- not handled: where a building outline covers building parts
|
||||||
|
|
|
@ -18,5 +18,6 @@ SELECT
|
||||||
FROM osm_housenumber_point
|
FROM osm_housenumber_point
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
AND geometry && bbox;
|
AND geometry && bbox;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -15,6 +15,7 @@ SELECT CASE
|
||||||
%%FIELD_MAPPING: class %%
|
%%FIELD_MAPPING: class %%
|
||||||
END;
|
END;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL IMMUTABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
||||||
-- etldoc: ne_110m_glaciated_areas -> landcover_z0
|
-- etldoc: ne_110m_glaciated_areas -> landcover_z0
|
||||||
|
@ -185,5 +186,6 @@ FROM (
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
AND geometry && bbox
|
AND geometry && bbox
|
||||||
) AS zoom_levels;
|
) AS zoom_levels;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -214,5 +214,6 @@ FROM (
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox;
|
WHERE geometry && bbox;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -57,5 +57,6 @@ WHERE zoom_level >= 7
|
||||||
AND (rank <= 5 OR zoom_level >= 14)
|
AND (rank <= 5 OR zoom_level >= 14)
|
||||||
ORDER BY "rank" ASC;
|
ORDER BY "rank" ASC;
|
||||||
|
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
PARALLEL SAFE;
|
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
|
AND geometry_point && bbox
|
||||||
) AS park_point
|
) AS park_point
|
||||||
) AS park_all;
|
) AS park_all;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
PARALLEL SAFE;
|
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 BETWEEN 11 AND 12 AND (gridrank <= 14 OR "rank" IS NOT NULL))
|
||||||
OR (zoom_level >= 13)
|
OR (zoom_level >= 13)
|
||||||
) AS city_all;
|
) AS city_all;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -142,5 +142,6 @@ FROM (
|
||||||
FROM layer_city(bbox, zoom_level, pixel_width)
|
FROM layer_city(bbox, zoom_level, pixel_width)
|
||||||
ORDER BY "rank" ASC
|
ORDER BY "rank" ASC
|
||||||
) AS place_all
|
) AS place_all
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
PARALLEL SAFE;
|
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
|
AND zoom_level >= 14
|
||||||
) AS poi_union
|
) AS poi_union
|
||||||
ORDER BY "rank"
|
ORDER BY "rank"
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
PARALLEL SAFE;
|
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
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
ORDER BY z_order ASC;
|
ORDER BY z_order ASC;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -147,5 +147,6 @@ FROM (
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox
|
WHERE geometry && bbox
|
||||||
ORDER BY z_order ASC;
|
ORDER BY z_order ASC;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -385,5 +385,6 @@ FROM (
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox;
|
WHERE geometry && bbox;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -74,5 +74,6 @@ WHERE geometry && bbox
|
||||||
OR (zoom_level >= "rank" AND "rank" IS NOT NULL)
|
OR (zoom_level >= "rank" AND "rank" IS NOT NULL)
|
||||||
OR (zoom_level >= 8)
|
OR (zoom_level >= 8)
|
||||||
);
|
);
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
|
@ -220,5 +220,6 @@ FROM (
|
||||||
WHERE zoom_level >= 14
|
WHERE zoom_level >= 14
|
||||||
) AS zoom_levels
|
) AS zoom_levels
|
||||||
WHERE geometry && bbox;
|
WHERE geometry && bbox;
|
||||||
$$ LANGUAGE SQL IMMUTABLE
|
$$ LANGUAGE SQL STABLE
|
||||||
|
-- STRICT
|
||||||
PARALLEL SAFE;
|
PARALLEL SAFE;
|
||||||
|
|
Ładowanie…
Reference in New Issue