Mercurial > gemma
annotate schema/search_functions.sql @ 4449:ce884af9f42f
Fix forecast accuracy values and improve performance
Forecast accuracy should be based only on the most recent predictions.
Generally consider measurements and predictions older than 14 days as
outdated and irrelevant. This also implies a performance gain, since it
saves a full scan of gauge_measurements and the extra index for this
purpose.
Adding an extra subquery level for calculation of the forecast accuracy per
row instead of the function call as a FROM item saves a (nested loop)
join, which is another performance gain.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 20 Sep 2019 13:22:45 +0200 |
parents | 5e38667f740c |
children | 7cbe5d32a614 |
rev | line source |
---|---|
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
1 -- This is Free Software under GNU Affero General Public License v >= 3.0 |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
2 -- without warranty, see README.md and license for details. |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
3 |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
4 -- SPDX-License-Identifier: AGPL-3.0-or-later |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
5 -- License-Filename: LICENSES/AGPL-3.0.txt |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
6 |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
7 -- Copyright (C) 2018,2019 by via donau |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
8 -- – Österreichische Wasserstraßen-Gesellschaft mbH |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
9 -- Software engineering by Intevation GmbH |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
10 |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
11 -- Author(s): |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
12 -- * Sascha Wilde <wilde@intevation.de> |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
13 |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
14 CREATE OR REPLACE FUNCTION search_hectometre(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
15 LANGUAGE plpgsql STABLE PARALLEL SAFE |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
16 AS $$ |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
17 DECLARE |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
18 _result jsonb; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
19 BEGIN |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
20 IF search_string SIMILAR TO '[0-9]+' THEN |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
21 SELECT COALESCE(json_agg(r),'[]') |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
22 INTO _result |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
23 FROM (SELECT (location_code).hectometre || ' rhm' AS name, |
3739
e1bd5391a4b8
Use correct existing function to convert ISRS code to string.
Sascha Wilde <wilde@intevation.de>
parents:
3738
diff
changeset
|
24 isrs_asText(location_code) AS locationcode, |
3779
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
25 wwname AS location, |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
26 ST_AsGeoJSON(geom)::json AS geom, 'rhm' AS type |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
27 FROM waterway.distance_marks_virtual |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
28 WHERE (location_code).hectometre = search_string::int) r; |
3738
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
29 ELSIF is_ISRSstring(search_string) THEN |
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
30 SELECT COALESCE(json_agg(r),'[]') |
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
31 INTO _result |
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
32 FROM (SELECT (location_code).hectometre || ' rhm' AS name, |
3739
e1bd5391a4b8
Use correct existing function to convert ISRS code to string.
Sascha Wilde <wilde@intevation.de>
parents:
3738
diff
changeset
|
33 isrs_asText(location_code) AS locationcode, |
3779
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
34 wwname AS location, |
3738
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
35 ST_AsGeoJSON(geom)::json AS geom, 'rhm' AS type |
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
36 FROM waterway.distance_marks_virtual |
9f20d2b59d4c
Added ISRS code search for rhm.
Sascha Wilde <wilde@intevation.de>
parents:
3737
diff
changeset
|
37 WHERE location_code = isrs_fromText(search_string)) r; |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
38 ELSE |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
39 _result='[]'; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
40 END IF; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
41 RETURN _result; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
42 END; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
43 $$; |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
44 |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
45 CREATE OR REPLACE FUNCTION search_bottlenecks(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
46 LANGUAGE plpgsql STABLE PARALLEL SAFE |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
47 AS $$ |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
48 DECLARE |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
49 _result jsonb; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
50 BEGIN |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
51 SELECT COALESCE(json_agg(r),'[]') |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
52 INTO _result |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
53 FROM (SELECT objnam AS name, |
3740
6f1d5f310e08
Search delivers now bbox (geometry) for sections and bottlenecks.
Sascha Wilde <wilde@intevation.de>
parents:
3739
diff
changeset
|
54 ST_AsGeoJSON(ST_Envelope(area::geometry))::json AS geom, |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
55 'bottleneck' AS type |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
56 FROM waterway.bottlenecks |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
57 WHERE objnam ILIKE '%' || search_string || '%' |
4021
b10f210af325
Fixed latest fix to search-bottlenecks
Sascha Wilde <wilde@intevation.de>
parents:
4019
diff
changeset
|
58 AND validity @> now() |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
59 ORDER BY name) r; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
60 RETURN _result; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
61 END; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
62 $$; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
63 |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
64 CREATE OR REPLACE FUNCTION search_cities(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
65 LANGUAGE plpgsql STABLE PARALLEL SAFE |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
66 AS $$ |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
67 DECLARE |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
68 _result jsonb; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
69 BEGIN |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
70 SELECT COALESCE(json_agg(r),'[]') |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
71 INTO _result |
3779
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
72 FROM (SELECT name, |
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
73 country_code AS location, |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
74 ST_AsGeoJSON(location)::json AS geom, |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
75 'city' AS type |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
76 FROM waterway.geonames |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
77 WHERE feature_code IN ('PPLA', 'PPLA1', 'PPLA2', 'PPLA3', 'PPLC') |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
78 AND (name ILIKE '%' || search_string || '%' |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
79 OR alternatenames ~* ('(^|,)' || search_string || '($|,)')) |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
80 ORDER BY array_position(ARRAY['PPLC', 'PPLA', 'PPLA1', 'PPLA2', 'PPLA3'], |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
81 feature_code::text), |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
82 name) r; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
83 RETURN _result; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
84 END; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
85 $$; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
86 |
3737
e3f15a163823
Fixed typo in search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3736
diff
changeset
|
87 CREATE OR REPLACE FUNCTION search_gauges(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
88 LANGUAGE plpgsql STABLE PARALLEL SAFE |
2452
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
89 AS $$ |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
90 DECLARE |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
91 _result jsonb; |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
92 BEGIN |
3732
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
93 IF is_ISRSstring(search_string) THEN |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
94 SELECT COALESCE(json_agg(r),'[]') |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
95 INTO _result |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
96 FROM ( |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
97 SELECT objname AS name, |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
98 ST_AsGeoJSON(geom)::json AS geom, |
3779
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
99 'gauge' AS type, |
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
100 isrs_asText(location) AS locationcode |
3732
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
101 FROM waterway.gauges |
3736
4cc3b28fd87b
Ignore erased gauges in search.
Sascha Wilde <wilde@intevation.de>
parents:
3735
diff
changeset
|
102 WHERE NOT erased AND location = isrs_fromText(search_string) |
3732
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
103 ORDER BY name) r; |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
104 ELSE |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
105 SELECT COALESCE(json_agg(r),'[]') |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
106 INTO _result |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
107 FROM ( |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
108 SELECT objname AS name, |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
109 ST_AsGeoJSON(geom)::json AS geom, |
3779
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
110 'gauge' AS type, |
33180c25bd87
Added extra information to search results (wwname, ISRS code)
Sascha Wilde <wilde@intevation.de>
parents:
3753
diff
changeset
|
111 isrs_asText(location) AS locationcode |
3732
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
112 FROM waterway.gauges |
3736
4cc3b28fd87b
Ignore erased gauges in search.
Sascha Wilde <wilde@intevation.de>
parents:
3735
diff
changeset
|
113 WHERE NOT erased AND objname ILIKE '%' || search_string || '%' |
3732
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
114 ORDER BY name) r; |
b1fe61b58048
Allow to search gauges per ISRS code.
Sascha Wilde <wilde@intevation.de>
parents:
3383
diff
changeset
|
115 END IF; |
2452
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
116 RETURN _result; |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
117 END; |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
118 $$; |
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
119 |
3383
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
120 CREATE OR REPLACE FUNCTION search_sections(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
121 LANGUAGE plpgsql STABLE PARALLEL SAFE |
3383
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
122 AS $$ |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
123 DECLARE |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
124 _result jsonb; |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
125 BEGIN |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
126 SELECT COALESCE(json_agg(r),'[]') |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
127 INTO _result |
3753
78ba9b2574ff
search: include id in search result to mark sections/stretches as selected
Markus Kottlaender <markus@intevation.de>
parents:
3741
diff
changeset
|
128 FROM (SELECT id, |
78ba9b2574ff
search: include id in search result to mark sections/stretches as selected
Markus Kottlaender <markus@intevation.de>
parents:
3741
diff
changeset
|
129 objnam AS name, |
3740
6f1d5f310e08
Search delivers now bbox (geometry) for sections and bottlenecks.
Sascha Wilde <wilde@intevation.de>
parents:
3739
diff
changeset
|
130 ST_AsGeoJSON(ST_Envelope(area::geometry))::json AS geom, |
3383
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
131 'section' AS type |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
132 FROM waterway.sections |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
133 WHERE objnam ILIKE '%' || search_string || '%' |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
134 OR nobjnam ILIKE '%' || search_string || '%' |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
135 ORDER BY name) r; |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
136 RETURN _result; |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
137 END; |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
138 $$; |
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
139 |
3741
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
140 CREATE OR REPLACE FUNCTION search_stretches(search_string text) RETURNS jsonb |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
141 LANGUAGE plpgsql STABLE PARALLEL SAFE |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
142 AS $$ |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
143 DECLARE |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
144 _result jsonb; |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
145 BEGIN |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
146 SELECT COALESCE(json_agg(r),'[]') |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
147 INTO _result |
3753
78ba9b2574ff
search: include id in search result to mark sections/stretches as selected
Markus Kottlaender <markus@intevation.de>
parents:
3741
diff
changeset
|
148 FROM (SELECT id, |
78ba9b2574ff
search: include id in search result to mark sections/stretches as selected
Markus Kottlaender <markus@intevation.de>
parents:
3741
diff
changeset
|
149 objnam AS name, |
3741
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
150 ST_AsGeoJSON(ST_Envelope(area::geometry))::json AS geom, |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
151 'stretch' AS type |
4389
5e38667f740c
Use stretches as areas of responsibility.
Sascha Wilde <wilde@intevation.de>
parents:
4021
diff
changeset
|
152 FROM users.stretches |
3741
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
153 WHERE objnam ILIKE '%' || search_string || '%' |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
154 OR nobjnam ILIKE '%' || search_string || '%' |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
155 ORDER BY name) r; |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
156 RETURN _result; |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
157 END; |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
158 $$; |
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
159 |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
160 CREATE OR REPLACE FUNCTION search_most(search_string text) RETURNS jsonb |
3735
96230eadf96e
Added some optimizer hints to search functions.
Sascha Wilde <wilde@intevation.de>
parents:
3734
diff
changeset
|
161 LANGUAGE plpgsql STABLE PARALLEL SAFE |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
162 AS $$ |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
163 BEGIN |
3734
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
164 RETURN search_hectometre(search_string) |
1504856c9378
Moved rhm search to db.
Sascha Wilde <wilde@intevation.de>
parents:
3732
diff
changeset
|
165 || search_bottlenecks(search_string) |
2452
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
166 || search_gauges(search_string) |
3383
194feb1a7e37
Added sections to searchable objects.
Sascha Wilde <wilde@intevation.de>
parents:
2452
diff
changeset
|
167 || search_sections(search_string) |
3741
71de5ce5a402
Added search for stretches.
Sascha Wilde <wilde@intevation.de>
parents:
3740
diff
changeset
|
168 || search_stretches(search_string) |
2452
0f1a915344c5
Added the ability to search for gauges.
Sascha Wilde <wilde@intevation.de>
parents:
1833
diff
changeset
|
169 || search_cities(search_string); |
1833
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
170 END; |
b9c59050014a
Make search functions self-replacing and indicate that in filename
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
171 $$; |