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);
}
}
}
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);
}
}
}
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);
}
}
}
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);
}
}
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++]);
});
}
}
}
Aggregations