Safe Haskell | None |
---|---|
Language | Haskell98 |
Database.Algebra.Table.Construct
Contents
Description
This module contains smart constructors for table algebra plans.
- int :: Integer -> AVal
- string :: String -> AVal
- bool :: Bool -> AVal
- double :: Double -> AVal
- dec :: Float -> AVal
- nat :: Integer -> AVal
- intT :: ATy
- stringT :: ATy
- boolT :: ATy
- decT :: ATy
- doubleT :: ATy
- natT :: ATy
- dbTable :: String -> [(Attr, ATy)] -> [Key] -> Build TableAlgebra AlgNode
- litTable :: AVal -> String -> ATy -> Build TableAlgebra AlgNode
- litTable' :: [[AVal]] -> [(String, ATy)] -> Build TableAlgebra AlgNode
- eqJoin :: LeftAttr -> RightAttr -> AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- thetaJoin :: [(Expr, Expr, JoinRel)] -> AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- semiJoin :: [(Expr, Expr, JoinRel)] -> AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- antiJoin :: [(Expr, Expr, JoinRel)] -> AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- rank :: ResAttr -> [SortSpec] -> AlgNode -> Build TableAlgebra AlgNode
- difference :: AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- rowrank :: ResAttr -> [SortSpec] -> AlgNode -> Build TableAlgebra AlgNode
- select :: Expr -> AlgNode -> Build TableAlgebra AlgNode
- distinct :: AlgNode -> Build TableAlgebra AlgNode
- cross :: AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- union :: AlgNode -> AlgNode -> Build TableAlgebra AlgNode
- proj :: [Proj] -> AlgNode -> Build TableAlgebra AlgNode
- aggr :: [(AggrType, ResAttr)] -> [(Attr, Expr)] -> AlgNode -> Build TableAlgebra AlgNode
- winFun :: (ResAttr, WinFun) -> [PartExpr] -> [SortSpec] -> Maybe FrameBounds -> AlgNode -> Build TableAlgebra AlgNode
- rownum :: Attr -> [Attr] -> [PartExpr] -> AlgNode -> Build TableAlgebra AlgNode
- rownum' :: Attr -> [SortSpec] -> [PartExpr] -> AlgNode -> Build TableAlgebra AlgNode
- thetaJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- semiJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- antiJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- eqJoinM :: String -> String -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- rankM :: ResAttr -> [SortSpec] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- differenceM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- rowrankM :: ResAttr -> [SortSpec] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- selectM :: Expr -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- distinctM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- crossM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- unionM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- projM :: [Proj] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- aggrM :: [(AggrType, ResAttr)] -> [(Attr, Expr)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- winFunM :: (ResAttr, WinFun) -> [PartExpr] -> [SortSpec] -> Maybe FrameBounds -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- rownumM :: Attr -> [Attr] -> [PartExpr] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
- rownum'M :: Attr -> [SortSpec] -> [PartExpr] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode
Value and type constructors
Smart constructors for algebraic operators
dbTable :: String -> [(Attr, ATy)] -> [Key] -> Build TableAlgebra AlgNode Source
Construct a database table node The first argument is the emph{qualified} name of the database table. The second describes the columns in alphabetical order. The third argument describes the database keys (one table key can span over multiple columns).
litTable :: AVal -> String -> ATy -> Build TableAlgebra AlgNode Source
Construct a table with one value
litTable' :: [[AVal]] -> [(String, ATy)] -> Build TableAlgebra AlgNode Source
Construct a literal table with multiple columns and rows
eqJoin :: LeftAttr -> RightAttr -> AlgNode -> AlgNode -> Build TableAlgebra AlgNode Source
Join two plans where the columns n1 of table 1 and columns n2 of table 2 are equal.
rank :: ResAttr -> [SortSpec] -> AlgNode -> Build TableAlgebra AlgNode Source
Assign a number to each row in column ResAttr
incrementally
sorted by sort
. The numbering is not dense!
difference :: AlgNode -> AlgNode -> Build TableAlgebra AlgNode Source
Compute the difference between two plans.
rowrank :: ResAttr -> [SortSpec] -> AlgNode -> Build TableAlgebra AlgNode Source
Same as rank but provides a dense numbering.
select :: Expr -> AlgNode -> Build TableAlgebra AlgNode Source
Select rows where the column SelAttr
contains True.
proj :: [Proj] -> AlgNode -> Build TableAlgebra AlgNode Source
Project/rename certain column out of a plan
aggr :: [(AggrType, ResAttr)] -> [(Attr, Expr)] -> AlgNode -> Build TableAlgebra AlgNode Source
Apply aggregate functions to a plan
winFun :: (ResAttr, WinFun) -> [PartExpr] -> [SortSpec] -> Maybe FrameBounds -> AlgNode -> Build TableAlgebra AlgNode Source
rownum :: Attr -> [Attr] -> [PartExpr] -> AlgNode -> Build TableAlgebra AlgNode Source
Similar to rowrank but this will assign a unique number to every row (even if two rows are equal)
rownum' :: Attr -> [SortSpec] -> [PartExpr] -> AlgNode -> Build TableAlgebra AlgNode Source
Same as rownum but columns can be assigned an ordering direction
Lifted smart constructors for table algebra operators
thetaJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Perform theta join on two plans
semiJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Perform a semi join on two plans
antiJoinM :: [(Expr, Expr, JoinRel)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Perform an anti join on two plans
eqJoinM :: String -> String -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Join two plans where the columns n1 of table 1 and columns n2 of table 2 are equal.
rankM :: ResAttr -> [SortSpec] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Assign a number to each row in column ResAttr
incrementing
sorted by sort
. The numbering is not dense!
differenceM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Compute the difference between two plans.
rowrankM :: ResAttr -> [SortSpec] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Same as rank but provides a dense numbering.
selectM :: Expr -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Select rows where the column SelAttr
contains True.
distinctM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Remove duplicate rows
crossM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Make cross product from two plans
unionM :: Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Union between two plans
projM :: [Proj] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Project/rename certain column out of a plan
aggrM :: [(AggrType, ResAttr)] -> [(Attr, Expr)] -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source
Apply aggregate functions to a plan
winFunM :: (ResAttr, WinFun) -> [PartExpr] -> [SortSpec] -> Maybe FrameBounds -> Build TableAlgebra AlgNode -> Build TableAlgebra AlgNode Source