@Override public ResultSet getSchemas() throws SQLException { return metaData.getSchemas(); }
@Override public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException { return metaData.getSchemas(catalog, schemaPattern); }
public List<String> getHiveDbNames() throws Exception { List<String> ret = Lists.newArrayList(); ResultSet schemas = metaData.getSchemas(); while (schemas.next()) { ret.add(String.valueOf(schemas.getObject(1))); } DBUtils.closeQuietly(schemas); return ret; }
@Override public List<String> listDatabases() throws SQLException { List<String> ret = new ArrayList<>(); try (Connection con = SqlUtil.getConnection(dbconf); ResultSet rs = con.getMetaData().getSchemas()) { while (rs.next()) { String schema = rs.getString("TABLE_SCHEM"); String catalog = rs.getString("TABLE_CATALOG"); logger.info(String.format(Locale.ROOT, "%s,%s", schema, catalog)); ret.add(schema); } } return ret; }
@Override public Set<String> getSchemaNames() { try (Connection connection = connectionFactory.openConnection(); ResultSet resultSet = connection.getMetaData().getSchemas()) { ImmutableSet.Builder<String> schemaNames = ImmutableSet.builder(); while (resultSet.next()) { String schemaName = resultSet.getString("TABLE_SCHEM").toLowerCase(ENGLISH); // skip internal schemas if (!schemaName.equals("information_schema")) { schemaNames.add(schemaName); } } return schemaNames.build(); } catch (SQLException e) { throw new PrestoException(JDBC_ERROR, e); } }
String getSchemaNameFromMetaData(DatabaseMetaData metaData, RegionMapping regionMapping, String catalogFilter) throws SQLException { String schemaFilter = regionMapping.getSchema(); if (schemaFilter == null || schemaFilter.isEmpty()) { if ("PostgreSQL".equals(metaData.getDatabaseProductName())) { schemaFilter = "public"; } else { return DEFAULT_SCHEMA; } } try (ResultSet schemas = metaData.getSchemas(catalogFilter, "%")) { return findMatchInResultSet(schemaFilter, schemas, "TABLE_SCHEM", "schema"); } }
@Override public ResultSet getResult(Connection c) throws SQLException { return c.getMetaData().getSchemas("DRILL", "%fs%"); } }, 3);
@Override public ResultSet getResult(Connection c) throws SQLException { return c.getMetaData().getSchemas(); } });
@Test(groups = JDBC) public void shouldGetSchemas() throws SQLException { QueryResult result = QueryResult.forResultSet(metaData().getSchemas("hive", null)); assertThat(result).contains(row("default", "hive")); }
/** * @throws Exception If failed. */ @Test public void testEmptySchemasMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(URL)) { ResultSet rs = conn.getMetaData().getSchemas(null, "qqq"); assert !rs.next() : "Empty result set is expected"; } }
@Override public Void call() throws Exception { Connection conn = getConnection(); DatabaseMetaData meta = conn.getMetaData(); conn.close(); meta.getSchemas(null, null); return null; } }, "08003", "Connection is closed.");
@Test public void testListDatabases() throws SQLException { ResultSet rs = mock(ResultSet.class); when(rs.next()).thenReturn(true).thenReturn(true).thenReturn(false); when(rs.getString("TABLE_SCHEM")).thenReturn("schema1").thenReturn("schema2"); when(rs.getString("TABLE_CATALOG")).thenReturn("catalog1").thenReturn("catalog2"); when(connection.getMetaData()).thenReturn(dbmd); when(dbmd.getSchemas()).thenReturn(rs); List<String> dbs = jdbcMetadata.listDatabases(); Assert.assertEquals(2, dbs.size()); Assert.assertEquals("schema1", dbs.get(0)); }
@Test public void testListDatabases() throws SQLException { ResultSet rs = mock(ResultSet.class); when(rs.next()).thenReturn(true).thenReturn(true).thenReturn(false); when(rs.getString("TABLE_SCHEM")).thenReturn("schema1").thenReturn("schema2"); when(rs.getString("TABLE_CATALOG")).thenReturn("catalog1").thenReturn("testdb"); when(connection.getCatalog()).thenReturn("testdb"); when(connection.getMetaData()).thenReturn(dbmd); when(dbmd.getSchemas("testdb", "%")).thenReturn(rs); List<String> dbs = jdbcMetadata.listDatabases(); Assert.assertEquals(1, dbs.size()); Assert.assertEquals("schema2", dbs.get(0)); }
/** * @throws Exception If failed. */ @Test public void testInvalidCatalog() throws Exception { try (Connection conn = DriverManager.getConnection(URL)) { DatabaseMetaData meta = conn.getMetaData(); ResultSet rs = meta.getSchemas("q", null); assert !rs.next() : "Results must be empty"; rs = meta.getTables("q", null, null, null); assert !rs.next() : "Results must be empty"; rs = meta.getColumns("q", null, null, null); assert !rs.next() : "Results must be empty"; rs = meta.getIndexInfo("q", null, null, false, false); assert !rs.next() : "Results must be empty"; rs = meta.getPrimaryKeys("q", null, null); assert !rs.next() : "Results must be empty"; } }
@Test public void getSchemaNameFromMetaDataGivenSchemaReturnsIt() throws SQLException { String mySchema = "mySchema"; when(regionMapping.getSchema()).thenReturn(mySchema); ResultSet schemasResultSet = mock(ResultSet.class); when(schemasResultSet.next()).thenReturn(true).thenReturn(false); when(schemasResultSet.getString("TABLE_SCHEM")).thenReturn(mySchema); String catalogFilter = "myCatalogFilter"; when(databaseMetaData.getSchemas(catalogFilter, "%")).thenReturn(schemasResultSet); String result = tableMetaDataManager.getSchemaNameFromMetaData(databaseMetaData, regionMapping, catalogFilter); assertThat(result).isEqualTo(mySchema); }
@Test public void getSchemaNameFromMetaDataGivenNullSchemaOnPostgresReturnsPublic() throws SQLException { String defaultPostgresSchema = "public"; when(regionMapping.getSchema()).thenReturn(null); ResultSet schemasResultSet = mock(ResultSet.class); when(schemasResultSet.next()).thenReturn(true).thenReturn(false); when(schemasResultSet.getString("TABLE_SCHEM")).thenReturn(defaultPostgresSchema); String catalogFilter = "myCatalogFilter"; when(databaseMetaData.getSchemas(catalogFilter, "%")).thenReturn(schemasResultSet); when(databaseMetaData.getDatabaseProductName()).thenReturn("PostgreSQL"); String result = tableMetaDataManager.getSchemaNameFromMetaData(databaseMetaData, regionMapping, catalogFilter); assertThat(result).isEqualTo(defaultPostgresSchema); }
@Test public void verifyPostgreUsesPublicSchemaByDefault() throws Exception { setupCompositePrimaryKeysMetaData(); when(regionMapping.getIds()).thenReturn(""); ResultSet schemas = mock(ResultSet.class); when(schemas.next()).thenReturn(true).thenReturn(false); when(schemas.getString("TABLE_SCHEM")).thenReturn("PUBLIC"); when(databaseMetaData.getSchemas(any(), any())).thenReturn(schemas); when(databaseMetaData.getDatabaseProductName()).thenReturn("PostgreSQL"); TableMetaDataView data = tableMetaDataManager.getTableMetaDataView(connection, regionMapping); assertThat(data.getKeyColumnNames()).isEqualTo(Arrays.asList(KEY_COLUMN, KEY_COLUMN2)); verify(connection).getMetaData(); verify(databaseMetaData).getTables("", "PUBLIC", "%", null); }
/** * @throws Exception If failed. */ @Test public void testSchemasMetadata() throws Exception { try (Connection conn = DriverManager.getConnection(BASE_URL)) { ResultSet rs = conn.getMetaData().getSchemas(); Set<String> expectedSchemas = new HashSet<>(Arrays.asList("pers", "org", "metaTest")); Set<String> schemas = new HashSet<>(); while (rs.next()) { schemas.add(rs.getString(1)); assertEquals("There is only one possible catalog.", JdbcDatabaseMetadata.CATALOG_NAME, rs.getString(2)); } assertEquals(expectedSchemas, schemas); } }
@Signature public Memory getSchemas(Environment env) throws SQLException { ResultSet schemas = metaData.getSchemas(); ArrayMemory r = new ArrayMemory(); while (schemas.next()) { r.add(new PSqlResult(env, schemas).toArray(env)); } return r.toConstant(); }
@Test public void testDatabaseMetaDataSchemas() throws Exception { final DatabaseMetaData metaData = client.getMetaData(); Assert.assertEquals( ImmutableList.of( ROW(Pair.of("TABLE_CATALOG", "druid"), Pair.of("TABLE_SCHEM", "druid")) ), getRows(metaData.getSchemas(null, "druid")) ); }