Search in sources :

Example 36 with Column

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

the class RecordSetSuite method testLimitsSwap.

@Test
public void testLimitsSwap() 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)) {
        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);
            if (i >= 10 && i < 30) {
                expected_s1.add(s1);
                expected_n1.add(i);
            }
            rs.add(new Tuple(record, fieldNames));
        }
        rs.writeFinished();
        rs.applyLimits(new ScanLimitsImpl(20, 10), StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT());
        for (DataAccessor t : rs) {
            expected_s1.remove(t.get("s1").toString());
            expected_n1.remove(t.get("n1"));
        }
        assertTrue(expected_n1.isEmpty());
        assertTrue(expected_s1.isEmpty());
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) ScanLimitsImpl(herddb.model.ScanLimitsImpl) Column(herddb.model.Column) Tuple(herddb.model.Tuple) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 37 with Column

use of herddb.model.Column 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(t.get("n1"));
            expected_i1.remove(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)

Example 38 with Column

use of herddb.model.Column 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(t.get("s1"));
            expected_n1.remove(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 39 with Column

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

the class RecordSetSuite method testApplyProjectionNoSwap.

@Test
public void testApplyProjectionNoSwap() 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);
    Set<String> expected_s2 = new HashSet<>();
    Set<Integer> expected_n2 = new HashSet<>();
    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);
            expected_s2.add(s1);
            expected_n2.add(i);
            rs.add(new Tuple(record, fieldNames));
        }
        rs.writeFinished();
        Column[] columns_projected = new Column[2];
        columns_projected[0] = Column.column("n2", ColumnTypes.LONG);
        columns_projected[1] = Column.column("s2", ColumnTypes.STRING);
        String[] fieldNames_projected = new String[] { "n2", "s2" };
        rs.applyProjection(new Projection() {

            @Override
            public Column[] getColumns() {
                return columns_projected;
            }

            @Override
            public String[] getFieldNames() {
                return fieldNames_projected;
            }

            @Override
            public Tuple map(DataAccessor tuple, StatementEvaluationContext context) throws StatementExecutionException {
                Object[] projected_values = new Object[2];
                projected_values[0] = tuple.get("n1");
                projected_values[1] = tuple.get("s1");
                return new Tuple(fieldNames_projected, projected_values);
            }
        }, StatementEvaluationContext.DEFAULT_EVALUATION_CONTEXT());
        for (DataAccessor t : rs) {
            expected_s2.remove(t.get("s2"));
            expected_n2.remove(t.get("n2"));
        }
        assertTrue(expected_s2.isEmpty());
        assertTrue(expected_n2.isEmpty());
        assertEquals("n2", rs.getColumns()[0].name);
        assertEquals("s2", rs.getColumns()[1].name);
    }
}
Also used : HashMap(java.util.HashMap) DataAccessor(herddb.utils.DataAccessor) Projection(herddb.model.Projection) StatementExecutionException(herddb.model.StatementExecutionException) Column(herddb.model.Column) StatementEvaluationContext(herddb.model.StatementEvaluationContext) Tuple(herddb.model.Tuple) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 40 with Column

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

the class CalcitePlannerTest method showCreateTableTest.

@Test
public void showCreateTableTest() 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.test (k1 string primary key," + "s1 string not null default 'mydefault')", Collections.emptyList());
        Table table = manager.getTableSpaceManager("tblspace1").getTableManager("test").getTable();
        Column c = table.getColumn("s1");
        assertEquals(ColumnTypes.NOTNULL_STRING, c.type);
        assertEquals("mydefault", c.defaultValue.to_string());
        execute(manager, "CREATE TABLE tblspace1.test22 (k1 string not null ," + "s1 string not null, n1 int, primary key(k1,n1))", Collections.emptyList());
        TranslatedQuery translatedQuery = manager.getPlanner().translate("tblspace1", "SHOW CREATE TABLE tblspace1.test", Collections.emptyList(), true, false, true, -1);
        if (translatedQuery.plan.mainStatement instanceof SQLPlannedOperationStatement || translatedQuery.plan.mainStatement instanceof ScanStatement) {
            ScanResult scanResult = (ScanResult) manager.executePlan(translatedQuery.plan, translatedQuery.context, TransactionContext.NO_TRANSACTION);
            DataScanner dataScanner = scanResult.dataScanner;
            String[] columns = dataScanner.getFieldNames();
            List<DataAccessor> records = dataScanner.consume(2);
            TuplesList tuplesList = new TuplesList(columns, records);
            assertTrue(tuplesList.columnNames[0].equalsIgnoreCase("tabledef"));
            Tuple values = (Tuple) records.get(0);
            assertTrue("CREATE TABLE tblspace1.test(k1 string,s1 string not null DEFAULT 'mydefault',PRIMARY KEY(k1))".equalsIgnoreCase(values.get("tabledef").toString()));
        }
        translatedQuery = manager.getPlanner().translate("tblspace1", "SHOW CREATE TABLE tblspace1.test22", Collections.emptyList(), true, false, true, -1);
        if (translatedQuery.plan.mainStatement instanceof SQLPlannedOperationStatement || translatedQuery.plan.mainStatement instanceof ScanStatement) {
            ScanResult scanResult = (ScanResult) manager.executePlan(translatedQuery.plan, translatedQuery.context, TransactionContext.NO_TRANSACTION);
            DataScanner dataScanner = scanResult.dataScanner;
            String[] columns = dataScanner.getFieldNames();
            List<DataAccessor> records = dataScanner.consume(2);
            TuplesList tuplesList = new TuplesList(columns, records);
            assertTrue(tuplesList.columnNames[0].equalsIgnoreCase("tabledef"));
            Tuple values = (Tuple) records.get(0);
            assertTrue("CREATE TABLE tblspace1.test22(k1 string not null,s1 string not null,n1 integer,Primary key(k1,n1))".equalsIgnoreCase(values.get("tabledef").toString()));
        }
    }
}
Also used : ScanResult(herddb.model.ScanResult) Table(herddb.model.Table) MemoryDataStorageManager(herddb.mem.MemoryDataStorageManager) RuntimeProjectedDataAccessor(herddb.model.planner.ProjectOp.ZeroCopyProjection.RuntimeProjectedDataAccessor) DataAccessor(herddb.utils.DataAccessor) RawString(herddb.utils.RawString) SQLPlannedOperationStatement(herddb.model.commands.SQLPlannedOperationStatement) CreateTableSpaceStatement(herddb.model.commands.CreateTableSpaceStatement) DBManager(herddb.core.DBManager) DataScanner(herddb.model.DataScanner) Column(herddb.model.Column) MemoryCommitLogManager(herddb.mem.MemoryCommitLogManager) Tuple(herddb.model.Tuple) MemoryMetadataStorageManager(herddb.mem.MemoryMetadataStorageManager) ScanStatement(herddb.model.commands.ScanStatement) TuplesList(herddb.utils.TuplesList) Test(org.junit.Test)

Aggregations

Column (herddb.model.Column)68 StatementExecutionException (herddb.model.StatementExecutionException)25 ArrayList (java.util.ArrayList)24 Table (herddb.model.Table)23 CompiledSQLExpression (herddb.sql.expressions.CompiledSQLExpression)19 DataAccessor (herddb.utils.DataAccessor)18 HashMap (java.util.HashMap)14 PlannerOp (herddb.model.planner.PlannerOp)12 List (java.util.List)12 Bytes (herddb.utils.Bytes)10 AbstractTableManager (herddb.core.AbstractTableManager)9 RecordFunction (herddb.model.RecordFunction)9 RawString (herddb.utils.RawString)9 IOException (java.io.IOException)9 HashSet (java.util.HashSet)9 RelDataTypeField (org.apache.calcite.rel.type.RelDataTypeField)9 Test (org.junit.Test)9 DataScanner (herddb.model.DataScanner)8 Tuple (herddb.model.Tuple)8 InsertStatement (herddb.model.commands.InsertStatement)8