package org.reldb.rel.v0.tests.engine; import org.junit.Test; import org.reldb.rel.exceptions.DatabaseFormatVersionException; import org.reldb.rel.v0.generator.Generator; import org.reldb.rel.v0.generator.References; import org.reldb.rel.v0.generator.SelectAttributes; import org.reldb.rel.v0.interpreter.Instance; import org.reldb.rel.v0.storage.*; import org.reldb.rel.v0.storage.relvars.RelvarDefinition; import org.reldb.rel.v0.storage.relvars.RelvarGlobal; import org.reldb.rel.v0.storage.relvars.RelvarHeading; import org.reldb.rel.v0.storage.relvars.RelvarRealMetadata; import org.reldb.rel.v0.types.Heading; import org.reldb.rel.v0.types.builtin.*; import org.reldb.rel.v0.values.*; import com.sleepycat.je.*; public class TestStorage { private Instance instance; private RelDatabase database; public TestStorage() throws DatabaseFormatVersionException { instance = new Instance("./", true, System.out); database = instance.getDatabase(); } @Test public void testStorage1() throws DatabaseException { Heading heading = new Heading(); heading.add("x", TypeInteger.getInstance()); heading.add("y", TypeRational.getInstance()); heading.add("z", TypeCharacter.getInstance()); SelectAttributes selection = new SelectAttributes(); selection.add("x"); RelvarHeading headingDefinition = new RelvarHeading(heading); headingDefinition.addKey(selection); if (database.isRelvarExists("testvarx")) database.dropRelvar("testvarx"); Generator generator = new Generator(database, System.out); database.createRealRelvar(generator, new RelvarDefinition("testvarx", new RelvarRealMetadata(database, headingDefinition, "User"), new References())); RelvarGlobal var = database.openGlobalRelvar("testvarx"); System.out.println("Inserting tuples."); ValueRelationLiteral lit = new ValueRelationLiteral(generator); lit.insert(new ValueTuple(generator, new Value[] {ValueInteger.select(generator, 5), ValueRational.select(generator, 1.2), ValueCharacter.select(generator, "blah")})); lit.insert(new ValueTuple(generator, new Value[] {ValueInteger.select(generator, 6), ValueRational.select(generator, 2.3), ValueCharacter.select(generator, "blat")})); lit.insert(new ValueTuple(generator, new Value[] {ValueInteger.select(generator, 6), ValueRational.select(generator, 2.3), ValueCharacter.select(generator, "blat")})); lit.insert(new ValueTuple(generator, new Value[] {ValueInteger.select(generator, 7), ValueRational.select(generator, -2.2), ValueCharacter.select(generator, "zot")})); var.setValue(lit); for (int i=8; i<1000; i++) { var.insert(generator, new ValueTuple(generator, new Value[] {ValueInteger.select(generator, i), ValueRational.select(generator, 1.2 * i), ValueCharacter.select(generator, "blah" + i)})); } System.out.println("Reading newly-inserted tuples."); TupleIterator ti = var.getValue(generator).iterator(); try { while (ti.hasNext()) System.out.println(ti.next()); } finally { ti.close(); } database.dropRelvar("testvarx"); } }