Skip to content

Commit ae8ca66

Browse files
committed
multicolumns sort query result, vacuum opt
Add multicolumns sort Vacuum opt and reindex opt
1 parent 4e01ba9 commit ae8ca66

10 files changed

+478
-125
lines changed

README.md

+18-1
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,12 @@ This text Russian language.
7070

7171
10.09.2019
7272
Окно Server Status
73-
* иправлено падение окна Server Status при аварийном завершении СУБД
73+
74+
* исправлено падение окна Server Status при аварийном завершении СУБД
7475
- добавлена расцветка процессов которые блокируют другие процессы
76+
7577
Окно Query
78+
7679
- добавлен фильтр в окно результатов запроса. Активируется двойным щелчком мыши по ячейке, текст которой и будет являтся условием фильтра. Снимается из контекстного меню.
7780
При нажатом Alt условие отбора инвертируется (Скрыть строки содержащие значение).
7881
- Для избегания ожиданий при получении информации об объектах. Выставляется клиентский параметр SET lock_timeout=15000 для служебного соединения.
@@ -95,6 +98,20 @@ This text Russian language.
9598
- добавлен вывод CREATE STATISTICS для таблиц
9699
* исправлен вывод SQL команды для создания задания для комманд заданных в виде массива
97100

101+
28.03.2020
102+
- добавлена информация о фрагментации таблицы (cfs_fragmentation)
103+
* убрано предупреждение о версии сервера
104+
105+
11.04.2020
106+
- добавлена многоколоночная сортировка результатов выполнения запроса. Порядок сортировки колонок и направление отмечается цветными индикаторами (RED,YELLOW,GREEN,BLUE,GREY).
107+
Максимальное число колонок сортировки 5. Для выполнения сортировки нужно щелкнуть по заголовку колонки удерживая клавишу Alt.
108+
- добавлены новые опции для Vaccum ( DISABLE_PAGE_SKIPPING ) и Reindex ( CONCURRENTLY )
109+
* ускорена работа фильтра в окне результав запроса.
110+
111+
112+
113+
114+
98115

99116

100117

Release_(3.0)/pgAdmin3.exe

27.5 KB
Binary file not shown.

ctl/ctlSQLGrid.cpp

+95-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "utils/sysSettings.h"
2121
#include "frm/frmExport.h"
2222
#include <wx/regex.h>
23-
23+
#include "ctl/ctlSQLResult.h"
2424

2525
#define EXTRAEXTENT_HEIGHT 6
2626
#define EXTRAEXTENT_WIDTH 6
@@ -56,10 +56,94 @@ ctlSQLGrid::ctlSQLGrid(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
5656
SetDefaultCellOverflow(false);
5757
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
5858
SetDefaultRenderer(new CursorCellRenderer);
59-
59+
//SetUseNativeColLabels(true);
60+
//UseNativeColHeader(true);
6061
grp=NULL;
6162

6263
Connect(wxID_ANY, wxEVT_GRID_LABEL_LEFT_DCLICK, wxGridEventHandler(ctlSQLGrid::OnLabelDoubleClick));
64+
}
65+
#include "wx/renderer.h"
66+
#include "wx/headerctrl.h"
67+
68+
void ctlSQLGrid::DrawColLabel( wxDC& dc, int col ) {
69+
wxGrid::DrawColLabel(dc,col);
70+
int colLeft = GetColLeft(col);
71+
72+
wxRect rect(colLeft, 0, GetColWidth(col), m_colLabelHeight);
73+
sqlResultTable *t=(sqlResultTable *)GetTable();
74+
75+
wxHeaderSortIconType sortArrow=t->getSortColumn(col)!=0
76+
? t->getSortColumn(col)>0
77+
? wxHDR_SORT_ICON_UP
78+
: wxHDR_SORT_ICON_DOWN
79+
: wxHDR_SORT_ICON_NONE;
80+
81+
if (sortArrow != wxHDR_SORT_ICON_NONE )
82+
{
83+
wxRect ar = rect;
84+
85+
// make a rect for the arrow
86+
ar.height = 4;
87+
ar.width = 8;
88+
ar.y += (rect.height - ar.height)/2;
89+
ar.x = ar.x + rect.width - 3*ar.width/2;
90+
int arrowSpace = 0;
91+
arrowSpace = 3*ar.width/2; // space to preserve when drawing the label
92+
wxPoint triPt[3];
93+
if ( sortArrow & wxHDR_SORT_ICON_UP )
94+
{
95+
triPt[0].x = ar.width / 2;
96+
triPt[0].y = 0;
97+
triPt[1].x = ar.width;
98+
triPt[1].y = ar.height;
99+
triPt[2].x = 0;
100+
triPt[2].y = ar.height;
101+
}
102+
else
103+
{
104+
triPt[0].x = 0;
105+
triPt[0].y = 0;
106+
triPt[1].x = ar.width;
107+
triPt[1].y = 0;
108+
triPt[2].x = ar.width / 2;
109+
triPt[2].y = ar.height;
110+
}
111+
112+
wxColour c;
113+
114+
c = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
115+
for (int k=0;k<MAX_COL_SORT;k++) {
116+
int cl=t->colsortnumber[k];
117+
if (cl!=-1) {
118+
if (cl==col) {
119+
if (k==0) c=wxColor(155,17,48); // red
120+
if (k==1) c=wxColor(255,255,0); // yellow
121+
if (k==2) c=wxColor(34,199,76); // green
122+
if (k==3) c=wxColor(12,38,160); // blue
123+
}
124+
} else break;
125+
}
126+
wxDCPenChanger setPen(dc, c);
127+
wxDCBrushChanger setBrush(dc, c);
128+
129+
wxDCClipper clip(dc, rect);
130+
dc.DrawPolygon( 3, triPt, ar.x, ar.y);
131+
}
132+
133+
//wxRendererNative::Get().DrawHeaderButton
134+
// (m_colWindow,
135+
// //GetColLabelWindow(),
136+
// dc,
137+
// rect,
138+
// 0,
139+
// IsSortingBy(col)
140+
// ? IsSortOrderAscending()
141+
// ? wxHDR_SORT_ICON_UP
142+
// : wxHDR_SORT_ICON_DOWN
143+
// : wxHDR_SORT_ICON_NONE
144+
// );
145+
146+
63147
}
64148
void ctlSQLGrid::OnGridColSize(wxGridSizeEvent &event)
65149
{
@@ -429,8 +513,15 @@ void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
429513
grp->VisibleGroup(row,GetRowSize(row+1)==0);
430514
return;
431515
}
516+
if ( col >= 0 && (event.AltDown() ) )
517+
{
518+
// continue for sort event
519+
sqlResultTable *t=(sqlResultTable *)GetTable();
520+
t->setSortColumn(col);
521+
return;
522+
}
432523
// add support for (de)selecting multiple rows and cols with Control pressed
433-
if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
524+
else if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
434525
{
435526
if (GetSelectedRows().Index(row) == wxNOT_FOUND)
436527
SelectRow(row, true);
@@ -443,6 +534,7 @@ void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
443534
SelectCol(col, true);
444535
else
445536
DeselectCol(col);
537+
event.Skip();
446538
}
447539
else
448540
event.Skip();

0 commit comments

Comments
 (0)