提交 68c89a0e authored 作者: Thomas Mueller's avatar Thomas Mueller

Page store: new databases can not be opened with older versions.

上级 b4799c5e
...@@ -66,8 +66,8 @@ import org.h2.value.ValueString; ...@@ -66,8 +66,8 @@ import org.h2.value.ValueString;
* <ul> * <ul>
* <li>0-47: file header (3 time "-- H2 0.5/B -- \n")</li> * <li>0-47: file header (3 time "-- H2 0.5/B -- \n")</li>
* <li>48-51: page size in bytes (512 - 32768, must be a power of 2)</li> * <li>48-51: page size in bytes (512 - 32768, must be a power of 2)</li>
* <li>52: write version (if not 0 the file is opened in read-only mode)</li> * <li>52: write version (read-only if larger than 1)</li>
* <li>53: read version (if not 0 opening the file fails)</li> * <li>53: read version (opening fails if larger than 1)</li>
* </ul> * </ul>
* The format of page 1 and 2 is: * The format of page 1 and 2 is:
* <ul> * <ul>
...@@ -138,8 +138,8 @@ public class PageStore implements CacheWriter { ...@@ -138,8 +138,8 @@ public class PageStore implements CacheWriter {
private static final int INCREMENT_PAGES = 128; private static final int INCREMENT_PAGES = 128;
private static final int READ_VERSION = 0; private static final int READ_VERSION = 1;
private static final int WRITE_VERSION = 0; private static final int WRITE_VERSION = 1;
private static final int META_TYPE_SCAN_INDEX = 0; private static final int META_TYPE_SCAN_INDEX = 0;
private static final int META_TYPE_BTREE_INDEX = 1; private static final int META_TYPE_BTREE_INDEX = 1;
...@@ -559,10 +559,10 @@ public class PageStore implements CacheWriter { ...@@ -559,10 +559,10 @@ public class PageStore implements CacheWriter {
setPageSize(page.readInt()); setPageSize(page.readInt());
int writeVersion = page.readByte(); int writeVersion = page.readByte();
int readVersion = page.readByte(); int readVersion = page.readByte();
if (readVersion != 0) { if (readVersion > READ_VERSION) {
throw Message.getSQLException(ErrorCode.FILE_VERSION_ERROR_1, fileName); throw Message.getSQLException(ErrorCode.FILE_VERSION_ERROR_1, fileName);
} }
if (writeVersion != 0) { if (writeVersion > WRITE_VERSION) {
close(); close();
database.setReadOnly(true); database.setReadOnly(true);
accessMode = "r"; accessMode = "r";
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论