|
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