Search in sources :

Example 21 with Page

use of org.h2.mvstore.Page in project h2database by h2database.

the class Page method setValue.

/**
 * Replace the value at an index in this page.
 *
 * @param index the index
 * @param value the new value
 * @return the old value
 */
public Object setValue(int index, Object value) {
    Object old = values[index];
    // this is slightly slower:
    // values = Arrays.copyOf(values, values.length);
    values = values.clone();
    DataType valueType = map.getValueType();
    if (isPersistent()) {
        addMemory(valueType.getMemory(value) - valueType.getMemory(old));
    }
    values[index] = value;
    return old;
}
Also used : DataType(org.h2.mvstore.type.DataType)

Example 22 with Page

use of org.h2.mvstore.Page in project h2database by h2database.

the class Page method setKey.

/**
 * Replace the key at an index in this page.
 *
 * @param index the index
 * @param key the new key
 */
public void setKey(int index, Object key) {
    // this is slightly slower:
    // keys = Arrays.copyOf(keys, keys.length);
    keys = keys.clone();
    if (isPersistent()) {
        Object old = keys[index];
        DataType keyType = map.getKeyType();
        int mem = keyType.getMemory(key);
        if (old != null) {
            mem -= keyType.getMemory(old);
        }
        addMemory(mem);
    }
    keys[index] = key;
}
Also used : DataType(org.h2.mvstore.type.DataType)

Example 23 with Page

use of org.h2.mvstore.Page in project h2database by h2database.

the class TestDataPage method testAll.

private void testAll() {
    Data page = Data.create(this, 128);
    char[] data = new char[0x10000];
    for (int i = 0; i < data.length; i++) {
        data[i] = (char) i;
    }
    String s = new String(data);
    page.checkCapacity(s.length() * 4);
    page.writeString(s);
    int len = page.length();
    assertEquals(len, Data.getStringLen(s));
    page.reset();
    assertEquals(s, page.readString());
    page.reset();
    page.writeString("H\u1111!");
    page.writeString("John\tBrack's \"how are you\" M\u1111ller");
    page.writeValue(ValueInt.get(10));
    page.writeValue(ValueString.get("test"));
    page.writeValue(ValueFloat.get(-2.25f));
    page.writeValue(ValueDouble.get(10.40));
    page.writeValue(ValueNull.INSTANCE);
    trace(new String(page.getBytes()));
    page.reset();
    trace(page.readString());
    trace(page.readString());
    trace(page.readValue().getInt());
    trace(page.readValue().getString());
    trace("" + page.readValue().getFloat());
    trace("" + page.readValue().getDouble());
    trace(page.readValue().toString());
    page.reset();
    page.writeInt(0);
    page.writeInt(Integer.MAX_VALUE);
    page.writeInt(Integer.MIN_VALUE);
    page.writeInt(1);
    page.writeInt(-1);
    page.writeInt(1234567890);
    page.writeInt(54321);
    trace(new String(page.getBytes()));
    page.reset();
    trace(page.readInt());
    trace(page.readInt());
    trace(page.readInt());
    trace(page.readInt());
    trace(page.readInt());
    trace(page.readInt());
    trace(page.readInt());
    page = null;
}
Also used : Data(org.h2.store.Data) ValueString(org.h2.value.ValueString)

Example 24 with Page

use of org.h2.mvstore.Page in project h2database by h2database.

the class TestAll method run.

private static void run(String... args) throws Exception {
    SelfDestructor.startCountdown(4 * 60);
    long time = System.nanoTime();
    printSystemInfo();
    // use lower values, to better test those cases,
    // and (for delays) to speed up the tests
    System.setProperty("h2.maxMemoryRows", "100");
    System.setProperty("h2.check2", "true");
    System.setProperty("h2.delayWrongPasswordMin", "0");
    System.setProperty("h2.delayWrongPasswordMax", "0");
    System.setProperty("h2.useThreadContextClassLoader", "true");
    // System.setProperty("h2.modifyOnWrite", "true");
    // speedup
    // System.setProperty("h2.syncMethod", "");
    /*

recovery tests with small freeList pages, page size 64

reopen org.h2.test.unit.TestPageStore
-Xmx1500m -D reopenOffset=3 -D reopenShift=1

power failure test
power failure test: MULTI_THREADED=TRUE
power failure test: larger binaries and additional index.
power failure test with randomly generating / dropping indexes and tables.

drop table test;
create table test(id identity, name varchar(100) default space(100));
@LOOP 10 insert into test select null, null from system_range(1, 100000);
delete from test;

documentation: review package and class level javadocs
documentation: rolling review at main.html

-------------

remove old TODO, move to roadmap

kill a test:
kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`

*/
    TestAll test = new TestAll();
    if (args.length > 0) {
        if ("travis".equals(args[0])) {
            test.travis = true;
            test.testAll();
        } else if ("vmlens".equals(args[0])) {
            test.vmlens = true;
            test.testAll();
        } else if ("reopen".equals(args[0])) {
            System.setProperty("h2.delayWrongPasswordMin", "0");
            System.setProperty("h2.check2", "false");
            System.setProperty("h2.analyzeAuto", "100");
            System.setProperty("h2.pageSize", "64");
            System.setProperty("h2.reopenShift", "5");
            FilePathRec.register();
            test.reopen = true;
            TestReopen reopen = new TestReopen();
            reopen.init();
            FilePathRec.setRecorder(reopen);
            test.runTests();
        } else if ("crash".equals(args[0])) {
            test.endless = true;
            new TestCrashAPI().runTest(test);
        } else if ("synth".equals(args[0])) {
            new TestSynth().runTest(test);
        } else if ("kill".equals(args[0])) {
            new TestKill().runTest(test);
        } else if ("random".equals(args[0])) {
            test.endless = true;
            new TestRandomSQL().runTest(test);
        } else if ("join".equals(args[0])) {
            new TestJoin().runTest(test);
            test.endless = true;
        } else if ("btree".equals(args[0])) {
            new TestBtreeIndex().runTest(test);
        } else if ("all".equals(args[0])) {
            test.testEverything();
        } else if ("codeCoverage".equals(args[0])) {
            test.codeCoverage = true;
            test.runCoverage();
        } else if ("multiThread".equals(args[0])) {
            new TestMulti().runTest(test);
        } else if ("halt".equals(args[0])) {
            new TestHaltApp().runTest(test);
        } else if ("timer".equals(args[0])) {
            new TestTimer().runTest(test);
        }
    } else {
        test.testAll();
    }
    System.out.println(TestBase.formatTime(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - time)) + " total");
}
Also used : TestBtreeIndex(org.h2.test.synth.TestBtreeIndex) TestCrashAPI(org.h2.test.synth.TestCrashAPI) TestHaltApp(org.h2.test.synth.TestHaltApp) TestJoin(org.h2.test.synth.TestJoin) TestTimer(org.h2.test.synth.TestTimer) TestMulti(org.h2.test.synth.thread.TestMulti) TestKill(org.h2.test.synth.TestKill) TestReopen(org.h2.test.unit.TestReopen) TestSynth(org.h2.test.synth.sql.TestSynth) TestRandomSQL(org.h2.test.synth.TestRandomSQL)

Example 25 with Page

use of org.h2.mvstore.Page in project h2database by h2database.

the class TestMVStoreTool method testCompact.

private void testCompact() {
    String fileName = getBaseDir() + "/testCompact.h3";
    FileUtils.createDirectories(getBaseDir());
    FileUtils.delete(fileName);
    // store with a very small page size, to make sure
    // there are many leaf pages
    MVStore s = new MVStore.Builder().pageSplitSize(1000).fileName(fileName).autoCommitDisabled().open();
    MVMap<Integer, String> map = s.openMap("data");
    for (int i = 0; i < 10; i++) {
        map.put(i, "Hello World " + i * 10);
        if (i % 3 == 0) {
            s.commit();
        }
    }
    for (int i = 0; i < 20; i++) {
        map = s.openMap("data" + i);
        for (int j = 0; j < i * i; j++) {
            map.put(j, "Hello World " + j * 10);
        }
        s.commit();
    }
    MVRTreeMap<String> rTreeMap = s.openMap("rtree", new MVRTreeMap.Builder<String>());
    Random r = new Random(1);
    for (int i = 0; i < 10; i++) {
        float x = r.nextFloat();
        float y = r.nextFloat();
        float width = r.nextFloat() / 10;
        float height = r.nextFloat() / 10;
        SpatialKey k = new SpatialKey(i, x, x + width, y, y + height);
        rTreeMap.put(k, "Hello World " + i * 10);
        if (i % 3 == 0) {
            s.commit();
        }
    }
    s.close();
    MVStoreTool.compact(fileName, fileName + ".new", false);
    MVStoreTool.compact(fileName, fileName + ".new.compress", true);
    MVStore s1 = new MVStore.Builder().fileName(fileName).readOnly().open();
    MVStore s2 = new MVStore.Builder().fileName(fileName + ".new").readOnly().open();
    MVStore s3 = new MVStore.Builder().fileName(fileName + ".new.compress").readOnly().open();
    assertEquals(s1, s2);
    assertEquals(s1, s3);
    s1.close();
    s2.close();
    s3.close();
    long size1 = FileUtils.size(fileName);
    long size2 = FileUtils.size(fileName + ".new");
    long size3 = FileUtils.size(fileName + ".new.compress");
    assertTrue("size1: " + size1 + " size2: " + size2 + " size3: " + size3, size2 < size1 && size3 < size2);
    MVStoreTool.compact(fileName, false);
    assertEquals(size2, FileUtils.size(fileName));
    MVStoreTool.compact(fileName, true);
    assertEquals(size3, FileUtils.size(fileName));
}
Also used : SpatialKey(org.h2.mvstore.rtree.SpatialKey) MVStore(org.h2.mvstore.MVStore) MVRTreeMap(org.h2.mvstore.rtree.MVRTreeMap) Random(java.util.Random)

Aggregations

CreateTableData (org.h2.command.ddl.CreateTableData)9 Value (org.h2.value.Value)8 Data (org.h2.store.Data)7 Column (org.h2.table.Column)6 Page (org.h2.mvstore.Page)5 IndexColumn (org.h2.table.IndexColumn)5 ResultSet (java.sql.ResultSet)4 SQLException (java.sql.SQLException)4 QueryCancelledException (org.apache.ignite.cache.query.QueryCancelledException)4 DataRegionConfiguration (org.apache.ignite.configuration.DataRegionConfiguration)4 UnsafeMemoryProvider (org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider)4 PageMemory (org.apache.ignite.internal.pagemem.PageMemory)4 PageMemoryNoStoreImpl (org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl)4 DataRegionMetricsImpl (org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl)4 GridCacheSqlQuery (org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery)4 Row (org.h2.result.Row)4 Connection (java.sql.Connection)3 ArrayList (java.util.ArrayList)3 CRC32 (java.util.zip.CRC32)3 IgniteCheckedException (org.apache.ignite.IgniteCheckedException)3