Skip to content

Commit 044a354

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

File tree

7 files changed

+56
-10
lines changed

7 files changed

+56
-10
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,8 @@ 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);
295296
}
296297

297298
/**
@@ -306,6 +307,7 @@ default TableDto getTable(
306307
* @param includeInfoDetails true if the more info details to be included
307308
* @param includeMetadataLocationOnly true if only metadata location needs to be included.
308309
* All other flags are ignored if this is set to true.
310+
* @param includeParentChildInfo true if includeParentChildInfo
309311
* @return table
310312
*/
311313
@GET
@@ -333,7 +335,10 @@ TableDto getTable(
333335
Boolean includeInfoDetails,
334336
@DefaultValue("false")
335337
@QueryParam("includeMetadataLocationOnly")
336-
Boolean includeMetadataLocationOnly
338+
Boolean includeMetadataLocationOnly,
339+
@DefaultValue("false")
340+
@QueryParam("includeParentChildInfo")
341+
Boolean includeParentChildInfo
337342
);
338343

339344
/**

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-functional-tests/src/functionalTest/groovy/com/netflix/metacat/MetacatSmokeSpec.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ class MetacatSmokeSpec extends Specification {
676676
then:
677677
noExceptionThrown()
678678
when:
679-
def tableMetadataOnly = api.getTable(catalogName, databaseName, tableName, true, false, false, false, true)
679+
def tableMetadataOnly = api.getTable(catalogName, databaseName, tableName, true, false, false, false, true, false)
680680
then:
681681
tableMetadataOnly.getFields().size() == 0
682682
tableMetadataOnly.getMetadata().get('metadata_location') != null
@@ -711,7 +711,7 @@ class MetacatSmokeSpec extends Specification {
711711
updatedTable.getFields().get(1).getSource_type().equals('string')
712712
when:
713713
api.updateTable(catalogName, databaseName, tableName, tableDto)
714-
def tableWithDetails = api.getTable(catalogName, databaseName, tableName, true, false, false, true)
714+
def tableWithDetails = api.getTable(catalogName, databaseName, tableName, true, false, false, true, false)
715715
then:
716716
tableWithDetails.getMetadata().get('metadata_content') != null
717717
when:

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)