Implement edge type indices (#1542)

Implement edge type indices (#1542 )
This commit is contained in:
gvolfing
2024-03-08 08:44:48 +01:00
committed by GitHub
parent 5ca98f9543
commit 619b01f3f8
96 changed files with 3390 additions and 62 deletions

View File

@@ -37,6 +37,10 @@ memgraph::storage::durability::WalDeltaData::Type StorageMetadataOperationToWalD
return memgraph::storage::durability::WalDeltaData::Type::LABEL_INDEX_CREATE;
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_DROP:
return memgraph::storage::durability::WalDeltaData::Type::LABEL_INDEX_DROP;
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_CREATE:
return memgraph::storage::durability::WalDeltaData::Type::EDGE_INDEX_CREATE;
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_DROP:
return memgraph::storage::durability::WalDeltaData::Type::EDGE_INDEX_DROP;
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_STATS_SET:
return memgraph::storage::durability::WalDeltaData::Type::LABEL_INDEX_STATS_SET;
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_STATS_CLEAR:
@@ -280,6 +284,41 @@ class DeltaGenerator final {
case memgraph::storage::durability::StorageMetadataOperation::UNIQUE_CONSTRAINT_DROP:
data.operation_label_properties.label = label;
data.operation_label_properties.properties = properties;
break;
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_DROP:
MG_ASSERT(false, "Invalid function call!");
}
data_.emplace_back(timestamp_, data);
}
}
void AppendEdgeTypeOperation(memgraph::storage::durability::StorageMetadataOperation operation,
const std::string &edge_type) {
auto edge_type_id = memgraph::storage::EdgeTypeId::FromUint(mapper_.NameToId(edge_type));
wal_file_.AppendOperation(operation, edge_type_id, timestamp_);
if (valid_) {
UpdateStats(timestamp_, 1);
memgraph::storage::durability::WalDeltaData data;
data.type = StorageMetadataOperationToWalDeltaDataType(operation);
switch (operation) {
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::EDGE_TYPE_INDEX_DROP:
data.operation_edge_type.edge_type = edge_type;
break;
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_DROP:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_STATS_CLEAR:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_PROPERTY_INDEX_STATS_CLEAR:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_INDEX_STATS_SET:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_PROPERTY_INDEX_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::LABEL_PROPERTY_INDEX_DROP:
case memgraph::storage::durability::StorageMetadataOperation::EXISTENCE_CONSTRAINT_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::EXISTENCE_CONSTRAINT_DROP:;
case memgraph::storage::durability::StorageMetadataOperation::LABEL_PROPERTY_INDEX_STATS_SET:
case memgraph::storage::durability::StorageMetadataOperation::UNIQUE_CONSTRAINT_CREATE:
case memgraph::storage::durability::StorageMetadataOperation::UNIQUE_CONSTRAINT_DROP:
MG_ASSERT(false, "Invalid function call!");
}
data_.emplace_back(timestamp_, data);
}