*/
public Hashtable hashAllConglomerateDescriptorsByNumber(TransactionController tc)
throws StandardException
{
Hashtable ht = new Hashtable();
ConglomerateDescriptor cd = null;
ScanController scanController;
ExecRow outRow;
// ExecIndexRow keyRow = null;
TabInfoImpl ti = coreInfo[SYSCONGLOMERATES_CORE_NUM];
SYSCONGLOMERATESRowFactory rf = (SYSCONGLOMERATESRowFactory) ti.getCatalogRowFactory();
outRow = rf.makeEmptyRow();
scanController = tc.openScan(
ti.getHeapConglomerate(), // conglomerate to open
false, // don't hold open across commit
0, // for read
TransactionController.MODE_RECORD, // scans whole table.
TransactionController.ISOLATION_READ_UNCOMMITTED,
(FormatableBitSet) null, // all fields as objects
(DataValueDescriptor[]) null, //keyRow.getRowArray(), // start position - first row
ScanController.GE, // startSearchOperation
(ScanQualifier [][]) null,
(DataValueDescriptor[]) null, //keyRow.getRowArray(), // stop position - through last row
ScanController.GT); // stopSearchOperation
// it is important for read uncommitted scans to use fetchNext() rather
// than fetch, so that the fetch happens while latch is held, otherwise
// the next() might position the scan on a row, but the subsequent
// fetch() may find the row deleted or purged from the table.
while (scanController.fetchNext(outRow.getRowArray()))
{
cd = (ConglomerateDescriptor) rf.buildDescriptor(
outRow,
(TupleDescriptor) null,
this );
Long hashKey = new Long(cd.getConglomerateNumber());
ht.put(hashKey, cd);
}
scanController.close();