diff --git a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java index a0ff189482..61cb98308b 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java +++ b/security-admin/src/main/java/org/apache/ranger/common/db/BaseDao.java @@ -47,6 +47,7 @@ public abstract class BaseDao { private static final String PROP_BATCH_DELETE_BATCH_SIZE = "ranger.admin.dao.batch.delete.batch.size"; private static final int DEFAULT_BATCH_DELETE_BATCH_SIZE = 1000; private static int BATCH_DELETE_BATCH_SIZE; + private static final String GDS_TABLES = "x_gds_"; static { try { @@ -348,11 +349,12 @@ public void updateUserIDReference(String paramName,long oldID) { Table table = tClass.getAnnotation(Table.class); if(table != null) { String tableName = table.name(); - String query = "update " + tableName + " set " + paramName+"=null" - + " where " +paramName+"=" + oldID; + String updatedValue = tableName.contains(GDS_TABLES) ? "1" : "null"; + String query = "update " + tableName + " set " + paramName+"=" + updatedValue + " where " +paramName+"=" + oldID; + int count=getEntityManager().createNativeQuery(query).executeUpdate(); if(count>0){ - logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "=null where " + paramName + "=" + oldID); + logger.warn(count + " records updated in table '" + tableName + "' with: set " + paramName + "="+ updatedValue + " where " + paramName + "=" + oldID); } }else{ logger.warn("Required annotation `Table` not found"); diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java index 85e457efa8..0ced5565b8 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserService.java @@ -326,5 +326,17 @@ public void updateXXPortalUserReferences(long xXPortalUserId){ daoManager.getXXPolicyRefRole().updateUserIDReference("upd_by_id", xXPortalUserId); daoManager.getXXRole().updateUserIDReference("added_by_id", xXPortalUserId); daoManager.getXXRole().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataset().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataset().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataShare().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataShare().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsProject().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsProject().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsSharedResource().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsSharedResource().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDataShareInDataset().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDataShareInDataset().updateUserIDReference("upd_by_id", xXPortalUserId); + daoManager.getXXGdsDatasetInProject().updateUserIDReference("added_by_id", xXPortalUserId); + daoManager.getXXGdsDatasetInProject().updateUserIDReference("upd_by_id", xXPortalUserId); } }