--- 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 + + + 5,82d + + + 70,80d + 135,12d + - 5,82d + 5,102d - 70,80d + 70,100d 135,117d --- 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