t.createPrimaryKey(null, new int[]{ 0 }, true);
return t;
}
DataFileCache cache;
Object[] row;
HashSet cacheSet;
Iterator caches;
Iterator tables;
Table table;
int iFreeBytes;
int iLargestFreeItem;
long lSmallestFreeItem;
// column number mappings
final int icache_file = 0;
final int imax_cache_sz = 1;
final int imax_cache_bytes = 2;
final int icache_size = 3;
final int icache_length = 4;
final int ifree_bytes = 5;
final int ifree_count = 6;
final int ifree_pos = 7;
// Initialization
cacheSet = new HashSet();
// dynamic system tables are never cached
tables = database.schemaManager.allTablesIterator();
while (tables.hasNext()) {
table = (Table) tables.next();
if (table.isFileBased() && isAccessibleTable(table)) {
cache = table.getCache();
if (cache != null) {
cacheSet.add(cache);
}
}
}
caches = cacheSet.iterator();
// Do it.
while (caches.hasNext()) {
cache = (DataFileCache) caches.next();
row = t.getEmptyRowData();
row[icache_file] =
FileUtil.canonicalOrAbsolutePath(cache.getFileName());
row[imax_cache_sz] = ValuePool.getInt(cache.capacity());
row[imax_cache_bytes] = ValuePool.getLong(cache.bytesCapacity());
row[icache_size] = ValuePool.getInt(cache.getCachedObjectCount());
row[icache_length] =
ValuePool.getLong(cache.getTotalCachedBlockSize());
row[ifree_bytes] = ValuePool.getInt(cache.getTotalFreeBlockSize());
row[ifree_count] = ValuePool.getInt(cache.getFreeBlockCount());
row[ifree_pos] = ValuePool.getLong(cache.getFileFreePos());
t.insertSys(row);
}
t.setDataReadOnly(true);