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...
541Perhaps a CHECK constraint about the combination of truth values is missingFind base tables that have at least two columns that have Boolean type and have at least one Boolean column that is not covered by a CHECK constraint involving more than one Boolean column. The Boolean columns possibly mean that we want to record data about states. Often the states depend on each other. For instance, if an order is archived it must be inactive.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:29MIT License
542Perhaps a CHECK constraint about the order of events is missingFind base tables that have at least two columns that have DATE or TIMESTAMP (with or without time zone) type and do not have any associated CHECK constraint that involves two or more of these columns. The columns mean that we want to record data about events or processes, which often have a certain order. Hence, in case of each row of such a table the values in these columns must be in a certain order. For instance, the end of a meeting cannot be earlier than the beginning of the meeting.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:29MIT License
543Perhaps an existing domain could be used to define the properties of a base table column?Find non-foreifgn key base table columns that have not been defined based on a domain but that have the same properties (data type, field size, default value, and pemisson to use NULLs) as some domain. If you define a domain, then you should try to use it in case of multiple columns.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:29MIT License
544Perhaps an overcomplicated constraint expression that compares the result of a Boolean expression with a Boolean valueFind table and domain CHECK constraints that compare the result of a Boolean expression with a Boolean value. If you can choose between two logically equivalent Boolean expressions choose the more simple expression.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-12-30 11:57MIT License
545Perhaps an unsuitable use of CHAR(n) type in base tablesFind non-foreign key base table columns with the type CHAR(n) where n>1 that are not meant for storing codes or hash values. CHAR(n) is suitable for storing values that have a fixed length (for instance, country code according to the ISO standard). In case of variable length strings the end of the stored string is padded with spaces. Thus, for instance, do not use CHAR(n) in case of columns for storing names, comments, descriptions, e-mail addresses etc. Hash values have a fixed length that depends on the used hash function.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-11-12 10:46MIT License
546Perhaps a reference to the variable NEW is missingFind row level before insert and before update triggers that only task is not to raise an exception and where the variable NEW is not used in the trigger routine outside the RETURN clause.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-12-21 20:34MIT License
547Perhaps a reference to the variable OLD is missingFind row level before delete triggers that only task is not to raise an exception and where the variable OLD is not used in the trigger routine outside the RETURN clause.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-12-21 19:29MIT License
548Perhaps a regular expression could be simplifiedFind regular expressions that name character classes a-zA-Z.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-04 16:19MIT License
549Perhaps a routine does not have a real taskFind the routines where the only action is to return an argument value, a constant value, NULL or return the value of OLD or NEW variable in case of trigger functions.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-11-05 12:09MIT License
550Perhaps a state machine is implemented with Boolean columnsFind implementations of state machines that uses a set of one or more Boolean columns. These columns could have the type Boolean or could probably (based on the column name and non-participation in a foreign key) contain values that represent truth values.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-11-09 13:22MIT License
551Perhaps a too long name, which has been automatically shortenedFind names (identifiers) of user-defined database objects that are 63 bytes long. This is the longest permitted length of identifiers if the default value of the NAMEDATALEN parameter has not been changed. PostgreSQL shortens too long identifiers automatically. Automatic code modification could break it somewhere.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-03-17 10:05MIT License
552Perhaps a too long PL/pgSQL routineA large routine may have multiple tasks that should be split between multiple routines, each of which has a more focused task. Find the PL/pgSQL routines where the number of physical lines of code is bigger than 20.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-01-04 16:38MIT License
553Perhaps a too long SQL routineA large routine may have multiple tasks that should be split between multiple routines that have a more focused task. Find the SQL routines where the number of statements (logical lines of code) is bigger than 5.Problem detectionINFORMATION_SCHEMA+system catalog base tables2024-01-04 16:39MIT License
554Perhaps a unneccessary surrogate keyFind base tables that have the primary key that is not a surrogate key and an alternate key that is a surrogate key. Perhaps the surrogate key column is not needed.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-03-07 20:59MIT License
555Perhaps brackets are missing in a regular expression that uses OR logical operationFind regular expressions where choice between alternatives has no brackets. Thus, instead of '(a|b|c)' there is 'a|b|c'. An example: '^a|b|c$' -permits in the string symbol "|" but '^(a|b|c)$' does not permit in the string symbol "|".Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-11-09 20:22MIT License
556Perhaps check constraint names contain incorrect or unnecessary wordsFind names of check constraints (either associated with a base table or a domain) that names contain words that are not needed in the name. For instance, constraints cannot ensure the correctness of data and thus the word correct should not be used in the names. Words like "valid" or phrases like "follows_rules" are just noise because all the constraint ensure that the registered data values are valid and follow certain rules.Problem detectionINFORMATION_SCHEMA+system catalog base tables2023-10-06 14:10MIT License
557Perhaps Count(*) is wrongly usedFind user-defined routines and derived tables (views/materialized views) that have a subquery that invokes Count aggregate function like this - Count(*), uses outer join, and grouping. In case of grouping you do not want to get an answer that an empty group contains one member.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-10-25 16:40MIT License
558Perhaps duplicate check of empty strings (ver 2)Find columns that have a check that prevents the empty string in the column but there is already another check on the column that enforces the constraint.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-12-20 11:30MIT License
559Perhaps excessive privileges to use base tablesFind excessive privileges to use base tabes (for others than the owner of the base table). The excessive privileges are all that are not SELECT, INSERT, UPDATE, DELETE.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:29MIT License
560Perhaps excessive privileges to use viewsFind non-SELECT privileges to use views (for others than the owner of the view). Perhaps there should be only the privilege to make queries (SELECT statements based on the views) and data modification takes place by using routines. REFERENCES and TRIGGER privileges are definitely not needed.Problem detectionINFORMATION_SCHEMA+system catalog base tables2021-02-25 17:29MIT License