mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-21 06:45:27 -06:00
multicolumns sort query result, vacuum opt
Add multicolumns sort Vacuum opt and reindex opt
This commit is contained in:
parent
4e01ba92c4
commit
ae8ca667e7
10 changed files with 478 additions and 125 deletions
19
README.md
19
README.md
|
|
@ -70,9 +70,12 @@ This text Russian language.
|
||||||
|
|
||||||
10.09.2019
|
10.09.2019
|
||||||
Окно Server Status
|
Окно Server Status
|
||||||
* иправлено падение окна Server Status при аварийном завершении СУБД
|
|
||||||
|
* исправлено падение окна Server Status при аварийном завершении СУБД
|
||||||
- добавлена расцветка процессов которые блокируют другие процессы
|
- добавлена расцветка процессов которые блокируют другие процессы
|
||||||
|
|
||||||
Окно Query
|
Окно Query
|
||||||
|
|
||||||
- добавлен фильтр в окно результатов запроса. Активируется двойным щелчком мыши по ячейке, текст которой и будет являтся условием фильтра. Снимается из контекстного меню.
|
- добавлен фильтр в окно результатов запроса. Активируется двойным щелчком мыши по ячейке, текст которой и будет являтся условием фильтра. Снимается из контекстного меню.
|
||||||
При нажатом Alt условие отбора инвертируется (Скрыть строки содержащие значение).
|
При нажатом Alt условие отбора инвертируется (Скрыть строки содержащие значение).
|
||||||
- Для избегания ожиданий при получении информации об объектах. Выставляется клиентский параметр SET lock_timeout=15000 для служебного соединения.
|
- Для избегания ожиданий при получении информации об объектах. Выставляется клиентский параметр SET lock_timeout=15000 для служебного соединения.
|
||||||
|
|
@ -95,6 +98,20 @@ This text Russian language.
|
||||||
- добавлен вывод CREATE STATISTICS для таблиц
|
- добавлен вывод CREATE STATISTICS для таблиц
|
||||||
* исправлен вывод SQL команды для создания задания для комманд заданных в виде массива
|
* исправлен вывод SQL команды для создания задания для комманд заданных в виде массива
|
||||||
|
|
||||||
|
28.03.2020
|
||||||
|
- добавлена информация о фрагментации таблицы (cfs_fragmentation)
|
||||||
|
* убрано предупреждение о версии сервера
|
||||||
|
|
||||||
|
11.04.2020
|
||||||
|
- добавлена многоколоночная сортировка результатов выполнения запроса. Порядок сортировки колонок и направление отмечается цветными индикаторами (RED,YELLOW,GREEN,BLUE,GREY).
|
||||||
|
Максимальное число колонок сортировки 5. Для выполнения сортировки нужно щелкнуть по заголовку колонки удерживая клавишу Alt.
|
||||||
|
- добавлены новые опции для Vaccum ( DISABLE_PAGE_SKIPPING ) и Reindex ( CONCURRENTLY )
|
||||||
|
* ускорена работа фильтра в окне результав запроса.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -20,7 +20,7 @@
|
||||||
#include "utils/sysSettings.h"
|
#include "utils/sysSettings.h"
|
||||||
#include "frm/frmExport.h"
|
#include "frm/frmExport.h"
|
||||||
#include <wx/regex.h>
|
#include <wx/regex.h>
|
||||||
|
#include "ctl/ctlSQLResult.h"
|
||||||
|
|
||||||
#define EXTRAEXTENT_HEIGHT 6
|
#define EXTRAEXTENT_HEIGHT 6
|
||||||
#define EXTRAEXTENT_WIDTH 6
|
#define EXTRAEXTENT_WIDTH 6
|
||||||
|
|
@ -56,10 +56,94 @@ ctlSQLGrid::ctlSQLGrid(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
||||||
SetDefaultCellOverflow(false);
|
SetDefaultCellOverflow(false);
|
||||||
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
|
//SetDefaultRenderer(new wxGridCellAutoWrapStringRenderer);
|
||||||
SetDefaultRenderer(new CursorCellRenderer);
|
SetDefaultRenderer(new CursorCellRenderer);
|
||||||
|
//SetUseNativeColLabels(true);
|
||||||
|
//UseNativeColHeader(true);
|
||||||
grp=NULL;
|
grp=NULL;
|
||||||
|
|
||||||
Connect(wxID_ANY, wxEVT_GRID_LABEL_LEFT_DCLICK, wxGridEventHandler(ctlSQLGrid::OnLabelDoubleClick));
|
Connect(wxID_ANY, wxEVT_GRID_LABEL_LEFT_DCLICK, wxGridEventHandler(ctlSQLGrid::OnLabelDoubleClick));
|
||||||
|
}
|
||||||
|
#include "wx/renderer.h"
|
||||||
|
#include "wx/headerctrl.h"
|
||||||
|
|
||||||
|
void ctlSQLGrid::DrawColLabel( wxDC& dc, int col ) {
|
||||||
|
wxGrid::DrawColLabel(dc,col);
|
||||||
|
int colLeft = GetColLeft(col);
|
||||||
|
|
||||||
|
wxRect rect(colLeft, 0, GetColWidth(col), m_colLabelHeight);
|
||||||
|
sqlResultTable *t=(sqlResultTable *)GetTable();
|
||||||
|
|
||||||
|
wxHeaderSortIconType sortArrow=t->getSortColumn(col)!=0
|
||||||
|
? t->getSortColumn(col)>0
|
||||||
|
? wxHDR_SORT_ICON_UP
|
||||||
|
: wxHDR_SORT_ICON_DOWN
|
||||||
|
: wxHDR_SORT_ICON_NONE;
|
||||||
|
|
||||||
|
if (sortArrow != wxHDR_SORT_ICON_NONE )
|
||||||
|
{
|
||||||
|
wxRect ar = rect;
|
||||||
|
|
||||||
|
// make a rect for the arrow
|
||||||
|
ar.height = 4;
|
||||||
|
ar.width = 8;
|
||||||
|
ar.y += (rect.height - ar.height)/2;
|
||||||
|
ar.x = ar.x + rect.width - 3*ar.width/2;
|
||||||
|
int arrowSpace = 0;
|
||||||
|
arrowSpace = 3*ar.width/2; // space to preserve when drawing the label
|
||||||
|
wxPoint triPt[3];
|
||||||
|
if ( sortArrow & wxHDR_SORT_ICON_UP )
|
||||||
|
{
|
||||||
|
triPt[0].x = ar.width / 2;
|
||||||
|
triPt[0].y = 0;
|
||||||
|
triPt[1].x = ar.width;
|
||||||
|
triPt[1].y = ar.height;
|
||||||
|
triPt[2].x = 0;
|
||||||
|
triPt[2].y = ar.height;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
triPt[0].x = 0;
|
||||||
|
triPt[0].y = 0;
|
||||||
|
triPt[1].x = ar.width;
|
||||||
|
triPt[1].y = 0;
|
||||||
|
triPt[2].x = ar.width / 2;
|
||||||
|
triPt[2].y = ar.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxColour c;
|
||||||
|
|
||||||
|
c = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW);
|
||||||
|
for (int k=0;k<MAX_COL_SORT;k++) {
|
||||||
|
int cl=t->colsortnumber[k];
|
||||||
|
if (cl!=-1) {
|
||||||
|
if (cl==col) {
|
||||||
|
if (k==0) c=wxColor(155,17,48); // red
|
||||||
|
if (k==1) c=wxColor(255,255,0); // yellow
|
||||||
|
if (k==2) c=wxColor(34,199,76); // green
|
||||||
|
if (k==3) c=wxColor(12,38,160); // blue
|
||||||
|
}
|
||||||
|
} else break;
|
||||||
|
}
|
||||||
|
wxDCPenChanger setPen(dc, c);
|
||||||
|
wxDCBrushChanger setBrush(dc, c);
|
||||||
|
|
||||||
|
wxDCClipper clip(dc, rect);
|
||||||
|
dc.DrawPolygon( 3, triPt, ar.x, ar.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
//wxRendererNative::Get().DrawHeaderButton
|
||||||
|
// (m_colWindow,
|
||||||
|
// //GetColLabelWindow(),
|
||||||
|
// dc,
|
||||||
|
// rect,
|
||||||
|
// 0,
|
||||||
|
// IsSortingBy(col)
|
||||||
|
// ? IsSortOrderAscending()
|
||||||
|
// ? wxHDR_SORT_ICON_UP
|
||||||
|
// : wxHDR_SORT_ICON_DOWN
|
||||||
|
// : wxHDR_SORT_ICON_NONE
|
||||||
|
// );
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
void ctlSQLGrid::OnGridColSize(wxGridSizeEvent &event)
|
void ctlSQLGrid::OnGridColSize(wxGridSizeEvent &event)
|
||||||
{
|
{
|
||||||
|
|
@ -429,8 +513,15 @@ void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
|
||||||
grp->VisibleGroup(row,GetRowSize(row+1)==0);
|
grp->VisibleGroup(row,GetRowSize(row+1)==0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if ( col >= 0 && (event.AltDown() ) )
|
||||||
|
{
|
||||||
|
// continue for sort event
|
||||||
|
sqlResultTable *t=(sqlResultTable *)GetTable();
|
||||||
|
t->setSortColumn(col);
|
||||||
|
return;
|
||||||
|
}
|
||||||
// add support for (de)selecting multiple rows and cols with Control pressed
|
// add support for (de)selecting multiple rows and cols with Control pressed
|
||||||
if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
|
else if ( row >= 0 && (event.ControlDown() || event.CmdDown()) )
|
||||||
{
|
{
|
||||||
if (GetSelectedRows().Index(row) == wxNOT_FOUND)
|
if (GetSelectedRows().Index(row) == wxNOT_FOUND)
|
||||||
SelectRow(row, true);
|
SelectRow(row, true);
|
||||||
|
|
@ -443,6 +534,7 @@ void ctlSQLGrid::OnLabelClick(wxGridEvent &event)
|
||||||
SelectCol(col, true);
|
SelectCol(col, true);
|
||||||
else
|
else
|
||||||
DeselectCol(col);
|
DeselectCol(col);
|
||||||
|
event.Skip();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
event.Skip();
|
event.Skip();
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ ctlSQLResult::ctlSQLResult(wxWindow *parent, pgConn *_conn, wxWindowID id, const
|
||||||
SetSizer(new wxBoxSizer(wxVERTICAL));
|
SetSizer(new wxBoxSizer(wxVERTICAL));
|
||||||
cg=GetGridLineColour();
|
cg=GetGridLineColour();
|
||||||
Connect(wxID_ANY, wxEVT_GRID_RANGE_SELECT, wxGridRangeSelectEventHandler(ctlSQLResult::OnGridSelect));
|
Connect(wxID_ANY, wxEVT_GRID_RANGE_SELECT, wxGridRangeSelectEventHandler(ctlSQLResult::OnGridSelect));
|
||||||
|
Connect(wxID_ANY, wxEVT_GRID_COL_SORT, wxGridEventHandler(ctlSQLResult::OnGridColSort));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -180,7 +181,6 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
wxGridTableMessage *msg;
|
wxGridTableMessage *msg;
|
||||||
sqlResultTable *table = (sqlResultTable *)GetTable();
|
sqlResultTable *table = (sqlResultTable *)GetTable();
|
||||||
|
|
||||||
|
|
||||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_ROWS_DELETED, 0, GetNumberRows());
|
||||||
ProcessTableMessage(*msg);
|
ProcessTableMessage(*msg);
|
||||||
delete msg;
|
delete msg;
|
||||||
|
|
@ -193,6 +193,7 @@ void ctlSQLResult::DisplayData(bool single)
|
||||||
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_COLS_APPENDED, thread->DataSet()->NumCols());
|
msg = new wxGridTableMessage(table, wxGRIDTABLE_NOTIFY_COLS_APPENDED, thread->DataSet()->NumCols());
|
||||||
ProcessTableMessage(*msg);
|
ProcessTableMessage(*msg);
|
||||||
delete msg;
|
delete msg;
|
||||||
|
table->initSort();
|
||||||
if (NumRows()<1000) {
|
if (NumRows()<1000) {
|
||||||
for(int row = 0; row < NumRows(); ++row) {
|
for(int row = 0; row < NumRows(); ++row) {
|
||||||
if (row%2==0) {
|
if (row%2==0) {
|
||||||
|
|
@ -318,14 +319,17 @@ wxString ctlSQLResult::OnGetItemText(long item, long col) const
|
||||||
}
|
}
|
||||||
if (item >= 0)
|
if (item >= 0)
|
||||||
{
|
{
|
||||||
thread->DataSet()->Locate(item + 1);
|
//thread->DataSet()->Locate(item + 1);
|
||||||
return thread->DataSet()->GetVal(col);
|
//return thread->DataSet()->GetVal(col);
|
||||||
|
sqlResultTable *t=(sqlResultTable *)GetTable();
|
||||||
|
return t->GetValueFast(item,col);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return thread->DataSet()->ColName(col);
|
return thread->DataSet()->ColName(col);
|
||||||
}
|
}
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString ctlSQLResult::SummaryColumn()
|
wxString ctlSQLResult::SummaryColumn()
|
||||||
{
|
{
|
||||||
//ce=cells.Item(0);
|
//ce=cells.Item(0);
|
||||||
|
|
@ -404,6 +408,11 @@ wxString ctlSQLResult::SummaryColumn()
|
||||||
result.Printf(wxT("%f"), sum);
|
result.Printf(wxT("%f"), sum);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
void ctlSQLResult::OnGridColSort(wxGridEvent& event)
|
||||||
|
{
|
||||||
|
const int col = event.GetCol();
|
||||||
|
//m_table->Sort(col, !(m_grid->IsSortingBy(col) && m_grid->IsSortOrderAscending()));
|
||||||
|
}
|
||||||
|
|
||||||
void ctlSQLResult::OnGridSelect(wxGridRangeSelectEvent &event)
|
void ctlSQLResult::OnGridSelect(wxGridRangeSelectEvent &event)
|
||||||
{
|
{
|
||||||
|
|
@ -413,7 +422,7 @@ void ctlSQLResult::ClearFilter()
|
||||||
{
|
{
|
||||||
size_t numRows = GetNumberRows();
|
size_t numRows = GetNumberRows();
|
||||||
int sizerow=GetDefaultRowSize();
|
int sizerow=GetDefaultRowSize();
|
||||||
for (int i = 0 ; i < numRows; i++)
|
for (size_t i = 0 ; i < numRows; i++)
|
||||||
{
|
{
|
||||||
if (GetRowSize(i)>0) continue;
|
if (GetRowSize(i)>0) continue;
|
||||||
//SetRowSize(i,sizerow);
|
//SetRowSize(i,sizerow);
|
||||||
|
|
@ -424,18 +433,23 @@ void ctlSQLResult::ClearFilter()
|
||||||
}
|
}
|
||||||
wxString ctlSQLResult::SetFilter(int row,int col,bool reverse)
|
wxString ctlSQLResult::SetFilter(int row,int col,bool reverse)
|
||||||
{
|
{
|
||||||
wxString fltval=GetCellValue(row,col);
|
wxString result=wxEmptyString;
|
||||||
|
sqlResultTable *t=(sqlResultTable *)GetTable();
|
||||||
|
if (!(thread && thread->DataValid())) {result.Printf(wxT("Error thread not valid"));return result; }
|
||||||
|
//wxString fltval=GetCellValue(row,col);
|
||||||
|
wxString fltval=t->GetValueFast(row,col);
|
||||||
wxString text;
|
wxString text;
|
||||||
|
|
||||||
bool eq;
|
bool eq;
|
||||||
size_t numRows = GetNumberRows();
|
size_t numRows = GetNumberRows();
|
||||||
int all=0,show=0,hide=0;
|
int all=0,show=0,hide=0;
|
||||||
for (int i = 0 ; i < numRows; i++)
|
for (size_t i = 0 ; i < numRows; i++)
|
||||||
{
|
{
|
||||||
//str.Append(GetExportLine(i, cols));
|
//str.Append(GetExportLine(i, cols));
|
||||||
//SetRowSize(i,sizerow);
|
//SetRowSize(i,sizerow);
|
||||||
if (GetRowSize(i)==0) continue;
|
if (GetRowSize(i)==0) continue;
|
||||||
eq=(fltval==GetCellValue(i, col));
|
|
||||||
|
eq=(fltval==t->GetValueFast(i,col));
|
||||||
if (reverse) eq=!eq;
|
if (reverse) eq=!eq;
|
||||||
if (!eq) {
|
if (!eq) {
|
||||||
HideRow(i);
|
HideRow(i);
|
||||||
|
|
@ -445,18 +459,173 @@ wxString ctlSQLResult::SetFilter(int row,int col,bool reverse)
|
||||||
|
|
||||||
}
|
}
|
||||||
SetGridLineColour(wxColor(0,0,255));
|
SetGridLineColour(wxColor(0,0,255));
|
||||||
wxString result;
|
|
||||||
result.Printf(wxT("Show rows:%d hide:%d all:%d"), show,hide,all);
|
result.Printf(wxT("Show rows:%d hide:%d all:%d"), show,hide,all);
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#include <map>
|
||||||
|
int sqlResultTable::sortColumns()
|
||||||
|
{
|
||||||
|
bool no_sort=colsortnumber[0]==-1;
|
||||||
|
if (!maplines) {
|
||||||
|
maplines = new int[GetNumberRows()];
|
||||||
|
for(int i=0;i<GetNumberRows();i++) maplines[i]=i;
|
||||||
|
}
|
||||||
|
if (no_sort) {
|
||||||
|
for(int i=0;i<GetNumberRows();i++) maplines[i]=i;
|
||||||
|
use_map=true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
use_map=false;
|
||||||
|
int *cols[MAX_COL_SORT];
|
||||||
|
for (int i=0;i<MAX_COL_SORT;i++) cols[i]=NULL;
|
||||||
|
int col;
|
||||||
|
|
||||||
|
for (int k=0;k<MAX_COL_SORT;k++) {
|
||||||
|
col=colsortnumber[k];
|
||||||
|
if (col!=-1) {
|
||||||
|
if (thread && thread->DataSet()->ColTypClass(col) == PGTYPCLASS_NUMERIC)
|
||||||
|
{
|
||||||
|
//sort numeric column
|
||||||
|
std::multimap<double, int> mp;
|
||||||
|
double d;
|
||||||
|
for (int i=0;i<GetNumberRows();i++) {
|
||||||
|
thread->DataSet()->Locate(i+1);
|
||||||
|
d=thread->DataSet()->GetDouble(col);
|
||||||
|
mp.insert(std::pair<double, int>(d, i));
|
||||||
|
}
|
||||||
|
std::multimap<double, int>::iterator it = mp.begin();
|
||||||
|
double prev;
|
||||||
|
int row;
|
||||||
|
int minval=0;
|
||||||
|
cols[k] = new int[GetNumberRows()];
|
||||||
|
for (int i = 0; it != mp.end(); it++, i++) { // âûâîäèì èõ
|
||||||
|
row=it->second; // row
|
||||||
|
if (i>0) if (prev!=it->first) minval++;
|
||||||
|
cols[k][row]=minval;
|
||||||
|
prev=it->first;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//no numeric sort as string
|
||||||
|
std::multimap<wxString, int> mp;
|
||||||
|
wxString s;
|
||||||
|
for (int i=0;i<GetNumberRows();i++) {
|
||||||
|
thread->DataSet()->Locate(i+1);
|
||||||
|
s=thread->DataSet()->GetVal(col);
|
||||||
|
mp.insert(std::pair<wxString, int>(s, i));
|
||||||
|
}
|
||||||
|
std::multimap<wxString, int>::iterator it = mp.begin();
|
||||||
|
wxString prev;
|
||||||
|
int row;
|
||||||
|
int minval=0;
|
||||||
|
cols[k] = new int[GetNumberRows()];
|
||||||
|
for (int i = 0; it != mp.end(); it++, i++) {
|
||||||
|
row=it->second; // row
|
||||||
|
if (i>0) if (prev!=it->first) minval++;
|
||||||
|
cols[k][row]=minval;
|
||||||
|
prev=it->first;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
class sorter {
|
||||||
|
int **cols;
|
||||||
|
sqlResultTable *m;
|
||||||
|
public:
|
||||||
|
sorter(int *_cols[], sqlResultTable *my_obj) { cols=_cols;m=my_obj;}
|
||||||
|
bool operator() (int i,int j) {
|
||||||
|
bool rez=true;
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int col,ord;
|
||||||
|
for (int k=0;k<MAX_COL_SORT;k++) {
|
||||||
|
col=m->colsortnumber[k];
|
||||||
|
if (col!=-1) {
|
||||||
|
ord=m->colorder[col];
|
||||||
|
if (ord==0) continue;
|
||||||
|
a=cols[k][i];
|
||||||
|
b=cols[k][j];
|
||||||
|
if (a!=b) {
|
||||||
|
rez=a<b;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
rez=false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (ord==-1) rez=!rez;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return rez;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
std::sort(maplines,maplines+GetNumberRows(),sorter(cols,this));
|
||||||
|
for (int i=0;i<MAX_COL_SORT;i++) if (cols[i]!=NULL) delete cols[i];
|
||||||
|
use_map=true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int sqlResultTable::getSortColumn(int col)
|
||||||
|
{
|
||||||
|
return colorder[col];
|
||||||
|
}
|
||||||
|
int sqlResultTable::setSortColumn(int col)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (col<GetNumberCols()) {
|
||||||
|
if (colorder[col]==0) colorder[col]=1;
|
||||||
|
else if (colorder[col]==1) colorder[col]=-1;
|
||||||
|
else if (colorder[col]==-1) colorder[col]=0; // no sort
|
||||||
|
int pos=-1,poszero=-1;
|
||||||
|
for (int i=0;i<MAX_COL_SORT;i++) if (colsortnumber[i]==col) {pos=i; break;}
|
||||||
|
else if (colsortnumber[i]==-1) { poszero=i; break;}
|
||||||
|
if (pos==-1 && poszero==-1) { colorder[col]=0; return 0;} // limit sort columns
|
||||||
|
if (pos==-1 && poszero!=-1) colsortnumber[poszero]=col; // add sort column
|
||||||
|
if (colorder[col]==0 && pos!=-1) {
|
||||||
|
// shift array (remove sort for column)
|
||||||
|
for (int i=pos;i<MAX_COL_SORT-1;i++) colsortnumber[i]=colsortnumber[i+1];
|
||||||
|
colsortnumber[MAX_COL_SORT-1]=-1;
|
||||||
|
}
|
||||||
|
sortColumns();
|
||||||
|
return colorder[col];
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int sqlResultTable::initSort()
|
||||||
|
{
|
||||||
|
if (colorder) delete [] colorder;
|
||||||
|
if (maplines) delete [] maplines;
|
||||||
|
maplines=NULL;
|
||||||
|
colorder = new int[GetNumberCols()];
|
||||||
|
for (int i=0;i<GetNumberCols();i++) colorder[i]=0;
|
||||||
|
for (int i=0;i<MAX_COL_SORT;i++) colsortnumber[i]=-1;
|
||||||
|
//maplines = new int[GetNumberRows()];
|
||||||
|
use_map=false;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
wxString sqlResultTable::GetValueFast(int row, int col)
|
||||||
|
{
|
||||||
|
wxString s;
|
||||||
|
if (thread && thread->DataValid())
|
||||||
|
{
|
||||||
|
if (col >= 0)
|
||||||
|
{
|
||||||
|
if (use_map) row=maplines[row];
|
||||||
|
thread->DataSet()->Locate(row + 1);
|
||||||
|
wxString s = thread->DataSet()->GetVal(col);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
wxString sqlResultTable::GetValue(int row, int col)
|
wxString sqlResultTable::GetValue(int row, int col)
|
||||||
{
|
{
|
||||||
if (thread && thread->DataValid())
|
if (thread && thread->DataValid())
|
||||||
{
|
{
|
||||||
if (col >= 0)
|
if (col >= 0)
|
||||||
{
|
{
|
||||||
|
if (use_map) row=maplines[row];
|
||||||
thread->DataSet()->Locate(row + 1);
|
thread->DataSet()->Locate(row + 1);
|
||||||
if (settings->GetIndicateNull() && thread->DataSet()->IsNull(col))
|
if (settings->GetIndicateNull() && thread->DataSet()->IsNull(col))
|
||||||
return wxT("<NULL>");
|
return wxT("<NULL>");
|
||||||
|
|
@ -508,6 +677,8 @@ wxString sqlResultTable::GetValue(int row, int col)
|
||||||
sqlResultTable::sqlResultTable()
|
sqlResultTable::sqlResultTable()
|
||||||
{
|
{
|
||||||
thread = NULL;
|
thread = NULL;
|
||||||
|
colorder=NULL;
|
||||||
|
maplines=NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sqlResultTable::GetNumberRows()
|
int sqlResultTable::GetNumberRows()
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ END_EVENT_TABLE()
|
||||||
#define chkFreeze CTRL_CHECKBOX("chkFreeze")
|
#define chkFreeze CTRL_CHECKBOX("chkFreeze")
|
||||||
#define chkAnalyze CTRL_CHECKBOX("chkAnalyze")
|
#define chkAnalyze CTRL_CHECKBOX("chkAnalyze")
|
||||||
#define chkVerbose CTRL_CHECKBOX("chkVerbose")
|
#define chkVerbose CTRL_CHECKBOX("chkVerbose")
|
||||||
|
#define chkDISABLE_PAGE_SKIPPING CTRL_CHECKBOX("chkDISABLE_PAGE_SKIPPING")
|
||||||
|
#define chkCONCURRENTLY CTRL_CHECKBOX("chkCONCURRENTLY")
|
||||||
|
|
||||||
|
|
||||||
#define stBitmap CTRL("stBitmap", wxStaticBitmap)
|
#define stBitmap CTRL("stBitmap", wxStaticBitmap)
|
||||||
|
|
||||||
|
|
@ -109,10 +112,13 @@ void frmMaintenance::OnAction(wxCommandEvent &ev)
|
||||||
chkFull->Enable(isVacuum);
|
chkFull->Enable(isVacuum);
|
||||||
chkFreeze->Enable(isVacuum);
|
chkFreeze->Enable(isVacuum);
|
||||||
chkAnalyze->Enable(isVacuum);
|
chkAnalyze->Enable(isVacuum);
|
||||||
|
chkDISABLE_PAGE_SKIPPING->Enable(isVacuum && conn->BackendMinimumVersion(10, 0));
|
||||||
|
|
||||||
bool isReindex = (rbxAction->GetSelection() == 2);
|
bool isReindex = (rbxAction->GetSelection() == 2);
|
||||||
|
chkCONCURRENTLY->Enable(isReindex && conn->BackendMinimumVersion(12, 0));
|
||||||
|
|
||||||
bool isCluster = (rbxAction->GetSelection() == 3);
|
bool isCluster = (rbxAction->GetSelection() == 3);
|
||||||
if (isReindex || (isCluster && !conn->BackendMinimumVersion(8, 4)))
|
if ((isCluster && !conn->BackendMinimumVersion(8, 4)))
|
||||||
{
|
{
|
||||||
chkVerbose->SetValue(false);
|
chkVerbose->SetValue(false);
|
||||||
chkVerbose->Enable(false);
|
chkVerbose->Enable(false);
|
||||||
|
|
@ -142,16 +148,18 @@ wxString frmMaintenance::GetSql()
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
}
|
}
|
||||||
sql = wxT("VACUUM ");
|
sql = wxT("VACUUM ");
|
||||||
|
wxString opt = "";
|
||||||
if (chkFull->GetValue())
|
if (chkFull->GetValue())
|
||||||
sql += wxT("FULL ");
|
AppendIfFilled(opt,",",wxT("FULL"));
|
||||||
if (chkFreeze->GetValue())
|
if (chkFreeze->GetValue())
|
||||||
sql += wxT("FREEZE ");
|
AppendIfFilled(opt,",",wxT("FREEZE"));
|
||||||
if (chkVerbose->GetValue())
|
if (chkVerbose->GetValue())
|
||||||
sql += wxT("VERBOSE ");
|
AppendIfFilled(opt,",",wxT("VERBOSE"));
|
||||||
if (chkAnalyze->GetValue())
|
if (chkAnalyze->GetValue())
|
||||||
sql += wxT("ANALYZE ");
|
AppendIfFilled(opt,",",wxT("ANALYZE"));
|
||||||
|
if (chkDISABLE_PAGE_SKIPPING->GetValue())
|
||||||
|
AppendIfFilled(opt,",",wxT("DISABLE_PAGE_SKIPPING"));
|
||||||
|
sql += opt.IsNull() ? "" : "("+opt.Mid(1)+")";
|
||||||
if (object->GetMetaType() != PGM_DATABASE)
|
if (object->GetMetaType() != PGM_DATABASE)
|
||||||
sql += object->GetQuotedFullIdentifier();
|
sql += object->GetQuotedFullIdentifier();
|
||||||
|
|
||||||
|
|
@ -170,14 +178,20 @@ wxString frmMaintenance::GetSql()
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
|
sql = wxT("REINDEX ");
|
||||||
|
if (chkVerbose->GetValue())
|
||||||
|
sql += wxT("(VERBOSE) ");
|
||||||
|
|
||||||
if (object->GetMetaType() == PGM_UNIQUE || object->GetMetaType() == PGM_PRIMARYKEY)
|
if (object->GetMetaType() == PGM_UNIQUE || object->GetMetaType() == PGM_PRIMARYKEY)
|
||||||
{
|
{
|
||||||
sql = wxT("REINDEX INDEX ") + object->GetQuotedFullIdentifier();
|
sql += wxT("INDEX ") + chkCONCURRENTLY->GetValue() ? "CONCURRENTLY ": "";
|
||||||
|
sql += object->GetQuotedFullIdentifier();
|
||||||
}
|
}
|
||||||
else // Database, Tables, and Index (but not Constraintes ones)
|
else // Database, Tables, and Index (but not Constraintes ones)
|
||||||
{
|
{
|
||||||
sql = wxT("REINDEX ") + object->GetTypeName().Upper()
|
sql += object->GetTypeName().Upper();
|
||||||
+ wxT(" ") + object->GetQuotedFullIdentifier();
|
sql += chkCONCURRENTLY->GetValue() ? " CONCURRENTLY ": " ";
|
||||||
|
sql += object->GetQuotedFullIdentifier();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ private:
|
||||||
void OnCopy(wxCommandEvent &event);
|
void OnCopy(wxCommandEvent &event);
|
||||||
void OnMouseWheel(wxMouseEvent &event);
|
void OnMouseWheel(wxMouseEvent &event);
|
||||||
void OnGridColSize(wxGridSizeEvent &event);
|
void OnGridColSize(wxGridSizeEvent &event);
|
||||||
|
void DrawColLabel( wxDC& dc, int col );
|
||||||
wxString GetColumnName(int colNum);
|
wxString GetColumnName(int colNum);
|
||||||
wxString GetColKeyValue(int col);
|
wxString GetColKeyValue(int col);
|
||||||
void AppendColumnHeader(wxString &str, int start, int end);
|
void AppendColumnHeader(wxString &str, int start, int end);
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ public:
|
||||||
void SetMaxRows(int rows);
|
void SetMaxRows(int rows);
|
||||||
void ResultsFinished();
|
void ResultsFinished();
|
||||||
void OnGridSelect(wxGridRangeSelectEvent &event);
|
void OnGridSelect(wxGridRangeSelectEvent &event);
|
||||||
|
void OnGridColSort(wxGridEvent& event);
|
||||||
wxString SetFilter(int row,int col,bool reverse);
|
wxString SetFilter(int row,int col,bool reverse);
|
||||||
|
|
||||||
wxArrayString colNames;
|
wxArrayString colNames;
|
||||||
|
|
@ -86,10 +87,20 @@ class sqlResultTable : public wxGridStringTable//wxGridTableBase
|
||||||
public:
|
public:
|
||||||
sqlResultTable();
|
sqlResultTable();
|
||||||
wxString GetValue(int row, int col);
|
wxString GetValue(int row, int col);
|
||||||
|
wxString GetValueFast(int row, int col);
|
||||||
wxString GetRowLabelValue( int row ) ;
|
wxString GetRowLabelValue( int row ) ;
|
||||||
int GetNumberRows();
|
int GetNumberRows();
|
||||||
int GetNumberCols();
|
int GetNumberCols();
|
||||||
bool isplan;
|
bool isplan;
|
||||||
|
bool use_map; // use maplines for GetValue
|
||||||
|
int *maplines; // maplines[visible_row]=real_row
|
||||||
|
int *colorder; // array order type -1 desc , 0 no sort, 1 asc
|
||||||
|
#define MAX_COL_SORT 5
|
||||||
|
int colsortnumber[MAX_COL_SORT];
|
||||||
|
int sortColumns(); //
|
||||||
|
int setSortColumn(int col); // set order for column (cycle change value -1,0,1)
|
||||||
|
int getSortColumn(int col);
|
||||||
|
int initSort(); // allocate memory
|
||||||
bool IsEmptyCell(int row, int col)
|
bool IsEmptyCell(int row, int col)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
#define VERSION_H
|
#define VERSION_H
|
||||||
|
|
||||||
// Application Versions
|
// Application Versions
|
||||||
#define VERSION_STR wxT("1.25.0 Dev ASUTP version with support PG11")
|
#define VERSION_STR wxT("1.25.0 Dev ASUTP version with support PG12")
|
||||||
#define VERSION_NUM 1,25,0,0
|
#define VERSION_NUM 1,25,0,0
|
||||||
#define VERSION_PACKAGE 1.25.0-dev
|
#define VERSION_PACKAGE 1.25.0-dev
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
<object class="sizeritem">
|
<object class="sizeritem">
|
||||||
<object class="wxStaticBoxSizer">
|
<object class="wxStaticBoxSizer">
|
||||||
<label>VACUUM options</label>
|
<label>VACUUM options</label>
|
||||||
<cols>3</cols>
|
<cols>5</cols>
|
||||||
<vgap>5</vgap>
|
<vgap>5</vgap>
|
||||||
<hgap>5</hgap>
|
<hgap>5</hgap>
|
||||||
<growablecols>0</growablecols>
|
<growablecols>0</growablecols>
|
||||||
|
|
@ -63,6 +63,20 @@
|
||||||
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||||
<border>4</border>
|
<border>4</border>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<object class="wxCheckBox" name="chkDISABLE_PAGE_SKIPPING">
|
||||||
|
<label>DISABLE_PAGE_SKIPPING</label>
|
||||||
|
</object>
|
||||||
|
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||||
|
<border>4</border>
|
||||||
|
</object>
|
||||||
|
<object class="sizeritem">
|
||||||
|
<object class="wxCheckBox" name="chkCONCURRENTLY">
|
||||||
|
<label>CONCURRENTLY</label>
|
||||||
|
</object>
|
||||||
|
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||||
|
<border>4</border>
|
||||||
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
<flag>wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT</flag>
|
||||||
<border>4</border>
|
<border>4</border>
|
||||||
|
|
|
||||||
|
|
@ -35378,7 +35378,7 @@ static unsigned char xml_res_file_76[] = {
|
||||||
99,116,62,10,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,60,47,
|
99,116,62,10,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,60,47,
|
||||||
111,98,106,101,99,116,62,10,60,47,114,101,115,111,117,114,99,101,62,10};
|
111,98,106,101,99,116,62,10,60,47,114,101,115,111,117,114,99,101,62,10};
|
||||||
|
|
||||||
static size_t xml_res_size_77 = 5178;
|
static size_t xml_res_size_77 = 5924;
|
||||||
static unsigned char xml_res_file_77[] = {
|
static unsigned char xml_res_file_77[] = {
|
||||||
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
|
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
|
||||||
110,99,111,100,105,110,103,61,34,73,83,79,45,56,56,53,57,45,49,34,63,62,
|
110,99,111,100,105,110,103,61,34,73,83,79,45,56,56,53,57,45,49,34,63,62,
|
||||||
|
|
@ -35456,7 +35456,7 @@ static unsigned char xml_res_file_77[] = {
|
||||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,
|
||||||
86,65,67,85,85,77,32,111,112,116,105,111,110,115,60,47,108,97,98,101,108,
|
86,65,67,85,85,77,32,111,112,116,105,111,110,115,60,47,108,97,98,101,108,
|
||||||
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,99,
|
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,99,
|
||||||
111,108,115,62,51,60,47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,
|
111,108,115,62,53,60,47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,32,32,60,118,103,97,112,62,53,60,47,118,103,
|
32,32,32,32,32,32,32,32,32,32,32,60,118,103,97,112,62,53,60,47,118,103,
|
||||||
97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
97,112,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
60,104,103,97,112,62,53,60,47,104,103,97,112,62,10,32,32,32,32,32,32,32,
|
60,104,103,97,112,62,53,60,47,104,103,97,112,62,10,32,32,32,32,32,32,32,
|
||||||
|
|
@ -35512,111 +35512,144 @@ static unsigned char xml_res_file_77[] = {
|
||||||
32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,52,60,47,98,
|
32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,52,60,47,98,
|
||||||
111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,
|
32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,
|
32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
|
||||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
|
97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,
|
||||||
69,88,80,65,78,68,124,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
|
||||||
69,82,84,73,67,65,76,124,119,120,84,79,80,124,119,120,76,69,70,84,124,119,
|
101,99,116,32,99,108,97,115,115,61,34,119,120,67,104,101,99,107,66,111,
|
||||||
120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,
|
120,34,32,110,97,109,101,61,34,99,104,107,68,73,83,65,66,76,69,95,80,65,
|
||||||
32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,52,60,47,98,111,
|
71,69,95,83,75,73,80,80,73,78,71,34,62,10,32,32,32,32,32,32,32,32,32,32,
|
||||||
114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,68,73,
|
||||||
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
83,65,66,76,69,95,80,65,71,69,95,83,75,73,80,80,73,78,71,60,47,108,97,98,
|
||||||
32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
|
101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,
|
32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,
|
||||||
67,104,101,99,107,66,111,120,34,32,110,97,109,101,61,34,99,104,107,86,101,
|
80,65,78,68,124,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,69,82,
|
||||||
114,98,111,115,101,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
84,73,67,65,76,124,119,120,84,79,80,124,119,120,76,69,70,84,124,119,120,
|
||||||
32,32,32,32,32,60,108,97,98,101,108,62,86,101,114,98,111,115,101,32,109,
|
82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,32,
|
||||||
101,115,115,97,103,101,115,60,47,108,97,98,101,108,62,10,32,32,32,32,32,
|
32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,52,60,
|
||||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,99,104,101,99,107,101,100,
|
47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
62,49,60,47,99,104,101,99,107,101,100,62,10,32,32,32,32,32,32,32,32,32,
|
32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
|
||||||
|
108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
|
||||||
|
101,99,116,32,99,108,97,115,115,61,34,119,120,67,104,101,99,107,66,111,
|
||||||
|
120,34,32,110,97,109,101,61,34,99,104,107,67,79,78,67,85,82,82,69,78,84,
|
||||||
|
76,89,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,60,108,97,98,101,108,62,67,79,78,67,85,82,82,69,78,84,76,
|
||||||
|
89,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,
|
32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,
|
||||||
69,88,80,65,78,68,124,119,120,65,76,73,71,78,95,67,69,78,84,69,82,95,86,
|
62,119,120,69,88,80,65,78,68,124,119,120,65,76,73,71,78,95,67,69,78,84,
|
||||||
69,82,84,73,67,65,76,124,119,120,84,79,80,124,119,120,76,69,70,84,124,119,
|
69,82,95,86,69,82,84,73,67,65,76,124,119,120,84,79,80,124,119,120,76,69,
|
||||||
|
70,84,124,119,120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,
|
||||||
|
101,114,62,52,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
|
||||||
|
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,102,
|
||||||
|
108,97,103,62,119,120,69,88,80,65,78,68,124,119,120,65,76,73,71,78,95,67,
|
||||||
|
69,78,84,69,82,95,86,69,82,84,73,67,65,76,124,119,120,84,79,80,124,119,
|
||||||
|
120,76,69,70,84,124,119,120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,
|
||||||
|
114,62,52,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
|
||||||
|
115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
|
||||||
|
97,115,115,61,34,119,120,67,104,101,99,107,66,111,120,34,32,110,97,109,
|
||||||
|
101,61,34,99,104,107,86,101,114,98,111,115,101,34,62,10,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,86,
|
||||||
|
101,114,98,111,115,101,32,109,101,115,115,97,103,101,115,60,47,108,97,98,
|
||||||
|
101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
|
32,60,99,104,101,99,107,101,100,62,49,60,47,99,104,101,99,107,101,100,62,
|
||||||
|
10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,
|
||||||
|
101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
|
60,102,108,97,103,62,119,120,69,88,80,65,78,68,124,119,120,65,76,73,71,
|
||||||
|
78,95,67,69,78,84,69,82,95,86,69,82,84,73,67,65,76,124,119,120,84,79,80,
|
||||||
|
124,119,120,76,69,70,84,124,119,120,82,73,71,72,84,60,47,102,108,97,103,
|
||||||
|
62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,
|
||||||
|
100,101,114,62,52,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,60,115,101,108,101,99,116,101,100,62,49,60,47,
|
||||||
|
115,101,108,101,99,116,101,100,62,10,32,32,32,32,32,32,32,32,32,32,60,47,
|
||||||
|
111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,111,98,106,
|
||||||
|
101,99,116,32,99,108,97,115,115,61,34,110,111,116,101,98,111,111,107,112,
|
||||||
|
97,103,101,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,
|
||||||
|
108,62,77,101,115,115,97,103,101,115,60,47,108,97,98,101,108,62,10,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
|
||||||
|
115,61,34,119,120,84,101,120,116,67,116,114,108,34,32,110,97,109,101,61,
|
||||||
|
34,116,120,116,77,101,115,115,97,103,101,115,34,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,84,69,95,77,85,
|
||||||
|
76,84,73,76,73,78,69,124,119,120,84,69,95,82,69,65,68,79,78,76,89,124,119,
|
||||||
|
120,72,83,67,82,79,76,76,60,47,115,116,121,108,101,62,10,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,60,
|
||||||
|
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,60,102,108,97,103,
|
||||||
|
62,119,120,84,79,80,124,119,120,66,79,84,84,79,77,124,119,120,76,69,70,
|
||||||
|
84,124,119,120,82,73,71,72,84,124,119,120,69,88,80,65,78,68,124,119,120,
|
||||||
|
71,82,79,87,124,119,120,65,76,73,71,78,95,67,69,78,84,82,69,60,47,102,108,
|
||||||
|
97,103,62,10,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
|
||||||
|
32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,
|
||||||
|
122,101,114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,60,111,98,
|
||||||
|
106,101,99,116,32,99,108,97,115,115,61,34,119,120,70,108,101,120,71,114,
|
||||||
|
105,100,83,105,122,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,60,99,
|
||||||
|
111,108,115,62,52,60,47,99,111,108,115,62,10,32,32,32,32,32,32,32,32,32,
|
||||||
|
32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
|
||||||
|
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,111,
|
||||||
|
98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,117,116,116,111,
|
||||||
|
110,34,32,110,97,109,101,61,34,119,120,73,68,95,72,69,76,80,34,62,10,32,
|
||||||
|
32,32,32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,38,97,109,
|
||||||
|
112,59,72,101,108,112,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,
|
||||||
|
32,32,32,32,32,32,32,60,112,111,115,62,50,44,49,51,53,100,60,47,112,111,
|
||||||
|
115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,
|
||||||
|
62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,
|
||||||
|
84,79,80,124,119,120,66,79,84,84,79,77,124,119,120,76,69,70,84,124,119,
|
||||||
120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,
|
120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,52,60,47,98,111,
|
32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,114,62,
|
||||||
114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,
|
|
||||||
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
|
||||||
60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,
|
|
||||||
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,115,
|
|
||||||
101,108,101,99,116,101,100,62,49,60,47,115,101,108,101,99,116,101,100,62,
|
|
||||||
10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
|
10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,
|
||||||
32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,
|
32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,
|
||||||
34,110,111,116,101,98,111,111,107,112,97,103,101,34,62,10,32,32,32,32,32,
|
34,115,112,97,99,101,114,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,
|
||||||
32,32,32,32,32,32,32,60,108,97,98,101,108,62,77,101,115,115,97,103,101,
|
115,105,122,101,62,48,44,48,60,47,115,105,122,101,62,10,32,32,32,32,32,
|
||||||
115,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,
|
32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,
|
||||||
111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,84,101,120,116,
|
32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,
|
||||||
67,116,114,108,34,32,110,97,109,101,61,34,116,120,116,77,101,115,115,97,
|
114,105,116,101,109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,111,
|
||||||
103,101,115,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,115,116,
|
98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,117,116,116,111,
|
||||||
121,108,101,62,119,120,84,69,95,77,85,76,84,73,76,73,78,69,124,119,120,
|
110,34,32,110,97,109,101,61,34,119,120,73,68,95,79,75,34,62,10,32,32,32,
|
||||||
84,69,95,82,69,65,68,79,78,76,89,124,119,120,72,83,67,82,79,76,76,60,47,
|
32,32,32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,38,97,109,112,
|
||||||
115,116,121,108,101,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,
|
59,79,75,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,
|
32,32,32,60,100,101,102,97,117,108,116,62,49,60,47,100,101,102,97,117,108,
|
||||||
101,99,116,62,10,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,
|
116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,112,111,115,62,57,
|
||||||
10,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,84,79,80,124,119,
|
51,44,49,51,53,100,60,47,112,111,115,62,10,32,32,32,32,32,32,32,32,32,32,
|
||||||
120,66,79,84,84,79,77,124,119,120,76,69,70,84,124,119,120,82,73,71,72,84,
|
32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,
|
||||||
124,119,120,69,88,80,65,78,68,124,119,120,71,82,79,87,124,119,120,65,76,
|
32,60,102,108,97,103,62,119,120,84,79,80,124,119,120,66,79,84,84,79,77,
|
||||||
73,71,78,95,67,69,78,84,82,69,60,47,102,108,97,103,62,10,32,32,32,32,32,
|
124,119,120,76,69,70,84,124,119,120,82,73,71,72,84,60,47,102,108,97,103,
|
||||||
32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,60,111,98,106,101,
|
62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,
|
||||||
99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,
|
53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,60,
|
||||||
62,10,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
|
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,111,98,
|
||||||
115,61,34,119,120,70,108,101,120,71,114,105,100,83,105,122,101,114,34,62,
|
106,101,99,116,32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,
|
||||||
10,32,32,32,32,32,32,32,32,32,32,60,99,111,108,115,62,52,60,47,99,111,108,
|
109,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,
|
||||||
115,62,10,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,
|
32,99,108,97,115,115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,
|
||||||
108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,
|
109,101,61,34,119,120,73,68,95,67,65,78,67,69,76,34,62,10,32,32,32,32,32,
|
||||||
32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
|
32,32,32,32,32,32,32,32,32,60,108,97,98,101,108,62,38,97,109,112,59,67,
|
||||||
115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,109,101,61,34,119,
|
97,110,99,101,108,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,
|
||||||
120,73,68,95,72,69,76,80,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
32,32,32,32,32,32,60,112,111,115,62,49,52,54,44,49,51,53,100,60,47,112,
|
||||||
32,60,108,97,98,101,108,62,38,97,109,112,59,72,101,108,112,60,47,108,97,
|
|
||||||
98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,112,111,115,
|
|
||||||
62,50,44,49,51,53,100,60,47,112,111,115,62,10,32,32,32,32,32,32,32,32,32,
|
|
||||||
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,
|
|
||||||
32,32,60,102,108,97,103,62,119,120,84,79,80,124,119,120,66,79,84,84,79,
|
|
||||||
77,124,119,120,76,69,70,84,124,119,120,82,73,71,72,84,60,47,102,108,97,
|
|
||||||
103,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,
|
|
||||||
62,53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,
|
|
||||||
60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,111,
|
|
||||||
98,106,101,99,116,32,99,108,97,115,115,61,34,115,112,97,99,101,114,34,62,
|
|
||||||
10,32,32,32,32,32,32,32,32,32,32,32,32,60,115,105,122,101,62,48,44,48,60,
|
|
||||||
47,115,105,122,101,62,10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,
|
|
||||||
101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,
|
|
||||||
32,99,108,97,115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,
|
|
||||||
32,32,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
|
|
||||||
97,115,115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,109,101,61,
|
|
||||||
34,119,120,73,68,95,79,75,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,
|
|
||||||
32,32,60,108,97,98,101,108,62,38,97,109,112,59,79,75,60,47,108,97,98,101,
|
|
||||||
108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,100,101,102,97,117,
|
|
||||||
108,116,62,49,60,47,100,101,102,97,117,108,116,62,10,32,32,32,32,32,32,
|
|
||||||
32,32,32,32,32,32,32,32,60,112,111,115,62,57,51,44,49,51,53,100,60,47,112,
|
|
||||||
111,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
|
111,115,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
|
||||||
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,
|
99,116,62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,
|
||||||
120,84,79,80,124,119,120,66,79,84,84,79,77,124,119,120,76,69,70,84,124,
|
120,84,79,80,124,119,120,66,79,84,84,79,77,124,119,120,76,69,70,84,124,
|
||||||
119,120,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,
|
119,120,82,73,71,72,84,124,119,120,69,88,80,65,78,68,124,119,120,71,82,
|
||||||
32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,
|
79,87,124,119,120,65,76,73,71,78,95,82,73,71,72,84,60,47,102,108,97,103,
|
||||||
114,62,10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,
|
62,10,32,32,32,32,32,32,32,32,32,32,32,32,60,98,111,114,100,101,114,62,
|
||||||
10,32,32,32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
|
53,60,47,98,111,114,100,101,114,62,10,32,32,32,32,32,32,32,32,32,32,60,
|
||||||
115,115,61,34,115,105,122,101,114,105,116,101,109,34,62,10,32,32,32,32,
|
47,111,98,106,101,99,116,62,10,32,32,32,32,32,32,32,32,32,32,60,103,114,
|
||||||
32,32,32,32,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,
|
111,119,97,98,108,101,99,111,108,115,62,49,60,47,103,114,111,119,97,98,
|
||||||
34,119,120,66,117,116,116,111,110,34,32,110,97,109,101,61,34,119,120,73,
|
108,101,99,111,108,115,62,10,32,32,32,32,32,32,32,32,60,47,111,98,106,101,
|
||||||
68,95,67,65,78,67,69,76,34,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
99,116,62,10,32,32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,69,88,
|
||||||
32,60,108,97,98,101,108,62,38,97,109,112,59,67,97,110,99,101,108,60,47,
|
80,65,78,68,124,119,120,71,82,79,87,60,47,102,108,97,103,62,10,32,32,32,
|
||||||
108,97,98,101,108,62,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,112,
|
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,47,111,98,106,
|
||||||
111,115,62,49,52,54,44,49,51,53,100,60,47,112,111,115,62,10,32,32,32,32,
|
101,99,116,62,10,32,32,60,47,111,98,106,101,99,116,62,10,60,47,114,101,
|
||||||
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
|
115,111,117,114,99,101,62,10};
|
||||||
32,32,32,32,32,32,32,60,102,108,97,103,62,119,120,84,79,80,124,119,120,
|
|
||||||
66,79,84,84,79,77,124,119,120,76,69,70,84,124,119,120,82,73,71,72,84,124,
|
|
||||||
119,120,69,88,80,65,78,68,124,119,120,71,82,79,87,124,119,120,65,76,73,
|
|
||||||
71,78,95,82,73,71,72,84,60,47,102,108,97,103,62,10,32,32,32,32,32,32,32,
|
|
||||||
32,32,32,32,32,60,98,111,114,100,101,114,62,53,60,47,98,111,114,100,101,
|
|
||||||
114,62,10,32,32,32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,
|
|
||||||
10,32,32,32,32,32,32,32,32,32,32,60,103,114,111,119,97,98,108,101,99,111,
|
|
||||||
108,115,62,49,60,47,103,114,111,119,97,98,108,101,99,111,108,115,62,10,
|
|
||||||
32,32,32,32,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,32,
|
|
||||||
32,32,32,60,102,108,97,103,62,119,120,69,88,80,65,78,68,124,119,120,71,
|
|
||||||
82,79,87,60,47,102,108,97,103,62,10,32,32,32,32,32,32,60,47,111,98,106,
|
|
||||||
101,99,116,62,10,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,60,
|
|
||||||
47,111,98,106,101,99,116,62,10,60,47,114,101,115,111,117,114,99,101,62,
|
|
||||||
10};
|
|
||||||
|
|
||||||
static size_t xml_res_size_78 = 70018;
|
static size_t xml_res_size_78 = 70018;
|
||||||
static unsigned char xml_res_file_78[] = {
|
static unsigned char xml_res_file_78[] = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue