relational-query- Typeful, Modular, Relational, algebraic query engine

Copyright2013 Kei Hibino
Safe HaskellNone




This module provides untyped components for query.


Type for column SQL string

type ColumnSQL = ColumnSQL' StringSQL Source

Column SQL string type

columnSQL' :: StringSQL -> ColumnSQL Source

ColumnSQL from StringSQL

showsColumnSQL :: ColumnSQL -> StringSQL Source

StringSQL from ColumnSQL

Configuration type for query

data Config Source

Configuration type.


defaultConfig :: Config Source

Default configuration.

data ProductUnitSupport Source

Unit of product is supported or not.

data Duplication Source

Result record duplication attribute



Duplication attribute

showsDuplication :: Duplication -> StringSQL Source

Compose duplication attribute string.

Query restriction

type QueryRestriction c = [Expr c Bool] Source

Type for restriction of query.

composeWhere :: QueryRestriction Flat -> StringSQL Source

Compose WHERE clause from QueryRestriction.

composeHaving :: QueryRestriction Aggregated -> StringSQL Source

Compose HAVING clause from QueryRestriction.

Types for aggregation

type AggregateColumnRef = ColumnSQL Source

Type for group-by term

data AggregateBitKey Source

Type for group key.

data AggregateSet Source

Type for grouping set

aggregateColumnRef :: AggregateColumnRef -> AggregateElem Source

Single term aggregation element.

aggregateEmpty :: [AggregateElem] Source

Empty aggregation.

aggregatePowerKey :: [AggregateColumnRef] -> AggregateBitKey Source

Key of aggregation power set.

aggregateRollup :: [AggregateBitKey] -> AggregateElem Source

Rollup aggregation element.

aggregateCube :: [AggregateBitKey] -> AggregateElem Source

Cube aggregation element.

aggregateSets :: [AggregateSet] -> AggregateElem Source

Grouping sets aggregation.

composeGroupBy :: [AggregateElem] -> StringSQL Source

Compose GROUP BY clause from AggregateElem list.

composePartitionBy :: [AggregateColumnRef] -> StringSQL Source

Compose PARTITION BY clause from AggregateColumnRef list.

data AggregateKey a Source

Typeful aggregate element.

aggregateKeyProjection :: AggregateKey a -> a Source

Extract typed projection from AggregateKey.

unsafeAggregateKey :: (a, AggregateElem) -> AggregateKey a Source

Unsafely bind typed-projection and untyped-term into AggregateKey.

Types for ordering

data Order Source

Order direction. Ascendant or Descendant.




type OrderColumn = ColumnSQL Source

Type for order-by column

type OrderingTerm = (Order, OrderColumn) Source

Type for order-by term

type OrderingTerms = [OrderingTerm] Source

Type for order-by terms

composeOrderBy :: OrderingTerms -> StringSQL Source

Compose ORDER BY clause from OrderingTerms

Types for assignments

type AssignColumn = ColumnSQL Source

Column SQL String

type AssignTerm = ColumnSQL Source

Value SQL String

type Assignment = (AssignColumn, AssignTerm) Source

Assignment pair

type Assignments = [Assignment] Source

Assignment pair list.

composeSets :: Assignments -> StringSQL Source

Compose SET clause from Assignments.

Compose window clause

composeOver :: [AggregateColumnRef] -> OrderingTerms -> StringSQL Source

Compose OVER (PARTITION BY ... ) clause.