Skip to main content

reifydb_rql/
query.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4use crate::nodes::{
5	AggregateNode, AppendQueryNode, ApplyNode, AssertNode, CallFunctionNode, DictionaryScanNode, DistinctNode,
6	EnvironmentNode, ExtendNode, FilterNode, GateNode, GeneratorNode, IndexScanNode, InlineDataNode, JoinInnerNode,
7	JoinLeftNode, JoinNaturalNode, MapNode, PatchNode, RemoteScanNode, RingBufferScanNode, RowListLookupNode,
8	RowPointLookupNode, RowRangeScanNode, RunTestsNode, ScalarizeNode, SeriesScanNode, SortNode, TableScanNode,
9	TableVirtualScanNode, TakeNode, VariableNode, ViewScanNode, WindowNode,
10};
11
12#[derive(Debug, Clone)]
13pub enum QueryPlan {
14	RemoteScan(RemoteScanNode),
15	TableScan(TableScanNode),
16	TableVirtualScan(TableVirtualScanNode),
17	ViewScan(ViewScanNode),
18	RingBufferScan(RingBufferScanNode),
19	DictionaryScan(DictionaryScanNode),
20	SeriesScan(SeriesScanNode),
21	IndexScan(IndexScanNode),
22
23	/// O(1) point lookup by row number: `filter rownum == N`
24	RowPointLookup(RowPointLookupNode),
25	/// O(k) list lookup by row numbers: `filter rownum in [a, b, c]`
26	RowListLookup(RowListLookupNode),
27	/// Range scan by row numbers: `filter rownum between X and Y`
28	RowRangeScan(RowRangeScanNode),
29
30	Aggregate(AggregateNode),
31	Assert(AssertNode),
32	Distinct(DistinctNode),
33	Filter(FilterNode),
34	Gate(GateNode),
35	JoinInner(JoinInnerNode),
36	JoinLeft(JoinLeftNode),
37	JoinNatural(JoinNaturalNode),
38	Append(AppendQueryNode),
39	Take(TakeNode),
40	Sort(SortNode),
41	Map(MapNode),
42	Extend(ExtendNode),
43	Patch(PatchNode),
44	Apply(ApplyNode),
45	InlineData(InlineDataNode),
46	Generator(GeneratorNode),
47	Window(WindowNode),
48
49	Variable(VariableNode),
50	Environment(EnvironmentNode),
51
52	Scalarize(ScalarizeNode),
53
54	RunTests(RunTestsNode),
55
56	CallFunction(CallFunctionNode),
57}