@@ -321,14 +321,14 @@ func (obj ObjectMetadata) GetPrivilegesStatements(objectName string, objectType
321321 if len (obj .Privileges ) != 0 {
322322 statements = append (statements , fmt .Sprintf ("REVOKE ALL %sON %s%s FROM PUBLIC;" , columnStr , typeStr , objectName ))
323323 if obj .Owner != "" {
324- statements = append (statements , fmt .Sprintf ("REVOKE ALL %sON %s%s FROM %s;" , columnStr , typeStr , objectName , obj .Owner ))
324+ statements = append (statements , fmt .Sprintf ("REVOKE ALL %sON %s%s FROM %s;" , columnStr , typeStr , objectName , getMappedRole ( obj .Owner ) ))
325325 }
326326 for _ , acl := range obj .Privileges {
327327 grantee := ""
328328 if acl .Grantee == "" {
329329 grantee = "PUBLIC"
330330 } else {
331- grantee = acl .Grantee
331+ grantee = getMappedRole ( acl .Grantee )
332332 }
333333 privStr , privWithGrantStr := createPrivilegeStrings (acl , objectType )
334334 if privStr != "" {
@@ -494,15 +494,7 @@ func (obj ObjectMetadata) GetOwnerStatement(objectName string, objectType string
494494 }
495495 ownerStr := ""
496496 if obj .Owner != "" {
497- newOwner := obj .Owner
498- if len (ownerMap ) > 0 {
499- o , ok := ownerMap [obj .Owner ]
500- if ok {
501- newOwner = o
502- }
503- }
504-
505- ownerStr = fmt .Sprintf ("ALTER %s %s OWNER TO %s;" , typeStr , objectName , newOwner )
497+ ownerStr = fmt .Sprintf ("ALTER %s %s OWNER TO %s;" , typeStr , objectName , getMappedRole (obj .Owner ))
506498 }
507499 return ownerStr
508500}
@@ -534,7 +526,7 @@ func PrintDefaultPrivilegesStatements(metadataFile *utils.FileWithByteCount, toc
534526 statements := make ([]string , 0 )
535527 roleStr := ""
536528 if priv .Owner != "" {
537- roleStr = fmt .Sprintf (" FOR ROLE %s" , priv .Owner )
529+ roleStr = fmt .Sprintf (" FOR ROLE %s" , getMappedRole ( priv .Owner ) )
538530 }
539531 schemaStr := ""
540532 if priv .Schema != "" {
@@ -555,14 +547,14 @@ func PrintDefaultPrivilegesStatements(metadataFile *utils.FileWithByteCount, toc
555547 alterPrefix := fmt .Sprintf ("ALTER DEFAULT PRIVILEGES%s%s" , roleStr , schemaStr )
556548 statements = append (statements , fmt .Sprintf ("%s REVOKE ALL ON %sS FROM PUBLIC;" , alterPrefix , objectType ))
557549 if priv .Owner != "" {
558- statements = append (statements , fmt .Sprintf ("%s REVOKE ALL ON %sS FROM %s;" , alterPrefix , objectType , priv .Owner ))
550+ statements = append (statements , fmt .Sprintf ("%s REVOKE ALL ON %sS FROM %s;" , alterPrefix , objectType , getMappedRole ( priv .Owner ) ))
559551 }
560552 for _ , acl := range priv .Privileges {
561553 grantee := ""
562554 if acl .Grantee == "" {
563555 grantee = "PUBLIC"
564556 } else {
565- grantee = acl .Grantee
557+ grantee = getMappedRole ( acl .Grantee )
566558 }
567559 privStr , privWithGrantStr := createPrivilegeStrings (acl , objectType )
568560 if privStr != "" {
@@ -616,3 +608,12 @@ func ConstructDefaultPrivileges(results []DefaultPrivilegesQueryStruct) []Defaul
616608
617609 return defaultPrivileges
618610}
611+
612+ func getMappedRole (role string ) string {
613+ if len (ownerMap ) > 0 {
614+ if o , ok := ownerMap [role ]; ok {
615+ return o
616+ }
617+ }
618+ return role
619+ }
0 commit comments