Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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)