private boolean isTableExist(final Connection connection, final String catalog, final String actualTableName) throws SQLException { try (ResultSet resultSet = connection.getMetaData().getTables(catalog, null, actualTableName, null)) { return resultSet.next(); } }
private Collection<String> getPrimaryKeys(final Connection connection, final String catalog, final String actualTableName) throws SQLException { Collection<String> result = new HashSet<>(); try (ResultSet resultSet = connection.getMetaData().getPrimaryKeys(catalog, null, actualTableName)) { while (resultSet.next()) { result.add(resultSet.getString("COLUMN_NAME")); } } return result; }
public static boolean existsTable(String tablename) throws SQLException { if(existingTablenames == null){ existingTablenames = new HashSet<>(); DatabaseMetaData md = connection.getMetaData(); ResultSet rs = md.getTables(null, null, "%", null); while (rs.next()) { existingTablenames.add(rs.getString(3).toLowerCase()); } } return (existingTablenames.contains(tablename.toLowerCase())); }
@Test public void testGetProcedureColumns() throws Exception { try (Connection connection = createConnection()) { try (ResultSet rs = connection.getMetaData().getProcedureColumns(null, null, null, null)) { assertFalse(rs.next()); } } }
@Test public void testPassEscapeInMetaDataQuery() throws Exception { DatabaseMetaData metaData = connection.getMetaData(); Set<String> queries = captureQueries(() -> { String schemaPattern = "defau" + metaData.getSearchStringEscape() + "_t"; try (ResultSet resultSet = metaData.getColumns("blackhole", schemaPattern, null, null)) { assertFalse(resultSet.next(), "There should be no results"); } return null; }); assertEquals(queries.size(), 1, "Expected exactly one query, got " + queries.size()); String query = getOnlyElement(queries); assertContains(query, "_t' ESCAPE '", "Metadata query does not contain ESCAPE"); }
private boolean isH2(Connection conn) throws SQLException { String product = conn.getMetaData().getDatabaseProductName(); return StringUtils.containsIgnoreCase(product, "H2"); } }
DatabaseMetaData metaData = connection.getMetaData(); try (ResultSet resultSet = metaData.getTypeInfo()) { if (!resultSet.next()) { level = Status.Level.ERROR; buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion());
private static TableMeta fetchSchemeInDefaultWay(DruidDataSource druidDataSource, String tableName) throws SQLException { Connection conn = null; java.sql.Statement stmt = null; java.sql.ResultSet rs = null; try { conn = druidDataSource.getConnection(); stmt = conn.createStatement(); StringBuffer sb = new StringBuffer("SELECT * FROM " + tableName + " LIMIT 1"); rs = stmt.executeQuery(sb.toString()); ResultSetMetaData rsmd = rs.getMetaData(); DatabaseMetaData dbmd = conn.getMetaData(); return resultSetMetaToSchema(rsmd, dbmd, tableName); } catch (Exception e) { if (e instanceof SQLException) { throw ((SQLException)e); } throw new SQLException("Failed to fetch schema of " + tableName, e); } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } }
@Override protected ResultSet getTables(Connection connection, String schemaName, String tableName) throws SQLException { // MySQL maps their "database" to SQL catalogs and does not have schemas DatabaseMetaData metadata = connection.getMetaData(); String escape = metadata.getSearchStringEscape(); return metadata.getTables( schemaName, null, escapeNamePattern(tableName, escape), new String[] {"TABLE", "VIEW"}); }
private List<ColumnMetaData> getColumnMetaDataList(final Connection connection, final String catalog, final String actualTableName) throws SQLException { List<ColumnMetaData> result = new LinkedList<>(); Collection<String> primaryKeys = getPrimaryKeys(connection, catalog, actualTableName); try (ResultSet resultSet = connection.getMetaData().getColumns(catalog, null, actualTableName, "%")) { while (resultSet.next()) { String columnName = resultSet.getString("COLUMN_NAME"); String columnType = resultSet.getString("TYPE_NAME"); result.add(new ColumnMetaData(columnName, columnType, primaryKeys.contains(columnName))); } } return result; }
private void createTaskIdIndexIfNeeded(final Connection conn, final String tableName, final String indexName) throws SQLException { DatabaseMetaData dbMetaData = conn.getMetaData(); try (ResultSet resultSet = dbMetaData.getIndexInfo(null, null, tableName, false, false)) { boolean hasTaskIdIndex = false; while (resultSet.next()) { if (indexName.equals(resultSet.getString("INDEX_NAME"))) { hasTaskIdIndex = true; } } if (!hasTaskIdIndex) { createTaskIdAndStateIndex(conn, tableName); } } }
private void createTaskRunningTableIfNeeded(final Connection conn) throws SQLException { DatabaseMetaData dbMetaData = conn.getMetaData(); try (ResultSet resultSet = dbMetaData.getTables(null, null, TABLE_TASK_RUNNING_STATISTICS, new String[]{"TABLE"})) { if (!resultSet.next()) { createTaskRunningTable(conn); } } }
@Test public void testGetSuperTables() throws Exception { try (Connection connection = createConnection()) { try (ResultSet rs = connection.getMetaData().getSuperTables(null, null, null)) { assertFalse(rs.next()); } } }
public Table getTableSchemaFromTable(ChangeTable changeTable) throws SQLException { final DatabaseMetaData metadata = connection().getMetaData(); List<Column> columns = new ArrayList<>(); try (ResultSet rs = metadata.getColumns( realDatabaseName, changeTable.getSourceTableId().schema(), changeTable.getSourceTableId().table(), null) ) { while (rs.next()) { readTableColumn(rs, changeTable.getSourceTableId(), null).ifPresent(ce -> columns.add(ce.create())); } } final List<String> pkColumnNames = readPrimaryKeyNames(metadata, changeTable.getSourceTableId()); Collections.sort(columns); return Table.editor() .tableId(changeTable.getSourceTableId()) .addColumns(columns) .setPrimaryKeyNames(pkColumnNames) .create(); }
public Object doInConnection(Connection c) throws SQLException, DataAccessException { DatabaseMetaData meta = c.getMetaData(); databaseName = meta.getDatabaseProductName(); databaseMajorVersion = meta.getDatabaseMajorVersion(); databaseMinorVersion = meta.getDatabaseMinorVersion(); return null; } });
DatabaseMetaData metaData = connection.getMetaData(); try (ResultSet resultSet = metaData.getTypeInfo()) { if (!resultSet.next()) { level = Status.Level.ERROR; buf.append(metaData.getDatabaseProductName()); buf.append("-"); buf.append(metaData.getDatabaseProductVersion());
@Override protected ResultSet getTables(Connection connection, String schemaName, String tableName) throws SQLException { DatabaseMetaData metadata = connection.getMetaData(); String escape = metadata.getSearchStringEscape(); return metadata.getTables( connection.getCatalog(), escapeNamePattern(schemaName, escape), escapeNamePattern(tableName, escape), new String[] {"TABLE", "VIEW", "MATERIALIZED VIEW", "FOREIGN TABLE"}); }
private List<Column> getColumnsForTable(Connection connection, String catalog, String schema, String table) throws SQLException { ResultSet columns = connection.getMetaData().getColumns(catalog, escapeLikeExpression(connection, schema), escapeLikeExpression(connection, table), null); ImmutableList.Builder<Column> columnBuilder = new ImmutableList.Builder<>(); while (columns.next()) { String name = columns.getString("COLUMN_NAME"); int type = columns.getInt("DATA_TYPE"); columnBuilder.add(new Column(name, APPROXIMATE_TYPES.contains(type))); } return columnBuilder.build(); }
@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); } }
private void createJobExecutionTableAndIndexIfNeeded(final Connection conn) throws SQLException { DatabaseMetaData dbMetaData = conn.getMetaData(); try (ResultSet resultSet = dbMetaData.getTables(null, null, TABLE_JOB_EXECUTION_LOG, new String[]{"TABLE"})) { if (!resultSet.next()) { createJobExecutionTable(conn); } } }