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 optimization
This commit is contained in:
Yuri Astrakhan
2020-06-17 12:15:26 -04:00
committed by GitHub
parent ad8bd41567
commit 2b95d1cffa
17 changed files with 41 additions and 18 deletions

View File

@@ -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;