@@ -278,6 +278,16 @@ private void visitRelation(AnalyzedRelation relation, Role user, Permission perm
278
278
relation .accept (relationVisitor , new RelationContext (user , permission ));
279
279
}
280
280
281
+ private void hasALPrivileges (Role user ) {
282
+ Privileges .ensureUserHasPrivilege (
283
+ relationVisitor .roles ,
284
+ user ,
285
+ Permission .AL ,
286
+ Securable .CLUSTER ,
287
+ null
288
+ );
289
+ }
290
+
281
291
@ Override
282
292
protected Void visitAnalyzedStatement (AnalyzedStatement analyzedStatement , Role user ) {
283
293
throwRequiresSuperUserPermission (user .name ());
@@ -306,7 +316,7 @@ public Void visitClose(AnalyzedClose close, Role user) {
306
316
@ Override
307
317
public Void visitSwapTable (AnalyzedSwapTable swapTable , Role user ) {
308
318
Roles roles = relationVisitor .roles ;
309
- if (!roles .hasPrivilege (user , Permission . AL , Securable . CLUSTER , null )) {
319
+ if (!roles .hasALPrivileges (user )) {
310
320
if (!roles .hasPrivilege (user , Permission .DDL , Securable .TABLE , swapTable .target ().ident ().fqn ())
311
321
|| !roles .hasPrivilege (user , Permission .DDL , Securable .TABLE , swapTable .source ().ident ().fqn ())
312
322
) {
@@ -318,25 +328,13 @@ public Void visitSwapTable(AnalyzedSwapTable swapTable, Role user) {
318
328
319
329
@ Override
320
330
public Void visitGCDanglingArtifacts (AnalyzedGCDanglingArtifacts gcDanglingArtifacts , Role user ) {
321
- Privileges .ensureUserHasPrivilege (
322
- relationVisitor .roles ,
323
- user ,
324
- Permission .AL ,
325
- Securable .CLUSTER ,
326
- null
327
- );
331
+ hasALPrivileges (user );
328
332
return null ;
329
333
}
330
334
331
335
@ Override
332
336
public Void visitRerouteRetryFailedStatement (AnalyzedRerouteRetryFailed rerouteRetryFailed , Role user ) {
333
- Privileges .ensureUserHasPrivilege (
334
- relationVisitor .roles ,
335
- user ,
336
- Permission .AL ,
337
- Securable .CLUSTER ,
338
- null
339
- );
337
+ hasALPrivileges (user );
340
338
return null ;
341
339
}
342
340
@@ -346,13 +344,7 @@ public Void visitAnalyzedAlterRole(AnalyzedAlterRole analysis, Role user) {
346
344
if (analysis .roleName ().equals (user .name ())) {
347
345
return null ;
348
346
}
349
- Privileges .ensureUserHasPrivilege (
350
- relationVisitor .roles ,
351
- user ,
352
- Permission .AL ,
353
- Securable .CLUSTER ,
354
- null
355
- );
347
+ hasALPrivileges (user );
356
348
return null ;
357
349
}
358
350
@@ -543,13 +535,7 @@ public Void visitAnalyzedAlterTableRenameTable(AnalyzedAlterTableRenameTable ana
543
535
@ Override
544
536
public Void visitSetStatement (AnalyzedSetStatement analysis , Role user ) {
545
537
if (analysis .scope ().equals (SetStatement .Scope .GLOBAL )) {
546
- Privileges .ensureUserHasPrivilege (
547
- relationVisitor .roles ,
548
- user ,
549
- Permission .AL ,
550
- Securable .CLUSTER ,
551
- null
552
- );
538
+ hasALPrivileges (user );
553
539
}
554
540
return null ;
555
541
}
@@ -672,13 +658,7 @@ public Void visitRestoreSnapshotAnalyzedStatement(AnalyzedRestoreSnapshot analys
672
658
673
659
@ Override
674
660
public Void visitResetAnalyzedStatement (AnalyzedResetStatement resetAnalyzedStatement , Role user ) {
675
- Privileges .ensureUserHasPrivilege (
676
- relationVisitor .roles ,
677
- user ,
678
- Permission .AL ,
679
- Securable .CLUSTER ,
680
- null
681
- );
661
+ hasALPrivileges (user );
682
662
return null ;
683
663
}
684
664
@@ -712,37 +692,19 @@ public Void visitCreateViewStmt(CreateViewStmt createViewStmt, Role user) {
712
692
713
693
@ Override
714
694
protected Void visitAnalyzedCreateRole (AnalyzedCreateRole createRole , Role user ) {
715
- Privileges .ensureUserHasPrivilege (
716
- relationVisitor .roles ,
717
- user ,
718
- Permission .AL ,
719
- Securable .CLUSTER ,
720
- null
721
- );
695
+ hasALPrivileges (user );
722
696
return null ;
723
697
}
724
698
725
699
@ Override
726
700
protected Void visitDropRole (AnalyzedDropRole dropRole , Role user ) {
727
- Privileges .ensureUserHasPrivilege (
728
- relationVisitor .roles ,
729
- user ,
730
- Permission .AL ,
731
- Securable .CLUSTER ,
732
- null
733
- );
701
+ hasALPrivileges (user );
734
702
return null ;
735
703
}
736
704
737
705
@ Override
738
706
public Void visitPrivilegesStatement (AnalyzedPrivileges changePrivileges , Role user ) {
739
- Privileges .ensureUserHasPrivilege (
740
- relationVisitor .roles ,
741
- user ,
742
- Permission .AL ,
743
- Securable .CLUSTER ,
744
- null
745
- );
707
+ hasALPrivileges (user );
746
708
for (Privilege privilege : changePrivileges .privileges ()) {
747
709
if (privilege .policy () == Policy .GRANT ) {
748
710
Privileges .ensureUserHasPrivilege (
@@ -815,13 +777,7 @@ public Void visitOptimizeTableStatement(AnalyzedOptimizeTable optimizeTable, Rol
815
777
816
778
@ Override
817
779
public Void visitCreatePublication (AnalyzedCreatePublication createPublication , Role user ) {
818
- Privileges .ensureUserHasPrivilege (
819
- relationVisitor .roles ,
820
- user ,
821
- Permission .AL ,
822
- Securable .CLUSTER ,
823
- null
824
- );
780
+ hasALPrivileges (user );
825
781
// All tables cannot be checked on publication creation - they are checked before actual replication starts
826
782
// and a table gets published only if publication owner has DQL, DML and DDL privileges on that table.
827
783
for (RelationName relationName : createPublication .tables ()) {
@@ -840,25 +796,13 @@ public Void visitCreatePublication(AnalyzedCreatePublication createPublication,
840
796
841
797
@ Override
842
798
public Void visitDropPublication (AnalyzedDropPublication dropPublication , Role user ) {
843
- Privileges .ensureUserHasPrivilege (
844
- relationVisitor .roles ,
845
- user ,
846
- Permission .AL ,
847
- Securable .CLUSTER ,
848
- null
849
- );
799
+ hasALPrivileges (user );
850
800
return null ;
851
801
}
852
802
853
803
@ Override
854
804
public Void visitAlterPublication (AnalyzedAlterPublication alterPublication , Role user ) {
855
- Privileges .ensureUserHasPrivilege (
856
- relationVisitor .roles ,
857
- user ,
858
- Permission .AL ,
859
- Securable .CLUSTER ,
860
- null
861
- );
805
+ hasALPrivileges (user );
862
806
for (RelationName relationName : alterPublication .tables ()) {
863
807
for (Permission permission : READ_WRITE_DEFINE ) {
864
808
Privileges .ensureUserHasPrivilege (
@@ -875,109 +819,55 @@ public Void visitAlterPublication(AnalyzedAlterPublication alterPublication, Rol
875
819
876
820
@ Override
877
821
public Void visitCreateSubscription (AnalyzedCreateSubscription createSubscription , Role user ) {
878
- Privileges .ensureUserHasPrivilege (
879
- relationVisitor .roles ,
880
- user ,
881
- Permission .AL ,
882
- Securable .CLUSTER ,
883
- null
884
- );
822
+ hasALPrivileges (user );
885
823
return null ;
886
824
}
887
825
888
826
@ Override
889
827
public Void visitDropSubscription (AnalyzedDropSubscription dropSubscription , Role user ) {
890
- Privileges .ensureUserHasPrivilege (
891
- relationVisitor .roles ,
892
- user ,
893
- Permission .AL ,
894
- Securable .CLUSTER ,
895
- null
896
- );
828
+ hasALPrivileges (user );
897
829
return null ;
898
830
}
899
831
900
832
@ Override
901
833
public Void visitAlterSubscription (AnalyzedAlterSubscription alterSubscription , Role user ) {
902
- Privileges .ensureUserHasPrivilege (
903
- relationVisitor .roles ,
904
- user ,
905
- Permission .AL ,
906
- Securable .CLUSTER ,
907
- null
908
- );
834
+ hasALPrivileges (user );
909
835
return null ;
910
836
}
911
837
912
838
@ Override
913
839
public Void visitAnalyze (AnalyzedAnalyze analyzedAnalyze , Role user ) {
914
- Privileges .ensureUserHasPrivilege (
915
- relationVisitor .roles ,
916
- user ,
917
- Permission .AL ,
918
- Securable .CLUSTER ,
919
- null
920
- );
840
+ hasALPrivileges (user );
921
841
return null ;
922
842
}
923
843
924
844
@ Override
925
845
public Void visitCreateServer (AnalyzedCreateServer createServer , Role user ) {
926
- Privileges .ensureUserHasPrivilege (
927
- relationVisitor .roles ,
928
- user ,
929
- Permission .AL ,
930
- Securable .CLUSTER ,
931
- null
932
- );
846
+ hasALPrivileges (user );
933
847
return null ;
934
848
}
935
849
936
850
@ Override
937
851
public Void visitAlterServer (AnalyzedAlterServer analyzedAlterServer , Role user ) {
938
- Privileges .ensureUserHasPrivilege (
939
- relationVisitor .roles ,
940
- user ,
941
- Permission .AL ,
942
- Securable .CLUSTER ,
943
- null
944
- );
852
+ hasALPrivileges (user );
945
853
return null ;
946
854
}
947
855
948
856
@ Override
949
857
public Void visitDropServer (AnalyzedDropServer dropServer , Role user ) {
950
- Privileges .ensureUserHasPrivilege (
951
- relationVisitor .roles ,
952
- user ,
953
- Permission .AL ,
954
- Securable .CLUSTER ,
955
- null
956
- );
858
+ hasALPrivileges (user );
957
859
return null ;
958
860
}
959
861
960
862
@ Override
961
863
public Void visitCreateUserMapping (AnalyzedCreateUserMapping createUserMapping , Role user ) {
962
- Privileges .ensureUserHasPrivilege (
963
- relationVisitor .roles ,
964
- user ,
965
- Permission .AL ,
966
- Securable .CLUSTER ,
967
- null
968
- );
864
+ hasALPrivileges (user );
969
865
return null ;
970
866
}
971
867
972
868
@ Override
973
869
public Void visitDropUserMapping (AnalyzedDropUserMapping dropUserMapping , Role user ) {
974
- Privileges .ensureUserHasPrivilege (
975
- relationVisitor .roles ,
976
- user ,
977
- Permission .AL ,
978
- Securable .CLUSTER ,
979
- null
980
- );
870
+ hasALPrivileges (user );
981
871
return null ;
982
872
}
983
873
0 commit comments