Skip to content

Commit 0a6318c

Browse files
authored
fix(t-rules): reorganize table rules in relation to database rules (#29)
1 parent 73f1949 commit 0a6318c

14 files changed

+87
-71
lines changed

dblinter.cfg

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -73,50 +73,40 @@ table:
7373
fixes:
7474
- create a primary key.
7575
- name: TableWithRedundantIndex
76-
ruleid: T003
76+
ruleid: T002
7777
enabled: True
7878
context:
7979
desc: table without duplicated index.
8080
message: "{0} redundant(s) index found on {1}.{2} idx {3} column {4}."
8181
fixes:
8282
- remove duplicated index
8383
- name: TableWithFkNotIndexed
84-
ruleid: T004
84+
ruleid: T003
8585
enabled: True
8686
context:
8787
desc: table without index on fk.
88-
message: "unindexed fk {0}.{1}.{2} ddl:{3}."
88+
message: "Unindexed fk {0}.{1}.{2} ddl:{3}."
8989
fixes:
9090
- index foreign key.
91-
- name: TableWithPotentialMissingIdx
92-
ruleid: T005
91+
- name: TableWithUnusedIndex
92+
ruleid: T004
9393
enabled: True
9494
params:
95-
- threshold: 1000000
95+
- size_mo: 25
9696
context:
97-
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
98-
message: "{0} table with seq scan exceed the threshold: {1}."
97+
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
98+
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
9999
fixes:
100-
- ask a dba.
100+
- remove unused index or change warning/error threshold.
101101
- name: TableWithFkOutsideSchema
102-
ruleid: T006
102+
ruleid: T007
103103
enabled: True
104104
context:
105105
desc: table with fk outside its schema
106106
message: "fk {0} on {1} is in schema {2}."
107107
fixes:
108108
- consider rewrite your model.
109109
- ask a dba.
110-
- name: TableWithUnusedIndex
111-
ruleid: T007
112-
enabled: True
113-
params:
114-
- size_mo: 25
115-
context:
116-
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
117-
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
118-
fixes:
119-
- remove unused index or change warning/error threshold.
120110
- name: TableWithFkMismatch
121111
ruleid: T008
122112
enabled: True
@@ -142,6 +132,16 @@ table:
142132
message: "{0} {1}.{2}.{3}.{4} violate retricted keyword rule."
143133
fixes:
144134
- Rename the object to use a non reserved keyword.
135+
- name: TableWithPotentialMissingIdx
136+
ruleid: T011
137+
enabled: True
138+
params:
139+
- threshold: 1000000
140+
context:
141+
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
142+
message: "{0} table with seq scan exceed the threshold: {1}."
143+
fixes:
144+
- ask a dba.
145145
schema:
146146
- name: SchemaWithDefaultRoleNotGranted
147147
ruleid: S001

dblinter/default_config.yaml

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -104,50 +104,48 @@ table:
104104
fixes:
105105
- create a primary key.
106106
- name: TableWithRedundantIndex
107-
ruleid: T003
107+
ruleid: T002
108108
enabled: True
109109
context:
110110
desc: table without duplicated index.
111111
message: "{0} redundant(s) index found on {1}.{2} idx {3} column {4}."
112112
fixes:
113113
- remove duplicated index
114114
- name: TableWithFkNotIndexed
115-
ruleid: T004
115+
ruleid: T003
116116
enabled: True
117117
context:
118118
desc: table without index on fk.
119-
message: "unindexed fk {0}.{1}.{2}."
119+
message: "Unindexed fk {0}.{1}.{2}."
120120
fixes:
121121
- "{3}."
122-
- name: TableWithPotentialMissingIdx
123-
ruleid: T005
122+
- name: TableWithUnusedIndex
123+
ruleid: T004
124124
enabled: True
125125
params:
126-
- threshold: 1000000
126+
- size_mo: 25
127127
context:
128-
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
129-
message: "{0} table with seq scan exceed the threshold: {1}."
128+
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
129+
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
130130
fixes:
131-
- ask a dba.
132-
- name: TableWithFkOutsideSchema
131+
- remove unused index or change warning/error threshold.
132+
- name: TableWithUppercase
133133
ruleid: T006
134134
enabled: True
135135
context:
136-
desc: table with fk outside its schema
137-
message: "fk {0} on {1} is in schema {2}."
136+
desc: Table with uppercase in name or in columns.
137+
message: "Uppercase used on table {0}.{1}.{2}."
138138
fixes:
139-
- consider rewrite your model.
140-
- ask a dba.
141-
- name: TableWithUnusedIndex
139+
- Do not use uppercase for any database objects
140+
- name: TableWithFkOutsideSchema
142141
ruleid: T007
143142
enabled: True
144-
params:
145-
- size_mo: 25
146143
context:
147-
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
148-
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
144+
desc: table with fk outside its schema
145+
message: "fk {0} on {1} is in schema {2}."
149146
fixes:
150-
- remove unused index or change warning/error threshold.
147+
- consider rewrite your model.
148+
- ask a dba.
151149
- name: TableWithFkMismatch
152150
ruleid: T008
153151
enabled: True
@@ -173,14 +171,16 @@ table:
173171
message: "{0} {1}.{2}.{3}.{4} violate retricted keyword rule."
174172
fixes:
175173
- Rename the object to use a non reserved keyword.
176-
- name: TableWithUppercase
174+
- name: TableWithPotentialMissingIdx
177175
ruleid: T011
178176
enabled: True
177+
params:
178+
- threshold: 1000000
179179
context:
180-
desc: Table with uppercase in name or in columns.
181-
message: "Uppercase used on table {0}.{1}.{2}."
180+
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
181+
message: "{0} table with seq scan exceed the threshold: {1}."
182182
fixes:
183-
- Do not use uppercase for any database objects
183+
- ask a dba.
184184
- name: TableWithSensibleColumn
185185
ruleid: T012
186186
enabled: True
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

tests/data/good_config.yaml

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -71,77 +71,93 @@ table:
7171
desc: table without primary key.
7272
message: "No primary key on table {0}.{1}.{2}."
7373
fixes:
74-
- create a primary key.
74+
- create a primary key.
7575
- name: TableWithRedundantIndex
76-
ruleid: T003
76+
ruleid: T002
7777
enabled: True
7878
context:
7979
desc: table without duplicated index.
8080
message: "{0} redundant(s) index found on {1}.{2} idx {3} column {4}."
8181
fixes:
82-
- remove duplicated index
82+
- remove duplicated index
8383
- name: TableWithFkNotIndexed
84-
ruleid: T004
84+
ruleid: T003
8585
enabled: True
8686
context:
8787
desc: table without index on fk.
88-
message: "unindexed fk {0}.{1}.{2} ddl:{3}."
88+
message: "Unindexed fk {0}.{1}.{2}."
8989
fixes:
90-
- index foreign key.
91-
- name: TableWithPotentialMissingIdx
92-
ruleid: T005
90+
- "{3}."
91+
- name: TableWithUnusedIndex
92+
ruleid: T004
9393
enabled: True
9494
params:
95-
- threshold: 1000000
95+
- size_mo: 25
9696
context:
97-
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
98-
message: "{0} table with seq scan exceed the threshold: {1}."
97+
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
98+
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
9999
fixes:
100-
- ask a dba.
101-
- name: TableWithFkOutsideSchema
100+
- remove unused index or change warning/error threshold.
101+
- name: TableWithUppercase
102102
ruleid: T006
103103
enabled: True
104104
context:
105-
desc: table with fk outside its schema
106-
message: "fk {0} on {1} is in schema {2}."
105+
desc: Table with uppercase in name or in columns.
106+
message: "Uppercase used on table {0}.{1}.{2}."
107107
fixes:
108-
- consider rewrite your model.
109-
- ask a dba.
110-
- name: TableWithUnusedIndex
108+
- Do not use uppercase for any database objects
109+
- name: TableWithFkOutsideSchema
111110
ruleid: T007
112111
enabled: True
113-
params:
114-
- size_mo: 25
115112
context:
116-
desc: Table unused index, base on pg_stat_user_indexes, indexes associated to unique constraints are discard.
117-
message: "Index {0} on {1} size {2} Mo seems to be unused (idx_scan=0)."
113+
desc: table with fk outside its schema
114+
message: "fk {0} on {1} is in schema {2}."
118115
fixes:
119-
- remove unused index or change warning/error threshold.
116+
- consider rewrite your model.
117+
- ask a dba.
120118
- name: TableWithFkMismatch
121119
ruleid: T008
122120
enabled: True
123121
context:
124122
desc: table with fk mismatch, ex smallint refer to a bigint
125123
message: "Type constraint mismatch: {0} on {1} column {2} (type {3}/{4}) ref {5} column {6} type ({7}/{8})."
126124
fixes:
127-
- consider rewrite your model.
128-
- ask a dba.
125+
- consider rewrite your model.
126+
- ask a dba.
129127
- name: TableWithRoleNotGranted
130128
ruleid: T009
131129
enabled: True
132130
context:
133131
desc: Table has no roles grantee. Meaning that users will need direct access on it (not through a role).
134132
message: "No role grantee on table {0}.{1}.{2}. It means that except owner. Others will need a direct grant on this table, not through a role (unusual at dkt)."
135133
fixes:
136-
- create roles (myschema_ro & myschema_rw) and grant it on table with appropriate privileges.
134+
- create roles (myschema_ro & myschema_rw) and grant it on table with appropriate privileges.
137135
- name: ReservedKeyWord
138136
ruleid: T010
139137
enabled: True
140138
context:
141139
desc: A table, his column or indexes use reserved keywords.
142140
message: "{0} {1}.{2}.{3}.{4} violate retricted keyword rule."
143141
fixes:
144-
- Rename the object to use a non reserved keyword.
142+
- Rename the object to use a non reserved keyword.
143+
- name: TableWithPotentialMissingIdx
144+
ruleid: T011
145+
enabled: True
146+
params:
147+
- threshold: 1000000
148+
context:
149+
desc: table with high level of seq scan vs idx scan, base on pg_stat_user_tables.
150+
message: "{0} table with seq scan exceed the threshold: {1}."
151+
fixes:
152+
- ask a dba.
153+
- name: TableWithSensibleColumn
154+
ruleid: T012
155+
enabled: True
156+
context:
157+
desc: Base on the extension anon (https://postgresql-anonymizer.readthedocs.io/en/stable/detection), show sensitive column.
158+
message: "{0} have column {1} (category {2}) that can be consider has sensitive. It should be masked for non data-operator users."
159+
fixes:
160+
- Install extension anon, and create some masking rules on.
145161
schema:
146162
- name: SchemaWithDefaultRoleNotGranted
147163
ruleid: S001
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)