From a50fc402b5ba9d1e084d11d5f71a68d9c8c17a92 Mon Sep 17 00:00:00 2001 From: gurkanindibay Date: Tue, 19 Mar 2024 23:26:07 +0300 Subject: [PATCH] Adds some logs --- src/backend/distributed/commands/dependencies.c | 16 ++++++++++++++++ src/backend/distributed/metadata/dependency.c | 9 +++++++++ src/test/regress/sql/granted_by_support.sql | 2 ++ 3 files changed, 27 insertions(+) diff --git a/src/backend/distributed/commands/dependencies.c b/src/backend/distributed/commands/dependencies.c index c7de5d874..ff4f4e244 100644 --- a/src/backend/distributed/commands/dependencies.c +++ b/src/backend/distributed/commands/dependencies.c @@ -344,9 +344,25 @@ DeferErrorIfCircularDependencyExists(const ObjectAddress *objectAddress) { char *objectDescription = getObjectDescription(objectAddress, false); + // Iterate all objects in the 'dependencies' list, get the object names and create a string + ListCell *cell; + StringInfo objectNames = makeStringInfo(); + foreach(cell, dependencies) + { + ObjectAddress *dependency1 = (ObjectAddress *) lfirst(cell); + char *objectName = getObjectDescription(dependency1, false); + appendStringInfo(objectNames, "%s\n", objectName); + } + //to show the circular dependency + + + + + StringInfo detailInfo = makeStringInfo(); appendStringInfo(detailInfo, "\"%s\" circularly depends itself, resolve " "circular dependency first", objectDescription); + appendStringInfo(detailInfo, "ependencies are:\n%s", objectNames->data); return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED, "Citus can not handle circular dependencies " diff --git a/src/backend/distributed/metadata/dependency.c b/src/backend/distributed/metadata/dependency.c index 63b831075..adbd1f278 100644 --- a/src/backend/distributed/metadata/dependency.c +++ b/src/backend/distributed/metadata/dependency.c @@ -1819,6 +1819,8 @@ ExpandRolesToGroups(Oid roleid) true, NULL, scanKeyCount, scanKey); List *roles = NIL; + + elog(NOTICE, "Originator Roleid: %s", GetUserNameFromId(roleid, true)); while ((tuple = systable_getnext(scanDescriptor)) != NULL) { Form_pg_auth_members membership = (Form_pg_auth_members) GETSTRUCT(tuple); @@ -1827,14 +1829,21 @@ ExpandRolesToGroups(Oid roleid) definition->mode = DependencyObjectAddress; ObjectAddressSet(definition->data.address, AuthIdRelationId, membership->roleid); + //log the name of the membership->roleid + elog(NOTICE, "Dependency roleid granted: %s", GetUserNameFromId(membership->roleid, true)); + + roles = lappend(roles, definition); DependencyDefinition *definition1 = palloc0(sizeof(DependencyDefinition)); definition1->mode = DependencyObjectAddress; ObjectAddressSet(definition1->data.address, AuthIdRelationId, membership->grantor); + elog(NOTICE, "Dependency roleid grantor: %s",GetUserNameFromId( membership->grantor,true)); + elog(NOTICE, "Dependency roleid member: %s",GetUserNameFromId( membership->member,true)); roles = lappend(roles, definition1); } + elog(NOTICE, "Originator Roleid: %s completed", GetUserNameFromId(roleid, true)); systable_endscan(scanDescriptor); table_close(pgAuthMembers, AccessShareLock); diff --git a/src/test/regress/sql/granted_by_support.sql b/src/test/regress/sql/granted_by_support.sql index c597561dc..95c12b7cf 100644 --- a/src/test/regress/sql/granted_by_support.sql +++ b/src/test/regress/sql/granted_by_support.sql @@ -27,6 +27,8 @@ grant role4 to "role5'_test" with admin option; grant role4 to role1 with admin option GRANTED BY "role5'_test"; +SELECT roleid::regrole::text AS role, member::regrole::text, grantor::regrole::text, admin_option, inherit_option,set_option FROM pg_auth_members pa; + grant role4 to role3 with admin option GRANTED BY role1; grant role3 to role1 with admin option GRANTED BY role4;