| Copyright | (c) Eitan Chatav 2019 |
|---|---|
| Maintainer | eitan@morphism.tech |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Squeal.PostgreSQL.Expression.Collection
Description
Array and composite functions
Synopsis
- array :: [Expression outer commons grp schemas params from ty] -> Expression outer commons grp schemas params from (null (PGvararray ty))
- array1 :: (n ~ Length tys, All ((~) ty) tys) => NP (Expression outer commons grp schemas params from) tys -> Expression outer commons grp schemas params from (null (PGfixarray '[n] ty))
- array2 :: (All ((~) tys) tyss, All SListI tyss, Length tyss ~ n1, All ((~) ty) tys, Length tys ~ n2) => NP (NP (Expression outer commons grp schemas params from)) tyss -> Expression outer commons grp schemas params from (null (PGfixarray '[n1, n2] ty))
- cardinality :: null (PGvararray ty) :--> null PGint8
- index :: Word64 -> null (PGvararray ty) :--> NullifyType ty
- unnest :: SetOfFunction "unnest" (null (PGvararray ty)) '["unnest" ::: ty]
- row :: SListI row => NP (Aliased (Expression outer commons grp schemas params from)) row -> Expression outer commons grp schemas params from (null (PGcomposite row))
- field :: (Has sch schemas schema, Has tydef schema (Typedef (PGcomposite row)), Has field row ty) => QualifiedAlias sch tydef -> Alias field -> Expression outer commons grp schemas params from (NotNull (PGcomposite row)) -> Expression outer commons grp schemas params from ty
Documentation
Arguments
| :: [Expression outer commons grp schemas params from ty] | array elements |
| -> Expression outer commons grp schemas params from (null (PGvararray ty)) |
>>>printSQL $ array [null_, false, true]ARRAY[NULL, FALSE, TRUE]
array1 :: (n ~ Length tys, All ((~) ty) tys) => NP (Expression outer commons grp schemas params from) tys -> Expression outer commons grp schemas params from (null (PGfixarray '[n] ty)) Source #
construct a 1-dimensional fixed length array
>>>printSQL $ array1 (null_ :* false *: true)ARRAY[NULL, FALSE, TRUE]
>>>:type array1 (null_ :* false *: true)array1 (null_ :* false *: true) :: Expression outer commons grp schemas params from (null ('PGfixarray '[3] ('Null 'PGbool)))
array2 :: (All ((~) tys) tyss, All SListI tyss, Length tyss ~ n1, All ((~) ty) tys, Length tys ~ n2) => NP (NP (Expression outer commons grp schemas params from)) tyss -> Expression outer commons grp schemas params from (null (PGfixarray '[n1, n2] ty)) Source #
construct a 2-dimensional fixed length array
>>>printSQL $ array2 ((null_ :* false *: true) *: (false :* null_ *: true))ARRAY[[NULL, FALSE, TRUE], [FALSE, NULL, TRUE]]
>>>:type array2 ((null_ :* false *: true) *: (false :* null_ *: true))array2 ((null_ :* false *: true) *: (false :* null_ *: true)) :: Expression outer commons grp schemas params from (null ('PGfixarray '[2, 3] ('Null 'PGbool)))
cardinality :: null (PGvararray ty) :--> null PGint8 Source #
>>>printSQL $ cardinality (array [null_, false, true])cardinality(ARRAY[NULL, FALSE, TRUE])
Arguments
| :: Word64 | index |
| -> null (PGvararray ty) :--> NullifyType ty |
>>>printSQL $ array [null_, false, true] & index 2(ARRAY[NULL, FALSE, TRUE])[2]
unnest :: SetOfFunction "unnest" (null (PGvararray ty)) '["unnest" ::: ty] Source #
Expand an array to a set of rows
Arguments
| :: SListI row | |
| => NP (Aliased (Expression outer commons grp schemas params from)) row | zero or more expressions for the row field values |
| -> Expression outer commons grp schemas params from (null (PGcomposite row)) |
A row constructor is an expression that builds a row value (also called a composite value) using values for its member fields.
>>>:{type Complex = 'PGcomposite '[ "real" ::: 'NotNull 'PGfloat8 , "imaginary" ::: 'NotNull 'PGfloat8 ] :}
>>>let i = row (0 `as` #real :* 1 `as` #imaginary) :: Expression outer commons grp schemas params from ('NotNull Complex)>>>printSQL iROW(0, 1)
Arguments
| :: (Has sch schemas schema, Has tydef schema (Typedef (PGcomposite row)), Has field row ty) | |
| => QualifiedAlias sch tydef | row type |
| -> Alias field | field name |
| -> Expression outer commons grp schemas params from (NotNull (PGcomposite row)) | |
| -> Expression outer commons grp schemas params from ty |
>>>:{type Complex = 'PGcomposite '[ "real" ::: 'NotNull 'PGfloat8 , "imaginary" ::: 'NotNull 'PGfloat8 ] type Schema = '["complex" ::: 'Typedef Complex] :}
>>>let i = row (0 `as` #real :* 1 `as` #imaginary) :: Expression outer '[] grp (Public Schema) from params ('NotNull Complex)>>>printSQL $ i & field #complex #imaginary(ROW(0, 1)::"complex")."imaginary"