Skip to content

Commit a5f7d58

Browse files
committed
Add tests for sequence privileges
1 parent 69fed5b commit a5f7d58

File tree

3 files changed

+321
-0
lines changed

3 files changed

+321
-0
lines changed

src/test/regress/expected/sequence.out

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,41 @@ DROP SEQUENCE seq2;
367367
SELECT lastval();
368368
ERROR: lastval is not yet defined in this session
369369
CREATE USER seq_user;
370+
-- privileges tests
371+
-- nextval
372+
BEGIN;
373+
SET LOCAL SESSION AUTHORIZATION seq_user;
374+
CREATE SEQUENCE seq3;
375+
REVOKE ALL ON seq3 FROM seq_user;
376+
GRANT SELECT ON seq3 TO seq_user;
377+
SELECT nextval('seq3');
378+
ERROR: permission denied for sequence seq3
379+
ROLLBACK;
380+
BEGIN;
381+
SET LOCAL SESSION AUTHORIZATION seq_user;
382+
CREATE SEQUENCE seq3;
383+
REVOKE ALL ON seq3 FROM seq_user;
384+
GRANT UPDATE ON seq3 TO seq_user;
385+
SELECT nextval('seq3');
386+
nextval
387+
---------
388+
1
389+
(1 row)
390+
391+
ROLLBACK;
392+
BEGIN;
393+
SET LOCAL SESSION AUTHORIZATION seq_user;
394+
CREATE SEQUENCE seq3;
395+
REVOKE ALL ON seq3 FROM seq_user;
396+
GRANT USAGE ON seq3 TO seq_user;
397+
SELECT nextval('seq3');
398+
nextval
399+
---------
400+
1
401+
(1 row)
402+
403+
ROLLBACK;
404+
-- currval
370405
BEGIN;
371406
SET LOCAL SESSION AUTHORIZATION seq_user;
372407
CREATE SEQUENCE seq3;
@@ -377,8 +412,96 @@ SELECT nextval('seq3');
377412
(1 row)
378413

379414
REVOKE ALL ON seq3 FROM seq_user;
415+
GRANT SELECT ON seq3 TO seq_user;
416+
SELECT currval('seq3');
417+
currval
418+
---------
419+
1
420+
(1 row)
421+
422+
ROLLBACK;
423+
BEGIN;
424+
SET LOCAL SESSION AUTHORIZATION seq_user;
425+
CREATE SEQUENCE seq3;
426+
SELECT nextval('seq3');
427+
nextval
428+
---------
429+
1
430+
(1 row)
431+
432+
REVOKE ALL ON seq3 FROM seq_user;
433+
GRANT UPDATE ON seq3 TO seq_user;
434+
SELECT currval('seq3');
435+
ERROR: permission denied for sequence seq3
436+
ROLLBACK;
437+
BEGIN;
438+
SET LOCAL SESSION AUTHORIZATION seq_user;
439+
CREATE SEQUENCE seq3;
440+
SELECT nextval('seq3');
441+
nextval
442+
---------
443+
1
444+
(1 row)
445+
446+
REVOKE ALL ON seq3 FROM seq_user;
447+
GRANT USAGE ON seq3 TO seq_user;
448+
SELECT currval('seq3');
449+
currval
450+
---------
451+
1
452+
(1 row)
453+
454+
ROLLBACK;
455+
-- lastval
456+
BEGIN;
457+
SET LOCAL SESSION AUTHORIZATION seq_user;
458+
CREATE SEQUENCE seq3;
459+
SELECT nextval('seq3');
460+
nextval
461+
---------
462+
1
463+
(1 row)
464+
465+
REVOKE ALL ON seq3 FROM seq_user;
466+
GRANT SELECT ON seq3 TO seq_user;
467+
SELECT lastval();
468+
lastval
469+
---------
470+
1
471+
(1 row)
472+
473+
ROLLBACK;
474+
BEGIN;
475+
SET LOCAL SESSION AUTHORIZATION seq_user;
476+
CREATE SEQUENCE seq3;
477+
SELECT nextval('seq3');
478+
nextval
479+
---------
480+
1
481+
(1 row)
482+
483+
REVOKE ALL ON seq3 FROM seq_user;
484+
GRANT UPDATE ON seq3 TO seq_user;
380485
SELECT lastval();
381486
ERROR: permission denied for sequence seq3
487+
ROLLBACK;
488+
BEGIN;
489+
SET LOCAL SESSION AUTHORIZATION seq_user;
490+
CREATE SEQUENCE seq3;
491+
SELECT nextval('seq3');
492+
nextval
493+
---------
494+
1
495+
(1 row)
496+
497+
REVOKE ALL ON seq3 FROM seq_user;
498+
GRANT USAGE ON seq3 TO seq_user;
499+
SELECT lastval();
500+
lastval
501+
---------
502+
1
503+
(1 row)
504+
382505
ROLLBACK;
383506
-- Sequences should get wiped out as well:
384507
DROP TABLE serialTest, serialTest2;

src/test/regress/expected/sequence_1.out

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,41 @@ DROP SEQUENCE seq2;
367367
SELECT lastval();
368368
ERROR: lastval is not yet defined in this session
369369
CREATE USER seq_user;
370+
-- privileges tests
371+
-- nextval
372+
BEGIN;
373+
SET LOCAL SESSION AUTHORIZATION seq_user;
374+
CREATE SEQUENCE seq3;
375+
REVOKE ALL ON seq3 FROM seq_user;
376+
GRANT SELECT ON seq3 TO seq_user;
377+
SELECT nextval('seq3');
378+
ERROR: permission denied for sequence seq3
379+
ROLLBACK;
380+
BEGIN;
381+
SET LOCAL SESSION AUTHORIZATION seq_user;
382+
CREATE SEQUENCE seq3;
383+
REVOKE ALL ON seq3 FROM seq_user;
384+
GRANT UPDATE ON seq3 TO seq_user;
385+
SELECT nextval('seq3');
386+
nextval
387+
---------
388+
1
389+
(1 row)
390+
391+
ROLLBACK;
392+
BEGIN;
393+
SET LOCAL SESSION AUTHORIZATION seq_user;
394+
CREATE SEQUENCE seq3;
395+
REVOKE ALL ON seq3 FROM seq_user;
396+
GRANT USAGE ON seq3 TO seq_user;
397+
SELECT nextval('seq3');
398+
nextval
399+
---------
400+
1
401+
(1 row)
402+
403+
ROLLBACK;
404+
-- currval
370405
BEGIN;
371406
SET LOCAL SESSION AUTHORIZATION seq_user;
372407
CREATE SEQUENCE seq3;
@@ -377,8 +412,96 @@ SELECT nextval('seq3');
377412
(1 row)
378413

379414
REVOKE ALL ON seq3 FROM seq_user;
415+
GRANT SELECT ON seq3 TO seq_user;
416+
SELECT currval('seq3');
417+
currval
418+
---------
419+
1
420+
(1 row)
421+
422+
ROLLBACK;
423+
BEGIN;
424+
SET LOCAL SESSION AUTHORIZATION seq_user;
425+
CREATE SEQUENCE seq3;
426+
SELECT nextval('seq3');
427+
nextval
428+
---------
429+
1
430+
(1 row)
431+
432+
REVOKE ALL ON seq3 FROM seq_user;
433+
GRANT UPDATE ON seq3 TO seq_user;
434+
SELECT currval('seq3');
435+
ERROR: permission denied for sequence seq3
436+
ROLLBACK;
437+
BEGIN;
438+
SET LOCAL SESSION AUTHORIZATION seq_user;
439+
CREATE SEQUENCE seq3;
440+
SELECT nextval('seq3');
441+
nextval
442+
---------
443+
1
444+
(1 row)
445+
446+
REVOKE ALL ON seq3 FROM seq_user;
447+
GRANT USAGE ON seq3 TO seq_user;
448+
SELECT currval('seq3');
449+
currval
450+
---------
451+
1
452+
(1 row)
453+
454+
ROLLBACK;
455+
-- lastval
456+
BEGIN;
457+
SET LOCAL SESSION AUTHORIZATION seq_user;
458+
CREATE SEQUENCE seq3;
459+
SELECT nextval('seq3');
460+
nextval
461+
---------
462+
1
463+
(1 row)
464+
465+
REVOKE ALL ON seq3 FROM seq_user;
466+
GRANT SELECT ON seq3 TO seq_user;
467+
SELECT lastval();
468+
lastval
469+
---------
470+
1
471+
(1 row)
472+
473+
ROLLBACK;
474+
BEGIN;
475+
SET LOCAL SESSION AUTHORIZATION seq_user;
476+
CREATE SEQUENCE seq3;
477+
SELECT nextval('seq3');
478+
nextval
479+
---------
480+
1
481+
(1 row)
482+
483+
REVOKE ALL ON seq3 FROM seq_user;
484+
GRANT UPDATE ON seq3 TO seq_user;
380485
SELECT lastval();
381486
ERROR: permission denied for sequence seq3
487+
ROLLBACK;
488+
BEGIN;
489+
SET LOCAL SESSION AUTHORIZATION seq_user;
490+
CREATE SEQUENCE seq3;
491+
SELECT nextval('seq3');
492+
nextval
493+
---------
494+
1
495+
(1 row)
496+
497+
REVOKE ALL ON seq3 FROM seq_user;
498+
GRANT USAGE ON seq3 TO seq_user;
499+
SELECT lastval();
500+
lastval
501+
---------
502+
1
503+
(1 row)
504+
382505
ROLLBACK;
383506
-- Sequences should get wiped out as well:
384507
DROP TABLE serialTest, serialTest2;

src/test/regress/sql/sequence.sql

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,86 @@ SELECT lastval();
168168

169169
CREATE USER seq_user;
170170

171+
-- privileges tests
172+
173+
-- nextval
174+
BEGIN;
175+
SET LOCAL SESSION AUTHORIZATION seq_user;
176+
CREATE SEQUENCE seq3;
177+
REVOKE ALL ON seq3 FROM seq_user;
178+
GRANT SELECT ON seq3 TO seq_user;
179+
SELECT nextval('seq3');
180+
ROLLBACK;
181+
182+
BEGIN;
183+
SET LOCAL SESSION AUTHORIZATION seq_user;
184+
CREATE SEQUENCE seq3;
185+
REVOKE ALL ON seq3 FROM seq_user;
186+
GRANT UPDATE ON seq3 TO seq_user;
187+
SELECT nextval('seq3');
188+
ROLLBACK;
189+
190+
BEGIN;
191+
SET LOCAL SESSION AUTHORIZATION seq_user;
192+
CREATE SEQUENCE seq3;
193+
REVOKE ALL ON seq3 FROM seq_user;
194+
GRANT USAGE ON seq3 TO seq_user;
195+
SELECT nextval('seq3');
196+
ROLLBACK;
197+
198+
-- currval
199+
BEGIN;
200+
SET LOCAL SESSION AUTHORIZATION seq_user;
201+
CREATE SEQUENCE seq3;
202+
SELECT nextval('seq3');
203+
REVOKE ALL ON seq3 FROM seq_user;
204+
GRANT SELECT ON seq3 TO seq_user;
205+
SELECT currval('seq3');
206+
ROLLBACK;
207+
208+
BEGIN;
209+
SET LOCAL SESSION AUTHORIZATION seq_user;
210+
CREATE SEQUENCE seq3;
211+
SELECT nextval('seq3');
212+
REVOKE ALL ON seq3 FROM seq_user;
213+
GRANT UPDATE ON seq3 TO seq_user;
214+
SELECT currval('seq3');
215+
ROLLBACK;
216+
217+
BEGIN;
218+
SET LOCAL SESSION AUTHORIZATION seq_user;
219+
CREATE SEQUENCE seq3;
220+
SELECT nextval('seq3');
221+
REVOKE ALL ON seq3 FROM seq_user;
222+
GRANT USAGE ON seq3 TO seq_user;
223+
SELECT currval('seq3');
224+
ROLLBACK;
225+
226+
-- lastval
227+
BEGIN;
228+
SET LOCAL SESSION AUTHORIZATION seq_user;
229+
CREATE SEQUENCE seq3;
230+
SELECT nextval('seq3');
231+
REVOKE ALL ON seq3 FROM seq_user;
232+
GRANT SELECT ON seq3 TO seq_user;
233+
SELECT lastval();
234+
ROLLBACK;
235+
236+
BEGIN;
237+
SET LOCAL SESSION AUTHORIZATION seq_user;
238+
CREATE SEQUENCE seq3;
239+
SELECT nextval('seq3');
240+
REVOKE ALL ON seq3 FROM seq_user;
241+
GRANT UPDATE ON seq3 TO seq_user;
242+
SELECT lastval();
243+
ROLLBACK;
244+
171245
BEGIN;
172246
SET LOCAL SESSION AUTHORIZATION seq_user;
173247
CREATE SEQUENCE seq3;
174248
SELECT nextval('seq3');
175249
REVOKE ALL ON seq3 FROM seq_user;
250+
GRANT USAGE ON seq3 TO seq_user;
176251
SELECT lastval();
177252
ROLLBACK;
178253

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy