From 5d8bfcc1bedc0de0dff82aa22784ca5286cb4662 Mon Sep 17 00:00:00 2001 From: JaeHwa Jung Date: Mon, 28 Mar 2016 13:31:41 +0900 Subject: [PATCH] Add mappedDatabaseName to JdbcMetadataProviderBase --- .../storage/jdbc/JdbcMetadataProviderBase.java | 6 ++++-- .../tajo/storage/pgsql/PgSQLMetadataProvider.java | 4 ++-- .../tajo/storage/pgsql/PgSQLTablespace.java | 3 ++- .../tajo/storage/pgsql/PgSQLTestServer.java | 2 +- .../storage/pgsql/TestPgSQLEndPointTests.java | 15 ++++++++++++--- .../storage/pgsql/TestPgSQLMetadataProvider.java | 4 ++-- .../testTPCH_Q2_Part_MixedStorage.sql | 2 +- 7 files changed, 24 insertions(+), 12 deletions(-) diff --git a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java index eff1b9c88a..34511053e8 100644 --- a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java +++ b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java @@ -47,14 +47,16 @@ public abstract class JdbcMetadataProviderBase implements MetadataProvider { protected final JdbcTablespace space; protected final String databaseName; + protected final String mappedDatabaseName; protected final String jdbcUri; protected final Connection connection; - public JdbcMetadataProviderBase(JdbcTablespace space, String dbName) { + public JdbcMetadataProviderBase(JdbcTablespace space, String dbName, String mappedDatabaseName) { this.space = space; this.databaseName = dbName; + this.mappedDatabaseName = mappedDatabaseName; ConnectionInfo connInfo = ConnectionInfo.fromURI(space.getUri()); this.jdbcUri = space.getUri().toASCIIString(); @@ -98,7 +100,7 @@ public Collection getTables(@Nullable String schemaPattern, @Nullable St ResultSet res = null; List tableNames = Lists.newArrayList(); try { - res = connection.getMetaData().getTables(databaseName, schemaPattern, tablePattern, GENERAL_TABLE_TYPES); + res = connection.getMetaData().getTables(mappedDatabaseName, schemaPattern, tablePattern, GENERAL_TABLE_TYPES); while(res.next()) { tableNames.add(res.getString("TABLE_NAME")); } diff --git a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLMetadataProvider.java b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLMetadataProvider.java index 069ffe3a63..8c190dbb59 100644 --- a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLMetadataProvider.java +++ b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLMetadataProvider.java @@ -25,8 +25,8 @@ public class PgSQLMetadataProvider extends JdbcMetadataProviderBase { - public PgSQLMetadataProvider(PgSQLTablespace space, String dbName) { - super(space, dbName); + public PgSQLMetadataProvider(PgSQLTablespace space, String dbName, String mappedDbName) { + super(space, dbName, mappedDbName); } @Override diff --git a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java index 8386f74995..c76d98f415 100644 --- a/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java +++ b/tajo-storage/tajo-storage-pgsql/src/main/java/org/apache/tajo/storage/pgsql/PgSQLTablespace.java @@ -27,6 +27,7 @@ import org.apache.tajo.storage.NullScanner; import org.apache.tajo.storage.Scanner; import org.apache.tajo.storage.fragment.Fragment; +import org.apache.tajo.storage.jdbc.ConnectionInfo; import org.apache.tajo.storage.jdbc.JdbcFragment; import org.apache.tajo.storage.jdbc.JdbcTablespace; @@ -48,7 +49,7 @@ public PgSQLTablespace(String name, URI uri, JSONObject config) { } public MetadataProvider getMetadataProvider() { - return new PgSQLMetadataProvider(this, database); + return new PgSQLMetadataProvider(this, database, ConnectionInfo.fromURI(uri).database()); } @Override diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java index 0a4f917d48..2a16d86692 100644 --- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java +++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/PgSQLTestServer.java @@ -50,7 +50,7 @@ public class PgSQLTestServer { }; public static final String SPACENAME = "pgsql_cluster"; - public static final String DATABASE_NAME = "tpch"; + public static final String DATABASE_NAME = "pgsql_tpch"; public static final String USERNAME = "testuser"; public static final String PASSWORD = ""; diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLEndPointTests.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLEndPointTests.java index 111f52bbdb..940197c814 100644 --- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLEndPointTests.java +++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLEndPointTests.java @@ -22,7 +22,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.client.TajoClient; -import org.apache.tajo.exception.UndefinedTableException; +import org.apache.tajo.exception.*; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -31,12 +31,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; public class TestPgSQLEndPointTests extends QueryTestCaseBase { private static final String jdbcUrl = PgSQLTestServer.getInstance().getJdbcUrlForAdmin(); private static TajoClient client; - @BeforeClass public static void setUp() throws Exception { QueryTestCaseBase.testingCluster.getMaster().refresh(); @@ -58,7 +58,7 @@ public void testGetAllDatabaseNames() { public void testGetTableList() { final Set expected = Sets.newHashSet(PgSQLTestServer.TPCH_TABLES); expected.add("datetime_types"); - final Set retrieved = Sets.newHashSet(client.getTableList("tpch")); + final Set retrieved = Sets.newHashSet(client.getTableList("pgsql_tpch")); assertEquals(expected, retrieved); } @@ -71,4 +71,13 @@ public void testGetTable() throws UndefinedTableException { assertEquals(jdbcUrl + "&table=" + tableName, retrieved.getUri().toASCIIString()); } } + + @Test(expected = TajoRuntimeException.class) + public void testGetTableWithWrongDatabase() throws UndefinedTableException { + try { + client.getTableDesc("tpch" + "." + PgSQLTestServer.TPCH_TABLES[0]); + } catch (TajoException e) { + fail("database 'tpch' does not exist"); + } + } } diff --git a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLMetadataProvider.java b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLMetadataProvider.java index 2af41792a8..ab77d04b9d 100644 --- a/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLMetadataProvider.java +++ b/tajo-storage/tajo-storage-pgsql/src/test/java/org/apache/tajo/storage/pgsql/TestPgSQLMetadataProvider.java @@ -48,7 +48,7 @@ public void testGetTablespaceName() throws Exception { public void testGetDatabaseName() throws Exception { Tablespace tablespace = TablespaceManager.get(jdbcUrl); MetadataProvider provider = tablespace.getMetadataProvider(); - assertEquals("tpch", provider.getDatabaseName()); + assertEquals("pgsql_tpch", provider.getDatabaseName()); } @Test @@ -77,7 +77,7 @@ public void testGetTableDescriptor() throws Exception { for (String tableName : PgSQLTestServer.TPCH_TABLES) { TableDesc table = provider.getTableDesc(null, tableName); - assertEquals("tpch." + tableName, table.getName()); + assertEquals("pgsql_tpch." + tableName, table.getName()); assertEquals(jdbcUrl + "&table=" + tableName, table.getUri().toASCIIString()); } } diff --git a/tajo-storage/tajo-storage-pgsql/src/test/resources/queries/TestPgSQLQueryTests/testTPCH_Q2_Part_MixedStorage.sql b/tajo-storage/tajo-storage-pgsql/src/test/resources/queries/TestPgSQLQueryTests/testTPCH_Q2_Part_MixedStorage.sql index e6ff43f7ec..83857f479b 100644 --- a/tajo-storage/tajo-storage-pgsql/src/test/resources/queries/TestPgSQLQueryTests/testTPCH_Q2_Part_MixedStorage.sql +++ b/tajo-storage/tajo-storage-pgsql/src/test/resources/queries/TestPgSQLQueryTests/testTPCH_Q2_Part_MixedStorage.sql @@ -12,7 +12,7 @@ SELECT p_type, p_size FROM - default.region join tpch.nation on n_regionkey = r_regionkey and r_name = 'AMERICA' + default.region join pgsql_tpch.nation on n_regionkey = r_regionkey and r_name = 'AMERICA' join default.supplier on s_nationkey = n_nationkey join default.partsupp on s_suppkey = ps_suppkey join default.part on p_partkey = ps_partkey and p_type like '%BRASS' and p_size = 15; \ No newline at end of file