Search in sources :

Example 1 with Tuple

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);
}
Also used : ScanResult(herddb.model.ScanResult) DataScanner(herddb.model.DataScanner) List(java.util.List) CompiledSQLExpression(herddb.sql.expressions.CompiledSQLExpression) Tuple(herddb.model.Tuple)

Example 2 with Tuple

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();
        }
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) ScanLimitsImpl(herddb.model.ScanLimitsImpl) Column(herddb.model.Column) Tuple(herddb.model.Tuple) Test(org.junit.Test)

Example 3 with Tuple

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());
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) Column(herddb.model.Column) Tuple(herddb.model.Tuple) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 4 with Tuple

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;
        }
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) TupleComparator(herddb.model.TupleComparator) Column(herddb.model.Column) Tuple(herddb.model.Tuple) Test(org.junit.Test)

Example 5 with Tuple

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());
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) Column(herddb.model.Column) Tuple(herddb.model.Tuple) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

Tuple (herddb.model.Tuple)12 DataAccessor (herddb.utils.DataAccessor)11 Test (org.junit.Test)10 Column (herddb.model.Column)9 HashMap (java.util.HashMap)9 HashSet (java.util.HashSet)6 DataScanner (herddb.model.DataScanner)3 ScanLimitsImpl (herddb.model.ScanLimitsImpl)3 Projection (herddb.model.Projection)2 StatementEvaluationContext (herddb.model.StatementEvaluationContext)2 StatementExecutionException (herddb.model.StatementExecutionException)2 TupleComparator (herddb.model.TupleComparator)2 DataAccessorForFullRecord (herddb.codec.DataAccessorForFullRecord)1 MemoryCommitLogManager (herddb.mem.MemoryCommitLogManager)1 MemoryDataStorageManager (herddb.mem.MemoryDataStorageManager)1 MemoryMetadataStorageManager (herddb.mem.MemoryMetadataStorageManager)1 ScanResult (herddb.model.ScanResult)1 CreateTableSpaceStatement (herddb.model.commands.CreateTableSpaceStatement)1 CompiledSQLExpression (herddb.sql.expressions.CompiledSQLExpression)1 ProjectedDataAccessor (herddb.utils.ProjectedDataAccessor)1