packages feed

hssqlppp-0.6.2: tests/Database/HsSqlPpp/Tests/Parsing/MiscDdl.lhs

> {-# LANGUAGE OverloadedStrings #-}
> module Database.HsSqlPpp.Tests.Parsing.MiscDdl (miscDdl) where
>
> import Database.HsSqlPpp.Syntax

> import Database.HsSqlPpp.Tests.Parsing.Utils
> import Database.HsSqlPpp.Tests.TestTypes

> miscDdl:: Item
> miscDdl =
>   Group "misc ddl" [
>     Group "misc create/alter" [
>       s "create database dbname;"
>       [CreateDatabase ea (name "dbname")]
>      ,s "alter database dbname rename to otherdb;"
>       [AlterDatabase ea (name "dbname") (RenameDatabase ea (name "otherdb"))]
>      ,s "create view v1 as\n\
>         \select a,b from t;"
>       [CreateView ea
>        (name "v1") Nothing
>        (makeSelect
>         {selSelectList = sl [si $ ei "a"
>                             ,si $ ei "b"]
>         ,selTref = [tref "t"]})]
>      ,s "alter view v1 as\n\
>         \select a,b from t;"
>       [AlterView ea
>        (name "v1") Nothing
>        (makeSelect
>         {selSelectList = sl [si $ ei "a"
>                             ,si $ ei "b"]
>         ,selTref = [tref "t"]})]
>      ,s "create view v1(c,d) as\n\
>         \select a,b from t;"
>       [CreateView ea
>        (name "v1") (Just [Nmc "c",Nmc "d"])
>        (makeSelect
>         {selSelectList = sl [si $ ei "a"
>                             ,si $ ei "b"]
>         ,selTref = [tref "t"]})]
>      ,s "alter view v1(c,d) as\n\
>         \select a,b from t;"
>       [AlterView ea
>        (name "v1") (Just [Nmc "c",Nmc "d"])
>        (makeSelect
>         {selSelectList = sl [si $ ei "a"
>                             ,si $ ei "b"]
>         ,selTref = [tref "t"]})]
>      ,s "create domain td as text check (value in ('t1', 't2'));"
>       [CreateDomain ea (name "td") (st "text") ""
>        (Just (InPredicate ea (ei "value") True
>               (InList ea [stringQ "t1" ,stringQ "t2"])))]
>      ,s "create type tp1 as (\n\
>         \  f1 text,\n\
>         \  f2 text\n\
>         \);"
>       [CreateType ea (name "tp1") [TypeAttDef ea (Nmc "f1") (st "text")
>                                  ,TypeAttDef ea (Nmc "f2") (st "text")]]
>
>      ,s "create sequence s start with 5 increment by 4 no maxvalue no minvalue cache 1;"
>         [CreateSequence ea (name "s") 4 Nothing Nothing 5 1]
>
>      ,s "alter sequence s owned by a.b;"
>         [AlterSequence ea (name "s") $ AlterSequenceOwned ea $ qn "a" "b"]
>      ,s "alter sequence s rename to s2;"
>         [AlterSequence ea (name "s") $ AlterSequenceRename ea $ name "s2"]
>      ,s "alter sequence s increment by 2 start with 3;"
>         [AlterSequence ea (name "s") $ AlterSequenceActions ea
>                                      $ [AlterSequenceIncrement ea 2,AlterSequenceStart ea 3]]
>      ,s "alter sequence s no maxvalue minvalue 1;"
>         [AlterSequence ea (name "s") $ AlterSequenceActions ea
>                                      $ [AlterSequenceMax ea Nothing,AlterSequenceMin ea $ Just 1]]
>      ,s "alter sequence s cache 2;"
>         [AlterSequence ea (name "s") $ AlterSequenceActions ea [AlterSequenceCache ea 2]]
>      ,s "alter sequence s restart;"
>         [AlterSequence ea (name "s") $ AlterSequenceActions ea [AlterSequenceRestart ea Nothing]]
>      ,s "alter sequence s restart with 1;"
>         [AlterSequence ea (name "s") $ AlterSequenceActions ea [AlterSequenceRestart ea $ Just 1]]
>
>      ,s "create trigger tr\n\
>          \after insert or delete on tb\n\
>          \for each statement\n\
>          \execute procedure fb();"
>         [CreateTrigger ea (Nmc "tr") TriggerAfter [TInsert,TDelete]
>          (name "tb") EachStatement (name "fb") []]
>      ,s "drop trigger\n\
>          \if exists tr\n\
>          \on tb cascade;"
>	      [DropTrigger ea IfExists (Nmc "tr") (name "tb") Cascade] 
>      ,s "drop trigger tr\n\
>          \on tb restrict;"
>	      [DropTrigger ea Require (Nmc "tr") (name "tb") Restrict] 
>      ]
>
>     ,Group "drops" [
>       s "drop domain t;"
>       [DropSomething ea Domain Require [name "t"] Restrict]
>      ,s "drop domain if exists t,u cascade;"
>       [DropSomething ea Domain IfExists [name "t", name "u"] Cascade]
>      ,s "drop domain t restrict;"
>       [DropSomething ea Domain Require [name "t"] Restrict]
>
>      ,s "drop type t;"
>       [DropSomething ea Type Require [name "t"] Restrict]
>      ,s "drop table t;"
>       [DropSomething ea Table Require [name "t"] Restrict]
>      ,s "drop view t;"
>       [DropSomething ea View Require [name "t"] Restrict]
>      ,s "drop database dbname;"
>       [DropSomething ea Database Require [name "dbname"] Restrict]
>      ]]
>  where
>    s = ParseStmts defaultParseFlags