use of herddb.model.Tuple in project herddb by diennea.
the class ValuesOp method execute.
@Override
public StatementExecutionResult execute(TableSpaceManager tableSpaceManager, TransactionContext transactionContext, StatementEvaluationContext context, boolean lockRequired, boolean forWrite) throws StatementExecutionException {
Iterator<List<CompiledSQLExpression>> it = tuples.iterator();
DataScanner res = new DataScanner(transactionContext.transactionId, fieldNames, columns) {
@Override
public boolean hasNext() throws DataScannerException {
return it.hasNext();
}
@Override
public DataAccessor next() throws DataScannerException {
Object[] values = new Object[fieldNames.length];
List<CompiledSQLExpression> tuple = it.next();
for (int i = 0; i < values.length; i++) {
Object value = tuple.get(i).evaluate(DataAccessor.NULL, context);
values[i] = value;
}
return new Tuple(fieldNames, values);
}
};
return new ScanResult(transactionContext.transactionId, res);
}
use of herddb.model.Tuple in project herddb by diennea.
the class RecordSetSuite method testLimitsAfterEndSwap.
@Test
public void testLimitsAfterEndSwap() throws Exception {
RecordSetFactory factory = buildRecordSetFactory(1);
Column[] columns = new Column[2];
columns[0] = Column.column("s1", ColumnTypes.STRING);
columns[1] = Column.column("n1", ColumnTypes.LONG);
String[] fieldNames = Column.buildFieldNamesList(columns);
try (MaterializedRecordSet rs = factory.createRecordSet(fieldNames, columns)) {
for (int i = 0; i < 100; i++) {
Map<String, Object> record = new HashMap<>();
String s1 = "test_" + i;
record.put("s1", s1);
record.put("n1", i);
rs.add(new Tuple(record, fieldNames));
}
rs.writeFinished();
rs.applyLimits(new ScanLimitsImpl(20, 100000), StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT());
for (DataAccessor t : rs) {
fail();
}
}
}
use of herddb.model.Tuple in project herddb by diennea.
the class RecordSetSuite method testSimpleNoSwap.
@Test
public void testSimpleNoSwap() throws Exception {
RecordSetFactory factory = buildRecordSetFactory(Integer.MAX_VALUE);
Column[] columns = new Column[2];
columns[0] = Column.column("s1", ColumnTypes.STRING);
columns[1] = Column.column("n1", ColumnTypes.LONG);
String[] fieldNames = Column.buildFieldNamesList(columns);
try (MaterializedRecordSet rs = factory.createRecordSet(fieldNames, columns)) {
Set<String> expected_s1 = new HashSet<>();
Set<Integer> expected_n1 = new HashSet<>();
for (int i = 0; i < 100; i++) {
Map<String, Object> record = new HashMap<>();
String s1 = "test_" + i;
record.put("s1", s1);
record.put("n1", i);
expected_s1.add(s1);
expected_n1.add(i);
rs.add(new Tuple(record, fieldNames));
}
rs.writeFinished();
for (DataAccessor t : rs) {
expected_s1.remove((String) t.get("s1"));
expected_n1.remove((Integer) t.get("n1"));
}
assertTrue(expected_n1.isEmpty());
assertTrue(expected_s1.isEmpty());
}
}
use of herddb.model.Tuple in project herddb by diennea.
the class RecordSetSuite method testSortNoSwap.
@Test
public void testSortNoSwap() throws Exception {
RecordSetFactory factory = buildRecordSetFactory(Integer.MAX_VALUE);
Column[] columns = new Column[2];
columns[0] = Column.column("s1", ColumnTypes.STRING);
columns[1] = Column.column("n1", ColumnTypes.LONG);
String[] fieldNames = Column.buildFieldNamesList(columns);
try (MaterializedRecordSet rs = factory.createRecordSet(fieldNames, columns)) {
for (int i = 0; i < 100; i++) {
Map<String, Object> record = new HashMap<>();
String s1 = "test_" + i;
record.put("s1", s1);
record.put("n1", i);
rs.add(new Tuple(record, fieldNames));
}
rs.writeFinished();
// sort descending
rs.sort(new TupleComparator() {
@Override
public int compare(DataAccessor o1, DataAccessor o2) {
return ((Integer) o2.get(("n1"))).compareTo((Integer) o1.get("n1"));
}
});
int last = Integer.MAX_VALUE;
for (DataAccessor t : rs) {
int n1 = (Integer) t.get("n1");
assertTrue(last > n1);
last = n1;
}
}
}
use of herddb.model.Tuple in project herddb by diennea.
the class RecordSetSuite method testSimpleSwap.
@Test
public void testSimpleSwap() throws Exception {
RecordSetFactory factory = buildRecordSetFactory(1);
Column[] columns = new Column[8];
columns[0] = Column.column("s1", ColumnTypes.STRING);
columns[1] = Column.column("n1", ColumnTypes.LONG);
columns[2] = Column.column("t1", ColumnTypes.TIMESTAMP);
columns[3] = Column.column("i1", ColumnTypes.INTEGER);
columns[4] = Column.column("b1", ColumnTypes.BYTEARRAY);
columns[5] = Column.column("null1", ColumnTypes.STRING);
columns[6] = Column.column("bo1", ColumnTypes.BOOLEAN);
columns[7] = Column.column("d1", ColumnTypes.DOUBLE);
String[] fieldNames = Column.buildFieldNamesList(columns);
java.sql.Timestamp ts = new java.sql.Timestamp(System.currentTimeMillis());
try (MaterializedRecordSet rs = factory.createRecordSet(fieldNames, columns)) {
Set<String> expected_s1 = new HashSet<>();
Set<Long> expected_n1 = new HashSet<>();
Set<Integer> expected_i1 = new HashSet<>();
for (int i = 0; i < 100; i++) {
Map<String, Object> record = new HashMap<>();
String s1 = "test_" + i;
record.put("s1", s1);
record.put("n1", Long.valueOf(i));
record.put("i1", Integer.valueOf(i));
record.put("t1", ts);
record.put("null1", null);
record.put("b1", s1.getBytes(StandardCharsets.UTF_8));
record.put("bo1", Boolean.valueOf(true));
record.put("d1", Double.valueOf(1.1));
expected_s1.add(s1);
expected_n1.add(Long.valueOf(i));
expected_i1.add(i);
rs.add(new Tuple(record, fieldNames));
}
rs.writeFinished();
for (DataAccessor t : rs) {
expected_s1.remove(t.get("s1").toString());
expected_n1.remove((Long) t.get("n1"));
expected_i1.remove((Integer) t.get("i1"));
assertEquals(ts, t.get("t1"));
assertNull(t.get("null1"));
assertEquals(true, t.get("bo1"));
assertEquals(1.1, t.get("d1"));
}
assertTrue(expected_n1.isEmpty());
assertTrue(expected_s1.isEmpty());
}
}
Aggregations