Query goal: | Trigger functions should not contain references to database operations. Perhaps the trigger implements ensuring some invariant of the operation but it does not implement the operation itself. |
Notes about the query: | The query assumes that database operations are in the form OP |
Query type: | Problem detection (Each row in the result could represent a flaw in the design) |
Query reliability: | High (Few or no false-positive results) |
Query license: | MIT License |
Fixing suggestion: | Remove references to the database operation from the comment. |
Data source: | INFORMATION_SCHEMA+system catalog |
SQL query: | Click on query to copy it
SELECT n.nspname AS routine_schema, p.proname AS routine_name, pg_get_function_identity_arguments(p.oid) AS parameters, d.description AS comment, regexp_replace(p.prosrc,'[\r\n]','<br>','g') AS func_src FROM (pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON p.pronamespace = n.oid) JOIN pg_catalog.pg_type t ON p.prorettype=t.oid LEFT JOIN pg_catalog.pg_description d ON p.oid=d.objoid WHERE p.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 n.nspname NOT IN (SELECT schema_name FROM INFORMATION_SCHEMA.schemata WHERE schema_name<>'public' AND schema_owner='postgres' AND schema_name IS NOT NULL) AND t.typname='trigger' AND d.description~*'^.*([[:space:]]*|")OP[[:space:]]*[[:digit:]].*$' ORDER BY routine_schema, routine_name, parameters; |
Collection name | Collection description |
---|---|
Find problems automatically | Queries, 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 . |
Category name | Category description |
---|---|
Comfortability of database evolution | Queries of this category provide information about the means that influence database evolution. |
Comments | Queries of this category provide information about comments to the database objects that have been registered in the system catalog. |
Triggers and rules | Queries of this category provide information about triggers and rules in a database. |
User-defined routines | Queries of this category provide information about the user-defined routines |
Reference |
---|
Writing contracts of database operations is an example of using the design by contract approach for specifying software. https://en.wikipedia.org/wiki/Design_by_contract |