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 961 queries.

Seq nrNameGoalTypeData sourceLast updateLicense...
601Prefer Polymorphism to If/Else or Switch/Case (2)Find routines with multiple raise exception commands. Perhaps it has multiple tasks and it violates the separation of concerns and single responsibilities principles.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-11-29 13:39MIT License
602Prefixes in the names of database objectsFind for different types of database objects all the prefixes that are used in different names. One should be consistent in naming, including in the use of prefixes. If you use prefix in the name of a database object, then it could refer to the type of the database object. Do not use different prefixes in the names of database objects that have the same type.GeneralINFORMATION_SCHEMA+system catalog base tables2023-12-22 12:39MIT License
603Primary key columns are not the first in a tableIn SQL tables each column has the ordinal position. Find all the base tables where the primary key columns are not the first in the table, i.e., there is at least one non-primary key column that comes before a primary key column. It is easier to grasp the primary key if its columns are the first in the table. It could be that a table inherits from an abstract table where no keys have been defined.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-10-16 10:33MIT License
604Privileges to execute routinesFind privileges to execute routines that have been given to non-superusers. Check as to whether it conforms to the principle of least privilege. Check that users that correspond to applications have all the necessary privileges. Users (applications) should use a database through virtual data layer. Thus, if they need to modify data in the database (in case of table functions read data), then they must execute a routine.GeneralINFORMATION_SCHEMA+system catalog base tables2020-12-29 10:38MIT License
605Privileges to use base table columnsIf you do give privileges to base tables, then these should follow the principle of least privilege - the smallest possible amount of privileges to the smallest possible set of columnsGeneralINFORMATION_SCHEMA+system catalog base tables2020-12-29 10:38MIT License
606Privileges to use base tablesUsers (applications) should ideally use a database through virtual data layer and thus not directly use base tables. If there is a need to provide direct access to the base tables, then one should grant access based on the principle of least privilege, i.e., to the minimum possible number of base tables.GeneralINFORMATION_SCHEMA+system catalog base tables2020-12-29 10:38MIT License
607Privileges to use viewsFind privileges to use views. Check as to whether it conforms to the principle of least privilege. Check that users that correspond to applications have all the necessary privileges. Users (applications) should use a database through virtual data layer. Thus, if they need to read data from a database, then they should use views.GeneralINFORMATION_SCHEMA+system catalog base tables2020-12-29 10:38MIT License
608Procedures cannot have START TRANSACTION and SAVEPOINTYou cannot use a START TRANSACTION or a SAVEPOINT statement in a procedure. Procedures appeared in PostgreSQL 11.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-04 11:50MIT License
609PUBLIC has the USAGE privilege of a schemaFind schemas where PUBLIC has the usage privilege.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-23 17:52MIT License
610Reasonable upper bound to the length of textual values is missingFind non-foreign key base table columns that are not used to record comments/descriptions/explanations etc. and that have TEXT or VARCHAR type without restrictions to the field size (field size in case of VARCHAR or a CHECK constraint).Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-12-16 12:32MIT License
611Recursive triggers that directly modify their home tableDo not cause potentially infinite loops. Recursive trigger fire themselves over and over again. If the system is not able to stop these, then it eventually consumes all the resources of the system. Although the system is able to detect these it is better to avoid creating these altogether.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:30MIT License
612Regular expression with possibly a LIKE patternFind expressions that use a regular expression with a like predicate pattern.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-10-21 11:11MIT License
613Routine body has keywords that are not in uppercaseKeywords in uppercase improve readability.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-12-24 17:06MIT License
614Routine body only in uppercaseUppercase means screaming and having code entirely in uppercase makes its reading more difficult. On the other hand, it would be a good idea to have keywords in uppercase. Find routines that body contains a SQL data manipulation statement (which shouldn't be entirely in uppercase) but still the body is completely in uppercase.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-04 20:12MIT License
615Routine body with ordering the query result based on positional referencesFind routines where the query result is sorted based on the column number in the SELECT clause. Such query is sensitive towards changing the order of columns in the SELECT clause, i.e., if one changes the order of columns in the SELECT clause, then one must change the numbers in the ORDER BY clause as well, otherwise the query will produce undesired order of rows.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-10-31 15:23MIT License
616Routine for reading data uses another routine to read some dataFind routines that only read data but invoke some other routine to read some more data.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-12-10 17:10MIT License
617Routines that can be invoked with a variable number of argumentsFind routines with a VARIADIC parameter. These are routines that take as input an undefined number of arguments where the argument that is an undefined number are all of the same type and are the last input arguments.GeneralINFORMATION_SCHEMA+system catalog base tables2021-11-04 12:37MIT License
618Routines that use old syntax for limiting rowsFind PL/pgSQL routines and SQL routines that do not have SQL-standard body that use unstandardized LIMIT clause instead of standardized FETCH FIRST n ROWS clause. The query excludes routines that are a part of an extension.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-10-29 11:34MIT License
619Routines with BOOLEAN return type that do not have a good nameThe prefic of the name should be "is_" or "has_" or "can_" (in English) or "on_" (in Estonian). Worse: check_rights. Better: has_rights.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-01-13 20:41MIT License
620Routines with INSERT statements that are sensitive towards the order of columnsINSERT statements shouldn't be sensitive towards the order of columns. If one changes the order of columns in a table then these statements must be rewritten. Otherwise the code will not work or works incorrectly.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-04 16:15MIT License