Search in sources :

Example 11 with Tuple

use of herddb.model.Tuple in project herddb by diennea.

the class SimpleScanZeroCopyTest method testPkNotFirst.

@Test
public void testPkNotFirst() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (n1 int,k1 string primary key, s1 string)", Collections.emptyList());
        execute(manager, "INSERT INTO tblspace1.tsql (k1,n1 ,s1) values (?,?,?)", Arrays.asList("a", 1, "b"));
        try (DataScanner scan = TestUtils.scan(manager, "SELECT * FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record
            assertTrue(data.get(0) instanceof DataAccessorForFullRecord);
            assertEquals(1, data.get(0).get("n1"));
            assertEquals(1, data.get(0).get(0));
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(1));
            assertEquals(RawString.of("b"), data.get(0).get("s1"));
            assertEquals(RawString.of("b"), data.get(0).get(2));
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT k1 FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record, keeping only some field
            assertTrue(data.get(0) instanceof ProjectedDataAccessor || data.get(0) instanceof ZeroCopyProjection.RuntimeProjectedDataAccessor);
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(0));
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT COUNT(*) FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            assertTrue(data.get(0) instanceof Tuple);
        }
    }
}
Also used : MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) DataAccessor(herddb.utils.DataAccessor) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) RawString(herddb.utils.RawString) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DBManager(herddb.core.DBManager) DataScanner(herddb.model.DataScanner) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) IntHolder(herddb.utils.IntHolder) DataAccessorForFullRecord(herddb.codec.DataAccessorForFullRecord) Tuple(herddb.model.Tuple) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Example 12 with Tuple

use of herddb.model.Tuple in project herddb by diennea.

the class SimpleScanZeroCopyTest method testMultiPkFirst.

@Test
public void testMultiPkFirst() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (n1 int primary key,k1 string primary key, s1 string)", Collections.emptyList());
        execute(manager, "INSERT INTO tblspace1.tsql (k1,n1 ,s1) values (?,?,?)", Arrays.asList("a", 1, "b"));
        try (DataScanner scan = TestUtils.scan(manager, "SELECT * FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record
            assertTrue(data.get(0) instanceof DataAccessorForFullRecord);
            assertEquals(1, data.get(0).get("n1"));
            assertEquals(1, data.get(0).get(0));
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(1));
            assertEquals(RawString.of("b"), data.get(0).get("s1"));
            assertEquals(RawString.of("b"), data.get(0).get(2));
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT k1 FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record, keeping only some field
            assertTrue(data.get(0) instanceof ProjectedDataAccessor || data.get(0) instanceof ZeroCopyProjection.RuntimeProjectedDataAccessor);
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(0));
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT COUNT(*) FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            assertTrue(data.get(0) instanceof Tuple);
        }
    }
}
Also used : MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) DataAccessor(herddb.utils.DataAccessor) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) RawString(herddb.utils.RawString) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DBManager(herddb.core.DBManager) DataScanner(herddb.model.DataScanner) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) IntHolder(herddb.utils.IntHolder) DataAccessorForFullRecord(herddb.codec.DataAccessorForFullRecord) Tuple(herddb.model.Tuple) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Example 13 with Tuple

use of herddb.model.Tuple in project herddb by diennea.

the class SimpleScanZeroCopyTest method test.

@Test
public void test() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (k1 string primary key,n1 int,s1 string)", Collections.emptyList());
        execute(manager, "INSERT INTO tblspace1.tsql (k1,n1 ,s1) values (?,?,?)", Arrays.asList("a", 1, "b"));
        try (DataScanner scan = TestUtils.scan(manager, "SELECT * FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record
            assertTrue(data.get(0) instanceof DataAccessorForFullRecord);
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT k1 FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record, keeping only some field
            assertTrue(data.get(0) instanceof ProjectedDataAccessor || data.get(0) instanceof ZeroCopyProjection.RuntimeProjectedDataAccessor);
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(0));
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT COUNT(*) FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            assertTrue(data.get(0) instanceof Tuple);
        }
    }
}
Also used : MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) DataAccessor(herddb.utils.DataAccessor) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) RawString(herddb.utils.RawString) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DataScanner(herddb.model.DataScanner) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) DataAccessorForFullRecord(herddb.codec.DataAccessorForFullRecord) Tuple(herddb.model.Tuple) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Example 14 with Tuple

use of herddb.model.Tuple in project herddb by diennea.

the class DataScannerJoinExecutor method nestedLoop.

private void nestedLoop(int index, int pos) throws DataScannerException, StatementExecutionException {
    if (index == numScanners) {
        Object[] clone = new Object[fieldNames.length];
        System.arraycopy(tmpTuple, 0, clone, 0, fieldNames.length);
        consumer.accept(new Tuple(fieldNames, clone));
        return;
    }
    DataScanner scanner = scanners[index];
    scanner.rewind();
    while (scanner.hasNext()) {
        int startPos = pos;
        DataAccessor rightTuple = scanner.next();
        for (Object o : rightTuple.getValues()) {
            tmpTuple[startPos++] = o;
        }
        nestedLoop(index + 1, startPos);
    }
}
Also used : DataScanner(herddb.model.DataScanner) DataAccessor(herddb.utils.DataAccessor) Tuple(herddb.model.Tuple)

Example 15 with Tuple

use of herddb.model.Tuple in project herddb by diennea.

the class SimpleScanZeroCopyTest method test.

@Test
public void test() throws Exception {
    String nodeId = "localhost";
    try (DBManager manager = new DBManager("localhost", new MemoryMetadataStorageManager(), new MemoryDataStorageManager(), new MemoryCommitLogManager(), null, null)) {
        manager.start();
        CreateTableSpaceStatement st1 = new CreateTableSpaceStatement("tblspace1", Collections.singleton(nodeId), nodeId, 1, 0, 0);
        manager.executeStatement(st1, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT(), TransactionContext.NO_TRANSACTION);
        manager.waitForTablespace("tblspace1", 10000);
        execute(manager, "CREATE TABLE tblspace1.tsql (k1 string primary key,n1 int,s1 string)", Collections.emptyList());
        execute(manager, "INSERT INTO tblspace1.tsql (k1,n1 ,s1) values (?,?,?)", Arrays.asList("a", 1, "b"));
        try (DataScanner scan = TestUtils.scan(manager, "SELECT * FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record
            assertTrue(data.get(0) instanceof DataAccessorForFullRecord);
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT k1 FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            // read from the full record, keeping only some field
            assertTrue(data.get(0) instanceof ProjectedDataAccessor || data.get(0) instanceof ZeroCopyProjection.RuntimeProjectedDataAccessor);
            assertEquals(RawString.of("a"), data.get(0).get("k1"));
            assertEquals(RawString.of("a"), data.get(0).get(0));
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
        try (DataScanner scan = TestUtils.scan(manager, "SELECT COUNT(*) FROM tblspace1.tsql ", Collections.emptyList())) {
            List<DataAccessor> data = scan.consume();
            assertEquals(1, data.size());
            assertTrue(data.get(0) instanceof Tuple);
            String[] fieldNames = scan.getFieldNames();
            for (String fName : fieldNames) {
                Object value = data.get(0).get(fName);
                System.out.println("FIELD " + fName + " -> " + value + " (" + value.getClass() + ")");
            }
            IntHolder current = new IntHolder();
            data.get(0).forEach((fName, value) -> {
                System.out.println("FIELD2 " + fName + " -> " + value + " (" + value.getClass() + ")");
                assertEquals(fName, fieldNames[current.value++]);
            });
        }
    }
}
Also used : MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) DataAccessor(herddb.utils.DataAccessor) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) RawString(herddb.utils.RawString) ProjectedDataAccessor(herddb.utils.ProjectedDataAccessor) CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DBManager(herddb.core.DBManager) DataScanner(herddb.model.DataScanner) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) IntHolder(herddb.utils.IntHolder) DataAccessorForFullRecord(herddb.codec.DataAccessorForFullRecord) Tuple(herddb.model.Tuple) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) Test(org.junit.Test)

Aggregations

Tuple (herddb.model.Tuple)20 DataAccessor (herddb.utils.DataAccessor)19 Test (org.junit.Test)18 Column (herddb.model.Column)11 DataScanner (herddb.model.DataScanner)11 MemoryCommitLogManager (herddb.mem.MemoryCommitLogManager)9 MemoryDataStorageManager (herddb.mem.MemoryDataStorageManager)9 MemoryMetadataStorageManager (herddb.mem.MemoryMetadataStorageManager)9 CreateTableSpaceStatement (herddb.model.commands.CreateTableSpaceStatement)9 RawString (herddb.utils.RawString)9 HashMap (java.util.HashMap)9 DBManager (herddb.core.DBManager)8 DataAccessorForFullRecord (herddb.codec.DataAccessorForFullRecord)6 ScanResult (herddb.model.ScanResult)5 ProjectedDataAccessor (herddb.utils.ProjectedDataAccessor)5 HashSet (java.util.HashSet)5 SQLPlannedOperationStatement (herddb.model.commands.SQLPlannedOperationStatement)4 ScanStatement (herddb.model.commands.ScanStatement)4 RuntimeProjectedDataAccessor (herddb.model.planner.ProjectOp.ZeroCopyProjection.RuntimeProjectedDataAccessor)4 IntHolder (herddb.utils.IntHolder)4