aboutsummaryrefslogtreecommitdiffstats
path: root/lib/drl/ast.ml
blob: f94965d659802149e7909483980e614df68c10c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
open Sexplib.Std

(** Literal values for Const nodes *)
type value =
  | Int   of int
  | Float of float
  | Str   of string
  | Bool  of bool
[@@deriving sexp]

type direction = Asc | Desc
[@@deriving sexp]

type query =
  | Base    of string                          (** base relation by name *)
  | Const   of (string * value) list           (** constant single-tuple relation *)
  | Select  of query * query                   (** σ semijoin: (filter, source) *)
  | Join    of string list * query * query     (** ⋈ natural equijoin on named attrs *)
  | Cartesian of query * query                 (** × Cartesian product *)
  | Project of string list * query             (** π restrict columns *)
  | Rename  of (string * string) list * query  (** ρ rename (old,new) pairs *)
  | Union   of query * query                   (** ∪ — compatible schemas assumed *)
  | Diff    of query * query                   (** − *)
  | Take    of int * query                     (** τ *)
[@@deriving sexp]