From 4cd72616ca81c6077ce32027db325736945b0c41 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 13 Dec 2016 16:38:30 +0100 Subject: [PATCH] Fix the no multi_row, no multi_field case #314 Fix for the `ERROR: control reached end of function without RETURN` but now need to implement for the two other cases. --- .../25_exception_safe_public_functions.erb | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/client/renderer/templates/25_exception_safe_public_functions.erb b/client/renderer/templates/25_exception_safe_public_functions.erb index bd479c4..7bf7920 100644 --- a/client/renderer/templates/25_exception_safe_public_functions.erb +++ b/client/renderer/templates/25_exception_safe_public_functions.erb @@ -17,20 +17,22 @@ BEGIN IF username IS NULL OR username = '' OR username = '""' THEN RAISE EXCEPTION 'Username is a mandatory argument, check it out'; END IF; - BEGIN - <% if multi_row %> - RETURN QUERY - SELECT * FROM <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(<%= ['username', 'orgname'].concat(params).join(', ') %>); - <% elsif multi_field %> - SELECT * FROM <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(<%= ['username', 'orgname'].concat(params).join(', ') %>) INTO ret; - RETURN ret; - <% else %> + + <% if multi_row %> + RETURN QUERY + SELECT * FROM <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(<%= ['username', 'orgname'].concat(params).join(', ') %>); + <% elsif multi_field %> + SELECT * FROM <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(<%= ['username', 'orgname'].concat(params).join(', ') %>) INTO ret; + RETURN ret; + <% else %> + BEGIN SELECT <%= DATASERVICES_CLIENT_SCHEMA %>._<%= name %>(<%= ['username', 'orgname'].concat(params).join(', ') %>) INTO ret; RETURN ret; - <% end %> - EXCEPTION - WHEN OTHERS THEN - RAISE WARNING 'whatever'; - END; + EXCEPTION + WHEN OTHERS THEN + RAISE WARNING 'whatever'; + RETURN ret; + END; + <% end %> END; $$ LANGUAGE 'plpgsql' SECURITY DEFINER;