git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/branches/jackcess-1.2.14@799 f203690c-595d-4dc9-a70b-905162fa7fd2tags/jackcess-1.2.14.3
<author email="javajedi@users.sf.net">Tim McCune</author> | <author email="javajedi@users.sf.net">Tim McCune</author> | ||||
</properties> | </properties> | ||||
<body> | <body> | ||||
<release version="1.2.14.3" date="TBD"> | |||||
<action dev="jahlborn" type="fix" system="SourceForge2" issue="97"> | |||||
Ignore invalid column usage map definitions. | |||||
</action> | |||||
</release> | |||||
<release version="1.2.14.2" date="2013-08-25"> | <release version="1.2.14.2" date="2013-08-25"> | ||||
<action dev="jahlborn" type="fix" system="SourceForge2" issue="96"> | <action dev="jahlborn" type="fix" system="SourceForge2" issue="96"> | ||||
Fix reading of Properties with multiple value blocks. | Fix reading of Properties with multiple value blocks. |
break; | break; | ||||
} | } | ||||
UsageMap colOwnedPages = UsageMap.read( | |||||
getDatabase(), tableBuffer, false); | |||||
UsageMap colFreeSpacePages = UsageMap.read( | |||||
getDatabase(), tableBuffer, false); | |||||
int pos = tableBuffer.position(); | |||||
UsageMap colOwnedPages = null; | |||||
UsageMap colFreeSpacePages = null; | |||||
try { | |||||
colOwnedPages = UsageMap.read(getDatabase(), tableBuffer, false); | |||||
colFreeSpacePages = UsageMap.read(getDatabase(), tableBuffer, false); | |||||
} catch(IllegalStateException e) { | |||||
// ignore invalid usage map info | |||||
colOwnedPages = null; | |||||
colFreeSpacePages = null; | |||||
tableBuffer.position(pos + 8); | |||||
LOG.warn("Table " + _name + " invalid column " + umapColNum + | |||||
" usage map definition: " + e); | |||||
} | |||||
for(Column col : _columns) { | for(Column col : _columns) { | ||||
if(col.getColumnNumber() == umapColNum) { | if(col.getColumnNumber() == umapColNum) { |
int rowNum, boolean assumeOutOfRangeBitsOn) | int rowNum, boolean assumeOutOfRangeBitsOn) | ||||
throws IOException | throws IOException | ||||
{ | { | ||||
if(pageNum <= 0) { | |||||
// usage maps will never appear on page 0 (or less) | |||||
throw new IllegalStateException("Invalid usage map page number " + pageNum); | |||||
} | |||||
JetFormat format = database.getFormat(); | JetFormat format = database.getFormat(); | ||||
PageChannel pageChannel = database.getPageChannel(); | PageChannel pageChannel = database.getPageChannel(); | ||||
ByteBuffer tableBuffer = pageChannel.createPageBuffer(); | ByteBuffer tableBuffer = pageChannel.createPageBuffer(); |