This is an automated email from the ASF dual-hosted git repository. volodymyr pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit de41559e748b7c44139cdd0a3eefef05085570a8 Author: Arjun Gupta <[email protected]> AuthorDate: Wed Nov 20 15:37:33 2019 +0530 DRILL-5844: Incorrect values of TABLE_TYPE returned from method DatabaseMetaData.getTables of JDBC API closes #1904 --- .../apache/drill/exec/store/jdbc/TestJdbcPluginWithH2IT.java | 11 +++++++++++ .../drill/exec/store/jdbc/TestJdbcPluginWithMySQLIT.java | 12 ++++++++++++ .../org/apache/drill/exec/store/ischema/FilterEvaluator.java | 2 +- .../org/apache/drill/exec/store/ischema/RecordCollector.java | 2 +- .../drill/exec/work/metadata/TestMetadataProvider.java | 2 +- .../java/org/apache/drill/jdbc/test/TestJdbcMetadata.java | 2 +- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithH2IT.java b/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithH2IT.java index 1da9cf0..dacf028 100644 --- a/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithH2IT.java +++ b/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithH2IT.java @@ -239,4 +239,15 @@ public class TestJdbcPluginWithH2IT extends ClusterTest { String plan = queryBuilder().sql(query).explainJson(); assertEquals(5, queryBuilder().physical(plan).run().recordCount()); } + + @Test + public void testJdbcTableTypes() throws Exception { + String query = "select distinct table_type from information_schema.`tables`"; + testBuilder() + .sqlQuery(query) + .unOrdered() + .baselineColumns("table_type") + .baselineValuesForSingleColumn("SYSTEM TABLE", "TABLE") + .go(); + } } diff --git a/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithMySQLIT.java b/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithMySQLIT.java index 0ff6894..bd065ca 100644 --- a/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithMySQLIT.java +++ b/contrib/storage-jdbc/src/test/java/org/apache/drill/exec/store/jdbc/TestJdbcPluginWithMySQLIT.java @@ -329,4 +329,16 @@ public class TestJdbcPluginWithMySQLIT extends ClusterTest { String query = "select * from information_schema.`views`"; run(query); } + + @Test + public void testJdbcTableTypes() throws Exception { + String query = "select distinct table_type from information_schema.`tables` " + + "where table_schema like 'mysql%'"; + testBuilder() + .sqlQuery(query) + .unOrdered() + .baselineColumns("table_type") + .baselineValuesForSingleColumn("SYSTEM VIEW", "TABLE", "VIEW") + .go(); + } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/FilterEvaluator.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/FilterEvaluator.java index dc93734..34219fb 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/FilterEvaluator.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/FilterEvaluator.java @@ -179,7 +179,7 @@ public interface FilterEvaluator { SHRD_COL_TABLE_SCHEMA, schemaName, SCHS_COL_SCHEMA_NAME, schemaName, SHRD_COL_TABLE_NAME, tableName, - TBLS_COL_TABLE_TYPE, tableType.toString()); + TBLS_COL_TABLE_TYPE, tableType.jdbcName); return filter.evaluate(recordValues) != InfoSchemaFilter.Result.FALSE; } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordCollector.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordCollector.java index 92f1d14..48c85bf 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordCollector.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/RecordCollector.java @@ -158,7 +158,7 @@ public interface RecordCollector { return drillSchema.getTableNamesAndTypes().stream() .filter(entry -> filterEvaluator.shouldVisitTable(schemaPath, entry.getKey(), entry.getValue())) - .map(entry -> new Records.Table(IS_CATALOG_NAME, schemaPath, entry.getKey(), entry.getValue().toString())) + .map(entry -> new Records.Table(IS_CATALOG_NAME, schemaPath, entry.getKey(), entry.getValue().jdbcName)) .collect(Collectors.toList()); } diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestMetadataProvider.java b/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestMetadataProvider.java index 21503de..120d6dc 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestMetadataProvider.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/work/metadata/TestMetadataProvider.java @@ -179,7 +179,7 @@ public class TestMetadataProvider extends BaseTestQuery { public void tablesWithSystemTableFilter() throws Exception { // test("SELECT * FROM INFORMATION_SCHEMA.`TABLES` WHERE TABLE_TYPE IN ('SYSTEM_TABLE')"); // SQL equivalent - GetTablesResp resp = client.getTables(null, null, null, Collections.singletonList("SYSTEM_TABLE")).get(); + GetTablesResp resp = client.getTables(null, null, null, Collections.singletonList("SYSTEM TABLE")).get(); assertEquals(RequestStatus.OK, resp.getStatus()); List<TableMetadata> tables = resp.getTablesList(); diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcMetadata.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcMetadata.java index e7ce62e..990f068 100644 --- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcMetadata.java +++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestJdbcMetadata.java @@ -78,7 +78,7 @@ public class TestJdbcMetadata extends JdbcTestActionBase { this.testAction(new JdbcAction(){ @Override public ResultSet getResult(Connection c) throws SQLException { - return c.getMetaData().getTables("DRILL", "sys", "opt%", new String[]{"SYSTEM_TABLE", "SYSTEM_VIEW"}); + return c.getMetaData().getTables("DRILL", "sys", "opt%", new String[]{"SYSTEM TABLE", "SYSTEM_VIEW"}); } }, 2); }
