Fixes and improvements (fmrReport)

1. Сортировка колонок на вкладках Статистика сохряняется по возможности.
2. Узлы плана которые помечены как (never executed) не подсвечиваются.
3. При построении плана всегда добавляется опция "SUMMARY on"
4. Исправлено не корректное отображение зависимостей для таблиц из публикаций.
5. В отчетах о статистике добавлена итоговая информация по таблицам отчета.
This commit is contained in:
lsv 2025-08-13 16:36:36 +05:00 committed by lsv
parent bd1e5f3518
commit 295b7f97d1
9 changed files with 399 additions and 100 deletions

View file

@ -1190,9 +1190,13 @@ int recurse(ctlSQLGrid* g, int pos, int row, double& transfer) {
//
lastnode = 0;
if (text.at(p) == '-') {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
//
double m = 1;
// -> Nested Loop (cost=205.13..273.44 rows=4 width=188) (actual time=13.157..13.157 rows=0 loops=1)
bool isstd = false;
if (text.Contains("(never executed)")) {
isstd = true;
}
wxRegEx foundstr(wxT("actual time=.*?\\.\\.([0-9.]+).*?loops=([0-9]+)\\)"), wxRE_ADVANCED);
if (foundstr.Matches(text)) {
wxString v = foundstr.GetMatch(text, 1);
@ -1202,12 +1206,15 @@ int recurse(ctlSQLGrid* g, int pos, int row, double& transfer) {
lastnode = lastnode * m;
leveltime = leveltime + lastnode;
}
g->grp->ColoriseRow(row, wxColour(248, 240, 130));
if (isstd)
g->grp->ColoriseRow(row, wxColour(224, 255, 224)); // green
else
g->grp->ColoriseRow(row, wxColour(248, 240, 130)); // yellow
}
else
{
g->grp->ColoriseRow(row, wxColour(224, 255, 224));
g->grp->ColoriseRow(row, wxColour(224, 255, 224)); // green
g->GetTable()->SetRowLabelValue(row, wxEmptyString);
}
row++;