Skip to content

Commit

Permalink
remove new getPartitionsWithAuth
Browse files Browse the repository at this point in the history
  • Loading branch information
dengzhhu653 committed Sep 28, 2023
1 parent 6872133 commit 34b74f8
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 155 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1634,13 +1634,6 @@ public boolean getPartitionsByExpr(String catName, String dbName, String tblName
return objectStore.getPartitionsByExpr(catName, dbName, tblName, result, args);
}

@Override
public List<Partition> getPartitionsWithAuth(String catName, String dbName, String tblName,
GetPartitionsArgs args)
throws MetaException, NoSuchObjectException, InvalidObjectException {
return objectStore.getPartitionsWithAuth(catName, dbName, tblName, args);
}

@Override
public List<Partition> listPartitionsPsWithAuth(String catName, String dbName, String tblName,
GetPartitionsArgs args) throws MetaException, InvalidObjectException, NoSuchObjectException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5545,38 +5545,12 @@ public PartitionsResponse get_partitions_req(PartitionsRequest req)
public List<Partition> get_partitions_with_auth(final String dbName,
final String tblName, final short maxParts, final String userName,
final List<String> groupNames) throws TException {
return get_partitions_with_auth_optional_schema(dbName, tblName,
return get_partitions_ps_with_auth(dbName, tblName,
new GetPartitionsArgs.GetPartitionsArgsBuilder()
.max(maxParts).userName(userName).groupNames(groupNames)
.build());
}

private List<Partition> get_partitions_with_auth_optional_schema(final String dbName,
final String tblName, GetPartitionsArgs args) throws TException {
String[] parsedDbName = parseDbName(dbName, conf);
startTableFunction("get_partitions_with_auth", parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tblName);

List<Partition> ret = null;
Exception ex = null;
try {
checkLimitNumberOfPartitionsByFilter(parsedDbName[CAT_NAME], parsedDbName[DB_NAME],
tblName, NO_FILTER_STRING, args.getMax());

authorizeTableForPartitionMetadata(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tblName);

ret = getMS().getPartitionsWithAuth(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tblName, args);
ret = FilterUtils.filterPartitionsIfEnabled(isServerFilterEnabled, filterHook, ret);
} catch (Exception e) {
ex = e;
handleException(e).convertIfInstance(InvalidObjectException.class, NoSuchObjectException.class)
.rethrowException(e);
} finally {
endFunction("get_partitions_with_auth", ret != null, ex, tblName);
}
return ret;

}

private void checkLimitNumberOfPartitionsByFilter(String catName, String dbName,
String tblName, String filterString,
int maxParts) throws TException {
Expand Down Expand Up @@ -6647,8 +6621,13 @@ private List<Partition> get_partitions_ps_with_auth(final String db_name,
List<Partition> ret = null;
Exception ex = null;
try {
checkLimitNumberOfPartitionsByPs(parsedDbName[CAT_NAME], parsedDbName[DB_NAME],
tbl_name, args.getPart_vals(), args.getMax());
if (args.getPart_vals() != null) {
checkLimitNumberOfPartitionsByPs(parsedDbName[CAT_NAME], parsedDbName[DB_NAME],
tbl_name, args.getPart_vals(), args.getMax());
} else {
checkLimitNumberOfPartitionsByFilter(parsedDbName[CAT_NAME], parsedDbName[DB_NAME],
tbl_name, NO_FILTER_STRING, args.getMax());
}
authorizeTableForPartitionMetadata(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tbl_name);
ret = getMS().listPartitionsPsWithAuth(parsedDbName[CAT_NAME], parsedDbName[DB_NAME],
tbl_name, args);
Expand All @@ -6666,24 +6645,14 @@ private List<Partition> get_partitions_ps_with_auth(final String db_name,
public GetPartitionsPsWithAuthResponse get_partitions_ps_with_auth_req(GetPartitionsPsWithAuthRequest req)
throws MetaException, NoSuchObjectException, TException {
String dbName = MetaStoreUtils.prependCatalogToDbName(req.getCatName(), req.getDbName(), conf);
List<Partition> partitions = null;
if (req.getPartVals() == null) {
partitions = get_partitions_with_auth_optional_schema(dbName, req.getTblName(), new GetPartitionsArgs.GetPartitionsArgsBuilder()
.max(req.getMaxParts()).userName(req.getUserName()).groupNames(req.getGroupNames())
.skipColumnSchemaForPartition(req.isSkipColumnSchemaForPartition())
.includeParamKeyPattern(req.getIncludeParamKeyPattern())
.excludeParamKeyPattern(req.getExcludeParamKeyPattern())
.build());
} else {
partitions =
get_partitions_ps_with_auth(dbName, req.getTblName(), new GetPartitionsArgs.GetPartitionsArgsBuilder()
.part_vals(req.getPartVals()).max(req.getMaxParts())
.userName(req.getUserName()).groupNames(req.getGroupNames())
.skipColumnSchemaForPartition(req.isSkipColumnSchemaForPartition())
.includeParamKeyPattern(req.getIncludeParamKeyPattern())
.excludeParamKeyPattern(req.getExcludeParamKeyPattern())
.build());
}
List<Partition> partitions =
get_partitions_ps_with_auth(dbName, req.getTblName(), new GetPartitionsArgs.GetPartitionsArgsBuilder()
.part_vals(req.getPartVals()).max(req.getMaxParts())
.userName(req.getUserName()).groupNames(req.getGroupNames())
.skipColumnSchemaForPartition(req.isSkipColumnSchemaForPartition())
.includeParamKeyPattern(req.getIncludeParamKeyPattern())
.excludeParamKeyPattern(req.getExcludeParamKeyPattern())
.build());
GetPartitionsPsWithAuthResponse res = new GetPartitionsPsWithAuthResponse();
res.setPartitions(partitions);
return res;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3363,41 +3363,6 @@ protected List<Partition> getJdoResult(GetHelper<List<Partition>> ctx) throws Me
}.run(false);
}

@Override
public List<Partition> getPartitionsWithAuth(String catName, String dbName, String tblName,
GetPartitionsArgs args)
throws MetaException, InvalidObjectException {
boolean success = false;

try {
openTransaction();
List<MPartition> mparts = listMPartitions(catName, dbName, tblName, args.getMax());
List<Partition> parts = new ArrayList<>(mparts.size());
if (CollectionUtils.isNotEmpty(mparts)) {
for (MPartition mpart : mparts) {
MTable mtbl = mpart.getTable();
Partition part = convertToPart(catName, dbName, tblName,
mpart, TxnUtils.isAcidTable(mtbl.getParameters()), args);
parts.add(part);

if ("TRUE".equalsIgnoreCase(mtbl.getParameters().get("PARTITION_LEVEL_PRIVILEGE"))) {
String partName = Warehouse.makePartName(this.convertToFieldSchemas(mtbl
.getPartitionKeys()), part.getValues());
PrincipalPrivilegeSet partAuth = this.getPartitionPrivilegeSet(catName, dbName,
tblName, partName, args.getUserName(), args.getGroupNames());
part.setPrivileges(partAuth);
}
}
}
success = commitTransaction();
return parts;
} catch (Exception e) {
throw new MetaException(e.getMessage());
} finally {
rollbackAndCleanup(success, null);
}
}

@Override
public Partition getPartitionWithAuth(String catName, String dbName, String tblName,
List<String> partVals, String user_name, List<String> group_names)
Expand Down Expand Up @@ -3927,7 +3892,7 @@ private Collection<String> getPartitionPsQueryResults(String catName, String dbN
* doesn't support partition privileges.
*/
private boolean canTryDirectSQL(List<String> partVals) {
if (partVals.isEmpty()) {
if (partVals == null || partVals.isEmpty()) {
return true;
}
for (String val : partVals) {
Expand Down Expand Up @@ -3962,12 +3927,16 @@ public List<Partition> listPartitionsPsWithAuth(String catName, String db_name,
if (!getauth && canTryDirectSQL(part_vals)) {
LOG.info(
"Redirecting to directSQL enabled API: db: {} tbl: {} partVals: {}",
db_name, tbl_name, Joiner.on(',').join(part_vals));
db_name, tbl_name, part_vals);
return getPartitions(catName, db_name, tbl_name, args);
}
LOG.debug("executing listPartitionNamesPsWithAuth");
Collection parts = getPartitionPsQueryResults(catName, db_name, tbl_name,
part_vals, max_parts, null);
final Collection parts;
if (part_vals != null && !part_vals.isEmpty()) {
parts = getPartitionPsQueryResults(catName, db_name, tbl_name, part_vals, max_parts, null);
} else {
parts = listMPartitions(catName, db_name, tbl_name, max_parts);
}
boolean isAcidTable = TxnUtils.isAcidTable(mtbl.getParameters());
for (Object o : parts) {
Partition part = convertToPart(catName, db_name, tbl_name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1159,28 +1159,12 @@ Partition getPartitionWithAuth(String catName, String dbName, String tblName,
default List<Partition> getPartitionsWithAuth(String catName, String dbName,
String tblName, short maxParts, String userName, List<String> groupNames)
throws MetaException, NoSuchObjectException, InvalidObjectException {
return getPartitionsWithAuth(catName, dbName, tblName, new GetPartitionsArgs
.GetPartitionsArgsBuilder()
.max(maxParts).userName(userName).groupNames(groupNames)
.build());
return listPartitionsPsWithAuth(catName, dbName, tblName,
new GetPartitionsArgs.GetPartitionsArgsBuilder()
.max(maxParts).userName(userName).groupNames(groupNames)
.build());
}

/**
* Fetch some or all partitions for a table, along with privilege information for a particular
* user.
* @param catName catalog name.
* @param dbName database name.
* @param tblName table name.
* @param args additional arguments for getting partitions
* @return list of partitions.
* @throws MetaException error access the RDBMS.
* @throws NoSuchObjectException no such table exists
* @throws InvalidObjectException error fetching privilege information.
*/
List<Partition> getPartitionsWithAuth(String catName, String dbName,
String tblName, GetPartitionsArgs args)
throws MetaException, NoSuchObjectException, InvalidObjectException;

/**
* Lists partition names that match a given partial specification
* @param catName catalog name.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1959,35 +1959,6 @@ public List<Partition> getPartitionsByFilter(String catName, String dbName, Stri
return p;
}

@Override public List<Partition> getPartitionsWithAuth(String catName, String dbName, String tblName,
GetPartitionsArgs args) throws MetaException, NoSuchObjectException, InvalidObjectException {
catName = StringUtils.normalizeIdentifier(catName);
dbName = StringUtils.normalizeIdentifier(dbName);
tblName = StringUtils.normalizeIdentifier(tblName);
if (!shouldCacheTable(catName, dbName, tblName) || (canUseEvents && rawStore.isActiveTransaction())) {
return rawStore.getPartitionsWithAuth(catName, dbName, tblName, args);
}
Table table = sharedCache.getTableFromCache(catName, dbName, tblName);
if (table == null) {
// The table is not yet loaded in cache
return rawStore.getPartitionsWithAuth(catName, dbName, tblName, args);
}
List<Partition> partitions = new ArrayList<>();
int count = 0;
int maxParts = args.getMax();
for (Partition part : sharedCache.listCachedPartitions(catName, dbName, tblName, maxParts)) {
if (maxParts == -1 || count < maxParts) {
String partName = Warehouse.makePartName(table.getPartitionKeys(), part.getValues());
PrincipalPrivilegeSet privs =
getPartitionPrivilegeSet(catName, dbName, tblName, partName, args.getUserName(), args.getGroupNames());
part.setPrivileges(privs);
partitions.add(part);
count++;
}
}
return partitions;
}

@Override public List<String> listPartitionNamesPs(String catName, String dbName, String tblName,
List<String> partSpecs, short maxParts) throws MetaException, NoSuchObjectException {
catName = StringUtils.normalizeIdentifier(catName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -716,13 +716,6 @@ public List<Partition> getPartitionsWithAuth(String catName, String dbName, Stri
groupNames);
}

@Override
public List<Partition> getPartitionsWithAuth(String catName, String dbName, String tblName,
GetPartitionsArgs args) throws MetaException, NoSuchObjectException, InvalidObjectException {

return objectStore.getPartitionsWithAuth(catName, dbName, tblName, args);
}

@Override
public List<String> listPartitionNamesPs(String catName, String dbName, String tblName,
List<String> partVals, short maxParts)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -749,12 +749,6 @@ public List<Partition> getPartitionsWithAuth(String catName, String dbName, Stri
return Collections.emptyList();
}

@Override
public List<Partition> getPartitionsWithAuth(String catName, String dbName, String tblName, GetPartitionsArgs args)
throws MetaException, NoSuchObjectException, InvalidObjectException {
return Collections.emptyList();
}

@Override
public List<String> listPartitionNamesPs(String catName, String db_name, String tbl_name, List<String> part_vals,
short max_parts) throws MetaException, NoSuchObjectException {
Expand Down

0 comments on commit 34b74f8

Please sign in to comment.