pgadmin3/include/schema/pgView.h
2023-07-30 10:33:41 +05:00

401 lines
8.7 KiB
C++

//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2016, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgView.h PostgreSQL View
//
//////////////////////////////////////////////////////////////////////////
#ifndef PGVIEW_H
#define PGVIEW_H
#include "pgRule.h"
class pgCollection;
class pgViewFactory : public pgSchemaObjFactory
{
public:
pgViewFactory();
virtual dlgProperty *CreateDialog(frmMain *frame, pgObject *node, pgObject *parent);
virtual pgObject *CreateObjects(pgCollection *obj, ctlTree *browser, const wxString &restr = wxEmptyString);
virtual pgCollection *CreateCollection(pgObject *obj);
int GetMaterializedIconId()
{
return WantSmallIcon() ? smallMaterializedId : materializedId;
}
protected:
int materializedId, smallMaterializedId;
};
extern pgViewFactory viewFactory;
class pgView : public pgRuleObject
{
public:
pgView(pgSchema *newSchema, const wxString &newName = wxT(""));
~pgView();
int GetIconId();
wxString GetTranslatedMessage(int kindOfMessage) const;
void ShowTreeDetail(ctlTree *browser, frmMain *form = 0, ctlListView *properties = 0, ctlSQLBox *sqlPane = 0);
bool CanDropCascaded()
{
return !GetSystemObject() && pgSchemaObject::CanDrop();
}
bool DropObject(wxFrame *frame, ctlTree *browser, bool cascaded);
bool CanCreate()
{
return GetSchema()->GetCreatePrivilege();
}
bool CanView()
{
return true;
}
bool WantDummyChild()
{
return true;
}
bool HasInsertRule()
{
return hasInsertRule;
}
bool HasUpdateRule()
{
return hasUpdateRule;
}
bool HasDeleteRule()
{
return hasDeleteRule;
}
wxString GetSecurityBarrier()
{
return security_barrier;
}
void iSetSecurityBarrier(const wxString &s)
{
security_barrier = s;
}
wxString GetTablespace() const
{
return tablespace;
}
void iSetTablespace(const wxString &newVal)
{
tablespace = newVal;
}
OID GetTablespaceOid() const
{
return tablespaceOid;
}
void iSetTablespaceOid(const OID newVal)
{
tablespaceOid = newVal;
}
wxMenu *GetNewMenu();
wxString GetSql(ctlTree *browser);
wxString GetSelectSql(ctlTree *browser);
wxString GetInsertSql(ctlTree *browser);
wxString GetUpdateSql(ctlTree *browser);
pgObject *Refresh(ctlTree *browser, const wxTreeItemId item);
void RefreshMatView(bool concurrently);
bool HasStats()
{
return false;
}
bool HasDepends()
{
return true;
}
bool HasReferences()
{
return true;
}
void ShowHint(frmMain *form, bool force);
bool GetCanHint()
{
return true;
};
bool IsUpToDate();
wxString GetFillFactor()
{
return fillFactor;
}
void iSetFillFactor(const wxString &s)
{
fillFactor = s;
}
wxString GetIsPopulated()
{
return isPopulated;
}
void iSetIsPopulated(const wxString &s)
{
isPopulated = s;
}
wxString GetCheckOption()
{
return check_option;
}
void iSetCheckOption(const wxString &s)
{
check_option = s;
}
bool GetCustomAutoVacuumEnabled()
{
return !reloptions.IsEmpty();
}
wxString GetRelOptions()
{
return reloptions;
}
void iSetRelOptions(const wxString &s)
{
reloptions = s;
}
int GetAutoVacuumEnabled()
{
return autovacuum_enabled;
}
void iSetAutoVacuumEnabled(int i)
{
autovacuum_enabled = i;
}
wxString GetAutoVacuumVacuumThreshold()
{
return autovacuum_vacuum_threshold;
}
void iSetAutoVacuumVacuumThreshold(const wxString &s)
{
autovacuum_vacuum_threshold = s;
}
wxString GetAutoVacuumVacuumScaleFactor()
{
return autovacuum_vacuum_scale_factor;
}
void iSetAutoVacuumVacuumScaleFactor(const wxString &s)
{
autovacuum_vacuum_scale_factor = s;
}
wxString GetAutoVacuumAnalyzeThreshold()
{
return autovacuum_analyze_threshold;
}
void iSetAutoVacuumAnalyzeThreshold(const wxString &s)
{
autovacuum_analyze_threshold = s;
}
wxString GetAutoVacuumAnalyzeScaleFactor()
{
return autovacuum_analyze_scale_factor;
}
void iSetAutoVacuumAnalyzeScaleFactor(const wxString &s)
{
autovacuum_analyze_scale_factor = s;
}
wxString GetAutoVacuumVacuumCostDelay()
{
return autovacuum_vacuum_cost_delay;
}
void iSetAutoVacuumVacuumCostDelay(const wxString &s)
{
autovacuum_vacuum_cost_delay = s;
}
wxString GetAutoVacuumVacuumCostLimit()
{
return autovacuum_vacuum_cost_limit;
}
void iSetAutoVacuumVacuumCostLimit(const wxString &s)
{
autovacuum_vacuum_cost_limit = s;
}
wxString GetAutoVacuumFreezeMinAge()
{
return autovacuum_freeze_min_age;
}
void iSetAutoVacuumFreezeMinAge(const wxString &s)
{
autovacuum_freeze_min_age = s;
}
wxString GetAutoVacuumFreezeMaxAge()
{
return autovacuum_freeze_max_age;
}
void iSetAutoVacuumFreezeMaxAge(const wxString &s)
{
autovacuum_freeze_max_age = s;
}
wxString GetAutoVacuumFreezeTableAge()
{
return autovacuum_freeze_table_age;
}
void iSetAutoVacuumFreezeTableAge(const wxString &s)
{
autovacuum_freeze_table_age = s;
}
bool GetHasToastTable()
{
return hasToastTable;
}
void iSetHasToastTable(bool b)
{
hasToastTable = b;
}
/* TOAST TABLE autovacuum settings */
bool GetToastCustomAutoVacuumEnabled()
{
return !toast_reloptions.IsEmpty();
}
wxString GetToastRelOptions()
{
return toast_reloptions;
}
void iSetToastRelOptions(const wxString &s)
{
toast_reloptions = s;
}
int GetToastAutoVacuumEnabled()
{
return toast_autovacuum_enabled;
}
void iSetToastAutoVacuumEnabled(int i)
{
toast_autovacuum_enabled = i;
}
wxString GetToastAutoVacuumVacuumThreshold()
{
return toast_autovacuum_vacuum_threshold;
}
void iSetToastAutoVacuumVacuumThreshold(const wxString &s)
{
toast_autovacuum_vacuum_threshold = s;
}
wxString GetToastAutoVacuumVacuumScaleFactor()
{
return toast_autovacuum_vacuum_scale_factor;
}
void iSetToastAutoVacuumVacuumScaleFactor(const wxString &s)
{
toast_autovacuum_vacuum_scale_factor = s;
}
wxString GetToastAutoVacuumVacuumCostDelay()
{
return toast_autovacuum_vacuum_cost_delay;
}
void iSetToastAutoVacuumVacuumCostDelay(const wxString &s)
{
toast_autovacuum_vacuum_cost_delay = s;
}
wxString GetToastAutoVacuumVacuumCostLimit()
{
return toast_autovacuum_vacuum_cost_limit;
}
void iSetToastAutoVacuumVacuumCostLimit(const wxString &s)
{
toast_autovacuum_vacuum_cost_limit = s;
}
wxString GetToastAutoVacuumFreezeMinAge()
{
return toast_autovacuum_freeze_min_age;
}
void iSetToastAutoVacuumFreezeMinAge(const wxString &s)
{
toast_autovacuum_freeze_min_age = s;
}
wxString GetToastAutoVacuumFreezeMaxAge()
{
return toast_autovacuum_freeze_max_age;
}
void iSetToastAutoVacuumFreezeMaxAge(const wxString &s)
{
toast_autovacuum_freeze_max_age = s;
}
wxString GetToastAutoVacuumFreezeTableAge()
{
return toast_autovacuum_freeze_table_age;
}
void iSetToastAutoVacuumFreezeTableAge(const wxString &s)
{
toast_autovacuum_freeze_table_age = s;
}
void iSetMaterializedView(const bool matView)
{
materializedView = matView;
}
bool GetMaterializedView() const
{
return materializedView;
}
private:
wxString GetCols(ctlTree *browser, size_t indent, wxString &QMs, bool withQM);
void AppendStuff(wxString &sql, ctlTree *browser, pgaFactory &factory);
bool IsMaterializedView(ctlTree *browser);
bool hasInsertRule, hasUpdateRule, hasDeleteRule, materializedView;
wxString security_barrier;
int autovacuum_enabled, toast_autovacuum_enabled;
wxString reloptions, toast_reloptions;
wxString fillFactor, autovacuum_vacuum_threshold,
autovacuum_vacuum_scale_factor, autovacuum_analyze_threshold,
autovacuum_analyze_scale_factor, autovacuum_vacuum_cost_delay,
autovacuum_vacuum_cost_limit, autovacuum_freeze_min_age,
autovacuum_freeze_max_age, autovacuum_freeze_table_age;
wxString toast_fillFactor, toast_autovacuum_vacuum_threshold,
toast_autovacuum_vacuum_scale_factor, toast_autovacuum_vacuum_cost_delay,
toast_autovacuum_vacuum_cost_limit, toast_autovacuum_freeze_min_age,
toast_autovacuum_freeze_max_age, toast_autovacuum_freeze_table_age;
wxString tablespace, isPopulated, check_option;
bool hasToastTable;
OID tablespaceOid;
};
class pgViewCollection : public pgSchemaObjCollection
{
public:
pgViewCollection(pgaFactory *factory, pgSchema *sch);
wxString GetTranslatedMessage(int kindOfMessage) const;
};
class refreshMatViewFactory : public contextActionFactory
{
public:
refreshMatViewFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
};
class refreshConcurrentlyMatViewFactory : public contextActionFactory
{
public:
refreshConcurrentlyMatViewFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar);
wxWindow *StartDialog(frmMain *form, pgObject *obj);
bool CheckEnable(pgObject *obj);
};
#endif