in hugegraph-core/src/main/java/org/apache/hugegraph/schema/builder/IndexLabelBuilder.java [130:173]
private boolean hasSameProperties(IndexLabel existedIndexLabel) {
// baseType is null, it means HugeType.SYS_SCHEMA
if ((this.baseType == null &&
existedIndexLabel.baseType() != HugeType.SYS_SCHEMA) ||
(this.baseType != null &&
this.baseType != existedIndexLabel.baseType())) {
return false;
}
SchemaLabel schemaLabel = this.loadBaseLabel();
if (!schemaLabel.id().equals(existedIndexLabel.baseValue())) {
return false;
}
if (this.indexType == null) {
// The default index type is SECONDARY
if (existedIndexLabel.indexType() != IndexType.SECONDARY) {
return false;
}
} else {
// NOTE: IndexType.RANGE.isRange() return false
if (this.indexType == IndexType.RANGE) {
// existedIndexLabel index type format: RANGE_INT, RANGE_LONG
if (!existedIndexLabel.indexType().isRange()) {
return false;
}
} else if (this.indexType != existedIndexLabel.indexType()) {
return false;
}
}
List<Id> existedIndexFieldIds = existedIndexLabel.indexFields();
if (this.indexFields.size() != existedIndexFieldIds.size()) {
return false;
}
for (String field : this.indexFields) {
PropertyKey propertyKey = graph().propertyKey(field);
if (!existedIndexFieldIds.contains(propertyKey.id())) {
return false;
}
}
// all properties are same, return true.
return true;
}