提交 61e4bdb7 编写于 作者: S Serge Rider

#9284 PG partition stats read fix


Former-commit-id: ba614fd7
上级 60d794d4
......@@ -169,11 +169,11 @@ public abstract class PostgreTable extends PostgreTableReal implements PostgreTa
@Override
public long getStatObjectSize() {
if (diskSpace != null && diskSpace == 0 && subTables != null) {
long partSizeSum = 0;
if (diskSpace != null && subTables != null) {
long partSizeSum = diskSpace;
for (PostgreTableInheritance ti : subTables) {
PostgreTableBase partTable = ti.getParentObject();
if (partTable instanceof PostgreTableReal) {
if (partTable.isPartition() && partTable instanceof PostgreTableReal) {
partSizeSum += ((PostgreTableReal) partTable).getStatObjectSize();
}
}
......
......@@ -313,11 +313,14 @@ public class StatisticsNavigatorNodeRenderer extends DefaultNavigatorNodeRendere
String sizeText;
int percentFull;
boolean statsWasRead = false;
DBSObject parentObject = DBUtils.getPublicObject(object.getParentObject());
DBNNode parentNode = getParentItem(element);
DBSObject parentObject = parentNode instanceof DBNDatabaseNode ? DBUtils.getPublicObject(((DBNDatabaseNode) parentNode).getObject()) : null;
if (parentObject instanceof DBPObjectStatisticsCollector) { // && !((DBPObjectStatisticsCollector) parentObject).isStatisticsCollected()
statsWasRead = ((DBPObjectStatisticsCollector) parentObject).isStatisticsCollected();
} else {
statsWasRead = ((DBPObjectStatistics) object).hasStatistics();
// If there is no stats collector then do not check for stats presence
// Because it will trigger stats read job which won't read any statistics (as there is no way to load it for individual object).
statsWasRead = true;//((DBPObjectStatistics) object).hasStatistics();
}
long maxObjectSize = statsWasRead ? getMaxObjectSize((TreeItem) event.item) : -1;
......@@ -358,10 +361,6 @@ public class StatisticsNavigatorNodeRenderer extends DefaultNavigatorNodeRendere
} else {
sizeText = "...";
percentFull = 0;
DBNNode parentNode = element.getParentNode();
while (parentNode instanceof DBNDatabaseFolder) {
parentNode = parentNode.getParentNode();
}
if (parentNode instanceof DBNDatabaseNode) {
DBSObject realParentObject = DBUtils.getPublicObject(((DBNDatabaseNode)parentNode).getObject());
if (!readObjectStatistics(
......@@ -396,6 +395,14 @@ public class StatisticsNavigatorNodeRenderer extends DefaultNavigatorNodeRendere
}
}
private DBNNode getParentItem(DBNDatabaseNode element) {
DBNNode parentNode = element.getParentNode();
while (parentNode instanceof DBNDatabaseFolder) {
parentNode = parentNode.getParentNode();
}
return parentNode;
}
private long getMaxObjectSize(TreeItem item) {
TreeItem parentItem = item.getParentItem();
Object maxSize = parentItem.getData(DatabaseNavigatorTree.TREE_DATA_STAT_MAX_SIZE);
......@@ -461,7 +468,7 @@ public class StatisticsNavigatorNodeRenderer extends DefaultNavigatorNodeRendere
UIUtils.asyncExec(() -> {
try {
if (!treeItem.isDisposed()) {
treeItem.setData("nav.stat.maxSize", finalMaxStatSize);
treeItem.setData(DatabaseNavigatorTree.TREE_DATA_STAT_MAX_SIZE, finalMaxStatSize);
treeItem.getParent().redraw();
}
} finally {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册