From e9580d9fd1d6424989dcc3b39717c5a897f3374a Mon Sep 17 00:00:00 2001 From: Mariko Medlock Date: Fri, 13 Sep 2024 14:51:19 -0400 Subject: [PATCH] Move isSourceTable method into base IndexTable class. --- .../bio/terra/tanagra/indexing/JobSequencer.java | 14 ++++++++------ .../underlay/indextable/ITRelationshipIdPairs.java | 6 ++++++ .../tanagra/underlay/indextable/IndexTable.java | 4 ++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/indexer/src/main/java/bio/terra/tanagra/indexing/JobSequencer.java b/indexer/src/main/java/bio/terra/tanagra/indexing/JobSequencer.java index 0617498ef..6a607e13e 100644 --- a/indexer/src/main/java/bio/terra/tanagra/indexing/JobSequencer.java +++ b/indexer/src/main/java/bio/terra/tanagra/indexing/JobSequencer.java @@ -153,8 +153,8 @@ public static SequencedJobSet getJobSetForGroupItems( // If the relationship lives in an intermediate table, write the table to the index dataset. // e.g. To allow joins between brand-ingredient. - if (groupItems.getGroupItemsRelationship().isIntermediateTable()) { - Relationship relationship = groupItems.getGroupItemsRelationship(); + Relationship relationship = groupItems.getGroupItemsRelationship(); + if (relationship.isIntermediateTable()) { STRelationshipIdPairs sourceIdPairsTable = underlay .getSourceSchema() @@ -169,10 +169,12 @@ public static SequencedJobSet getJobSetForGroupItems( groupItems.getName(), relationship.getEntityA().getName(), relationship.getEntityB().getName()); - jobSet.addJob( - new WriteRelationshipIntermediateTable( - indexerConfig, sourceIdPairsTable, indexIdPairsTable)); - jobSet.startNewStage(); + if (indexIdPairsTable.isGeneratedIndexTable()) { + jobSet.addJob( + new WriteRelationshipIntermediateTable( + indexerConfig, sourceIdPairsTable, indexIdPairsTable)); + jobSet.startNewStage(); + } } // Compute the criteria rollup counts for the group-items relationship. diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java index 2e6d208e7..8a812780f 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/ITRelationshipIdPairs.java @@ -84,6 +84,12 @@ public SqlField getEntityIdField(String entity) { return entity.equals(entityA) ? getEntityAIdField() : getEntityBIdField(); } + @Override + public boolean isGeneratedIndexTable() { + // TODO: Support using the source table instead of a generated index table for all IT* classes. + return sourceTable == null; + } + public enum Column { ENTITY_A_ID(new ColumnSchema("entity_A_id", DataType.INT64)), ENTITY_B_ID(new ColumnSchema("entity_B_id", DataType.INT64)); diff --git a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java index 4dc1bdaf8..09261b62c 100644 --- a/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java +++ b/underlay/src/main/java/bio/terra/tanagra/underlay/indextable/IndexTable.java @@ -35,4 +35,8 @@ public BQTable getTablePointer() { } public abstract ImmutableList getColumnSchemas(); + + public boolean isGeneratedIndexTable() { + return true; + } }