@@ -2778,6 +2778,7 @@ getObjectDescription(const ObjectAddress *object)
27782778
27792779 initStringInfo (& rel );
27802780 getRelationDescription (& rel , con -> conrelid );
2781+ /* translator: second %s is, e.g., "table %s" */
27812782 appendStringInfo (& buffer , _ ("constraint %s on %s" ),
27822783 NameStr (con -> conname ), rel .data );
27832784 pfree (rel .data );
@@ -3036,6 +3037,7 @@ getObjectDescription(const ObjectAddress *object)
30363037 SysScanDesc rcscan ;
30373038 HeapTuple tup ;
30383039 Form_pg_rewrite rule ;
3040+ StringInfoData rel ;
30393041
30403042 ruleDesc = heap_open (RewriteRelationId , AccessShareLock );
30413043
@@ -3052,13 +3054,15 @@ getObjectDescription(const ObjectAddress *object)
30523054 if (!HeapTupleIsValid (tup ))
30533055 elog (ERROR , "could not find tuple for rule %u" ,
30543056 object -> objectId );
3055-
30563057 rule = (Form_pg_rewrite ) GETSTRUCT (tup );
30573058
3058- appendStringInfo (& buffer , _ ("rule %s on " ),
3059- NameStr (rule -> rulename ));
3060- getRelationDescription (& buffer , rule -> ev_class );
3059+ initStringInfo (& rel );
3060+ getRelationDescription (& rel , rule -> ev_class );
30613061
3062+ /* translator: second %s is, e.g., "table %s" */
3063+ appendStringInfo (& buffer , _ ("rule %s on %s" ),
3064+ NameStr (rule -> rulename ), rel .data );
3065+ pfree (rel .data );
30623066 systable_endscan (rcscan );
30633067 heap_close (ruleDesc , AccessShareLock );
30643068 break ;
@@ -3071,6 +3075,7 @@ getObjectDescription(const ObjectAddress *object)
30713075 SysScanDesc tgscan ;
30723076 HeapTuple tup ;
30733077 Form_pg_trigger trig ;
3078+ StringInfoData rel ;
30743079
30753080 trigDesc = heap_open (TriggerRelationId , AccessShareLock );
30763081
@@ -3087,13 +3092,15 @@ getObjectDescription(const ObjectAddress *object)
30873092 if (!HeapTupleIsValid (tup ))
30883093 elog (ERROR , "could not find tuple for trigger %u" ,
30893094 object -> objectId );
3090-
30913095 trig = (Form_pg_trigger ) GETSTRUCT (tup );
30923096
3093- appendStringInfo (& buffer , _ ("trigger %s on " ),
3094- NameStr (trig -> tgname ));
3095- getRelationDescription (& buffer , trig -> tgrelid );
3097+ initStringInfo (& rel );
3098+ getRelationDescription (& rel , trig -> tgrelid );
30963099
3100+ /* translator: second %s is, e.g., "table %s" */
3101+ appendStringInfo (& buffer , _ ("trigger %s on %s" ),
3102+ NameStr (trig -> tgname ), rel .data );
3103+ pfree (rel .data );
30973104 systable_endscan (tgscan );
30983105 heap_close (trigDesc , AccessShareLock );
30993106 break ;
@@ -3327,6 +3334,8 @@ getObjectDescription(const ObjectAddress *object)
33273334 SysScanDesc rcscan ;
33283335 HeapTuple tup ;
33293336 Form_pg_default_acl defacl ;
3337+ char * rolename ;
3338+ char * nspname ;
33303339
33313340 defaclrel = heap_open (DefaultAclRelationId , AccessShareLock );
33323341
@@ -3346,48 +3355,74 @@ getObjectDescription(const ObjectAddress *object)
33463355
33473356 defacl = (Form_pg_default_acl ) GETSTRUCT (tup );
33483357
3358+ rolename = GetUserNameFromId (defacl -> defaclrole , false);
3359+
3360+ if (OidIsValid (defacl -> defaclnamespace ))
3361+ nspname = get_namespace_name (defacl -> defaclnamespace );
3362+ else
3363+ nspname = NULL ;
3364+
33493365 switch (defacl -> defaclobjtype )
33503366 {
33513367 case DEFACLOBJ_RELATION :
3352- appendStringInfo (& buffer ,
3353- _ ("default privileges on new relations belonging to role %s" ),
3354- GetUserNameFromId (defacl -> defaclrole , false));
3368+ if (nspname )
3369+ appendStringInfo (& buffer ,
3370+ _ ("default privileges on new relations belonging to role %s in schema %s" ),
3371+ rolename , nspname );
3372+ else
3373+ appendStringInfo (& buffer ,
3374+ _ ("default privileges on new relations belonging to role %s" ),
3375+ rolename );
33553376 break ;
33563377 case DEFACLOBJ_SEQUENCE :
3357- appendStringInfo (& buffer ,
3358- _ ("default privileges on new sequences belonging to role %s" ),
3359- GetUserNameFromId (defacl -> defaclrole , false));
3378+ if (nspname )
3379+ appendStringInfo (& buffer ,
3380+ _ ("default privileges on new sequences belonging to role %s in schema %s" ),
3381+ rolename , nspname );
3382+ else
3383+ appendStringInfo (& buffer ,
3384+ _ ("default privileges on new sequences belonging to role %s" ),
3385+ rolename );
33603386 break ;
33613387 case DEFACLOBJ_FUNCTION :
3362- appendStringInfo (& buffer ,
3363- _ ("default privileges on new functions belonging to role %s" ),
3364- GetUserNameFromId (defacl -> defaclrole , false));
3388+ if (nspname )
3389+ appendStringInfo (& buffer ,
3390+ _ ("default privileges on new functions belonging to role %s in schema %s" ),
3391+ rolename , nspname );
3392+ else
3393+ appendStringInfo (& buffer ,
3394+ _ ("default privileges on new functions belonging to role %s" ),
3395+ rolename );
33653396 break ;
33663397 case DEFACLOBJ_TYPE :
3367- appendStringInfo (& buffer ,
3368- _ ("default privileges on new types belonging to role %s" ),
3369- GetUserNameFromId (defacl -> defaclrole , false));
3398+ if (nspname )
3399+ appendStringInfo (& buffer ,
3400+ _ ("default privileges on new types belonging to role %s in schema %s" ),
3401+ rolename , nspname );
3402+ else
3403+ appendStringInfo (& buffer ,
3404+ _ ("default privileges on new types belonging to role %s" ),
3405+ rolename );
33703406 break ;
33713407 case DEFACLOBJ_NAMESPACE :
3408+ Assert (!nspname );
33723409 appendStringInfo (& buffer ,
33733410 _ ("default privileges on new schemas belonging to role %s" ),
3374- GetUserNameFromId ( defacl -> defaclrole , false) );
3411+ rolename );
33753412 break ;
33763413 default :
33773414 /* shouldn't get here */
3378- appendStringInfo (& buffer ,
3379- _ ("default privileges belonging to role %s" ),
3380- GetUserNameFromId (defacl -> defaclrole , false));
3415+ if (nspname )
3416+ appendStringInfo (& buffer ,
3417+ _ ("default privileges belonging to role %s in schema %s" ),
3418+ rolename , nspname );
3419+ else
3420+ appendStringInfo (& buffer ,
3421+ _ ("default privileges belonging to role %s" ),
3422+ rolename );
33813423 break ;
33823424 }
33833425
3384- if (OidIsValid (defacl -> defaclnamespace ))
3385- {
3386- appendStringInfo (& buffer ,
3387- _ (" in schema %s" ),
3388- get_namespace_name (defacl -> defaclnamespace ));
3389- }
3390-
33913426 systable_endscan (rcscan );
33923427 heap_close (defaclrel , AccessShareLock );
33933428 break ;
@@ -3427,6 +3462,7 @@ getObjectDescription(const ObjectAddress *object)
34273462 SysScanDesc sscan ;
34283463 HeapTuple tuple ;
34293464 Form_pg_policy form_policy ;
3465+ StringInfoData rel ;
34303466
34313467 policy_rel = heap_open (PolicyRelationId , AccessShareLock );
34323468
@@ -3443,13 +3479,15 @@ getObjectDescription(const ObjectAddress *object)
34433479 if (!HeapTupleIsValid (tuple ))
34443480 elog (ERROR , "could not find tuple for policy %u" ,
34453481 object -> objectId );
3446-
34473482 form_policy = (Form_pg_policy ) GETSTRUCT (tuple );
34483483
3449- appendStringInfo (& buffer , _ ("policy %s on " ),
3450- NameStr (form_policy -> polname ));
3451- getRelationDescription (& buffer , form_policy -> polrelid );
3484+ initStringInfo (& rel );
3485+ getRelationDescription (& rel , form_policy -> polrelid );
34523486
3487+ /* translator: second %s is, e.g., "table %s" */
3488+ appendStringInfo (& buffer , _ ("policy %s on %s" ),
3489+ NameStr (form_policy -> polname ), rel .data );
3490+ pfree (rel .data );
34533491 systable_endscan (sscan );
34543492 heap_close (policy_rel , AccessShareLock );
34553493 break ;
0 commit comments