The list of all the queries

Some data modification functions return a value and some not

Query 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 about the query: The query considers non-trigger functions that have been written in SQL or PL/pgSQL language.
Query type: Problem detection (Each row in the result could represent a flaw in the design)
Query reliability: Low (Many false-positive results)
Query license: MIT License
Fixing suggestion: Try to be consistent.
Data source: INFORMATION_SCHEMA+system catalog
SQL query: Click on query to copy it

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]','<br>','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|(?<!for[[:space:]]+)update|delete|merge)[[:space:]]'
  AND pg_proc.prokind='f' 
  AND pg_proc.proname NOT IN ('f_assume_you_must_use_files', 'f_check_format_comma_separated_list', 'f_check_password', 'f_default_value_with_no_match')   
 AND pg_namespace.nspname NOT IN (SELECT schema_name
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name<>'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 where the query belongs to

Collection nameCollection description
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 where the query belongs to

Category nameCategory description
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

The list of all the queries