From 0ad7cd485df0c88c5811e04a7e1b2c3545f781dc Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Mon, 11 Nov 2019 21:34:51 +0100 Subject: [PATCH] Simplify function with aggregate --- .../CDB_FederatedServerDiagnostics.sql | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/scripts-available/CDB_FederatedServerDiagnostics.sql b/scripts-available/CDB_FederatedServerDiagnostics.sql index bf2524e..459338d 100644 --- a/scripts-available/CDB_FederatedServerDiagnostics.sql +++ b/scripts-available/CDB_FederatedServerDiagnostics.sql @@ -87,21 +87,15 @@ LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE; CREATE OR REPLACE FUNCTION @extschema@.__CDB_FS_Foreign_Server_Options_PG(server_internal name) RETURNS jsonb AS $$ -DECLARE - res jsonb := '{}'; - opt record; -BEGIN -- See https://www.postgresql.org/docs/current/catalog-pg-foreign-server.html -- See https://www.postgresql.org/docs/current/functions-info.html - FOR opt IN - SELECT (pg_options_to_table(srvoptions)).* FROM pg_foreign_server WHERE srvname = server_internal - LOOP - res := res || jsonb_build_object(opt.option_name, opt.option_value); - END LOOP; - RETURN res; -END + SELECT jsonb_object_agg(opt.option_name, opt.option_value) FROM ( + SELECT (pg_options_to_table(srvoptions)).* + FROM pg_foreign_server + WHERE srvname = server_internal + ) AS opt; $$ -LANGUAGE PLPGSQL VOLATILE PARALLEL UNSAFE; +LANGUAGE SQL VOLATILE PARALLEL UNSAFE; --