From bfcd53e41e8bb5b4d33c50483ad0d61733e2cbd8 Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Tue, 20 Jun 2017 21:26:30 +0300 Subject: [PATCH] #1750 MySQL: database size property --- .../plugin.properties | 2 ++ .../dbeaver/ext/mysql/model/MySQLCatalog.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/plugin.properties b/plugins/org.jkiss.dbeaver.ext.mysql/plugin.properties index 66fedfb187..b334c44ce9 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/plugin.properties +++ b/plugins/org.jkiss.dbeaver.ext.mysql/plugin.properties @@ -59,6 +59,8 @@ meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.name.name=Schema Name meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.defaultCharset.name=Default Charset meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.defaultCollation.name=Default Collation meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.sqlPath.name=SQL Path +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.databaseSize.name=Database size +meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCatalog.databaseSize.description=Database size (data length + index length in bytes) meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.name.name=Charset meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.defaultCollation.name=Default Collation meta.org.jkiss.dbeaver.ext.mysql.model.MySQLCharset.maxLength.name=Max length diff --git a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java index 700c92819a..546a478950 100644 --- a/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java +++ b/plugins/org.jkiss.dbeaver.ext.mysql/src/org/jkiss/dbeaver/ext/mysql/model/MySQLCatalog.java @@ -67,6 +67,7 @@ public class MySQLCatalog implements DBSCatalog, DBPSaveableObject, DBPRefreshab private MySQLCharset defaultCharset; private MySQLCollation defaultCollation; private String sqlPath; + private Long databaseSize; private boolean persisted; public MySQLCatalog(MySQLDataSource dataSource, ResultSet dbResult) @@ -165,6 +166,31 @@ public class MySQLCatalog implements DBSCatalog, DBPSaveableObject, DBPRefreshab this.sqlPath = sqlPath; } + @Property(viewable = true, expensive = true, order = 20) + public Long getDatabaseSize(DBRProgressMonitor monitor) throws DBException { + if (databaseSize == null) { + try (JDBCSession session = DBUtils.openUtilSession(monitor, getDataSource(), "Read database size")) { + try (JDBCPreparedStatement dbStat = session.prepareStatement( + "SELECT SUM((DATA_LENGTH+INDEX_LENGTH))\n" + + "FROM INFORMATION_SCHEMA.TABLES \n" + + "WHERE TABLE_SCHEMA=?")) + { + dbStat.setString(1, getName()); + try (JDBCResultSet dbResult = dbStat.executeQuery()) { + if (dbResult.next()) { + databaseSize = dbResult.getLong(1); + } else { + databaseSize = 0l; + } + } + } + } catch (SQLException e) { + throw new DBException(e, getDataSource()); + } + } + return databaseSize; + } + public TableCache getTableCache() { return tableCache; -- GitLab