diff --git a/accio-base/src/main/java/io/accio/base/sqlrewrite/AccioSqlRewrite.java b/accio-base/src/main/java/io/accio/base/sqlrewrite/AccioSqlRewrite.java index 74e0cc7ec..a6f5a1277 100644 --- a/accio-base/src/main/java/io/accio/base/sqlrewrite/AccioSqlRewrite.java +++ b/accio-base/src/main/java/io/accio/base/sqlrewrite/AccioSqlRewrite.java @@ -120,6 +120,7 @@ public Statement apply(Statement root, SessionContext sessionContext, Analysis a descriptors.forEach(queryDescriptor -> withQueries.add(getWithQuery(queryDescriptor))); // If a selected table lacks any required fields, create a dummy with query for it. analysis.getTables().stream().filter(table -> !tableRequiredFields.containsKey(table.getSchemaTableName().getTableName())) + .filter(table -> accioMDL.isObjectExist(table.getSchemaTableName().getTableName())) .forEach(dummy -> withQueries.add(getWithQuery(new DummyInfo(dummy.getSchemaTableName().getTableName())))); Node rewriteWith = new WithRewriter(withQueries).process(root); diff --git a/accio-base/src/test/java/io/accio/base/sqlrewrite/TestMetric.java b/accio-base/src/test/java/io/accio/base/sqlrewrite/TestMetric.java index 88c3f8700..54aa096a9 100644 --- a/accio-base/src/test/java/io/accio/base/sqlrewrite/TestMetric.java +++ b/accio-base/src/test/java/io/accio/base/sqlrewrite/TestMetric.java @@ -282,7 +282,7 @@ public void testModelOnMetric() assertThat(result.get(0).size()).isEqualTo(2); assertThat(result.size()).isEqualTo(14958); - assertThatCode(() -> query(rewrite("select 1 from testModelOnMetric", true))) + assertThatCode(() -> query(rewrite("select 1 from testModelOnMetric", mdl, true))) .doesNotThrowAnyException(); } @@ -304,7 +304,7 @@ public void testMetricOnMetric() assertThat(result.get(0).size()).isEqualTo(2); assertThat(result.size()).isEqualTo(7); - assertThatCode(() -> query(rewrite("select 1 from testMetricOnMetric", true))) + assertThatCode(() -> query(rewrite("select 1 from testMetricOnMetric", mdl, true))) .doesNotThrowAnyException(); } diff --git a/accio-base/src/test/java/io/accio/base/sqlrewrite/TestModel.java b/accio-base/src/test/java/io/accio/base/sqlrewrite/TestModel.java index 4696a890c..c4473a82d 100644 --- a/accio-base/src/test/java/io/accio/base/sqlrewrite/TestModel.java +++ b/accio-base/src/test/java/io/accio/base/sqlrewrite/TestModel.java @@ -41,6 +41,7 @@ import static java.util.Objects.requireNonNull; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public class TestModel extends AbstractTestFramework @@ -320,6 +321,18 @@ public void testSelectEmpty() .doesNotThrowAnyException(); } + @Test + public void testSelectNotFound() + { + Manifest manifest = withDefaultCatalogSchema() + .setModels(List.of(customer)) + .setRelationships(List.of(ordersCustomer, ordersLineitem)) + .build(); + AccioMDL mdl = AccioMDL.fromManifest(manifest); + assertThatThrownBy(() -> query(rewrite("SELECT * FROM notfound", mdl, true))) + .hasMessageFindingMatch(".*notfound.*"); + } + private void assertQuery(AccioMDL mdl, @Language("SQL") String accioSql, @Language("SQL") String duckDBSql) { assertThat(query(rewrite(accioSql, mdl, true))).isEqualTo(query(duckDBSql));