aboutsummaryrefslogblamecommitdiffstats
path: root/include/CursorManager.h
blob: 61fba878640769ffc00019068d22add15224cb14 (plain) (tree)
1
2
3
4
5
6





                

























                                                                                                



                              
#pragma once

#include "Api.h"

namespace nt
{
	/**
     * @class CursorManager
     * @brief Orchestrates data pagination from storage backends to the query executor.
     *
     * The Cursor Manager implements the glue between the 'registry' objects
     * and the Volcano-style iterator model. It translates high-level plan
     * requests into low-level backend operations (LMDB, etcd, etc.).
     *
     * DUTIES:
     * 1. Snapshot Anchoring & Pins:
     *    We need to bind the retrieval to a multigroup snapshot, the object
     *    for it should hold the reference for the tree that holds all the relations and tuples.
     *
     * 2. State Maintenance:
     *    Tracks the current position (Iterators/Offsets) within a relation
     *    to support sequential Next() calls from the algebra engine.
     *
     * 3. Prefetching & Buffering:
     *    Abstracts the 'paging' logic of the backend. For remote backends
     *    like etcd, it manages local buffers to hide latency from the executor.
     *    Think of a driver for an operating system.
     *
     * 4. Boundary Enforcement:
     *    Ensures scans do not cross commit boundaries or logical branch
     *    definitions unless explicitly requested by the plan.
     */
    class NT_API CursorManager
    {
    };
}