pub struct MetricsStorage<S>where
S: StorageClient,{ /* private fields */ }Implementations§
Source§impl<S> MetricsStorage<S>where
S: StorageClient,
impl<S> MetricsStorage<S>where
S: StorageClient,
pub fn new(inner: S) -> MetricsStorage<S>
pub fn with_stats(inner: S, stats: Arc<StatsManager>) -> MetricsStorage<S>
pub fn into_inner(self) -> S
Trait Implementations§
Source§impl<S> AutoCommitBatchOps for MetricsStorage<S>where
S: StorageClient + AutoCommitBatchOps,
impl<S> AutoCommitBatchOps for MetricsStorage<S>where
S: StorageClient + AutoCommitBatchOps,
fn begin_auto_commit_batch( &self, ) -> Result<Arc<AutoCommitBatchWindow>, StorageError>
fn bind_auto_commit_statement( &self, window: &Arc<AutoCommitBatchWindow>, ) -> Result<MetricsStorage<S>, StorageError>
fn finalize_auto_commit_batch( &self, window: &AutoCommitBatchWindow, ) -> Result<(), StorageError>
Source§fn bind_auto_commit_writer(
&self,
_window: &Arc<AutoCommitBatchWindow>,
) -> Result<Box<dyn StorageWriter + '_>, StorageError>
fn bind_auto_commit_writer( &self, _window: &Arc<AutoCommitBatchWindow>, ) -> Result<Box<dyn StorageWriter + '_>, StorageError>
Object-safe variant of
Self::bind_auto_commit_statement: returns
the bound statement storage as a boxed crate::StorageWriter
carrying the window’s operation context (shared undo log in group
mode), so writers behind a dyn QueryStorage handle can join the
window. The default implementation is not_supported.Source§impl<S> AutoCommitGroupOps for MetricsStorage<S>where
S: StorageClient + AutoCommitGroupOps,
impl<S> AutoCommitGroupOps for MetricsStorage<S>where
S: StorageClient + AutoCommitGroupOps,
Source§fn begin_auto_commit_group(
&self,
) -> Result<Arc<AutoCommitBatchWindow>, StorageError>
fn begin_auto_commit_group( &self, ) -> Result<Arc<AutoCommitBatchWindow>, StorageError>
Open a group window (gate + shared snapshots + shared write timestamp).
Source§fn finalize_auto_commit_group(
&self,
window: &AutoCommitBatchWindow,
) -> Result<(), StorageError>
fn finalize_auto_commit_group( &self, window: &AutoCommitBatchWindow, ) -> Result<(), StorageError>
Single group commit point: one fsync, barrier advance, one ts commit.
Source§fn rollback_auto_commit_group(
&self,
_window: &AutoCommitBatchWindow,
) -> Result<(), StorageError>
fn rollback_auto_commit_group( &self, _window: &AutoCommitBatchWindow, ) -> Result<(), StorageError>
Roll back every statement bound to this group via its shared undo log,
then release the window’s snapshots and gate. Default: not supported.
Source§impl<S> Clone for MetricsStorage<S>where
S: StorageClient + Clone,
impl<S> Clone for MetricsStorage<S>where
S: StorageClient + Clone,
Source§fn clone(&self) -> MetricsStorage<S>
fn clone(&self) -> MetricsStorage<S>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<S> ColumnStatsReader for MetricsStorage<S>where
S: StorageClient,
impl<S> ColumnStatsReader for MetricsStorage<S>where
S: StorageClient,
Source§fn vertex_column_stats(
&self,
space: &str,
tag: &str,
column: &str,
) -> Option<Arc<ColumnStatsSnapshot>>
fn vertex_column_stats( &self, space: &str, tag: &str, column: &str, ) -> Option<Arc<ColumnStatsSnapshot>>
Snapshot of one property column of
tag inside space.Source§fn edge_column_stats(
&self,
space: &str,
edge_type: &str,
column: &str,
) -> Option<Arc<ColumnStatsSnapshot>>
fn edge_column_stats( &self, space: &str, edge_type: &str, column: &str, ) -> Option<Arc<ColumnStatsSnapshot>>
Snapshot of one property column of
edge_type inside space.Source§fn vertex_table_stats(
&self,
space: &str,
tag: &str,
) -> Option<Arc<TableCardinalitySnapshot>>
fn vertex_table_stats( &self, space: &str, tag: &str, ) -> Option<Arc<TableCardinalitySnapshot>>
Table-level cardinality of vertex tag
tag inside space.Source§fn edge_table_stats(
&self,
space: &str,
edge_type: &str,
) -> Option<Arc<TableCardinalitySnapshot>>
fn edge_table_stats( &self, space: &str, edge_type: &str, ) -> Option<Arc<TableCardinalitySnapshot>>
Source§fn stats_epoch(&self) -> u64
fn stats_epoch(&self) -> u64
Monotonic data-version stamp: changes whenever data has been written,
independent of schema changes. Used by the optimizer’s statistics
cache to detect stale estimates after DML. Read more
Source§impl<S> Debug for MetricsStorage<S>where
S: StorageClient,
impl<S> Debug for MetricsStorage<S>where
S: StorageClient,
Source§impl<S> StorageAdmin for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageAdmin for MetricsStorage<S>where
S: StorageClient,
fn load_from_disk(&mut self) -> Result<(), StorageError>
fn repair_dangling_edges(&mut self, space: &str) -> Result<usize, StorageError>
fn save_to_disk(&self) -> Result<(), StorageError>
fn get_storage_stats(&self) -> StorageStats
fn get_db_path(&self) -> &str
fn find_dangling_edges(&self, space: &str) -> Result<Vec<Edge>, StorageError>
Source§fn purge_expired(
&self,
space: &str,
target: Option<PurgeTarget<'_>>,
) -> Result<Vec<TtlPurgeEntry>, StorageError>
fn purge_expired( &self, space: &str, target: Option<PurgeTarget<'_>>, ) -> Result<Vec<TtlPurgeEntry>, StorageError>
Physically delete TTL-expired rows. Read more
Source§impl<S> StorageAuthOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageAuthOps for MetricsStorage<S>where
S: StorageClient,
fn change_password(&mut self, info: &PasswordInfo) -> Result<bool, StorageError>
fn create_user(&mut self, info: &UserInfo) -> Result<bool, StorageError>
fn alter_user(&mut self, info: &UserAlterInfo) -> Result<bool, StorageError>
fn drop_user(&mut self, username: &str) -> Result<bool, StorageError>
fn grant_role( &mut self, username: &str, space_id: i64, role: RoleType, ) -> Result<bool, StorageError>
fn revoke_role( &mut self, username: &str, space_id: i64, ) -> Result<bool, StorageError>
fn user_exists(&self, username: &str) -> bool
fn list_users(&self) -> Vec<String>
fn get_user(&self, username: &str) -> Option<UserInfo>
fn update_last_login(&self, username: &str) -> Result<bool, StorageError>
fn list_user_roles(&self, username: &str) -> Vec<(i64, RoleType)>
fn list_all_user_roles(&self) -> Vec<(String, Vec<(i64, RoleType)>)>
Source§impl<S> StorageCommitOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageCommitOps for MetricsStorage<S>where
S: StorageClient,
fn commit_staged_writes( &self, transaction_id: TransactionId, intents: &[OutboxIntent], ) -> Result<CommitLsn, StorageError>
fn abort_staged_writes( &self, transaction_id: TransactionId, ) -> Result<(), StorageError>
fn recover_outbox_projection( &self, sync_manager: &SyncManager, ) -> Result<usize, StorageError>
fn commit_staged_writes_with_durability( &self, transaction_id: TransactionId, intents: &[OutboxIntent], _durability: DurabilityLevel, ) -> Result<CommitLsn, StorageError>
Source§impl<S> StorageGcOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageGcOps for MetricsStorage<S>where
S: StorageClient,
fn is_index_gc_running(&self) -> bool
fn start_index_gc(&self) -> Option<BackgroundTaskHandle>
fn stop_index_gc(&self)
Source§impl<S> StorageOperationContextOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageOperationContextOps for MetricsStorage<S>where
S: StorageClient,
fn bind_auto_commit_context(&self) -> Result<MetricsStorage<S>, StorageError>
fn bind_operation_context( &self, context: StorageOperationContext, ) -> MetricsStorage<S>
Source§fn bind_read_operation_context(&self) -> Result<MetricsStorage<S>, StorageError>
fn bind_read_operation_context(&self) -> Result<MetricsStorage<S>, StorageError>
Bind a read-only statement context with a fixed snapshot timestamp. Read more
fn operation_context(&self) -> Option<Arc<StorageOperationContext>>
Source§fn finalize_operation(&self, committed: bool) -> Result<(), StorageError>
fn finalize_operation(&self, committed: bool) -> Result<(), StorageError>
Finalize an operation-owned auto-commit timestamp. Read more
Source§impl<S> StoragePersistenceOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StoragePersistenceOps for MetricsStorage<S>where
S: StorageClient,
fn flush(&self) -> Result<(), StorageError>
fn save_data(&self) -> Result<(), StorageError>
fn save_data_to_dir(&self, dir: &Path) -> Result<(), StorageError>
fn create_checkpoint(&self) -> Result<Option<CheckpointStats>, StorageError>
fn verify_snapshot(&self, snapshot_id: u64) -> Result<bool, StorageError>
fn cleanup_snapshots(&self) -> Result<usize, StorageError>
fn snapshot_stats(&self) -> SnapshotStats
fn persistence_diagnostics(&self) -> Option<PersistenceDiagnostics>
fn compact(&self, config: &CompactConfig) -> Result<(), StorageError>
fn auto_flush_if_needed(&self) -> Result<bool, StorageError>
fn auto_checkpoint_if_needed( &self, ) -> Result<Option<CheckpointStats>, StorageError>
fn should_flush(&self) -> bool
fn should_checkpoint(&self) -> bool
fn set_outbox_materialized_lsn_provider( &self, _provider: Arc<dyn Fn() -> Result<Option<CommitLsn>, StorageError> + Send + Sync>, )
Source§impl<S> StorageReader for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageReader for MetricsStorage<S>where
S: StorageClient,
fn get_vertex( &self, space: &str, tag: &str, id: &VertexId, ) -> Result<Option<Vertex>, StorageError>
fn scan_vertices_by_tag( &self, space: &str, tag: &str, ) -> Result<Vec<Vertex>, StorageError>
Source§fn get_vertex_projected(
&self,
space: &str,
tag: &str,
id: &VertexId,
projection: &[Arc<str>],
) -> Result<Option<Vertex>, StorageError>
fn get_vertex_projected( &self, space: &str, tag: &str, id: &VertexId, projection: &[Arc<str>], ) -> Result<Option<Vertex>, StorageError>
Fetch a vertex with only the requested properties. Read more
fn scan_vertices(&self, space: &str) -> Result<Vec<Vertex>, StorageError>
fn get_edge( &self, space: &str, src: &VertexId, dst: &VertexId, edge_type: &str, rank: i64, ) -> Result<Option<Edge>, StorageError>
fn get_node_edges( &self, space: &str, node_id: &VertexId, direction: EdgeDirection, edge_types: &[String], ) -> Result<Vec<Edge>, StorageError>
fn scan_edges_by_type( &self, space: &str, edge_type: &str, ) -> Result<Vec<Edge>, StorageError>
fn scan_all_edges(&self, space: &str) -> Result<Vec<Edge>, StorageError>
fn count_vertices_by_tag( &self, space: &str, tag: &str, ) -> Result<u64, StorageError>
fn count_edges_by_type( &self, space: &str, edge_type: &str, ) -> Result<u64, StorageError>
fn scan_vertices_by_tag_paginated( &self, space: &str, tag: &str, offset: usize, limit: usize, ) -> Result<Vec<Vertex>, StorageError>
fn scan_vertices_by_prop( &self, space: &str, tag: &str, prop: &str, value: &Value, ) -> Result<Vec<Vertex>, StorageError>
Source§fn get_edge_projected(
&self,
space: &str,
src: &VertexId,
dst: &VertexId,
edge_type: &str,
rank: i64,
projection: &[Arc<str>],
) -> Result<Option<Edge>, StorageError>
fn get_edge_projected( &self, space: &str, src: &VertexId, dst: &VertexId, edge_type: &str, rank: i64, projection: &[Arc<str>], ) -> Result<Option<Edge>, StorageError>
Fetch an edge with only the requested properties. Read more
Source§fn get_node_edges_projected(
&self,
space: &str,
node_id: &VertexId,
direction: EdgeDirection,
edge_types: &[String],
projection: Option<&[Arc<str>]>,
limit: Option<usize>,
) -> Result<Vec<Edge>, StorageError>
fn get_node_edges_projected( &self, space: &str, node_id: &VertexId, direction: EdgeDirection, edge_types: &[String], projection: Option<&[Arc<str>]>, limit: Option<usize>, ) -> Result<Vec<Edge>, StorageError>
Filtered and projected per-node edge fanout. Read more
Source§fn get_vertices_batch(
&self,
space: &str,
tag: &str,
ids: &[VertexId],
) -> Result<Vec<Option<Vertex>>, StorageError>
fn get_vertices_batch( &self, space: &str, tag: &str, ids: &[VertexId], ) -> Result<Vec<Option<Vertex>>, StorageError>
Batch vertex point lookups with the schema resolved once. Read more
Source§fn get_vertices_projected_batch(
&self,
space: &str,
tag: &str,
ids: &[VertexId],
projection: &[Arc<str>],
) -> Result<Vec<Option<Vertex>>, StorageError>
fn get_vertices_projected_batch( &self, space: &str, tag: &str, ids: &[VertexId], projection: &[Arc<str>], ) -> Result<Vec<Option<Vertex>>, StorageError>
Batch vertex lookups decoding only the requested properties. Read more
Source§fn neighbor_dst_ids_batch(
&self,
space: &str,
src_ids: &[VertexId],
direction: EdgeDirection,
edge_types: &[String],
) -> Result<Vec<Vec<VertexId>>, StorageError>
fn neighbor_dst_ids_batch( &self, space: &str, src_ids: &[VertexId], direction: EdgeDirection, edge_types: &[String], ) -> Result<Vec<Vec<VertexId>>, StorageError>
Lightweight batch neighbor read used by de-materialized expand hops
(
id_only/count_only). Resolves the edge-type schema once for the
batch and reads MVCC neighbors directly from the CSR, skipping
EdgeRecord materialization and per-edge property decoding. Read moreSource§fn out_degree_batch(
&self,
space: &str,
src_ids: &[VertexId],
direction: EdgeDirection,
edge_types: &[String],
) -> Result<Vec<usize>, StorageError>
fn out_degree_batch( &self, space: &str, src_ids: &[VertexId], direction: EdgeDirection, edge_types: &[String], ) -> Result<Vec<usize>, StorageError>
Batch out-degree read for count-only expand tails. Counts distinct
edges per source id, in input order.
Source§fn scan_edges_by_type_paginated(
&self,
space: &str,
edge_type: &str,
offset: usize,
limit: usize,
) -> Result<Vec<Edge>, StorageError>
fn scan_edges_by_type_paginated( &self, space: &str, edge_type: &str, offset: usize, limit: usize, ) -> Result<Vec<Edge>, StorageError>
Scan edges of a specific type with pagination support.
Returns at most
limit edges starting from offset.
The offset parameter is 0-based.
The limit parameter controls the page size.Source§fn lookup_edges_by_property_range(
&self,
space: &str,
edge_type: &str,
prop_name: &str,
lower: Option<&Value>,
upper: Option<&Value>,
include_lower: bool,
include_upper: bool,
) -> Result<Vec<Edge>, StorageError>
fn lookup_edges_by_property_range( &self, space: &str, edge_type: &str, prop_name: &str, lower: Option<&Value>, upper: Option<&Value>, include_lower: bool, include_upper: bool, ) -> Result<Vec<Edge>, StorageError>
Look up edges of
edge_type whose prop_name value falls within
[lower, upper) using the per-table edge property index. Read morefn lookup_index( &self, space: &str, index: &str, value: &Value, ) -> Result<Vec<Value>, StorageError>
fn get_vertex_with_schema( &self, space: &str, tag: &str, id: &Value, ) -> Result<Option<(TagInfo, Vec<u8>)>, StorageError>
fn get_edge_with_schema( &self, space: &str, edge_type: &str, src: &Value, dst: &Value, ) -> Result<Option<(EdgeTypeInfo, Vec<u8>)>, StorageError>
fn scan_vertices_with_schema( &self, space: &str, tag: &str, ) -> Result<Vec<(TagInfo, Vec<u8>)>, StorageError>
fn scan_edges_with_schema( &self, space: &str, edge_type: &str, ) -> Result<Vec<(EdgeTypeInfo, Vec<u8>)>, StorageError>
Source§fn create_vertex_cursor(
&self,
space: &str,
options: &ScanOptions,
) -> Result<Box<dyn VertexCursor>, StorageError>
fn create_vertex_cursor( &self, space: &str, options: &ScanOptions, ) -> Result<Box<dyn VertexCursor>, StorageError>
Create a lazy vertex scan cursor. Read more
Source§fn create_edge_cursor(
&self,
space: &str,
options: &ScanOptions,
) -> Result<Box<dyn EdgeCursor>, StorageError>
fn create_edge_cursor( &self, space: &str, options: &ScanOptions, ) -> Result<Box<dyn EdgeCursor>, StorageError>
Create a lazy edge scan cursor. Read more
Source§fn create_index_cursor(
&self,
plan: &IndexScanPlan,
) -> Result<Box<dyn IndexCursor<Row = IndexRow>>, StorageError>
fn create_index_cursor( &self, plan: &IndexScanPlan, ) -> Result<Box<dyn IndexCursor<Row = IndexRow>>, StorageError>
Create an index cursor for the given index and predicate. Read more
Source§fn layout_version(&self) -> u64
fn layout_version(&self) -> u64
Monotonic physical layout version of the vertex/edge layout. Read more
Source§fn vertex_id_domain(&self, space: &str) -> Option<Range<i64>>
fn vertex_id_domain(&self, space: &str) -> Option<Range<i64>>
Self-proven vertex-id domain covering a whole space. Read more
Source§fn enable_edge_property_index(
&self,
space: &str,
edge_type: &str,
pool_capacity: u64,
) -> Result<bool, StorageError>
fn enable_edge_property_index( &self, space: &str, edge_type: &str, pool_capacity: u64, ) -> Result<bool, StorageError>
Enable the per-table edge property index for
edge_type, building it
from existing edge data. Returns true if the index was enabled.Source§fn has_edge_property_index(
&self,
space: &str,
edge_type: &str,
) -> Result<bool, StorageError>
fn has_edge_property_index( &self, space: &str, edge_type: &str, ) -> Result<bool, StorageError>
Whether the per-table edge property index is enabled for
edge_type.Source§fn disable_edge_property_index(
&self,
space: &str,
edge_type: &str,
) -> Result<(), StorageError>
fn disable_edge_property_index( &self, space: &str, edge_type: &str, ) -> Result<(), StorageError>
Drop the per-table edge property index for
edge_type.fn get_space(&self, space: &str) -> Result<Option<SpaceInfo>, StorageError>
fn get_space_by_id( &self, space_id: u64, ) -> Result<Option<SpaceInfo>, StorageError>
fn list_spaces(&self) -> Result<Vec<SpaceInfo>, StorageError>
fn get_space_id(&self, space: &str) -> Result<u64, StorageError>
fn space_exists(&self, space: &str) -> bool
fn get_tag( &self, space: &str, tag: &str, ) -> Result<Option<TagInfo>, StorageError>
fn get_edge_type( &self, space: &str, edge_type: &str, ) -> Result<Option<EdgeTypeInfo>, StorageError>
fn list_edge_types( &self, space: &str, ) -> Result<Vec<EdgeTypeInfo>, StorageError>
Source§fn resolve_edge_type_name(
&self,
space: &str,
hash: u32,
) -> Result<Option<String>, StorageError>
fn resolve_edge_type_name( &self, space: &str, hash: u32, ) -> Result<Option<String>, StorageError>
Resolve an edge type name from the storage-level edge type hash. Read more
fn get_tag_index( &self, space: &str, index: &str, ) -> Result<Option<Index>, StorageError>
fn list_tag_indexes(&self, space: &str) -> Result<Vec<Index>, StorageError>
fn get_edge_index( &self, space: &str, index: &str, ) -> Result<Option<Index>, StorageError>
fn list_edge_indexes(&self, space: &str) -> Result<Vec<Index>, StorageError>
Source§fn get_vertex_version_history(
&self,
space: &str,
tag: &str,
) -> Result<Option<LabelVersionHistory>, StorageError>
fn get_vertex_version_history( &self, space: &str, tag: &str, ) -> Result<Option<LabelVersionHistory>, StorageError>
Schema version history queries
Query version history for a specific vertex tag
Source§fn get_edge_version_history(
&self,
space: &str,
edge_type: &str,
) -> Result<Option<LabelVersionHistory>, StorageError>
fn get_edge_version_history( &self, space: &str, edge_type: &str, ) -> Result<Option<LabelVersionHistory>, StorageError>
Query version history for a specific edge type
Source§fn get_vertex_schema_changes(
&self,
space: &str,
tag: &str,
from_version: u64,
to_version: u64,
) -> Result<Vec<PropertyChange>, StorageError>
fn get_vertex_schema_changes( &self, space: &str, tag: &str, from_version: u64, to_version: u64, ) -> Result<Vec<PropertyChange>, StorageError>
Get schema changes between two versions for a vertex tag
Source§fn get_edge_schema_changes(
&self,
space: &str,
edge_type: &str,
from_version: u64,
to_version: u64,
) -> Result<Vec<PropertyChange>, StorageError>
fn get_edge_schema_changes( &self, space: &str, edge_type: &str, from_version: u64, to_version: u64, ) -> Result<Vec<PropertyChange>, StorageError>
Get schema changes between two versions for an edge type
Source§fn detect_vertex_breaking_changes(
&self,
space: &str,
tag: &str,
from_version: u64,
to_version: u64,
) -> Result<Vec<PropertyChange>, StorageError>
fn detect_vertex_breaking_changes( &self, space: &str, tag: &str, from_version: u64, to_version: u64, ) -> Result<Vec<PropertyChange>, StorageError>
Detect breaking changes between versions for a vertex tag
Source§fn detect_edge_breaking_changes(
&self,
space: &str,
edge_type: &str,
from_version: u64,
to_version: u64,
) -> Result<Vec<PropertyChange>, StorageError>
fn detect_edge_breaking_changes( &self, space: &str, edge_type: &str, from_version: u64, to_version: u64, ) -> Result<Vec<PropertyChange>, StorageError>
Detect breaking changes between versions for an edge type
fn list_migration_history( &self, space: &str, label: &str, is_edge: bool, ) -> Result<Vec<MigrationHistoryRecord>, StorageError>
fn get_applied_versions( &self, space: &str, label: &str, is_edge: bool, ) -> Result<Vec<u64>, StorageError>
fn record_migration_history( &self, record: MigrationHistoryRecord, ) -> Result<(), StorageError>
fn list_all_migration_history( &self, ) -> Result<Vec<MigrationHistoryRecord>, StorageError>
Source§fn edge_types_ttl_active(
&self,
space: &str,
edge_types: &[String],
) -> Result<bool, StorageError>
fn edge_types_ttl_active( &self, space: &str, edge_types: &[String], ) -> Result<bool, StorageError>
Whether any edge type reached by a topology fast path has TTL
configured. Read more
Source§fn scan_edges_by_type_parallel(
&self,
space: &str,
edge_type: &str,
shards: usize,
) -> Result<Vec<Edge>, StorageError>
fn scan_edges_by_type_parallel( &self, space: &str, edge_type: &str, shards: usize, ) -> Result<Vec<Edge>, StorageError>
Table-sharded parallel variant of
Self::scan_edges_by_type: the
type’s edge tables fan out across shards rayon shards sharing one
read timestamp, concatenated in key order. Single-table types fall
back to the serial scan internally. The default body is the serial
scan, so adapters and test doubles inherit it unchanged.Source§impl<S> StorageRecoveryOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageRecoveryOps for MetricsStorage<S>where
S: StorageClient,
fn needs_recovery(&self) -> bool
fn recover_from_wal(&self) -> Result<RecoveryStats, StorageError>
fn recover_from_wal_with_config( &self, config: RecoveryConfig, ) -> Result<RecoveryStats, StorageError>
fn init_with_recovery(&self) -> Result<Option<RecoveryStats>, StorageError>
Source§impl<S> StorageSchemaContextOps for MetricsStorage<S>where
S: StorageClient + StorageSchemaContextOps,
impl<S> StorageSchemaContextOps for MetricsStorage<S>where
S: StorageClient + StorageSchemaContextOps,
fn get_schema_manager(&self) -> Option<Arc<SchemaManager>>
fn get_index_metadata_manager(&self) -> Option<Arc<dyn IndexMetadataManager>>
Source§impl<S> StorageSchemaOps for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageSchemaOps for MetricsStorage<S>where
S: StorageClient,
fn create_space(&mut self, space: &mut SpaceInfo) -> Result<bool, StorageError>
fn drop_space(&mut self, space: &str) -> Result<bool, StorageError>
fn clear_space(&mut self, space: &str) -> Result<bool, StorageError>
fn create_tag( &mut self, space: &str, tag: &TagInfo, ) -> Result<u32, StorageError>
fn alter_tag( &mut self, space: &str, tag: &str, additions: Vec<PropertyDef>, deletions: Vec<String>, new_comment: Option<String>, ) -> Result<bool, StorageError>
fn rename_vertex_property( &mut self, label: u32, old_name: &str, new_name: &str, ) -> Result<(), StorageError>
fn rename_tag_property( &mut self, space: &str, tag: &str, old_name: &str, new_name: &str, ) -> Result<bool, StorageError>
fn rename_tag( &mut self, space: &str, old_name: &str, new_name: &str, ) -> Result<bool, StorageError>
fn drop_tag(&mut self, space: &str, tag: &str) -> Result<bool, StorageError>
fn create_edge_type( &mut self, space: &str, edge: &EdgeTypeInfo, ) -> Result<u32, StorageError>
fn alter_edge_type( &mut self, space: &str, edge_type: &str, additions: Vec<PropertyDef>, deletions: Vec<String>, new_comment: Option<String>, ) -> Result<bool, StorageError>
fn rename_edge_type( &mut self, space: &str, old_name: &str, new_name: &str, ) -> Result<bool, StorageError>
fn rename_edge_property( &mut self, space: &str, edge_type: &str, old_name: &str, new_name: &str, ) -> Result<bool, StorageError>
fn update_edge_endpoints( &mut self, space: &str, edge_type: &str, src_tag: &str, dst_tag: &str, ) -> Result<bool, StorageError>
fn drop_edge_type( &mut self, space: &str, edge_type: &str, ) -> Result<bool, StorageError>
fn create_tag_index( &mut self, space: &str, info: &Index, ) -> Result<bool, StorageError>
fn drop_tag_index( &mut self, space: &str, index: &str, ) -> Result<bool, StorageError>
fn rebuild_tag_index( &mut self, space: &str, index: &str, ) -> Result<bool, StorageError>
fn create_edge_index( &mut self, space: &str, info: &Index, ) -> Result<bool, StorageError>
fn drop_edge_index( &mut self, space: &str, index: &str, ) -> Result<bool, StorageError>
fn rebuild_edge_index( &mut self, space: &str, index: &str, ) -> Result<bool, StorageError>
fn create_tag_with_estimate( &mut self, space: &str, tag: &TagInfo, estimated_rows: Option<u64>, ) -> Result<u32, StorageError>
Source§impl<S> StorageSnapshotOps for MetricsStorage<S>where
S: StorageClient + StorageSnapshotOps + 'static,
impl<S> StorageSnapshotOps for MetricsStorage<S>where
S: StorageClient + StorageSnapshotOps + 'static,
fn get_freeze_stats(&self) -> Option<FreezeStats>
fn trigger_background_freeze(&self) -> Result<(), StorageError>
Source§impl<S> StorageSyncContextOps for MetricsStorage<S>where
S: StorageClient + StorageSyncContextOps,
impl<S> StorageSyncContextOps for MetricsStorage<S>where
S: StorageClient + StorageSyncContextOps,
fn get_sync_manager(&self) -> Option<Arc<SyncManager>>
Source§impl<S> StorageTtlPurgeOps for MetricsStorage<S>where
S: StorageClient + StorageTtlPurgeOps,
impl<S> StorageTtlPurgeOps for MetricsStorage<S>where
S: StorageClient + StorageTtlPurgeOps,
Source§fn start_ttl_purge(&self, interval: Duration)
fn start_ttl_purge(&self, interval: Duration)
Start the periodic purge sweep at
interval; a zero interval leaves
the sweep stopped. Repeated calls keep the running sweep.fn stop_ttl_purge(&self)
fn is_ttl_purge_running(&self) -> bool
Source§impl<S> StorageWriter for MetricsStorage<S>where
S: StorageClient,
impl<S> StorageWriter for MetricsStorage<S>where
S: StorageClient,
fn insert_vertex( &mut self, space: &str, vertex: Vertex, ) -> Result<VertexId, StorageError>
fn insert_edge(&mut self, space: &str, edge: Edge) -> Result<(), StorageError>
fn update_vertex( &mut self, space: &str, vertex: Vertex, ) -> Result<(), StorageError>
fn update_vertex_replace( &mut self, space: &str, vertex: Vertex, ) -> Result<(), StorageError>
fn delete_vertex_with_edges( &mut self, space: &str, tag: &str, id: &VertexId, ) -> Result<(), StorageError>
fn batch_delete_vertices_with_edges( &mut self, space: &str, tag: &str, ids: &[VertexId], ) -> Result<usize, StorageError>
fn batch_insert_vertices( &mut self, space: &str, vertices: Vec<Vertex>, ) -> Result<Vec<VertexId>, StorageError>
fn update_edge(&mut self, space: &str, edge: Edge) -> Result<(), StorageError>
fn update_edge_replace( &mut self, space: &str, edge: Edge, ) -> Result<(), StorageError>
fn batch_insert_edges( &mut self, space: &str, edges: Vec<Edge>, ) -> Result<(), StorageError>
fn batch_delete_edges( &mut self, space: &str, deletes: &[EdgeDeleteKey], ) -> Result<usize, StorageError>
fn insert_vertex_data( &mut self, space: &str, info: &InsertVertexInfo, ) -> Result<bool, StorageError>
fn insert_edge_data( &mut self, space: &str, info: &InsertEdgeInfo, ) -> Result<bool, StorageError>
fn delete_vertex_data( &mut self, space: &str, tag: &str, vertex_id: &str, ) -> Result<bool, StorageError>
fn delete_edge_data( &mut self, space: &str, src: &str, dst: &str, rank: i64, ) -> Result<bool, StorageError>
fn update_data( &mut self, space: &str, space_id: u64, info: &UpdateInfo, ) -> Result<bool, StorageError>
Source§fn delete_vertex(
&mut self,
space: &str,
tag: &str,
id: &VertexId,
) -> Result<(), StorageError>
fn delete_vertex( &mut self, space: &str, tag: &str, id: &VertexId, ) -> Result<(), StorageError>
Delete one vertex without touching its incident edges. The orphaned
edge rows stay visible until repaired: prefer
delete_vertex_with_edges for cascade deletes, or run
repair_dangling_edges afterwards.fn delete_edge( &mut self, space: &str, src: &VertexId, dst: &VertexId, edge_type: &str, rank: i64, ) -> Result<(), StorageError>
Source§impl<S> UndoTarget for MetricsStorage<S>where
S: UndoTarget + StorageClient,
impl<S> UndoTarget for MetricsStorage<S>where
S: UndoTarget + StorageClient,
fn delete_vertex_type(&self, label: u32) -> Result<(), UndoLogError>
fn delete_edge_type(&self, edge_key: EdgeKey) -> Result<(), UndoLogError>
fn delete_vertex( &self, vertex: VertexIdentifier, ts: u64, ) -> Result<(), UndoLogError>
fn delete_edge(&self, edge_ctx: EdgeDeletionContext) -> Result<(), UndoLogError>
Source§fn restore_edge(
&self,
edge: EdgeIdentifier,
properties: Vec<(Arc<str>, Value)>,
ts: u64,
) -> Result<(), UndoLogError>
fn restore_edge( &self, edge: EdgeIdentifier, properties: Vec<(Arc<str>, Value)>, ts: u64, ) -> Result<(), UndoLogError>
Restore an edge that was deleted by a transaction. Read more
fn undo_update_edge_property( &self, edge_id: EdgeIdentifier, col_id: ColumnId, value: Value, ts: u64, ) -> Result<(), UndoLogError>
fn revert_delete_edge( &self, edge_ctx: EdgeDeletionContext, ) -> Result<(), UndoLogError>
fn revert_delete_vertex_properties( &self, label_name: &str, prop_names: &[Arc<str>], ) -> Result<(), UndoLogError>
fn revert_delete_edge_properties( &self, src_label: &str, dst_label: &str, edge_label: &str, prop_names: &[Arc<str>], ) -> Result<(), UndoLogError>
fn revert_delete_vertex_label( &self, label_name: &str, ) -> Result<(), UndoLogError>
fn revert_delete_edge_label( &self, src_label: &str, dst_label: &str, edge_label: &str, ) -> Result<(), UndoLogError>
fn revert_rename_vertex_properties( &self, label_name: &str, current_names: &[Arc<str>], original_names: &[Arc<str>], ) -> Result<(), UndoLogError>
fn revert_rename_edge_properties( &self, src_label: &str, dst_label: &str, edge_label: &str, current_names: &[Arc<str>], original_names: &[Arc<str>], ) -> Result<(), UndoLogError>
Source§fn staged_write_mark(&self, txn_id: TransactionId) -> Option<StagedWriteMark>
fn staged_write_mark(&self, txn_id: TransactionId) -> Option<StagedWriteMark>
Capture this target’s staged-write boundary for
txn_id. Read moreSource§fn rollback_staged_writes(
&self,
txn_id: TransactionId,
mark: StagedWriteMark,
) -> Result<(), UndoLogError>
fn rollback_staged_writes( &self, txn_id: TransactionId, mark: StagedWriteMark, ) -> Result<(), UndoLogError>
Auto Trait Implementations§
impl<S> !RefUnwindSafe for MetricsStorage<S>
impl<S> !UnwindSafe for MetricsStorage<S>
impl<S> Freeze for MetricsStorage<S>where
S: Freeze,
impl<S> Send for MetricsStorage<S>
impl<S> Sync for MetricsStorage<S>
impl<S> Unpin for MetricsStorage<S>where
S: Unpin,
impl<S> UnsafeUnpin for MetricsStorage<S>where
S: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> CatalogStore for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.impl<T> GraphStore for Twhere
T: StorageReader + StorageWriter + StorageOperationContextOps + StorageCommitOps + UndoTarget + Send + Sync + Debug,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> QueryStorage for Twhere
T: GraphStore + CatalogStore + StorageAuthOps + StorageAdmin + StoragePersistenceOps + ColumnStatsReader + AutoCommitBatchOps + AutoCommitGroupOps,
impl<T> QueryStorage for Twhere
T: GraphStore + CatalogStore + StorageAuthOps + StorageAdmin + StoragePersistenceOps + ColumnStatsReader + AutoCommitBatchOps + AutoCommitGroupOps,
Source§fn snapshot_handle(&self) -> Option<SnapshotHandle>
fn snapshot_handle(&self) -> Option<SnapshotHandle>
Snapshot handle bound to this storage handle, when the handle is
bound to an operation context with a pinned read/write snapshot. Read more
Source§fn export_space(&self, space: &str, path: &Path) -> Result<(), StorageError>
fn export_space(&self, space: &str, path: &Path) -> Result<(), StorageError>
Export the given space to CSV files under
path/<space_name>/. Read moreSource§fn import_space(&mut self, space: &str, path: &Path) -> Result<(), StorageError>
fn import_space(&mut self, space: &str, path: &Path) -> Result<(), StorageError>
Import a space from CSV files under
path/<space_name>/. Read moreimpl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> StorageClient for Twhere
T: StorageReader + StorageWriter + StorageSchemaOps + StorageSchemaContextOps + StorageOperationContextOps + StorageCommitOps + StorageAuthOps + StorageAdmin + StoragePersistenceOps + StorageRecoveryOps + StorageGcOps + UndoTarget + ColumnStatsReader + AutoCommitBatchOps + AutoCommitGroupOps + Send + Sync + Debug,
impl<T> StorageMaintenance for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.