--- src/include/pgColumn.h.orig Mon Oct 20 03:26:26 2003
+++ src/include/pgColumn.h Mon Oct 20 03:30:30 2003
@@ -70,6 +70,8 @@
void iSetInheritedCount(const long l) { inheritedCount=l; }
OID GetAttTypId() const { return attTypId; }
void iSetAttTypId(const OID o) { attTypId =o; }
+ long GetAttstattarget() const { return attstattarget; }
+ void iSetAttstattarget(const long l) { attstattarget=l; }
bool DropObject(wxFrame *frame, wxTreeCtrl *browser);
bool GetSystemObject() const { return colNumber < 0; }
@@ -81,7 +83,7 @@
private:
wxString varTypename, quotedTypename, defaultVal, tableName, quotedFullTable, storage, rawTypename;
- long colNumber, length, precision, statistics;
+ long colNumber, length, precision, statistics, attstattarget;
long typlen, typmod, inheritedCount;
bool isPK, isFK, notNull, isArray;
OID attTypId;
--- src/schema/pgColumn.cpp.orig Mon Oct 20 03:19:56 2003
+++ src/schema/pgColumn.cpp Mon Oct 20 03:59:44 2003
@@ -70,6 +70,10 @@
sql += wxT("ALTER TABLE ") + GetQuotedFullTable()
+ wxT(" ALTER COLUMN ") + GetQuotedIdentifier()
+ wxT(" SET DEFAULT ") + GetDefault() + wxT(";\n");
+ if (GetAttstattarget() >= 0)
+ sql += wxT("ALTER TABLE ") + GetQuotedFullTable()
+ + wxT(" ALTER COLUMN ") + GetQuotedIdentifier()
+ + wxT(" SET STATISTICS ") + NumToStr(GetAttstattarget()) + wxT(";\n");
if (!GetComment().IsEmpty())
sql += wxT("COMMENT ON COLUMN ") + GetQuotedFullTable() + wxT(".") + GetQuotedIdentifier()
+ wxT(" IS ") + qtString(GetComment()) + wxT(";\n");
@@ -181,6 +185,8 @@
InsertListItem(properties, pos++, _("Foreign key?"), GetIsFK());
InsertListItem(properties, pos++, _("Storage"), GetStorage());
InsertListItem(properties, pos++, _("Inherited"), GetInheritedCount() != 0);
+ InsertListItem(properties, pos++, _("Statistics"), GetAttstattarget());
+
InsertListItem(properties, pos++, _("System column?"), GetSystemObject());
InsertListItem(properties, pos++, _("Comment"), GetComment());
@@ -227,7 +233,7 @@
systemRestriction = wxT("\n AND attnum > 0");
pgSet *columns= collection->GetDatabase()->ExecuteSet(
- wxT("SELECT att.*, def.*, CASE WHEN attndims > 0 THEN 1 ELSE 0 END AS isarray, CASE WHEN ty.typname = 'bpchar' THEN 'char' WHEN ty.typname = '_bpchar' THEN '_char' ELSE ty.typname END AS typname, tn.nspname as typnspname, et.typname as elemtypname, relname, na.nspname, description\n")
+ wxT("SELECT att.*, def.*, CASE WHEN attndims > 0 THEN 1 ELSE 0 END AS isarray, CASE WHEN ty.typname = 'bpchar' THEN 'char' WHEN ty.typname = '_bpchar' THEN '_char' ELSE ty.typname END AS typname, tn.nspname as typnspname, et.typname as elemtypname, relname, na.nspname, att.attstattarget, description\n")
wxT(" FROM pg_attribute att\n")
wxT(" JOIN pg_type ty ON ty.oid=atttypid\n")
wxT(" JOIN pg_namespace tn ON tn.oid=ty.typnamespace\n")
@@ -291,6 +297,7 @@
+ qtIdent(columns->GetVal(wxT("relname"))));
column->iSetTableName(columns->GetVal(wxT("relname")));
column->iSetInheritedCount(columns->GetLong(wxT("attinhcount")));
+ column->iSetAttstattarget(columns->GetLong(wxT("attstattarget")));
if (browser)
{
--- src/ui/common/dlgColumn.xrc.orig Mon Oct 20 04:18:18 2003
+++ src/ui/common/dlgColumn.xrc Mon Oct 20 04:19:27 2003
@@ -57,12 +57,20 @@
70,65d
13,12d
+
+
--- src/ui/dlgColumn.cpp.orig Mon Oct 20 04:21:46 2003
+++ src/ui/dlgColumn.cpp Mon Oct 20 05:33:13 2003
@@ -29,6 +29,7 @@
// pointer to controls
#define txtDefault CTRL("txtDefault", wxTextCtrl)
#define chkNotNull CTRL("chkNotNull", wxCheckBox)
+#define txtAttstattarget CTRL("txtAttstattarget", wxTextCtrl)
@@ -38,6 +39,7 @@
EVT_TEXT(XRCID("txtPrecision"), dlgColumn::OnChange)
EVT_TEXT(XRCID("txtDefault"), dlgColumn::OnChange)
EVT_CHECKBOX(XRCID("chkNotNull"), dlgColumn::OnChange)
+ EVT_TEXT(XRCID("txtAttstattarget"), dlgColumn::OnChange)
EVT_TEXT(XRCID("txtComment"), dlgColumn::OnChange)
EVT_TEXT(XRCID("cbDatatype"), dlgColumn::OnSelChangeTyp)
END_EVENT_TABLE();
@@ -73,6 +75,7 @@
txtPrecision->SetValue(NumToStr(column->GetPrecision()));
txtDefault->SetValue(column->GetDefault());
chkNotNull->SetValue(column->GetNotNull());
+ txtAttstattarget->SetValue(NumToStr(column->GetAttstattarget()));
txtComment->SetValue(column->GetComment());
@@ -110,6 +113,7 @@
chkNotNull->Disable();
txtLength->Disable();
cbDatatype->Disable();
+ txtAttstattarget->Disable();
}
}
else
@@ -182,6 +186,16 @@
sql += wxT(" NOT NULL;\n");
}
+ if (txtAttstattarget->GetValue() != NumToStr(column->GetAttstattarget()))
+ {
+ sql += wxT("ALTER TABLE ") + table->GetQuotedFullIdentifier()
+ + wxT("\n ALTER COLUMN ") + qtIdent(column->GetName());
+ if (txtAttstattarget->GetValue().IsEmpty())
+ sql += wxT(" SET STATISTICS -1");
+ else
+ sql += wxT(" SET STATISTICS ") + txtAttstattarget->GetValue();
+ sql += wxT(";\n");
+ }
}
else
{
@@ -200,6 +214,13 @@
+ wxT("\n ALTER COLUMN ") + qtIdent(GetName())
+ wxT(" SET DEFAULT ") + txtDefault->GetValue()
+ wxT(";\n");
+ if (!txtAttstattarget->GetValue().IsEmpty())
+ {
+ sql += wxT("ALTER TABLE ") + table->GetQuotedFullIdentifier()
+ + wxT("\n ALTER COLUMN ") + qtIdent(GetName())
+ + wxT(" SET STATISTICS ") + txtAttstattarget->GetValue()
+ + wxT(";\n");
+ }
}
@@ -276,7 +297,8 @@
|| chkNotNull->GetValue() != column->GetNotNull()
|| (cbDatatype->GetCount() > 1 && cbDatatype->GetValue() != column->GetRawTypename())
|| (isVarLen && varlen != column->GetLength())
- || (isVarPrec && varprec != column->GetPrecision());
+ || (isVarPrec && varprec != column->GetPrecision())
+ || txtAttstattarget->GetValue() != NumToStr(column->GetAttstattarget());
EnableOK(enable);
}
else