Hi all,
Here is a patch to add index stats on the Statistics tab for individual
indexes.
Comments?
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
Index: pgadmin/schema/pgIndex.cpp
===================================================================
--- pgadmin/schema/pgIndex.cpp (révision 7490)
+++ pgadmin/schema/pgIndex.cpp (copie de travail)
@@ -262,22 +262,19 @@
void pgIndexBase::ShowStatistics(frmMain *form, ctlListView *statistics)
{
- wxString sql;
+ wxString sql =
+ wxT("SELECT idx_scan AS ") + qtIdent(_("Index Scans")) +
+ wxT(", idx_tup_read AS ") + qtIdent(_("Index Tuples Read")) +
+ wxT(", idx_tup_fetch AS ") + qtIdent(_("Index Tuples Fetched"))+
+ wxT(", idx_blks_read AS ") + qtIdent(_("Index Blocks Read")) +
+ wxT(", idx_blks_hit AS ") + qtIdent(_("Index Blocks Hit"));
if (GetConnection()->HasFeature(FEATURE_SIZE))
- sql = wxT("SELECT pg_size_pretty(pg_relation_size(") + GetOidStr() + wxT(")) AS ") + qtIdent(_("Index Size"));
+ sql += wxT(", pg_size_pretty(pg_relation_size(") + GetOidStr() + wxT(")) AS ") + qtIdent(_("Index Size"));
if (showExtendedStatistics)
{
- if (sql.Length() == 0)
- {
- sql = wxT("SELECT ");
- }
- else
- {
- sql += wxT(", ");
- }
- sql += wxT(" version AS ") + qtIdent(_("Version")) + wxT(",\n")
+ sql += wxT(", version AS ") + qtIdent(_("Version")) + wxT(",\n")
wxT(" tree_level AS ") + qtIdent(_("Tree Level")) + wxT(",\n")
wxT(" pg_size_pretty(index_size) AS ") + qtIdent(_("Index Size")) + wxT(",\n")
wxT(" root_block_no AS ") + qtIdent(_("Root Block No")) + wxT(",\n")
@@ -287,8 +284,17 @@
wxT(" deleted_pages AS ") + qtIdent(_("Deleted Pages")) + wxT(",\n")
wxT(" avg_leaf_density AS ") + qtIdent(_("Average Leaf Density")) + wxT(",\n")
wxT(" leaf_fragmentation AS ") + qtIdent(_("Leaf Fragmentation")) + wxT("\n")
- wxT(" FROM pgstatindex('") + GetQuotedFullIdentifier() + wxT("')");
+ wxT(" FROM pgstatindex('") + GetQuotedFullIdentifier() + wxT("'), pg_stat_all_indexes stat");
}
+ else
+ {
+ sql += wxT("\n")
+ wxT(" FROM pg_stat_all_indexes stat");
+ }
+ sql += wxT("\n")
+ wxT(" JOIN pg_statio_all_indexes statio ON stat.indexrelid = statio.indexrelid\n")
+ wxT(" JOIN pg_class cl ON cl.oid=stat.indexrelid\n")
+ wxT(" WHERE stat.indexrelid = ") + GetOidStr();
DisplayStatistics(statistics, sql);
}
@@ -310,6 +316,7 @@
return GetConnection()->HasFeature(FEATURE_PGSTATINDEX);
}
+
executePgstatindexFactory::executePgstatindexFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) :
contextActionFactory(list)
{
mnu->Append(id, _("&Extended index statistics"), _("Get extended statistics via pgstatindex for the selected
object."),wxITEM_CHECK);
@@ -479,7 +486,6 @@
}
-
pgObject *pgIndexFactory::CreateObjects(pgCollection *collection, ctlTree *browser, const wxString &restriction)
{
return pgIndexBaseFactory::CreateObjects(collection, browser, restriction + wxT("\n AND conname IS NULL"));