mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 06:05:49 -06:00
Добавлена частичная поддержка возможностей PG15: - поддержка списка колонок при задании FK - поддержка NULLS NOT DISTINCT для уникальных индексов
375 lines
7.2 KiB
C++
375 lines
7.2 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// pgIndex.h PostgreSQL Index
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef PGINDEX_H
|
|
#define PGINDEX_H
|
|
|
|
#include "pgTable.h"
|
|
#include <wx/arrstr.h>
|
|
|
|
|
|
|
|
|
|
class pgIndexBase : public pgSchemaObject
|
|
{
|
|
protected:
|
|
pgIndexBase(pgSchema *newSchema, pgaFactory &factory, const wxString &newName = wxT(""));
|
|
|
|
public:
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
|
|
void ShowStatistics(frmMain *form, ctlListView *statistics);
|
|
bool CanDropCascaded()
|
|
{
|
|
return GetSchema()->GetMetaType() != PGM_CATALOG;
|
|
}
|
|
|
|
wxString GetProcArgs() const
|
|
{
|
|
return procArgs;
|
|
}
|
|
wxString GetQuotedTypedColumns() const
|
|
{
|
|
return quotedTypedColumns;
|
|
}
|
|
wxString GetTypedColumns() const
|
|
{
|
|
return typedColumns;
|
|
}
|
|
wxString GetOperatorClasses() const
|
|
{
|
|
return operatorClasses;
|
|
}
|
|
wxString GetQuotedColumns() const
|
|
{
|
|
return quotedColumns;
|
|
}
|
|
wxString GetColumns() const
|
|
{
|
|
return columns;
|
|
}
|
|
wxArrayString GetColumnList() const
|
|
{
|
|
return columnList;
|
|
}
|
|
|
|
wxString GetColumnNumbers() const
|
|
{
|
|
return columnNumbers;
|
|
}
|
|
void iSetColumnNumbers(const wxString &s)
|
|
{
|
|
columnNumbers = s;
|
|
}
|
|
wxString GetConstraint() const
|
|
{
|
|
return constraint;
|
|
}
|
|
void iSetConstraint(const wxString &s)
|
|
{
|
|
constraint = s;
|
|
}
|
|
wxString GetIndexType() const
|
|
{
|
|
return indexType;
|
|
}
|
|
void iSetIndexType(const wxString &s)
|
|
{
|
|
indexType = s;
|
|
}
|
|
long GetColumnCount() const
|
|
{
|
|
return columnCount;
|
|
}
|
|
void iSetColumnCount(const long l)
|
|
{
|
|
columnCount = l;
|
|
}
|
|
bool GetIsUnique() const
|
|
{
|
|
return isUnique;
|
|
}
|
|
void iSetIsUnique(const bool b)
|
|
{
|
|
isUnique = b;
|
|
}
|
|
void iSetIsUniqueNullsnotdistinct(const bool b)
|
|
{
|
|
isNullsnotdistinct = b;
|
|
}
|
|
bool GetIsUniqueNullsnotdistinct() const
|
|
{
|
|
return isNullsnotdistinct;
|
|
}
|
|
bool GetIsExclude() const
|
|
{
|
|
return isExclude;
|
|
}
|
|
void iSetIsExclude(const bool b)
|
|
{
|
|
isExclude = b;
|
|
}
|
|
bool GetIsPrimary() const
|
|
{
|
|
return isPrimary;
|
|
}
|
|
void iSetIsPrimary(const bool b)
|
|
{
|
|
isPrimary = b;
|
|
}
|
|
bool GetIsClustered() const
|
|
{
|
|
return isClustered;
|
|
}
|
|
void iSetIsClustered(const bool b)
|
|
{
|
|
isClustered = b;
|
|
}
|
|
bool GetIsValid() const
|
|
{
|
|
return isValid;
|
|
}
|
|
void iSetIsValid(const bool b)
|
|
{
|
|
isValid = b;
|
|
}
|
|
wxString GetIdxTable() const
|
|
{
|
|
return idxTable;
|
|
}
|
|
void iSetIdxTable(const wxString &s)
|
|
{
|
|
idxTable = s;
|
|
}
|
|
wxString GetRelOptions() const
|
|
{
|
|
return reloptions;
|
|
}
|
|
void iSetRelOptions(const wxString &s)
|
|
{
|
|
reloptions = s;
|
|
}
|
|
wxString GetIdxSchema() const
|
|
{
|
|
return idxSchema;
|
|
}
|
|
void iSetIdxSchema(const wxString &s)
|
|
{
|
|
idxSchema = s;
|
|
}
|
|
OID GetRelTableOid() const
|
|
{
|
|
return relTableOid;
|
|
}
|
|
void iSetRelTableOid(const OID d)
|
|
{
|
|
relTableOid = d;
|
|
}
|
|
wxString GetTablespace() const
|
|
{
|
|
return tablespace;
|
|
};
|
|
void iSetTablespace(const wxString &newVal)
|
|
{
|
|
tablespace = newVal;
|
|
}
|
|
OID GetTablespaceOid() const
|
|
{
|
|
return tablespaceOid;
|
|
};
|
|
void iSetTablespaceOid(const OID newVal)
|
|
{
|
|
tablespaceOid = newVal;
|
|
}
|
|
wxString GetFillFactor()
|
|
{
|
|
return fillFactor;
|
|
}
|
|
void iSetFillFactor(const wxString &s)
|
|
{
|
|
fillFactor = s;
|
|
}
|
|
|
|
wxString GetProcName() const
|
|
{
|
|
return procName;
|
|
}
|
|
void iSetProcName(const wxString &s)
|
|
{
|
|
procName = s;
|
|
}
|
|
wxString GetProcNamespace() const
|
|
{
|
|
return procNamespace;
|
|
}
|
|
void iSetProcNamespace(const wxString &s)
|
|
{
|
|
procNamespace = s;
|
|
}
|
|
|
|
bool GetDeferrable() const
|
|
{
|
|
return deferrable;
|
|
}
|
|
void iSetDeferrable(const bool b)
|
|
{
|
|
deferrable = b;
|
|
}
|
|
bool GetDeferred() const
|
|
{
|
|
return deferred;
|
|
}
|
|
void iSetDeferred(const bool b)
|
|
{
|
|
deferred = b;
|
|
}
|
|
|
|
void iSetOperatorClassList(const wxString &s)
|
|
{
|
|
operatorClassList = s;
|
|
}
|
|
void iSetProcArgTypeList(const wxString &s)
|
|
{
|
|
procArgTypeList = s;
|
|
}
|
|
|
|
const wxArrayString &GetOrdersArray()
|
|
{
|
|
return ordersArray;
|
|
}
|
|
|
|
const wxArrayString &GetNullsArray()
|
|
{
|
|
return nullsArray;
|
|
}
|
|
|
|
const wxArrayString &GetOpClassesArray()
|
|
{
|
|
return opclassesArray;
|
|
}
|
|
|
|
const wxArrayString &GetCollationsArray()
|
|
{
|
|
return collationsArray;
|
|
}
|
|
|
|
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
|
|
wxString GetCreate();
|
|
bool CanRestore()
|
|
{
|
|
return true;
|
|
}
|
|
wxString GetSql(ctlTree *browser);
|
|
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
|
|
bool CanMaintenance()
|
|
{
|
|
return true;
|
|
}
|
|
bool GetShowExtendedStatistics()
|
|
{
|
|
return showExtendedStatistics;
|
|
}
|
|
void iSetShowExtendedStatistics(bool b)
|
|
{
|
|
showExtendedStatistics = b;
|
|
}
|
|
|
|
bool HasStats()
|
|
{
|
|
return true;
|
|
}
|
|
bool HasDepends()
|
|
{
|
|
return true;
|
|
}
|
|
bool HasReferences()
|
|
{
|
|
return true;
|
|
}
|
|
bool HasPgstatindex();
|
|
bool HasPgcheckindex();
|
|
|
|
protected:
|
|
void ReadColumnDetails();
|
|
wxString colInclude;
|
|
|
|
private:
|
|
wxString columnNumbers, columns, quotedColumns, indexType, idxTable, reloptions, idxSchema, constraint, tablespace;
|
|
wxString procName, procNamespace, procArgs, procArgTypeList, typedColumns, quotedTypedColumns, operatorClasses, operatorClassList;
|
|
long columnCount;
|
|
wxArrayString columnList, ordersArray, nullsArray, opclassesArray, collationsArray;
|
|
bool isUnique, isPrimary, isExclude, isClustered, isValid, isNullsnotdistinct;
|
|
bool deferrable, deferred, showExtendedStatistics;
|
|
OID relTableOid, tablespaceOid;
|
|
wxString fillFactor;
|
|
};
|
|
|
|
|
|
class pgIndex : public pgIndexBase
|
|
{
|
|
public:
|
|
pgIndex(pgSchema *newSchema, const wxString &newName = wxT(""));
|
|
};
|
|
|
|
|
|
class pgIndexBaseFactory : public pgSchemaObjFactory
|
|
{
|
|
public:
|
|
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
|
|
virtual pgCollection *CreateCollection(pgObject *obj);
|
|
protected:
|
|
pgIndexBaseFactory(const wxChar *tn, const wxChar *ns, const wxChar *nls, wxImage *img = 0) : pgSchemaObjFactory(tn, ns, nls, img) {}
|
|
};
|
|
|
|
class pgIndexFactory : public pgIndexBaseFactory
|
|
{
|
|
public:
|
|
pgIndexFactory();
|
|
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
|
|
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
|
|
};
|
|
extern pgIndexFactory indexFactory;
|
|
|
|
class pgIndexBaseCollection : public pgSchemaObjCollection
|
|
{
|
|
public:
|
|
pgIndexBaseCollection(pgaFactory *factory, pgSchema *sch);
|
|
wxString GetTranslatedMessage(int kindOfMessage) const;
|
|
void ShowStatistics(frmMain *form, ctlListView *statistics);
|
|
};
|
|
|
|
|
|
class executePgstatindexFactory : public contextActionFactory
|
|
{
|
|
public:
|
|
executePgstatindexFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
|
|
wxWindow *StartDialog(frmMain *form, pgObject *obj);
|
|
bool CheckEnable(pgObject *obj);
|
|
bool CheckChecked(pgObject *obj);
|
|
};
|
|
class executePgcheckindexFactory : public contextActionFactory
|
|
{
|
|
public:
|
|
executePgcheckindexFactory(menuFactoryList* list, wxMenu* mnu, ctlMenuToolbar* toolbar);
|
|
wxWindow* StartDialog(frmMain* form, pgObject* obj);
|
|
bool CheckEnable(pgObject* obj);
|
|
};
|
|
|
|
class resetIndexStatsFactory : public contextActionFactory
|
|
{
|
|
public:
|
|
resetIndexStatsFactory(menuFactoryList* list, wxMenu* mnu, ctlMenuToolbar* toolbar);
|
|
wxWindow* StartDialog(frmMain* form, pgObject* obj);
|
|
bool CheckEnable(pgObject* obj);
|
|
};
|
|
|
|
|
|
#endif
|