use of org.apache.ignite.internal.schema.SchemaDescriptor in project ignite-3 by apache.
the class RecordBinaryViewOperationsTest method getAndUpsert.
@Test
public void getAndUpsert() {
SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("id".toUpperCase(), NativeTypes.INT64, false) }, new Column[] { new Column("val".toUpperCase(), NativeTypes.INT64, false) });
RecordView<Tuple> tbl = createTableImpl(schema).recordView();
final Tuple tuple = Tuple.create().set("id", 1L).set("val", 11L);
final Tuple newTuple = Tuple.create().set("id", 1L).set("val", 22L);
assertNull(tbl.get(null, Tuple.create().set("id", 1L)));
// Insert new tuple.
assertNull(tbl.getAndUpsert(null, tuple));
assertEqualsRows(schema, tuple, tbl.get(null, Tuple.create().set("id", 1L)));
// Update exited row.
assertEqualsRows(schema, tuple, tbl.getAndUpsert(null, newTuple));
assertEqualsRows(schema, newTuple, tbl.get(null, Tuple.create().set("id", 1L)));
}
use of org.apache.ignite.internal.schema.SchemaDescriptor in project ignite-3 by apache.
the class RecordBinaryViewOperationsTest method replaceExact.
@Test
public void replaceExact() {
SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("id".toUpperCase(), NativeTypes.INT64, false) }, new Column[] { new Column("val".toUpperCase(), NativeTypes.INT64, false) });
RecordView<Tuple> tbl = createTableImpl(schema).recordView();
final Tuple tuple = Tuple.create().set("id", 1L).set("val", 11L);
final Tuple tuple2 = Tuple.create().set("id", 1L).set("val", 22L);
assertNull(tbl.get(null, Tuple.create().set("id", 1L)));
// Ignore replace operation for non-existed row.
// TODO: IGNITE-14479: Fix default value usage.
// assertTrue(tbl.replace(keyTuple, tuple));
// assertNull(tbl.get(keyTuple));
// assertNull(tbl.get(tbl.tupleBuilder().set("id", 1L).set("val", -1)));
// Insert row.
tbl.insert(null, tuple);
// Replace existed row.
assertTrue(tbl.replace(null, tuple, tuple2));
assertEqualsRows(schema, tuple2, tbl.get(null, Tuple.create().set("id", 1L)));
}
use of org.apache.ignite.internal.schema.SchemaDescriptor in project ignite-3 by apache.
the class RecordBinaryViewOperationsTest method getAll.
@Test
public void getAll() {
SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("id".toUpperCase(), NativeTypes.INT64, false) }, new Column[] { new Column("val".toUpperCase(), NativeTypes.INT64, false) });
RecordView<Tuple> tbl = createTableImpl(schema).recordView();
Tuple rec1 = Tuple.create().set("id", 1L).set("val", 11L);
Tuple rec3 = Tuple.create().set("id", 3L).set("val", 33L);
tbl.upsertAll(null, List.of(rec1, rec3));
Collection<Tuple> res = tbl.getAll(null, List.of(Tuple.create().set("id", 1L), Tuple.create().set("id", 2L), Tuple.create().set("id", 3L)));
assertEquals(2, res.size());
assertTrue(res.contains(rec1));
assertTrue(res.contains(rec1));
}
use of org.apache.ignite.internal.schema.SchemaDescriptor in project ignite-3 by apache.
the class RecordViewOperationsTest method recordView.
/**
* Creates RecordView.
*/
private RecordViewImpl<TestObjectWithAllTypes> recordView() {
ClusterService clusterService = Mockito.mock(ClusterService.class, RETURNS_DEEP_STUBS);
Mockito.when(clusterService.topologyService().localMember().address()).thenReturn(DummyInternalTableImpl.ADDR);
TxManager txManager = new TxManagerImpl(clusterService, new HeapLockManager());
MessagingService messagingService = MessagingServiceTestUtils.mockMessagingService(txManager);
Mockito.when(clusterService.messagingService()).thenReturn(messagingService);
DummyInternalTableImpl table = new DummyInternalTableImpl(new VersionedRowStore(new ConcurrentHashMapPartitionStorage(), txManager), txManager);
Mapper<TestObjectWithAllTypes> recMapper = Mapper.of(TestObjectWithAllTypes.class);
Column[] valCols = { new Column("primitiveByteCol".toUpperCase(), INT8, false), new Column("primitiveShortCol".toUpperCase(), INT16, false), new Column("primitiveIntCol".toUpperCase(), INT32, false), new Column("primitiveFloatCol".toUpperCase(), FLOAT, false), new Column("primitiveDoubleCol".toUpperCase(), DOUBLE, false), new Column("byteCol".toUpperCase(), INT8, true), new Column("shortCol".toUpperCase(), INT16, true), new Column("intCol".toUpperCase(), INT32, true), new Column("longCol".toUpperCase(), INT64, true), new Column("nullLongCol".toUpperCase(), INT64, true), new Column("floatCol".toUpperCase(), FLOAT, true), new Column("doubleCol".toUpperCase(), DOUBLE, true), new Column("dateCol".toUpperCase(), DATE, true), new Column("timeCol".toUpperCase(), time(), true), new Column("dateTimeCol".toUpperCase(), datetime(), true), new Column("timestampCol".toUpperCase(), timestamp(), true), new Column("uuidCol".toUpperCase(), NativeTypes.UUID, true), new Column("bitmaskCol".toUpperCase(), NativeTypes.bitmaskOf(42), true), new Column("stringCol".toUpperCase(), STRING, true), new Column("nullBytesCol".toUpperCase(), BYTES, true), new Column("bytesCol".toUpperCase(), BYTES, true), new Column("numberCol".toUpperCase(), NativeTypes.numberOf(12), true), new Column("decimalCol".toUpperCase(), NativeTypes.decimalOf(19, 3), true) };
SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("primitiveLongCol".toUpperCase(), NativeTypes.INT64, false) }, valCols);
// Validate all types are tested.
Set<NativeTypeSpec> testedTypes = Arrays.stream(valCols).map(c -> c.type().spec()).collect(Collectors.toSet());
Set<NativeTypeSpec> missedTypes = Arrays.stream(NativeTypeSpec.values()).filter(t -> !testedTypes.contains(t)).collect(Collectors.toSet());
assertEquals(Collections.emptySet(), missedTypes);
return new RecordViewImpl<>(table, new DummySchemaManagerImpl(schema), recMapper);
}
use of org.apache.ignite.internal.schema.SchemaDescriptor in project ignite-3 by apache.
the class SchemaValidationTest method stringTypeMatch.
@Test
public void stringTypeMatch() {
SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("id", NativeTypes.INT64, false) }, new Column[] { new Column("valString", NativeTypes.stringOf(3), true) });
RecordView<Tuple> tbl = createTableImpl(schema).recordView();
Tuple tuple = Tuple.create().set("id", 1L);
tbl.insert(null, tuple.set("valString", "qwe"));
tbl.insert(null, tuple.set("valString", "qw"));
tbl.insert(null, tuple.set("valString", "q"));
tbl.insert(null, tuple.set("valString", ""));
tbl.insert(null, tuple.set("valString", null));
// Check string 3 char length and 9 bytes.
tbl.insert(null, tuple.set("valString", "我是谁"));
}
Aggregations