|
Relational NT
A relational database kernel shaped around NT-style object management.
|
Shared metadata stored at the head of a registry entry. More...
#include <ObjectManager.h>
Public Attributes | |
| uint32_t | reference_count = 0 |
| Structural dependency count. | |
| uint32_t | handle_count = 0 |
| Number of open handles. | |
| std::unique_ptr< object_type > | type |
| Object type metadata. | |
| std::vector< std::string > | path |
| Logical object path inside the namespace. | |
Shared metadata stored at the head of a registry entry.
Two independent reference counters govern object lifetime. An object is eligible for garbage collection only when both reach zero:
All snapshot versions are immutable. An insertion or deletion produces a new snapshot rather than mutating an existing one. A snapshot's reference_count is non-zero while any cursor is pinned to it and drops to zero only when all such cursors are released.
| uint32_t nt::ObjectManager::registry_head::handle_count = 0 |
Number of open handles.
Maintained by LifecycleManager::Monitor/Unmonitor.
| uint32_t nt::ObjectManager::registry_head::reference_count = 0 |
Structural dependency count.
Non-zero while another registry object references this one (e.g. an ephemeral relation depending on a base relation, or a cursor pinned to a snapshot version).
| std::unique_ptr<object_type> nt::ObjectManager::registry_head::type |
Object type metadata.
Owned by this head.