kopia lustrzana https://github.com/openmaptiles/openmaptiles
Convert PL/PGSQL to SQL (#1568)
This PR converts three plpgsql functions in the `transportation_name` layer to sql functions, which perform better.pull/1562/head^2
rodzic
0ca096938e
commit
48a2b1af72
|
@ -1,52 +1,46 @@
|
||||||
CREATE OR REPLACE FUNCTION highway_to_val(hwy_class varchar)
|
CREATE OR REPLACE FUNCTION highway_to_val(hwy_class varchar)
|
||||||
RETURNS int
|
RETURNS int
|
||||||
IMMUTABLE
|
IMMUTABLE
|
||||||
LANGUAGE plpgsql
|
LANGUAGE sql
|
||||||
AS $$
|
AS $$
|
||||||
BEGIN
|
SELECT CASE hwy_class
|
||||||
CASE hwy_class
|
WHEN 'motorway' THEN 6
|
||||||
WHEN 'motorway' THEN RETURN 6;
|
WHEN 'trunk' THEN 5
|
||||||
WHEN 'trunk' THEN RETURN 5;
|
WHEN 'primary' THEN 4
|
||||||
WHEN 'primary' THEN RETURN 4;
|
WHEN 'secondary' THEN 3
|
||||||
WHEN 'secondary' THEN RETURN 3;
|
WHEN 'tertiary' THEN 2
|
||||||
WHEN 'tertiary' THEN RETURN 2;
|
WHEN 'unclassified' THEN 1
|
||||||
WHEN 'unclassified' THEN RETURN 1;
|
ELSE 0
|
||||||
else RETURN 0;
|
END;
|
||||||
END CASE;
|
|
||||||
END;
|
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION val_to_highway(hwy_val int)
|
CREATE OR REPLACE FUNCTION val_to_highway(hwy_val int)
|
||||||
RETURNS varchar
|
RETURNS varchar
|
||||||
IMMUTABLE
|
IMMUTABLE
|
||||||
LANGUAGE plpgsql
|
LANGUAGE sql
|
||||||
AS $$
|
AS $$
|
||||||
BEGIN
|
SELECT CASE hwy_val
|
||||||
CASE hwy_val
|
WHEN 6 THEN 'motorway'
|
||||||
WHEN 6 THEN RETURN 'motorway';
|
WHEN 5 THEN 'trunk'
|
||||||
WHEN 5 THEN RETURN 'trunk';
|
WHEN 4 THEN 'primary'
|
||||||
WHEN 4 THEN RETURN 'primary';
|
WHEN 3 THEN 'secondary'
|
||||||
WHEN 3 THEN RETURN 'secondary';
|
WHEN 2 THEN 'tertiary'
|
||||||
WHEN 2 THEN RETURN 'tertiary';
|
WHEN 1 THEN 'unclassified'
|
||||||
WHEN 1 THEN RETURN 'unclassified';
|
ELSE null
|
||||||
else RETURN null;
|
END;
|
||||||
END CASE;
|
|
||||||
END;
|
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION highest_hwy_sfunc(agg_state varchar, hwy_class varchar)
|
CREATE OR REPLACE FUNCTION highest_hwy_sfunc(agg_state varchar, hwy_class varchar)
|
||||||
RETURNS varchar
|
RETURNS varchar
|
||||||
IMMUTABLE
|
IMMUTABLE
|
||||||
LANGUAGE plpgsql
|
LANGUAGE sql
|
||||||
AS $$
|
AS $$
|
||||||
BEGIN
|
SELECT val_to_highway(
|
||||||
RETURN val_to_highway(
|
|
||||||
GREATEST(
|
GREATEST(
|
||||||
highway_to_val(agg_state),
|
highway_to_val(agg_state),
|
||||||
highway_to_val(hwy_class)
|
highway_to_val(hwy_class)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
END;
|
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
DROP AGGREGATE IF EXISTS highest_highway (varchar);
|
DROP AGGREGATE IF EXISTS highest_highway (varchar);
|
||||||
|
|
Ładowanie…
Reference in New Issue