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