Catalog of PostgreSQL queries for finding information about a PostgreSQL database and its design problems

AND
AND
AND
ANDFrom where does the query gets its information?
AND
AND

There are 996 queries.

Seq nrNameGoalTypeData sourceLast updateLicense...
981Using system-defined names of constraints (constraints that involve one column)Find the constraint types in case of which there exists system-defined names.Problem detectionsystem catalog base tables only2023-01-10 14:53MIT License
982Using unreserved (in PostgreSQL) SQL keywords as the names of a database object (aggregate view)"Names in software are 90 percent of what make software readable. You need to take the time to choose them wisely and keep them relevant. Names are too important to treat carelessly. Names should not cause confusion." (Robert C. Martin, Clean Code) Names should not cause confusion. Find the distinct names (identifiers) of user-defined objects that are SQL keywords that are completely unreserved in PostgreSQL. In PostgreSQL "there are several different classes of tokens ranging from those that can never be used as an identifier to those that have absolutely no special status in the parser as compared to an ordinary identifier. " (PostgreSQL manual) Although the names are unreserved keywords in PostgreSQL these could be reserved keywords in other systems, which would complicate database migration. Moreover, such identifiers are often too general, i.e., do not provide enough information about the named object.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-12-21 17:17MIT License
983Using unreserved (in PostgreSQL) SQL keywords as the names of a database object (detailed view)"Names in software are 90 percent of what make software readable. You need to take the time to choose them wisely and keep them relevant. Names are too important to treat carelessly. Names should not cause confusion." (Robert C. Martin, Clean Code) Names should not cause confusion. Find the names (identifiers) of user-defined objects that are SQL keywords that are completely unreserved in PostgreSQL. In PostgreSQL "there are several different classes of tokens ranging from those that can never be used as an identifier to those that have absolutely no special status in the parser as compared to an ordinary identifier. " (PostgreSQL manual) Although the names are unreserved keywords in PostgreSQL these could be reserved keywords in other systems, which would complicate database migration. Moreover, such identifiers are often too general, i.e., do not provide enough information about the named object. Think as to whether some better name would be possible.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-12-21 17:17MIT License
984Vacuum and analyze status of base tablesFind for each base table the last time when the table has been vacuumed or analyzed (either manually or automatically).Generalsystem catalog base tables only2023-10-06 13:48MIT License
985Validation method does not confirmFind user-defined SQL and PL/pgSQL routines that do not return a value although the name suggest that it should return a value (starts with "validate" or "check").Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-01-06 14:25MIT License
986Very similar (but not equal) routine namesFind pairs of names of different types of routines that are very similar but not equal.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-11-30 12:09MIT License
987Very similar column namesFind the pairs of table columns that name is different only by one symbol and that have the same type and/or domain.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-03-18 20:25MIT License
988Very similar domain namesFind pairs of names of domains that are very similar or even equal.Problem detectionINFORMATION_SCHEMA only2024-11-30 12:07MIT License
989Very similar table namesFind pairs of names of different types of tables that are very similar or even equal.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-11-30 11:50MIT License
990Views without security barrierFind views that do not have the security barrier option.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-12-13 19:30MIT License
991Views with security invokerFind views that have the security invoker option. Such option is possible starting from PostgreSQL 15. In case of using such views one cannot create a system where data is accessed through views and the users (applications) do not have direct access to the base tables.Problem detectionsystem catalog base tables only2023-11-13 12:20MIT License
992Views with the WITH LOCAL CHECK OPTION constraintFind updatable views that have WITH LOCAL CHECK OPTION constraint. The predicate of a view is the conjunction of the predicates of its (directly and indirectly) underlying tables (both base tables and derived tables) as well as the predicate of the view itself. In case of using WITH LOCAL CHECK OPTION constraint "New rows are only checked against the conditions defined directly in the view itself. Any conditions defined on underlying base views are not checked (unless they also specify the CHECK OPTION)." (PostgreSQL manual) Thus, use instead WITH CASCADED CHECK option to instruct the system to check new rows against the entire predicate of the view.Problem detectionINFORMATION_SCHEMA only2021-02-25 17:30MIT License
993Views with unnecessary security invokerFind views with security invoker option that do not have any underlying base table with a security policy. Security invoker option of views is possible starting from PostgreSQL 15. "The main use case (and the one that inspired the feature) is to be able to use views and still check row-level security policies on the underlying tables as the invoker."Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-11-17 18:39MIT License
994Views with WHERE but without security barrierFind views that do not have the security barrier option but restrict rows in some way.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-12-13 19:29MIT License
995Wrong comment - trigger function does not implement a database operationTrigger 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.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:30MIT License
996YELLING IN COMMENTS!Find comments of derived tables and routines that consist of only uppercase letters. Do not use only uppercase (capital) letters in order to write comments. It means yelling and also makes text less readable.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-04-25 15:13MIT License