Skip to content

Commit af9a327

Browse files
author
Yingjian Wu
committed
includeParentChildInfo in get
1 parent 93b2c57 commit af9a327

6 files changed

Lines changed: 82 additions & 8 deletions

File tree

metacat-client/src/main/java/com/netflix/metacat/client/api/MetacatV1.java

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,36 @@ default TableDto getTable(
291291
Boolean includeInfoDetails
292292
) {
293293
return getTable(catalogName, databaseName, tableName, includeInfo,
294-
includeDefinitionMetadata, includeDataMetadata, includeInfoDetails, false);
294+
includeDefinitionMetadata, includeDataMetadata, includeInfoDetails, false,
295+
false);
296+
}
297+
298+
/**
299+
* Get the table.
300+
* Add this method to maintain backward compatability with dependent services which currently uses metacatClient
301+
* @param catalogName catalog name
302+
* @param databaseName database name
303+
* @param tableName table name.
304+
* @param includeInfo true if the details need to be included
305+
* @param includeDefinitionMetadata true if the definition metadata to be included
306+
* @param includeDataMetadata true if the data metadata to be included
307+
* @param includeInfoDetails true if the more info details to be included
308+
* @param includeMetadataLocationOnly true if includeMetadataLocationOnly
309+
* @return table
310+
*/
311+
default TableDto getTable(
312+
String catalogName,
313+
String databaseName,
314+
String tableName,
315+
Boolean includeInfo,
316+
Boolean includeDefinitionMetadata,
317+
Boolean includeDataMetadata,
318+
Boolean includeInfoDetails,
319+
Boolean includeMetadataLocationOnly
320+
) {
321+
return getTable(catalogName, databaseName, tableName, includeInfo,
322+
includeDefinitionMetadata, includeDataMetadata, includeInfoDetails, includeMetadataLocationOnly,
323+
false);
295324
}
296325

297326
/**
@@ -306,6 +335,7 @@ default TableDto getTable(
306335
* @param includeInfoDetails true if the more info details to be included
307336
* @param includeMetadataLocationOnly true if only metadata location needs to be included.
308337
* All other flags are ignored if this is set to true.
338+
* @param includeParentChildInfo true if includeParentChildInfo
309339
* @return table
310340
*/
311341
@GET
@@ -333,7 +363,10 @@ TableDto getTable(
333363
Boolean includeInfoDetails,
334364
@DefaultValue("false")
335365
@QueryParam("includeMetadataLocationOnly")
336-
Boolean includeMetadataLocationOnly
366+
Boolean includeMetadataLocationOnly,
367+
@DefaultValue("false")
368+
@QueryParam("includeParentChildInfo")
369+
Boolean includeParentChildInfo
337370
);
338371

339372
/**

metacat-common-server/src/main/java/com/netflix/metacat/common/server/api/v1/MetacatV1.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ default TableDto getTable(
8181
final boolean includeInfoDetails
8282
) {
8383
return getTable(catalogName, databaseName, tableName, includeInfo, includeDefinitionMetadata,
84-
includeDataMetadata, includeInfoDetails, false);
84+
includeDataMetadata, includeInfoDetails, false, false);
8585
}
8686

8787
/**
@@ -96,6 +96,7 @@ default TableDto getTable(
9696
* @param includeInfoDetails true if the more info details to be included
9797
* @param includeMetadataLocationOnly true if only metadata location needs to be included.
9898
* All other flags are ignored
99+
* @param includeParentChildInfo true if includeParentChildInfo needs to be included.
99100
* @return table
100101
*/
101102
TableDto getTable(
@@ -106,7 +107,8 @@ TableDto getTable(
106107
final boolean includeDefinitionMetadata,
107108
final boolean includeDataMetadata,
108109
final boolean includeInfoDetails,
109-
final boolean includeMetadataLocationOnly
110+
final boolean includeMetadataLocationOnly,
111+
final boolean includeParentChildInfo
110112
);
111113

112114
/**

metacat-main/src/main/java/com/netflix/metacat/main/api/v1/MetacatController.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,10 @@ public TableDto getTable(
655655
@ApiParam(value = "Whether to include only the metadata location in the response")
656656
@RequestParam(
657657
name = "includeMetadataLocationOnly",
658-
defaultValue = "false") final boolean includeMetadataLocationOnly
658+
defaultValue = "false") final boolean includeMetadataLocationOnly,
659+
@RequestParam(
660+
name = "includeParentChildInfo",
661+
defaultValue = "false") final boolean includeParentChildInfo
659662
) {
660663
final Supplier<QualifiedName> qualifiedNameSupplier =
661664
() -> QualifiedName.ofTable(catalogName, databaseName, tableName);
@@ -669,6 +672,7 @@ public TableDto getTable(
669672
.put("includeDataMetadata", String.valueOf(includeDataMetadata))
670673
.put("includeMetadataFromConnector", String.valueOf(includeInfoDetails))
671674
.put("includeMetadataLocationOnly", String.valueOf(includeMetadataLocationOnly))
675+
.put("includeParentChildInfo", String.valueOf(includeParentChildInfo))
672676
.build(),
673677
() -> {
674678
final Optional<TableDto> table = this.tableService.get(
@@ -680,6 +684,7 @@ public TableDto getTable(
680684
.disableOnReadMetadataIntercetor(false)
681685
.includeMetadataFromConnector(includeInfoDetails)
682686
.includeMetadataLocationOnly(includeMetadataLocationOnly)
687+
.includeParentChildInfo(includeParentChildInfo)
683688
.useCache(true)
684689
.build()
685690
);

metacat-main/src/main/java/com/netflix/metacat/main/services/GetTableServiceParameters.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ public class GetTableServiceParameters {
3636
private final boolean useCache;
3737
private final boolean includeMetadataFromConnector;
3838
private final boolean includeMetadataLocationOnly;
39+
private final boolean includeParentChildInfo;
3940
}

metacat-main/src/main/java/com/netflix/metacat/main/services/impl/TableServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ public Optional<TableDto> get(final QualifiedName name, final GetTableServicePar
518518
&& definitionMetadata.get().has(ParentChildRelMetadataConstants.PARENT_CHILD_RELINFO)) {
519519
definitionMetadata.get().remove(ParentChildRelMetadataConstants.PARENT_CHILD_RELINFO);
520520
}
521-
if (config.isParentChildGetEnabled()) {
521+
if (config.isParentChildGetEnabled() || getTableServiceParameters.isIncludeParentChildInfo()) {
522522
final ObjectNode parentChildRelObjectNode = createParentChildObjectNode(name);
523523
if (!parentChildRelObjectNode.isEmpty()) {
524524
if (!definitionMetadata.isPresent()) {

metacat-main/src/test/groovy/com/netflix/metacat/main/services/impl/TableServiceImplSpec.groovy

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ class TableServiceImplSpec extends Specification {
480480
noExceptionThrown()
481481
}
482482

483-
def "Mock Parent Child Relationship Drop"() {
483+
def "Mock Parent Child Relationship Drop with isParentChildGetEnabled enabled and getParameter disabled"() {
484484
given:
485485
def name = QualifiedName.ofTable("clone", "clone", "child")
486486

@@ -577,7 +577,7 @@ class TableServiceImplSpec extends Specification {
577577
noExceptionThrown()
578578
}
579579

580-
def "Mock Parent Child Relationship Get"() {
580+
def "Mock Parent Child Relationship Get with GetTableServiceParameters disabled"() {
581581
when:
582582
service.get(name,GetTableServiceParameters.builder().
583583
disableOnReadMetadataIntercetor(false)
@@ -609,6 +609,39 @@ class TableServiceImplSpec extends Specification {
609609
1 * parentChildRelSvc.isParentTable(name)
610610
}
611611

612+
def "Mock Parent Child Relationship Get with GetTableServiceParameters enabled"() {
613+
when:
614+
service.get(name,GetTableServiceParameters.builder().
615+
disableOnReadMetadataIntercetor(false)
616+
.includeDataMetadata(true)
617+
.includeDefinitionMetadata(true)
618+
.includeParentChildInfo(true)
619+
.build())
620+
then:
621+
1 * connectorManager.getCatalogConfig(_) >> catalogConfig
622+
1 * usermetadataService.getDefinitionMetadataWithInterceptor(_,_) >> Optional.empty()
623+
1 * usermetadataService.getDataMetadata(_) >> Optional.empty()
624+
0 * usermetadataService.getDefinitionMetadata(_) >> Optional.empty()
625+
1 * config.isParentChildGetEnabled() >> false
626+
1 * parentChildRelSvc.getParents(name)
627+
1 * parentChildRelSvc.isParentTable(name)
628+
629+
when:
630+
service.get(name,GetTableServiceParameters.builder().
631+
disableOnReadMetadataIntercetor(false)
632+
.includeDataMetadata(true)
633+
.includeDefinitionMetadata(true)
634+
.build())
635+
then:
636+
1 * connectorManager.getCatalogConfig(_) >> catalogConfig
637+
1 * usermetadataService.getDefinitionMetadataWithInterceptor(_,_) >> Optional.empty()
638+
1 * usermetadataService.getDataMetadata(_) >> Optional.empty()
639+
0 * usermetadataService.getDefinitionMetadata(_) >> Optional.empty()
640+
1 * config.isParentChildGetEnabled() >> true
641+
1 * parentChildRelSvc.getParents(name)
642+
1 * parentChildRelSvc.isParentTable(name)
643+
}
644+
612645
def "Will not throw on Successful Table Update with Failed Get"() {
613646
given:
614647
def updatedTableDto = new TableDto(name: name, serde: new StorageDto(uri: 's3:/a/b/c'))

0 commit comments

Comments
 (0)