Browse Source

add support for index owned pages usage maps

git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@422 f203690c-595d-4dc9-a70b-905162fa7fd2
tags/jackcess-1.1.21
James Ahlborn 14 years ago
parent
commit
8c625cfd2c

+ 12
- 1
src/java/com/healthmarketscience/jackcess/Index.java View File

@@ -154,6 +154,8 @@ public abstract class Index implements Comparable<Index> {
private byte _indexType;
/** Index name */
private String _name;
/** Usage map of pages that this index owns */
private UsageMap _ownedPages;
/** <code>true</code> if the index entries have been initialized,
<code>false</code> otherwise */
private boolean _initialized;
@@ -277,6 +279,10 @@ public abstract class Index implements Comparable<Index> {
return _maxPageEntrySize;
}

void addOwnedPage(int pageNumber) throws IOException {
_ownedPages.addPageNumber(pageNumber);
}

/**
* Returns the number of index entries in the index. Only called by unit
* tests.
@@ -353,7 +359,12 @@ public abstract class Index implements Comparable<Index> {
_columns.add(newColumnDescriptor(idxCol, colFlags));
}
}
tableBuffer.getInt(); //Forward past Unknown

int umapRowNum = tableBuffer.get();
int umapPageNum = ByteUtil.get3ByteInt(tableBuffer);
_ownedPages = UsageMap.read(getTable().getDatabase(), umapPageNum,
umapRowNum, false);

_rootPageNumber = tableBuffer.getInt();
tableBuffer.getInt(); //Forward past Unknown
_indexFlags = tableBuffer.get();

+ 3
- 0
src/java/com/healthmarketscience/jackcess/IndexPageCache.java View File

@@ -741,6 +741,9 @@ public class IndexPageCache
// add to our page cache
_dataPages.put(dpMain._pageNumber, dpMain);

// update owned pages cache
_index.addOwnedPage(dpMain._pageNumber);

// needs to be written out
CacheDataPage cacheDataPage = new CacheDataPage(dpMain, dpExtra);
setModified(cacheDataPage);

Loading…
Cancel
Save