Goal Find as to whether there are data modification routines that return a value as well as data modification routines that do not return a value.
Notes The query considers non-trigger functions that have been written in SQL or PL/pgSQL language.
Type Problem detection (Each row in the result could represent a flaw in the design)
Reliability Medium (Medium number of false-positive results)
License MIT License
Fixing Suggestion Try to be consistent.
Data Source INFORMATION_SCHEMA+system catalog
SQL Query
WITH routines AS (SELECT 
  pg_namespace.nspname AS routine_schema, 
  pg_proc.proname AS routine_name, 
  pg_get_function_identity_arguments(pg_proc.oid) AS parameters,
  pg_language.lanname AS language,
  pg_type.typname AS return_type,
  regexp_replace(pg_get_functiondef(pg_proc.oid),'[\r\n]','
','g') AS routine_src FROM pg_catalog.pg_proc, pg_catalog.pg_namespace, pg_catalog.pg_language, pg_catalog.pg_type WHERE pg_proc.pronamespace = pg_namespace.oid AND pg_proc.prolang = pg_language.oid AND pg_type.oid=pg_proc.prorettype AND pg_language.lanname in ('plpgsql', 'sql') AND pg_type.typname<>'trigger' AND pg_get_functiondef(pg_proc.oid)~*'(insert[[:space:]]+into|(?'public' AND schema_owner='postgres' AND schema_name IS NOT NULL)) SELECT routine_schema, routine_name, parameters, return_type, language, routine_src FROM routines WHERE EXISTS (SELECT * FROM routines WHERE return_type='void') AND EXISTS (SELECT * FROM routines WHERE return_type<>'void') ORDER BY routine_schema, routine_name, parameters;
Collections

This query belongs to the following collections:

NameDescription
Find problems automaticallyQueries, that results point to problems in the database. Each query in the collection produces an initial assessment. However, a human reviewer has the final say as to whether there is a problem or not .
Categories

This query is classified under the following categories:

NameDescription
InconsistenciesQueries of this catergory provide information about inconsistencies of solving the same problem in different places.
User-defined routinesQueries of this category provide information about the user-defined routines