Skip to content

Commit 85cd477

Browse files
authored
Merge pull request #1191 from atlanhq/FT-896
Fixes table partition creators and adds latest typedefs
2 parents 3d354cf + 1248e19 commit 85cd477

File tree

14 files changed

+4225
-120
lines changed

14 files changed

+4225
-120
lines changed

integration-tests/src/test/java/com/atlan/java/sdk/SQLAssetTest.java

+57-64
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public class SQLAssetTest extends AtlanLiveTest {
3434
public static final String DATABASE_NAME = PREFIX + "_db";
3535
public static final String SCHEMA_NAME = PREFIX + "_schema";
3636
public static final String TABLE_NAME = PREFIX + "_table";
37-
public static final String TABLE_NAME2 = TABLE_NAME + "2";
3837
public static final String VIEW_NAME = PREFIX + "_view";
3938
public static final String MVIEW_NAME = PREFIX + "_mview";
4039
public static final String PARTITION_NAME = PREFIX + "_partition";
@@ -44,8 +43,6 @@ public class SQLAssetTest extends AtlanLiveTest {
4443
public static final String COLUMN_NAME4 = PREFIX + "_col4";
4544
public static final String COLUMN_NAME5 = PREFIX + "_col5";
4645
public static final String COLUMN_NAME6 = PREFIX + "_col6";
47-
public static final String COLUMN_NAME7 = PREFIX + "_col7";
48-
public static final String COLUMN_NAME8 = PREFIX + "_col8";
4946

5047
private static final String ATLAN_TAG_NAME1 = PREFIX + "1";
5148
private static final String ATLAN_TAG_NAME2 = PREFIX + "2";
@@ -56,7 +53,6 @@ public class SQLAssetTest extends AtlanLiveTest {
5653
private static Database database = null;
5754
private static Schema schema = null;
5855
private static Table table = null;
59-
private static Table table2 = null;
6056
private static View view = null;
6157
private static MaterializedView mview = null;
6258
private static TablePartition partition = null;
@@ -244,7 +240,6 @@ static TablePartition createTablePartition(AtlanClient client, String name, Tabl
244240
assertNotNull(partition.getGuid());
245241
assertNotNull(partition.getQualifiedName());
246242
assertEquals(partition.getName(), name);
247-
assertEquals(partition.getTableQualifiedName(), table.getQualifiedName());
248243
return partition;
249244
}
250245

@@ -370,31 +365,10 @@ void createMView() throws AtlanException {
370365
groups = {"asset.create.partition"},
371366
dependsOnGroups = {"asset.create.mview"})
372367
void createPartition() throws AtlanException {
373-
Table table = Table.creator(TABLE_NAME2, schema)
374-
.columnCount(2L)
375-
.isPartitioned(true)
376-
.partitionCount(1L)
377-
.build();
378-
AssetMutationResponse response = table.save(client);
379-
assertNotNull(response);
380-
assertTrue(response.getDeletedAssets().isEmpty());
381-
assertEquals(response.getUpdatedAssets().size(), 1);
382-
Asset one = response.getUpdatedAssets().get(0);
383-
assertTrue(one instanceof Schema);
384-
Schema schema = (Schema) one;
385-
assertEquals(schema.getQualifiedName(), schema.getQualifiedName());
386-
assertEquals(response.getCreatedAssets().size(), 1);
387-
one = response.getCreatedAssets().get(0);
388-
assertTrue(one instanceof Table);
389-
table2 = (Table) one;
390-
assertNotNull(table2.getGuid());
391-
assertNotNull(table2.getQualifiedName());
392-
assertEquals(table2.getName(), TABLE_NAME2);
393-
assertEquals(table2.getSchemaQualifiedName(), schema.getQualifiedName());
394-
partition = createTablePartition(client, PARTITION_NAME, table2);
368+
partition = createTablePartition(client, PARTITION_NAME, table);
395369
assertEquals(partition.getConnectorType(), CONNECTOR_TYPE);
396-
assertEquals(partition.getTableName(), TABLE_NAME2);
397370
assertEquals(partition.getSchemaName(), SCHEMA_NAME);
371+
assertEquals(partition.getSchemaQualifiedName(), schema.getQualifiedName());
398372
assertEquals(partition.getDatabaseName(), DATABASE_NAME);
399373
assertEquals(partition.getDatabaseQualifiedName(), database.getQualifiedName());
400374
assertEquals(partition.getConnectionQualifiedName(), connection.getQualifiedName());
@@ -494,10 +468,7 @@ void createColumn6() throws AtlanException {
494468
groups = {"asset.create.column.7"},
495469
dependsOnGroups = {"asset.create.column.6"})
496470
void createColumn7() throws AtlanException {
497-
Column column = Column.creator(COLUMN_NAME7, partition, 1)
498-
.partitionOrder(1)
499-
.isPartition(true)
500-
.build();
471+
Column column = Column.creator(COLUMN_NAME1, partition, 1).build();
501472
AssetMutationResponse response = column.save(client);
502473
assertNotNull(response);
503474
assertTrue(response.getDeletedAssets().isEmpty());
@@ -511,8 +482,8 @@ void createColumn7() throws AtlanException {
511482
assertTrue(one instanceof Column);
512483
column7 = (Column) one;
513484
assertEquals(column7.getConnectorType(), CONNECTOR_TYPE);
514-
assertEquals(column7.getTableName(), TABLE_NAME2);
515-
assertEquals(column7.getTableQualifiedName(), table2.getQualifiedName());
485+
assertEquals(column7.getTableName(), PARTITION_NAME);
486+
assertEquals(column7.getTableQualifiedName(), partition.getQualifiedName());
516487
assertEquals(column7.getSchemaName(), SCHEMA_NAME);
517488
assertEquals(column7.getSchemaQualifiedName(), schema.getQualifiedName());
518489
assertEquals(column7.getDatabaseName(), DATABASE_NAME);
@@ -524,10 +495,7 @@ void createColumn7() throws AtlanException {
524495
groups = {"asset.create.column.8"},
525496
dependsOnGroups = {"asset.create.column.7"})
526497
void createColumn8() throws AtlanException {
527-
Column column = Column.creator(COLUMN_NAME8, partition, 2)
528-
.partitionOrder(2)
529-
.isPartition(true)
530-
.build();
498+
Column column = Column.creator(COLUMN_NAME2, partition, 2).build();
531499
AssetMutationResponse response = column.save(client);
532500
assertNotNull(response);
533501
assertTrue(response.getDeletedAssets().isEmpty());
@@ -541,8 +509,8 @@ void createColumn8() throws AtlanException {
541509
assertTrue(one instanceof Column);
542510
column8 = (Column) one;
543511
assertEquals(column8.getConnectorType(), CONNECTOR_TYPE);
544-
assertEquals(column8.getTableName(), TABLE_NAME2);
545-
assertEquals(column8.getTableQualifiedName(), table2.getQualifiedName());
512+
assertEquals(column8.getTableName(), PARTITION_NAME);
513+
assertEquals(column8.getTableQualifiedName(), partition.getQualifiedName());
546514
assertEquals(column8.getSchemaName(), SCHEMA_NAME);
547515
assertEquals(column8.getSchemaQualifiedName(), schema.getQualifiedName());
548516
assertEquals(column8.getDatabaseName(), DATABASE_NAME);
@@ -563,6 +531,38 @@ void generateContract() throws AtlanException {
563531
assertTrue(tableContract.endsWith("...\n"));
564532
}
565533

534+
@Test(
535+
groups = {"asset.read.partition"},
536+
dependsOnGroups = {"asset.create.contract"})
537+
void readTablePartition() throws AtlanException {
538+
TablePartition p = TablePartition.get(client, partition.getGuid(), true);
539+
assertNotNull(p);
540+
assertTrue(p.isComplete());
541+
assertEquals(p.getGuid(), partition.getGuid());
542+
assertEquals(p.getQualifiedName(), partition.getQualifiedName());
543+
assertEquals(p.getName(), PARTITION_NAME);
544+
ITable parent = p.getParentTable();
545+
assertNotNull(parent);
546+
assertEquals(parent.getTypeName(), Table.TYPE_NAME);
547+
assertEquals(parent.getGuid(), table.getGuid());
548+
}
549+
550+
@Test(
551+
groups = {"asset.read.table"},
552+
dependsOnGroups = {"asset.create.contract"})
553+
void readTable() throws AtlanException {
554+
Table t = Table.get(client, table.getGuid(), true);
555+
assertNotNull(t);
556+
assertTrue(t.isComplete());
557+
assertEquals(t.getGuid(), table.getGuid());
558+
assertEquals(t.getQualifiedName(), table.getQualifiedName());
559+
assertEquals(t.getName(), TABLE_NAME);
560+
Set<ITablePartition> partitions = t.getPartitions();
561+
assertNotNull(partitions);
562+
assertEquals(partitions.size(), 1);
563+
assertEquals(partitions.stream().findFirst().get().getGuid(), partition.getGuid());
564+
}
565+
566566
@Test(
567567
groups = {"asset.read.column.5"},
568568
dependsOnGroups = {"asset.create.column.5"})
@@ -599,7 +599,7 @@ void readColumn7() throws AtlanException {
599599
assertTrue(byGuid.isComplete());
600600
assertEquals(byGuid.getGuid(), column7.getGuid());
601601
assertEquals(byGuid.getQualifiedName(), column7.getQualifiedName());
602-
assertEquals(byGuid.getName(), COLUMN_NAME7);
602+
assertEquals(byGuid.getName(), COLUMN_NAME1);
603603
ISQL one = byGuid.getParent();
604604
assertNotNull(one);
605605
assertEquals(one.getTypeName(), TablePartition.TYPE_NAME);
@@ -609,7 +609,7 @@ void readColumn7() throws AtlanException {
609609
assertTrue(byQN.isComplete());
610610
assertEquals(byQN.getGuid(), column7.getGuid());
611611
assertEquals(byQN.getQualifiedName(), column7.getQualifiedName());
612-
assertEquals(byQN.getName(), COLUMN_NAME7);
612+
assertEquals(byQN.getName(), COLUMN_NAME1);
613613
one = byQN.getParent();
614614
assertNotNull(one);
615615
assertEquals(one.getTypeName(), TablePartition.TYPE_NAME);
@@ -631,7 +631,7 @@ void searchByParentQN() throws AtlanException, InterruptedException {
631631
.includeOnResults(Asset.NAME)
632632
.toRequest();
633633

634-
IndexSearchResponse response = retrySearchUntil(index, 16L);
634+
IndexSearchResponse response = retrySearchUntil(index, 15L);
635635

636636
// Test iterator
637637
List<String> guids = new ArrayList<>();
@@ -665,7 +665,7 @@ void searchByParentQN() throws AtlanException, InterruptedException {
665665
assertEquals(guidsSeq, guidsPar);
666666
assertEquals(guids, guidsSeq);
667667

668-
assertEquals(response.getApproximateCount().longValue(), 16L);
668+
assertEquals(response.getApproximateCount().longValue(), 15L);
669669
List<Asset> entities = response.getAssets();
670670
assertNotNull(response.getAggregations());
671671
assertEquals(response.getAggregations().size(), 1);
@@ -677,7 +677,7 @@ void searchByParentQN() throws AtlanException, InterruptedException {
677677
8);
678678

679679
assertNotNull(entities);
680-
assertEquals(entities.size(), 16);
680+
assertEquals(entities.size(), 15);
681681

682682
Asset one = entities.get(0);
683683
assertTrue(one instanceof Connection);
@@ -722,74 +722,67 @@ void searchByParentQN() throws AtlanException, InterruptedException {
722722
assertEquals(m.getName(), MVIEW_NAME);
723723

724724
one = entities.get(6);
725-
assertTrue(one instanceof Table);
726-
t = (Table) one;
727-
assertEquals(t.getGuid(), table2.getGuid());
728-
assertEquals(t.getQualifiedName(), table2.getQualifiedName());
729-
assertEquals(t.getName(), TABLE_NAME2);
730-
731-
one = entities.get(7);
732725
assertTrue(one instanceof TablePartition);
733726
TablePartition p = (TablePartition) one;
734727
assertEquals(p.getGuid(), partition.getGuid());
735728
assertEquals(p.getQualifiedName(), partition.getQualifiedName());
736729
assertEquals(p.getName(), PARTITION_NAME);
737730

738-
one = entities.get(8);
731+
one = entities.get(7);
739732
assertTrue(one instanceof Column);
740733
Column column = (Column) one;
741734
assertEquals(column.getGuid(), column1.getGuid());
742735
assertEquals(column.getQualifiedName(), column1.getQualifiedName());
743736
assertEquals(column.getName(), COLUMN_NAME1);
744737

745-
one = entities.get(9);
738+
one = entities.get(8);
746739
assertTrue(one instanceof Column);
747740
column = (Column) one;
748741
assertEquals(column.getGuid(), column2.getGuid());
749742
assertEquals(column.getQualifiedName(), column2.getQualifiedName());
750743
assertEquals(column.getName(), COLUMN_NAME2);
751744

752-
one = entities.get(10);
745+
one = entities.get(9);
753746
assertTrue(one instanceof Column);
754747
column = (Column) one;
755748
assertEquals(column.getGuid(), column3.getGuid());
756749
assertEquals(column.getQualifiedName(), column3.getQualifiedName());
757750
assertEquals(column.getName(), COLUMN_NAME3);
758751

759-
one = entities.get(11);
752+
one = entities.get(10);
760753
assertTrue(one instanceof Column);
761754
column = (Column) one;
762755
assertEquals(column.getGuid(), column4.getGuid());
763756
assertEquals(column.getQualifiedName(), column4.getQualifiedName());
764757
assertEquals(column.getName(), COLUMN_NAME4);
765758

766-
one = entities.get(12);
759+
one = entities.get(11);
767760
assertTrue(one instanceof Column);
768761
column = (Column) one;
769762
assertEquals(column.getGuid(), column5.getGuid());
770763
assertEquals(column.getQualifiedName(), column5.getQualifiedName());
771764
assertEquals(column.getName(), COLUMN_NAME5);
772765

773-
one = entities.get(13);
766+
one = entities.get(12);
774767
assertTrue(one instanceof Column);
775768
column = (Column) one;
776769
assertEquals(column.getGuid(), column6.getGuid());
777770
assertEquals(column.getQualifiedName(), column6.getQualifiedName());
778771
assertEquals(column.getName(), COLUMN_NAME6);
779772

780-
one = entities.get(14);
773+
one = entities.get(13);
781774
assertTrue(one instanceof Column);
782775
column = (Column) one;
783776
assertEquals(column.getGuid(), column7.getGuid());
784777
assertEquals(column.getQualifiedName(), column7.getQualifiedName());
785-
assertEquals(column.getName(), COLUMN_NAME7);
778+
assertEquals(column.getName(), COLUMN_NAME1);
786779

787-
one = entities.get(15);
780+
one = entities.get(14);
788781
assertTrue(one instanceof Column);
789782
column = (Column) one;
790783
assertEquals(column.getGuid(), column8.getGuid());
791784
assertEquals(column.getQualifiedName(), column8.getQualifiedName());
792-
assertEquals(column.getName(), COLUMN_NAME8);
785+
assertEquals(column.getName(), COLUMN_NAME2);
793786
}
794787

795788
@Test(
@@ -804,7 +797,7 @@ void testSearchIterators() throws AtlanException, InterruptedException {
804797
.includeOnResults(Asset.NAME)
805798
.toRequest();
806799

807-
IndexSearchResponse response = retrySearchUntil(index, 16L);
800+
IndexSearchResponse response = retrySearchUntil(index, 15L);
808801

809802
for (Asset a : response) {
810803
assertTrue(a instanceof Connection
@@ -827,7 +820,7 @@ void testSearchIterators() throws AtlanException, InterruptedException {
827820
|| a instanceof Column));
828821

829822
List<Asset> results = response.stream().toList();
830-
assertEquals(results.size(), 16);
823+
assertEquals(results.size(), 15);
831824
}
832825

833826
@Test(groups = {"asset.create.group.owners"})

sdk/src/main/java/com/atlan/model/assets/Column.java

+9-20
Original file line numberDiff line numberDiff line change
@@ -786,8 +786,6 @@ public ISQL getParent() {
786786
map.put("schemaQualifiedName", partition.getSchemaQualifiedName());
787787
map.put("name", partition.getName());
788788
map.put("qualifiedName", partition.getQualifiedName());
789-
map.put("tableName", partition.getTableName());
790-
map.put("tableQualifiedName", partition.getTableQualifiedName());
791789
validateRelationship(TablePartition.TYPE_NAME, map);
792790
return creator(
793791
name,
@@ -799,8 +797,8 @@ public ISQL getParent() {
799797
partition.getName(),
800798
partition.getQualifiedName(),
801799
TablePartition.TYPE_NAME,
802-
partition.getTableName(),
803-
partition.getTableQualifiedName(),
800+
null,
801+
null,
804802
order)
805803
.tablePartition(partition.trimToReference());
806804
}
@@ -889,16 +887,7 @@ public ISQL getParent() {
889887
*/
890888
public static ColumnBuilder<?, ?> creator(String name, String parentType, String parentQualifiedName, int order) {
891889
String parentName = StringUtils.getNameFromQualifiedName(parentQualifiedName);
892-
String tableName = null;
893-
String tableQualifiedName = null;
894-
String schemaQualifiedName;
895-
if (TablePartition.TYPE_NAME.equals(parentType)) {
896-
tableQualifiedName = StringUtils.getParentQualifiedNameFromQualifiedName(parentQualifiedName);
897-
tableName = StringUtils.getNameFromQualifiedName(tableQualifiedName);
898-
schemaQualifiedName = StringUtils.getParentQualifiedNameFromQualifiedName(tableQualifiedName);
899-
} else {
900-
schemaQualifiedName = StringUtils.getParentQualifiedNameFromQualifiedName(parentQualifiedName);
901-
}
890+
String schemaQualifiedName = StringUtils.getParentQualifiedNameFromQualifiedName(parentQualifiedName);
902891
String schemaName = StringUtils.getNameFromQualifiedName(schemaQualifiedName);
903892
String databaseQualifiedName = StringUtils.getParentQualifiedNameFromQualifiedName(schemaQualifiedName);
904893
String databaseName = StringUtils.getNameFromQualifiedName(databaseQualifiedName);
@@ -913,8 +902,8 @@ public ISQL getParent() {
913902
parentName,
914903
parentQualifiedName,
915904
parentType,
916-
tableName,
917-
tableQualifiedName,
905+
null,
906+
null,
918907
order);
919908
}
920909

@@ -930,8 +919,8 @@ public ISQL getParent() {
930919
* @param parentName simple name of the table / view / materialized view in which the Column should be created
931920
* @param parentQualifiedName unique name of the table / view / materialized view in which this Column exists
932921
* @param parentType type of parent (table, view, materialized view), should be a TYPE_NAME static string
933-
* @param tableName simple name of the table if the parentType is TablePartition
934-
* @param tableQualifiedName unique name of the table if the parentType is TablePartition
922+
* @param tableName (deprecated - unused)
923+
* @param tableQualifiedName (deprecated - unused)
935924
* @param order the order the Column appears within its parent (the Column's position)
936925
* @return the minimal request necessary to create the Column, as a builder
937926
*/
@@ -977,8 +966,8 @@ public ISQL getParent() {
977966
.materializedView(MaterializedView.refByQualifiedName(parentQualifiedName));
978967
break;
979968
case TablePartition.TYPE_NAME:
980-
builder.tableName(tableName)
981-
.tableQualifiedName(tableQualifiedName)
969+
builder.tableName(parentName)
970+
.tableQualifiedName(parentQualifiedName)
982971
.tablePartition(TablePartition.refByQualifiedName(parentQualifiedName));
983972
break;
984973
case SnowflakeDynamicTable.TYPE_NAME:

0 commit comments

Comments
 (0)