use of com.apple.foundationdb.record.RecordMetaDataBuilder in project fdb-record-layer by FoundationDB.
the class MetaDataValidatorTest method duplicateByteArrayRecordTypeKey.
@Test
public void duplicateByteArrayRecordTypeKey() {
RecordMetaDataBuilder metaData = RecordMetaData.newBuilder().setRecords(TestRecords1Proto.getDescriptor());
byte[] recordTypeKey = new byte[] { (byte) 0x0f, (byte) 0xdb };
metaData.getRecordType("MySimpleRecord").setRecordTypeKey(recordTypeKey);
metaData.getRecordType("MyOtherRecord").setRecordTypeKey(Arrays.copyOf(recordTypeKey, recordTypeKey.length));
assertInvalid("Same record type key", metaData);
}
use of com.apple.foundationdb.record.RecordMetaDataBuilder in project fdb-record-layer by FoundationDB.
the class MetaDataValidatorTest method badIndexField.
@Test
public void badIndexField() {
RecordMetaDataBuilder metaData = RecordMetaData.newBuilder().setRecords(TestRecords1Proto.getDescriptor());
metaData.addIndex("MySimpleRecord", "no_such_field");
assertInvalid(KeyExpression.InvalidExpressionException.class, "Descriptor MySimpleRecord does not have field: no_such_field", metaData);
}
use of com.apple.foundationdb.record.RecordMetaDataBuilder in project fdb-record-layer by FoundationDB.
the class MetaDataValidatorTest method badPrimaryKeyType.
@Test
public void badPrimaryKeyType() {
RecordMetaDataBuilder metaData = RecordMetaData.newBuilder().setRecords(TestRecords4Proto.getDescriptor());
metaData.getRecordType("RestaurantReviewer").setPrimaryKey(Key.Expressions.field("stats"));
assertInvalid(Query.InvalidExpressionException.class, "stats is a nested message, but accessed as a scalar", metaData);
}
use of com.apple.foundationdb.record.RecordMetaDataBuilder in project fdb-record-layer by FoundationDB.
the class MetaDataValidatorTest method duplicateEnumSubspaceKey.
@Test
public void duplicateEnumSubspaceKey() {
// This exact use case is somewhat contrived, but one could imagine maintaining an enum with one entry per index
RecordMetaDataBuilder metaData = RecordMetaData.newBuilder().setRecords(TestRecords1Proto.getDescriptor());
final Descriptors.EnumValueDescriptor enumValueDescriptor = TestRecordsEnumProto.MyShapeRecord.Size.SMALL.getValueDescriptor();
metaData.getIndex("MySimpleRecord$str_value_indexed").setSubspaceKey((long) enumValueDescriptor.getNumber());
metaData.getIndex("MySimpleRecord$num_value_3_indexed").setSubspaceKey(enumValueDescriptor);
assertInvalid("Same subspace key " + enumValueDescriptor.getNumber() + " used by both", metaData);
}
use of com.apple.foundationdb.record.RecordMetaDataBuilder in project fdb-record-layer by FoundationDB.
the class MetaDataValidatorTest method badFormerRemovedBeforeAdded.
@Test
public void badFormerRemovedBeforeAdded() {
RecordMetaDataBuilder metaData = RecordMetaData.newBuilder().setRecords(RecordMetaData.build(TestRecords1Proto.getDescriptor()).toProto().toBuilder().addFormerIndexes(RecordMetaDataProto.FormerIndex.newBuilder().setSubspaceKey(ByteString.copyFrom(Tuple.from("dropped_index").pack())).setAddedVersion(2).setRemovedVersion(1)).build());
assertInvalid("Former index has added version 2 which is greater than the removed version 1", metaData);
RecordMetaDataProto.MetaData.Builder protoBuilder = metaData.build(false).toProto().toBuilder();
protoBuilder.getFormerIndexesBuilder(0).setFormerName("dropped_index");
metaData = RecordMetaData.newBuilder().setRecords(protoBuilder.build());
assertInvalid("Former index dropped_index has added version 2 which is greater than the removed version 1", metaData);
}
Aggregations