X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/ddb2e4aa1271a9b991f08bcbfad21676e5f5f393..c96e71a3d711722cef00cc983ef7f3c9f011d70d:/sql/functions.sql diff --git a/sql/functions.sql b/sql/functions.sql index 3c8f16e0..bd64697a 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -2118,28 +2118,27 @@ BEGIN END; $$ LANGUAGE plpgsql; + CREATE OR REPLACE FUNCTION get_name_by_language(name hstore, languagepref TEXT[]) RETURNS TEXT AS $$ DECLARE - search TEXT[]; - found BOOLEAN; + result TEXT; BEGIN - IF name is null THEN RETURN null; END IF; - search := languagepref; - - FOR j IN 1..array_upper(search, 1) LOOP - IF name ? search[j] AND trim(name->search[j]) != '' THEN - return trim(name->search[j]); + FOR j IN 1..array_upper(languagepref,1) LOOP + IF name ? languagepref[j] THEN + result := trim(name->languagepref[j]); + IF result != '' THEN + return result; + END IF; END IF; END LOOP; -- anything will do as a fallback - just take the first name type thing there is - search := avals(name); - RETURN search[1]; + RETURN trim((avals(name))[1]); END; $$ LANGUAGE plpgsql IMMUTABLE;