Beispiel #1
0
 public void Populate(ListView view)
 {
     view.Items.Clear();
     foreach (string table in _tables)
     {
         ITable       tbl  = _database.GetTable(table);
         ListViewItem item = view.Items.Add(table);
         item.Tag = tbl;
         RecordsCounts counts        = tbl.ComputeWastedSpace();
         int           normalRecords = counts.NormalRecordCount;
         item.SubItems.Add((normalRecords == 0) ? "Empty" : normalRecords.ToString());
         int totalRecords = counts.TotalRecordCount;
         item.SubItems.Add(
             (totalRecords == 0) ? "0%" : ((totalRecords - normalRecords) * 100 / totalRecords).ToString() + "%");
     }
 }
Beispiel #2
0
        private void CalcSpace(IDatabase db, string tableName)
        {
            ITable        tbl    = db.GetTable(tableName);
            RecordsCounts counts = tbl.ComputeWastedSpace();

            if (counts.NormalRecordCount == 0 && counts.TotalRecordCount == 0)
            {
                Console.WriteLine("{0}: empty", tableName);
            }
            else
            {
                long deletedRecordsCount = counts.TotalRecordCount - counts.NormalRecordCount;
                Console.WriteLine("{0}: total {1} records , wasted {2} records, percentage {3}%",
                                  tableName, counts.TotalRecordCount, deletedRecordsCount,
                                  (deletedRecordsCount * 100) / counts.TotalRecordCount);
            }
        }
Beispiel #3
0
        public void ComputeWastedSpace( )
        {
            ITable testTable = m_database.GetTable("People");

            for (int i = 0; i < 1000; i++)
            {
                IRecord record = testTable.NewRecord();
                record.SetValue(1, i.ToString());
                record.Commit();
            }
            RecordsCounts recCounts = testTable.ComputeWastedSpace();

            Assert.AreEqual(1000, recCounts.NormalRecordCount);
            Assert.AreEqual(1000, recCounts.TotalRecordCount);
            ICountedResultSet resultSet = testTable.CreateModifiableResultSet(1, "5");

            foreach (IRecord record in resultSet)
            {
                record.Delete();
            }
            resultSet.Dispose();
            recCounts = testTable.ComputeWastedSpace();
            Assert.AreEqual(999, recCounts.NormalRecordCount);
            Assert.AreEqual(1000, recCounts.TotalRecordCount);
            m_database.Shutdown();
            DBStructure database = new DBStructure("", "MyPal");

            database.LoadStructure();

            m_database = database.OpenDatabase( );
            testTable  = m_database.GetTable("People");

            for (int i = 1000; i < 2000; i++)
            {
                IRecord record = testTable.NewRecord();
                record.SetValue(1, i.ToString());
                record.Commit();
            }
            recCounts = testTable.ComputeWastedSpace();
            Assert.AreEqual(1999, recCounts.NormalRecordCount);
            Assert.AreEqual(2000, recCounts.TotalRecordCount);
            for (int i = 500; i < 1500; i++)
            {
                ICountedResultSet resultSet1 = testTable.CreateModifiableResultSet(1, i.ToString());
                foreach (IRecord record in resultSet1)
                {
                    record.Delete();
                }
                resultSet1.Dispose();
            }
            recCounts = testTable.ComputeWastedSpace();
            Assert.AreEqual(999, recCounts.NormalRecordCount);
            Assert.AreEqual(1001, recCounts.TotalRecordCount - recCounts.NormalRecordCount);
            testTable.SortedColumn = -1;
            testTable.Defragment();
            testTable.SortedColumn = 1;
            testTable.Defragment();
            testTable.SortedColumn = 0;
            testTable.Defragment();
            recCounts = testTable.ComputeWastedSpace();
            Assert.AreEqual(999, recCounts.NormalRecordCount);
            Assert.AreEqual(999, recCounts.TotalRecordCount);
            Assert.AreEqual(0, recCounts.TotalRecordCount - recCounts.NormalRecordCount);
        }