/// <summary> /// Update display with latest stats /// </summary> /// <param name="qe"></param> /// <param name="mbRowCounts"></param> /// <param name="mbTimes"></param> public void UpdateStatsDisplay2( Query q, QueryEngine qe, List <MetaBrokerStats> mbStats) { DataRow dr; //if (Query != q) // || Query.Tables.Count != DataTable.Rows.Count) // if query differs or doesn't match DataTable, show current query // StartNewQueryExecution(q); if (mbStats == null) { return; } Query = q; Qe = qe; Grid.BeginUpdate(); DataTable.Clear(); int sbc = 0; // search step brokers seen int qtc = 0; // retrieval step brokers seen MetatableTotalRows = OracleTotalRows = 0; for (int si = 0; si < mbStats.Count; si++) { MetaBrokerStats mbs = mbStats[si]; if (Lex.IsDefined(mbs.Label)) // search step { dr = DataTable.NewRow(); SetDataRow(dr, null, mbs); DataTable.Rows.Add(dr); sbc++; } else // retrieval step { if (qtc >= Query.Tables.Count) { continue; } QueryTable qt = Query.Tables[qtc]; dr = DataTable.NewRow(); SetDataRow(dr, qt, mbs); DataTable.Rows.Add(dr); qtc++; } } Grid.EndUpdate(); Grid.Refresh(); UpdateTotals(); return; }
void SetDataRow( DataRow dr, QueryTable qt, MetaBrokerStats mbs) { string txt; int i1 = -1; bool searchStep = (qt == null); bool retrievalStep = (qt != null); if (searchStep) // search step { try { string[] sa = mbs.Label.Split(':'); dr["MetatableLabel"] = sa[0]; // search substep dr["MetatableName"] = sa[1]; // one or more tables int.TryParse(sa[2], out i1); if (i1 >= 0) { dr["ColumnCount"] = i1; } int.TryParse(sa[3], out i1); if (i1 >= 0) { dr["ColumnsSelected"] = i1; } int.TryParse(sa[4], out i1); if (i1 >= 0) { dr["CriteriaCount"] = i1; } dr["BrokerCol"] = Lex.Replace(sa[5], "Broker", ""); // remove any Broker suffix } catch (Exception ex) { return; } } else // retrieval step { dr["MetatableLabel"] = qt.ActiveLabel; dr["MetatableName"] = qt.MetaTable.Name; dr["ColumnCount"] = qt.VisibleColumnCount; // includes Selected_or_Criteria_or_GroupBy_or_Sorted dr["ColumnsSelected"] = qt.SelectedCount; dr["CriteriaCount"] = qt.GetCriteriaCount(true, false); txt = qt.MetaTable.MetaBrokerType.ToString(); dr["BrokerCol"] = Lex.Replace(txt, "Broker", ""); // remove any Broker suffix } if (mbs != null) { if (mbs.MultiPivot <= 0) { dr["Multipivot"] = ""; } else if (mbs.MultiPivot == 1) { dr["Multipivot"] = "1"; } else if (mbs.MultiPivot == 2) { dr["Multipivot"] = "2"; } else { dr["Multipivot"] = "?"; } if (mbs.MetatableRowCount >= 0) { dr["NextRowCount"] = mbs.MetatableRowCount; if (retrievalStep) { MetatableTotalRows += mbs.MetatableRowCount; } } else { dr["NextRowCount"] = DBNull.Value; } if (mbs.OracleRowCount >= 0) { dr["ReadRowCount"] = mbs.OracleRowCount; if (retrievalStep) { OracleTotalRows += mbs.OracleRowCount; } } else { dr["ReadRowCount"] = DBNull.Value; } if (mbs.Time > 0) { dr["OracleTime"] = mbs.Time / 1000.0; // store fractional seconds as double } else { dr["OracleTime"] = DBNull.Value; } } return; }