|
139 | 139 | # the role does not have the specified privilege, making it necessary to |
140 | 140 | # execute the GRANT statement. |
141 | 141 | if $ensure == 'present' { |
142 | | - $custom_unless = "SELECT 1 FROM ( |
| 142 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS ( |
143 | 143 | SELECT sequence_name |
144 | 144 | FROM information_schema.sequences |
145 | 145 | WHERE sequence_schema='${schema}' |
|
174 | 174 | WHERE grantee='${role}' |
175 | 175 | AND object_schema='${schema}' |
176 | 176 | AND privilege_type='${custom_privilege}' |
177 | | - ) P |
178 | | - HAVING count(P.sequence_name) = 0" |
| 177 | + )" |
179 | 178 | } else { |
180 | 179 | # ensure == absent |
181 | | - $custom_unless = "SELECT 1 FROM ( |
| 180 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS ( |
182 | 181 | SELECT object_name as sequence_name |
183 | 182 | FROM ( |
184 | 183 | SELECT object_schema, |
|
209 | 208 | WHERE grantee='${role}' |
210 | 209 | AND object_schema='${schema}' |
211 | 210 | AND privilege_type='${custom_privilege}' |
212 | | - ) P |
213 | | - HAVING count(P.sequence_name) = 0" |
| 211 | + )" |
214 | 212 | } |
215 | 213 | } |
216 | 214 | 'TABLE': { |
|
251 | 249 | if $ensure == 'present' { |
252 | 250 | if $_privilege == 'ALL' or $_privilege == 'ALL PRIVILEGES' { |
253 | 251 | # GRANT ALL |
254 | | - $custom_unless = "SELECT 1 FROM |
| 252 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS |
255 | 253 | ( SELECT 1 FROM pg_catalog.pg_tables AS t, |
256 | 254 | (VALUES ('SELECT'), ('UPDATE'), ('INSERT'), ('DELETE'), ('TRIGGER'), ('REFERENCES'), ('TRUNCATE')) AS p(privilege_type) |
257 | 255 | WHERE t.schemaname = '${schema}' |
|
261 | 259 | AND g.table_schema = '${schema}' |
262 | 260 | AND g.privilege_type = p.privilege_type |
263 | 261 | ) |
264 | | - ) AS privs_missing HAVING privs_missing.count=0" |
| 262 | + )" |
265 | 263 |
|
266 | 264 | } else { |
267 | 265 | # GRANT $_privilege |
268 | | - $custom_unless = "SELECT 1 FROM |
| 266 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS |
269 | 267 | ( SELECT 1 FROM pg_catalog.pg_tables AS t |
270 | 268 | WHERE t.schemaname = '${schema}' |
271 | 269 | AND NOT EXISTS ( |
|
274 | 272 | AND g.table_schema = '${schema}' |
275 | 273 | AND g.privilege_type = '${_privilege}' |
276 | 274 | ) |
277 | | - ) AS tbls HAVING tbls.count=0" |
| 275 | + )" |
278 | 276 | } |
279 | 277 | } else { |
280 | 278 | if $_privilege == 'ALL' or $_privilege == 'ALL PRIVILEGES' { |
281 | 279 | # REVOKE ALL |
282 | | - $custom_unless = "SELECT 1 FROM |
| 280 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS |
283 | 281 | ( SELECT table_name FROM information_schema.role_table_grants |
284 | 282 | WHERE grantee = '${role}' AND table_schema ='${schema}' |
285 | | - ) AS tbls HAVING tbls.count=0" |
| 283 | + )" |
286 | 284 | } else { |
287 | 285 | # REVOKE $_privilege |
288 | | - $custom_unless = "SELECT 1 FROM |
| 286 | + $custom_unless = "SELECT 1 WHERE NOT EXISTS |
289 | 287 | ( SELECT table_name FROM information_schema.role_table_grants |
290 | 288 | WHERE grantee = '${role}' AND table_schema ='${schema}' |
291 | 289 | AND privilege_type = '${_privilege}' |
292 | | - ) AS tbls HAVING tbls.count=0" |
| 290 | + )" |
293 | 291 | } |
294 | 292 | } |
295 | 293 |
|
|
0 commit comments