//package my.test.mvstore;
//
//import org.h2.mvstore.MVMap;
//import org.h2.mvstore.MVStore;
//import org.h2.mvstore.MVStoreTool;
//import org.h2.store.fs.FileUtils;
//
//public class MVStoreTest {
// /**
// * @param args
// */
// public static void main(String[] args) {
// new MVStoreTest().run();
// }
//
// public static void p(Object o) {
// System.out.println(o);
// }
//
// public static void p() {
// System.out.println();
// }
//
// void run() {
// //storeTest();
// //rollbackToTest();
//
// testInMemoryStore();
// }
//
// void testInMemoryStore() {
// MVStore store = MVStore.open(null);
//
// MVMap<Integer, String> map = store.openMap("data");
//
// int n = 100;
// for (int i = 0; i < n; i++) {
// map.put(i, "Hello" + i);
// }
// store.compact(50);
// store.commit();
//
// store.store();
//
// long v = store.incrementVersion();
//
// map.put(200, "200");
// map.put(300, "300");
//
// store.rollbackTo(v);
//
// p(map.getSize());
//
// store.store();
//
// }
//
// void storeTest() {
// MVStore store = getMVStore();
// store.setReuseSpace(false);
//
// MVMap<Integer, String> map = store.openMap("data");
// MVMap<Integer, String> map2 = store.openMap("data2");
//
// System.out.println(store.getCurrentVersion());
//
// int n = 100;
// for (int i = 0; i < n; i++) {
// map.put(i, "Hello" + i);
// map2.put(i, "Hello" + i);
// }
// store.commit();
// store.store();
//
// for (int i = 100; i < 150; i++) {
// map.put(i, "Hello" + i);
// map2.put(i, "Hello" + i);
// }
//
// System.out.println(map.getSize());
//
// store.commit();
// store.store();
//
// System.out.println(map.getSize());
//
// // long oldVersion = store.getCurrentVersion();
// //
// // System.out.println(map.getSize());
// //
// // store.incrementVersion();
// //
// // map.put(101, "Hello101");
// // map.put(102, "Hello102");
// //
// // store.rollbackTo(0);
// // store.rollbackTo(oldVersion + 1);
// //
// // store.commit();
// //
// // map = store.openMap("data");
// // System.out.println(map.getSize());
//
// store.close();
//
// MVStoreTool.main(new String[] { "-dump", "E:/H2/baseDir/MVStoreTest333" });
// }
//
// void rollbackToTest() {
// MVStore store = getMVStore();
//
// MVMap<Integer, String> map = store.openMap("data");
// MVMap<Integer, String> map2 = store.openMap("data2");
//
// System.out.println(store.getCurrentVersion());
//
// int n = 100;
// for (int i = 0; i < n; i++) {
// map.put(i, "Hello" + i);
// map2.put(i, "Hello" + i);
// }
//
// long oldVersion = store.getCurrentVersion();
//
// System.out.println(map.getSize());
//
// store.incrementVersion();
//
// map.put(101, "Hello101");
// map.put(102, "Hello102");
//
// store.rollbackTo(0);
// store.rollbackTo(oldVersion + 1);
//
// store.commit();
//
// map = store.openMap("data");
// System.out.println(map.getSize());
//
// store.close();
// }
//
// MVStore getMVStore() {
// MVStore.Builder builder = new MVStore.Builder();
// builder.cacheSize(10).compressData().readOnly().writeDelay(2000);
//
// String str = builder.toString();
//
// System.out.println(str);
// builder = MVStore.Builder.fromString(str);
//
// // open the store (in-memory if fileName is null)
// String fileName = null;
// fileName = "E:/H2/baseDir/MVStoreTest333";
// MVStore store = null;
// //FileUtils.deleteRecursive(fileName, true);
//
// //store = MVStore.open(fileName);
//
// builder = new MVStore.Builder();
// builder.writeDelay(0).fileName(fileName);
//
// store = builder.open();
//
// return store;
// }
//
// public static void main2(String[] args) {
// MVStore.Builder builder = new MVStore.Builder();
// builder.cacheSize(10).compressData().readOnly().writeDelay(2000);
//
// String str = builder.toString();
//
// System.out.println(str);
// builder = MVStore.Builder.fromString(str);
//
// // open the store (in-memory if fileName is null)
// String fileName = null;
// fileName = "E:/H2/baseDir/MVStoreTest333";
// MVStore store = null;
// FileUtils.deleteRecursive(fileName, true);
//
// //store = MVStore.open(fileName);
//
// builder = new MVStore.Builder();
// builder.writeDelay(0).fileName(fileName);
//
// store = builder.open();
//
// System.out.println(store.getRetainVersion());
// System.out.println(store.getRetentionTime());
// System.out.println(store.getReuseSpace());
// System.out.println(store.getStoreVersion());
// System.out.println(store.getUnsavedPageCount());
//
// // create/get the map named "data"
// MVMap<Integer, String> map = store.openMap("data");
//
// int n = 100;
// for (int i = 0; i < n; i++) {
// map.put(i, "Hello" + i);
//
// if (i % 20 == 0)
// store.incrementVersion();
// }
//
// store.commit();
//
// // add some data
// map.put(1, "Hello");
// map.put(2, "World");
//
// // get the current version, for later use
// long oldVersion = store.getCurrentVersion();
//
// // from now on, the old version is read-only
// store.incrementVersion();
//
// // more changes, in the new version
// // changes can be rolled back if required
// // changes always go into "head" (the newest version)
// map.put(1, "Hi");
// map.remove(2);
//
// // access the old data (before incrementVersion)
// MVMap<Integer, String> oldMap = map.openVersion(oldVersion);
//
// // mark the changes as committed
// store.commit();
//
// // print the old version (can be done
// // concurrently with further modifications)
// // this will print "Hello" and "World":
// System.out.println(oldMap.get(1));
// System.out.println(oldMap.get(2));
// oldMap.close();
//
// // print the newest version ("Hi")
// System.out.println(map.get(1));
//
// System.out.println(map.get(2));
//
// // close the store - this doesn't write to disk
// store.close();
// }
//
//}