-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A parser for SQL.
--
-- A parser for SQL. Parses most SQL:2011 queries, non-query DML, DDL,
-- access control and transaction management syntax. Please see the
-- homepage for more information
-- http://jakewheat.github.io/simple-sql-parser/latest.
@package simple-sql-parser
@version 0.8.0
module Language.SQL.SimpleSQL.Dialect
-- | Used to set the dialect used for parsing and pretty printing, very
-- unfinished at the moment.
--
-- The keyword handling works as follows:
--
-- There is a list of reserved keywords. These will never parse as
-- anything other than as a keyword, unless they are in one of the other
-- lists.
--
-- There is a list of 'identifier' keywords. These are reserved keywords,
-- with an exception that they will parse as an identifier in a scalar
-- expression. They won't parse as identifiers in other places, e.g.
-- column names or aliases.
--
-- There is a list of 'app' keywords. These are reserved keywords, with
-- an exception that they will also parse in an 'app-like' construct - a
-- regular function call, or any of the aggregate and window variations.
--
-- There is a list of special type names. This list serves two purposes -
-- it is a list of the reserved keywords which are also type names, and
-- it is a list of all the multi word type names.
--
-- Every keyword should appear in the keywords lists, and then you can
-- add them to the other lists if you want exceptions. Most things that
-- refer to functions, types or variables that are keywords in the ansi
-- standard, can be removed from the keywords lists completely with
-- little effect. With most of the actual SQL keywords, removing them
-- from the keyword list will result in lots of valid syntax no longer
-- parsing (and probably bad parse error messages too).
--
-- In the code, all special syntax which looks identical to regular
-- identifiers or function calls (apart from the name), is treated like a
-- regular identifier or function call.
--
-- It's easy to break the parser by removing the wrong words from the
-- keywords list or adding the wrong words to the other lists.
data Dialect
Dialect :: [Text] -> [Text] -> [Text] -> [Text] -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Dialect
-- | reserved keywords
[diKeywords] :: Dialect -> [Text]
-- | keywords with identifier exception
[diIdentifierKeywords] :: Dialect -> [Text]
-- | keywords with app exception
[diAppKeywords] :: Dialect -> [Text]
-- | keywords with type exception plus all the type names which are
-- multiple words
[diSpecialTypeNames] :: Dialect -> [Text]
-- | allow ansi fetch first syntax
[diFetchFirst] :: Dialect -> Bool
-- | allow limit keyword (mysql, postgres, ...)
[diLimit] :: Dialect -> Bool
-- | allow parsing ODBC syntax
[diOdbc] :: Dialect -> Bool
-- | allow quoting identifiers with `backquotes`
[diBackquotedIden] :: Dialect -> Bool
-- | allow quoting identifiers with [square brackets]
[diSquareBracketQuotedIden] :: Dialect -> Bool
-- | allow identifiers with a leading at @example
[diAtIdentifier] :: Dialect -> Bool
-- | allow identifiers with a leading # #example
[diHashIdentifier] :: Dialect -> Bool
-- | allow positional identifiers like this: $1
[diPositionalArg] :: Dialect -> Bool
-- | allow postgres style dollar strings
[diDollarString] :: Dialect -> Bool
-- | allow strings with an e - e"example"
[diEString] :: Dialect -> Bool
-- | allow postgres style symbols
[diPostgresSymbols] :: Dialect -> Bool
-- | allow sql server style symbols
[diSqlServerSymbols] :: Dialect -> Bool
-- | allow sql server style for CONVERT function in format
-- CONVERT(data_type(length), expression, style)
[diConvertFunction] :: Dialect -> Bool
-- | allow creating autoincrement columns
[diAutoincrement] :: Dialect -> Bool
-- | allow omitting the comma between constraint clauses
[diNonCommaSeparatedConstraints] :: Dialect -> Bool
-- | allow marking tables as "without rowid"
[diWithoutRowidTables] :: Dialect -> Bool
-- | allow omitting types for columns
[diOptionalColumnTypes] :: Dialect -> Bool
-- | allow mixing in DEFAULT clauses with other constraints
[diDefaultClausesAsConstraints] :: Dialect -> Bool
-- | ansi sql 2011 dialect
ansi2011 :: Dialect
-- | mysql dialect
mysql :: Dialect
-- | postgresql dialect
postgres :: Dialect
-- | oracle dialect
oracle :: Dialect
-- | microsoft sql server dialect
sqlserver :: Dialect
instance Data.Data.Data Language.SQL.SimpleSQL.Dialect.Dialect
instance GHC.Read.Read Language.SQL.SimpleSQL.Dialect.Dialect
instance GHC.Show.Show Language.SQL.SimpleSQL.Dialect.Dialect
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Dialect.Dialect
-- | Lexer for SQL.
module Language.SQL.SimpleSQL.Lex
-- | Represents a lexed token
data Token
-- | A symbol (in ansi dialect) is one of the following
--
--
-- - multi char symbols <> <= >= != ||
-- - single char symbols: * + - ^ / % ~ & | ? ( ) [ ] , ; (
-- )
--
Symbol :: Text -> Token
-- | This is an identifier or keyword. The first field is the quotes used,
-- or nothing if no quotes were used. The quotes can be " or u& or
-- something dialect specific like []
Identifier :: Maybe (Text, Text) -> Text -> Token
-- | This is a prefixed variable symbol, such as :var, @var or #var (only
-- :var is used in ansi dialect)
PrefixedVariable :: Char -> Text -> Token
-- | This is a positional arg identifier e.g. $1
PositionalArg :: Int -> Token
-- | This is a string literal. The first two fields are the -- start and
-- end quotes, which are usually both ', but can be the character set
-- (one of nNbBxX, or u&, U&), or a dialect specific string
-- quoting (such as $$ in postgres)
SqlString :: Text -> Text -> Text -> Token
-- | A number literal (integral or otherwise), stored in original format
-- unchanged
SqlNumber :: Text -> Token
-- | Whitespace, one or more of space, tab or newline.
Whitespace :: Text -> Token
-- | A commented line using --, contains every character starting with the
-- '--' and including the terminating newline character if there is one -
-- this will be missing if the last line in the source is a line comment
-- with no trailing newline
LineComment :: Text -> Token
-- | A block comment, /* stuff */, includes the comment delimiters
BlockComment :: Text -> Token
-- | Used for generating better error messages when using the output of the
-- lexer in a parser
InvalidToken :: Text -> Token
-- | Positional information added to tokens to preserve source positions
-- for the parser
data WithPos a
WithPos :: SourcePos -> SourcePos -> Int -> a -> WithPos a
[startPos] :: WithPos a -> SourcePos
[endPos] :: WithPos a -> SourcePos
[tokenLength] :: WithPos a -> Int
[tokenVal] :: WithPos a -> a
-- | Lex some SQL to a list of tokens.
lexSQL :: Dialect -> Bool -> Text -> Maybe (Int, Int) -> Text -> Either ParseError [Token]
-- | Lex some SQL to a list of tokens. The invalid token setting changes
-- the behaviour so that if there's a parse error at the start of parsing
-- an invalid token, it adds a final InvalidToken with the character to
-- the result then stop parsing. This can then be used to produce a parse
-- error with more context in the parser. Parse errors within tokens
-- still produce Left errors.
lexSQLWithPositions :: Dialect -> Bool -> Text -> Maybe (Int, Int) -> Text -> Either ParseError [WithPos Token]
-- | Pretty printing, if you lex a bunch of tokens, then pretty print them,
-- should should get back exactly the same string
prettyToken :: Dialect -> Token -> Text
prettyTokens :: Dialect -> [Token] -> Text
type ParseError = ParseErrorBundle Text Void
prettyError :: ParseError -> Text
-- | Utility function to tell you if a list of tokens will pretty print
-- then lex back to the same set of tokens. Used internally, might be
-- useful for generating SQL via lexical tokens.
tokenListWillPrintAndLex :: Dialect -> [Token] -> Bool
-- | ansi sql 2011 dialect
ansi2011 :: Dialect
-- | Wrapper to allow using the lexer as input to a megaparsec parser.
data SQLStream
SQLStream :: String -> [WithPos Token] -> SQLStream
[sqlStreamInput] :: SQLStream -> String
[unSQLStream] :: SQLStream -> [WithPos Token]
instance GHC.Classes.Ord Language.SQL.SimpleSQL.Lex.Token
instance GHC.Show.Show Language.SQL.SimpleSQL.Lex.Token
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Lex.Token
instance GHC.Show.Show a => GHC.Show.Show (Language.SQL.SimpleSQL.Lex.WithPos a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.SQL.SimpleSQL.Lex.WithPos a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.SQL.SimpleSQL.Lex.WithPos a)
instance Text.Megaparsec.Stream.Stream Language.SQL.SimpleSQL.Lex.SQLStream
instance Text.Megaparsec.Stream.VisualStream Language.SQL.SimpleSQL.Lex.SQLStream
instance Text.Megaparsec.Stream.TraversableStream Language.SQL.SimpleSQL.Lex.SQLStream
-- | The AST for SQL.
module Language.SQL.SimpleSQL.Syntax
-- | Represents a value expression. This is used for the expressions in
-- select lists. It is also used for expressions in where, group by,
-- having, order by and so on.
data ScalarExpr
-- | a numeric literal optional decimal point, e+- integral exponent, e.g
--
--
-- - 10
-- - 10.
-- - .1
-- - 10.1
-- - 1e5
-- - 12.34e-6
--
NumLit :: Text -> ScalarExpr
-- | string literal, with the start and end quote e.g. test ->
-- TextLit "'" "'" "test"
StringLit :: Text -> Text -> Text -> ScalarExpr
-- | text of interval literal, units of interval precision, e.g. interval 3
-- days (3)
IntervalLit :: Maybe Sign -> Text -> IntervalTypeField -> Maybe IntervalTypeField -> ScalarExpr
-- | if + or - used
[ilSign] :: ScalarExpr -> Maybe Sign
-- | literal text
[ilLiteral] :: ScalarExpr -> Text
[ilFrom] :: ScalarExpr -> IntervalTypeField
[ilTo] :: ScalarExpr -> Maybe IntervalTypeField
-- | prefix 'typed literal', e.g. int '42'
TypedLit :: TypeName -> Text -> ScalarExpr
-- | identifier with parts separated by dots
Iden :: [Name] -> ScalarExpr
-- | star, as in select *, count(*)
Star :: ScalarExpr
-- | qualified star, as in a.*, b.c.*
QStar :: [Name] -> ScalarExpr
-- | Represents a ? in a parameterized query
Parameter :: ScalarExpr
-- | Represents an e.g. $1 in a parameterized query
PositionalArg :: Int -> ScalarExpr
-- | represents a host parameter, e.g. :a. The Maybe Text is for the
-- indicator, e.g. :var indicator :nl
HostParameter :: Text -> Maybe Text -> ScalarExpr
-- | Infix binary operators. This is used for symbol operators (a + b),
-- keyword operators (a and b) and multiple keyword operators (a is
-- similar to b)
BinOp :: ScalarExpr -> [Name] -> ScalarExpr -> ScalarExpr
-- | Prefix unary operators. This is used for symbol operators, keyword
-- operators and multiple keyword operators.
PrefixOp :: [Name] -> ScalarExpr -> ScalarExpr
-- | Postfix unary operators. This is used for symbol operators, keyword
-- operators and multiple keyword operators.
PostfixOp :: [Name] -> ScalarExpr -> ScalarExpr
-- | Used for ternary, mixfix and other non orthodox operators. Currently
-- used for row constructors, and for between.
SpecialOp :: [Name] -> [ScalarExpr] -> ScalarExpr
-- | function application (anything that looks like c style function
-- application syntactically)
App :: [Name] -> [ScalarExpr] -> ScalarExpr
-- | aggregate application, which adds distinct or all, and order by, to
-- regular function application
AggregateApp :: [Name] -> SetQuantifier -> [ScalarExpr] -> [SortSpec] -> Maybe ScalarExpr -> ScalarExpr
-- | aggregate function name
[aggName] :: ScalarExpr -> [Name]
-- | distinct
[aggDistinct] :: ScalarExpr -> SetQuantifier
-- | args
[aggArgs] :: ScalarExpr -> [ScalarExpr]
-- | order by
[aggOrderBy] :: ScalarExpr -> [SortSpec]
-- | filter
[aggFilter] :: ScalarExpr -> Maybe ScalarExpr
-- | aggregates with within group
AggregateAppGroup :: [Name] -> [ScalarExpr] -> [SortSpec] -> ScalarExpr
-- | aggregate function name
[aggName] :: ScalarExpr -> [Name]
-- | args
[aggArgs] :: ScalarExpr -> [ScalarExpr]
-- | within group
[aggGroup] :: ScalarExpr -> [SortSpec]
-- | window application, which adds over (partition by a order by b) to
-- regular function application. Explicit frames are not currently
-- supported
WindowApp :: [Name] -> [ScalarExpr] -> [ScalarExpr] -> [SortSpec] -> Maybe Frame -> ScalarExpr
-- | window function name
[wnName] :: ScalarExpr -> [Name]
-- | args
[wnArgs] :: ScalarExpr -> [ScalarExpr]
-- | partition by
[wnPartition] :: ScalarExpr -> [ScalarExpr]
-- | order by
[wnOrderBy] :: ScalarExpr -> [SortSpec]
-- | frame clause
[wnFrame] :: ScalarExpr -> Maybe Frame
-- | Used for the operators which look like functions except the arguments
-- are separated by keywords instead of commas. The maybe is for the
-- first unnamed argument if it is present, and the list is for the
-- keyword argument pairs.
SpecialOpK :: [Name] -> Maybe ScalarExpr -> [(Text, ScalarExpr)] -> ScalarExpr
-- | cast(a as typename)
Cast :: ScalarExpr -> TypeName -> ScalarExpr
-- | convert expression to given datatype CONVERT(data_type(length),
-- expression, style)
Convert :: TypeName -> ScalarExpr -> Maybe Integer -> ScalarExpr
-- | case expression. both flavours supported
Case :: Maybe ScalarExpr -> [([ScalarExpr], ScalarExpr)] -> Maybe ScalarExpr -> ScalarExpr
-- | test value
[caseTest] :: ScalarExpr -> Maybe ScalarExpr
-- | when branches
[caseWhens] :: ScalarExpr -> [([ScalarExpr], ScalarExpr)]
-- | else value
[caseElse] :: ScalarExpr -> Maybe ScalarExpr
Parens :: ScalarExpr -> ScalarExpr
-- | in list literal and in subquery, if the bool is false it means not in
-- was used ('a not in (1,2)')
In :: Bool -> ScalarExpr -> InPredValue -> ScalarExpr
-- | exists, all, any, some subqueries
SubQueryExpr :: SubQueryExprType -> QueryExpr -> ScalarExpr
QuantifiedComparison :: ScalarExpr -> [Name] -> CompPredQuantifier -> QueryExpr -> ScalarExpr
Match :: ScalarExpr -> Bool -> QueryExpr -> ScalarExpr
-- | represents an array access expression, or an array ctor e.g. a[3]. The
-- first scalarExpr is the array, the second is the subscripts/ctor args
Array :: ScalarExpr -> [ScalarExpr] -> ScalarExpr
-- | this is used for the query expression version of array constructors,
-- e.g. array(select * from t)
ArrayCtor :: QueryExpr -> ScalarExpr
Collate :: ScalarExpr -> [Name] -> ScalarExpr
MultisetBinOp :: ScalarExpr -> SetOperatorName -> SetQuantifier -> ScalarExpr -> ScalarExpr
MultisetCtor :: [ScalarExpr] -> ScalarExpr
MultisetQueryCtor :: QueryExpr -> ScalarExpr
NextValueFor :: [Name] -> ScalarExpr
VEComment :: [Comment] -> ScalarExpr -> ScalarExpr
-- | an odbc literal e.g. {d '2000-01-01'}
OdbcLiteral :: OdbcLiteralType -> Text -> ScalarExpr
-- | an odbc function call e.g. {fn CHARACTER_LENGTH(test)}
OdbcFunc :: ScalarExpr -> ScalarExpr
-- | Represents an identifier name, which can be quoted or unquoted.
-- examples:
--
--
-- - test -> Name Nothing "test"
-- - "test" -> Name (Just """,""") "test"
-- - something -> Name (Just ("`","`") "something"
-- - [ms] -> Name (Just ("[","]") "ms"
--
data Name
Name :: Maybe (Text, Text) -> Text -> Name
-- | Represents a type name, used in casts.
data TypeName
TypeName :: [Name] -> TypeName
PrecTypeName :: [Name] -> Integer -> TypeName
PrecScaleTypeName :: [Name] -> Integer -> Integer -> TypeName
PrecLengthTypeName :: [Name] -> Integer -> Maybe PrecMultiplier -> Maybe PrecUnits -> TypeName
CharTypeName :: [Name] -> Maybe Integer -> [Name] -> [Name] -> TypeName
TimeTypeName :: [Name] -> Maybe Integer -> Bool -> TypeName
RowTypeName :: [(Name, TypeName)] -> TypeName
IntervalTypeName :: IntervalTypeField -> Maybe IntervalTypeField -> TypeName
ArrayTypeName :: TypeName -> Maybe Integer -> TypeName
MultisetTypeName :: TypeName -> TypeName
data IntervalTypeField
Itf :: Text -> Maybe (Integer, Maybe Integer) -> IntervalTypeField
data Sign
Plus :: Sign
Minus :: Sign
data PrecMultiplier
PrecK :: PrecMultiplier
PrecM :: PrecMultiplier
PrecG :: PrecMultiplier
PrecT :: PrecMultiplier
PrecP :: PrecMultiplier
data PrecUnits
PrecCharacters :: PrecUnits
PrecOctets :: PrecUnits
-- | Represents the Distinct or All keywords, which can be used before a
-- select list, in an aggregate/window function application, or in a
-- query expression set operator.
data SetQuantifier
SQDefault :: SetQuantifier
Distinct :: SetQuantifier
All :: SetQuantifier
-- | Represents one field in an order by list.
data SortSpec
SortSpec :: ScalarExpr -> Direction -> NullsOrder -> SortSpec
-- | The direction for a column in order by.
data Direction
DirDefault :: Direction
Asc :: Direction
Desc :: Direction
-- | Represents 'nulls first' or 'nulls last' in an order by clause.
data NullsOrder
NullsOrderDefault :: NullsOrder
NullsFirst :: NullsOrder
NullsLast :: NullsOrder
-- | Used for 'expr in (scalar expression list)', and 'expr in (subquery)'
-- syntax.
data InPredValue
InList :: [ScalarExpr] -> InPredValue
InQueryExpr :: QueryExpr -> InPredValue
-- | A subquery in a scalar expression.
data SubQueryExprType
-- | exists (query expr)
SqExists :: SubQueryExprType
-- | unique (query expr)
SqUnique :: SubQueryExprType
-- | a scalar subquery
SqSq :: SubQueryExprType
data CompPredQuantifier
CPAny :: CompPredQuantifier
CPSome :: CompPredQuantifier
CPAll :: CompPredQuantifier
-- | Represents the frame clause of a window this can be [range | rows]
-- frame_start or [range | rows] between frame_start and frame_end
data Frame
FrameFrom :: FrameRows -> FramePos -> Frame
FrameBetween :: FrameRows -> FramePos -> FramePos -> Frame
-- | Represents whether a window frame clause is over rows or ranges.
data FrameRows
FrameRows :: FrameRows
FrameRange :: FrameRows
-- | represents the start or end of a frame
data FramePos
UnboundedPreceding :: FramePos
Preceding :: ScalarExpr -> FramePos
Current :: FramePos
Following :: ScalarExpr -> FramePos
UnboundedFollowing :: FramePos
-- | the type of an odbc literal (e.g. {d '2000-01-01'}), correpsonding to
-- the letter after the opening {
data OdbcLiteralType
OLDate :: OdbcLiteralType
OLTime :: OdbcLiteralType
OLTimestamp :: OdbcLiteralType
-- | Represents a query expression, which can be:
--
--
-- - a regular select;
-- - a set operator (union, except, intersect);
-- - a common table expression (with);
-- - a table value constructor (values (1,2),(3,4)); or
-- - an explicit table (table t).
--
data QueryExpr
Select :: SetQuantifier -> [(ScalarExpr, Maybe Name)] -> [TableRef] -> Maybe ScalarExpr -> [GroupingExpr] -> Maybe ScalarExpr -> [SortSpec] -> Maybe ScalarExpr -> Maybe ScalarExpr -> QueryExpr
[qeSetQuantifier] :: QueryExpr -> SetQuantifier
-- | the expressions and the column aliases
[qeSelectList] :: QueryExpr -> [(ScalarExpr, Maybe Name)]
[qeFrom] :: QueryExpr -> [TableRef]
[qeWhere] :: QueryExpr -> Maybe ScalarExpr
[qeGroupBy] :: QueryExpr -> [GroupingExpr]
[qeHaving] :: QueryExpr -> Maybe ScalarExpr
[qeOrderBy] :: QueryExpr -> [SortSpec]
[qeOffset] :: QueryExpr -> Maybe ScalarExpr
[qeFetchFirst] :: QueryExpr -> Maybe ScalarExpr
QueryExprSetOp :: QueryExpr -> SetOperatorName -> SetQuantifier -> Corresponding -> QueryExpr -> QueryExpr
[qe0] :: QueryExpr -> QueryExpr
[qeCombOp] :: QueryExpr -> SetOperatorName
[qeSetQuantifier] :: QueryExpr -> SetQuantifier
[qeCorresponding] :: QueryExpr -> Corresponding
[qe1] :: QueryExpr -> QueryExpr
With :: Bool -> [(Alias, QueryExpr)] -> QueryExpr -> QueryExpr
[qeWithRecursive] :: QueryExpr -> Bool
[qeViews] :: QueryExpr -> [(Alias, QueryExpr)]
[qeQueryExpression] :: QueryExpr -> QueryExpr
Values :: [[ScalarExpr]] -> QueryExpr
Table :: [Name] -> QueryExpr
QueryExprParens :: QueryExpr -> QueryExpr
QEComment :: [Comment] -> QueryExpr -> QueryExpr
-- | Query expression set operators.
data SetOperatorName
Union :: SetOperatorName
Except :: SetOperatorName
Intersect :: SetOperatorName
-- | Corresponding, an option for the set operators.
data Corresponding
Corresponding :: Corresponding
Respectively :: Corresponding
-- | Represents an alias for a table valued expression, used in with
-- queries and in from alias, e.g. select a from t u, select a from t
-- u(b), with a(c) as select 1, select * from a.
data Alias
Alias :: Name -> Maybe [Name] -> Alias
-- | Represents an item in a group by clause.
data GroupingExpr
GroupingParens :: [GroupingExpr] -> GroupingExpr
Cube :: [GroupingExpr] -> GroupingExpr
Rollup :: [GroupingExpr] -> GroupingExpr
GroupingSets :: [GroupingExpr] -> GroupingExpr
SimpleGroup :: ScalarExpr -> GroupingExpr
-- | Represents a entry in the csv of tables in the from clause.
data TableRef
-- | from t / from s.t
TRSimple :: [Name] -> TableRef
-- | from a join b, the bool is true if natural was used
TRJoin :: TableRef -> Bool -> JoinType -> TableRef -> Maybe JoinCondition -> TableRef
-- | from (a)
TRParens :: TableRef -> TableRef
-- | from a as b(c,d)
TRAlias :: TableRef -> Alias -> TableRef
-- | from (query expr)
TRQueryExpr :: QueryExpr -> TableRef
-- | from function(args)
TRFunction :: [Name] -> [ScalarExpr] -> TableRef
-- | from lateral t
TRLateral :: TableRef -> TableRef
-- | ODBC {oj t1 left outer join t2 on expr} syntax
TROdbc :: TableRef -> TableRef
-- | The type of a join.
data JoinType
JInner :: JoinType
JLeft :: JoinType
JRight :: JoinType
JFull :: JoinType
JCross :: JoinType
-- | The join condition.
data JoinCondition
-- | on expr
JoinOn :: ScalarExpr -> JoinCondition
-- | using (column list)
JoinUsing :: [Name] -> JoinCondition
data Statement
CreateSchema :: [Name] -> Statement
DropSchema :: [Name] -> DropBehaviour -> Statement
CreateTable :: [Name] -> [TableElement] -> Bool -> Statement
AlterTable :: [Name] -> AlterTableAction -> Statement
DropTable :: [Name] -> DropBehaviour -> Statement
CreateIndex :: Bool -> [Name] -> [Name] -> [Name] -> Statement
CreateView :: Bool -> [Name] -> Maybe [Name] -> QueryExpr -> Maybe CheckOption -> Statement
DropView :: [Name] -> DropBehaviour -> Statement
CreateDomain :: [Name] -> TypeName -> Maybe ScalarExpr -> [(Maybe [Name], ScalarExpr)] -> Statement
AlterDomain :: [Name] -> AlterDomainAction -> Statement
DropDomain :: [Name] -> DropBehaviour -> Statement
CreateAssertion :: [Name] -> ScalarExpr -> Statement
DropAssertion :: [Name] -> DropBehaviour -> Statement
CreateSequence :: [Name] -> [SequenceGeneratorOption] -> Statement
AlterSequence :: [Name] -> [SequenceGeneratorOption] -> Statement
DropSequence :: [Name] -> DropBehaviour -> Statement
SelectStatement :: QueryExpr -> Statement
Delete :: [Name] -> Maybe Name -> Maybe ScalarExpr -> Statement
Truncate :: [Name] -> IdentityRestart -> Statement
Insert :: [Name] -> Maybe [Name] -> InsertSource -> Statement
Update :: [Name] -> Maybe Name -> [SetClause] -> Maybe ScalarExpr -> Statement
GrantPrivilege :: [PrivilegeAction] -> PrivilegeObject -> [Name] -> GrantOption -> Statement
GrantRole :: [Name] -> [Name] -> AdminOption -> Statement
CreateRole :: Name -> Statement
DropRole :: Name -> Statement
RevokePrivilege :: GrantOptionFor -> [PrivilegeAction] -> PrivilegeObject -> [Name] -> DropBehaviour -> Statement
RevokeRole :: AdminOptionFor -> [Name] -> [Name] -> DropBehaviour -> Statement
StartTransaction :: Statement
Savepoint :: Name -> Statement
ReleaseSavepoint :: Name -> Statement
Commit :: Statement
Rollback :: Maybe Name -> Statement
StatementComment :: [Comment] -> Statement
EmptyStatement :: Statement
data DropBehaviour
Restrict :: DropBehaviour
Cascade :: DropBehaviour
DefaultDropBehaviour :: DropBehaviour
data IdentityRestart
ContinueIdentity :: IdentityRestart
RestartIdentity :: IdentityRestart
DefaultIdentityRestart :: IdentityRestart
data InsertSource
InsertQuery :: QueryExpr -> InsertSource
DefaultInsertValues :: InsertSource
data SetClause
Set :: [Name] -> ScalarExpr -> SetClause
SetMultiple :: [[Name]] -> [ScalarExpr] -> SetClause
data TableElement
TableColumnDef :: ColumnDef -> TableElement
TableConstraintDef :: Maybe [Name] -> TableConstraint -> TableElement
data ColumnDef
ColumnDef :: Name -> Maybe TypeName -> [ColConstraintDef] -> ColumnDef
data DefaultClause
DefaultClause :: ScalarExpr -> DefaultClause
IdentityColumnSpec :: IdentityWhen -> [SequenceGeneratorOption] -> DefaultClause
GenerationClause :: ScalarExpr -> DefaultClause
data IdentityWhen
GeneratedAlways :: IdentityWhen
GeneratedByDefault :: IdentityWhen
data SequenceGeneratorOption
SGODataType :: TypeName -> SequenceGeneratorOption
SGOStartWith :: Integer -> SequenceGeneratorOption
SGORestart :: Maybe Integer -> SequenceGeneratorOption
SGOIncrementBy :: Integer -> SequenceGeneratorOption
SGOMaxValue :: Integer -> SequenceGeneratorOption
SGONoMaxValue :: SequenceGeneratorOption
SGOMinValue :: Integer -> SequenceGeneratorOption
SGONoMinValue :: SequenceGeneratorOption
SGOCycle :: SequenceGeneratorOption
SGONoCycle :: SequenceGeneratorOption
data ColConstraintDef
ColConstraintDef :: Maybe [Name] -> ColConstraint -> ColConstraintDef
type AutoincrementClause = Bool
data ColConstraint
ColNullableConstraint :: ColConstraint
ColNotNullConstraint :: ColConstraint
ColUniqueConstraint :: ColConstraint
ColPrimaryKeyConstraint :: AutoincrementClause -> ColConstraint
ColReferencesConstraint :: [Name] -> Maybe Name -> ReferenceMatch -> ReferentialAction -> ReferentialAction -> ColConstraint
ColCheckConstraint :: ScalarExpr -> ColConstraint
ColDefaultClause :: DefaultClause -> ColConstraint
data TableConstraint
TableUniqueConstraint :: [Name] -> TableConstraint
TablePrimaryKeyConstraint :: [Name] -> TableConstraint
TableReferencesConstraint :: [Name] -> [Name] -> Maybe [Name] -> ReferenceMatch -> ReferentialAction -> ReferentialAction -> TableConstraint
TableCheckConstraint :: ScalarExpr -> TableConstraint
data ReferenceMatch
DefaultReferenceMatch :: ReferenceMatch
MatchFull :: ReferenceMatch
MatchPartial :: ReferenceMatch
MatchSimple :: ReferenceMatch
data ReferentialAction
DefaultReferentialAction :: ReferentialAction
RefCascade :: ReferentialAction
RefSetNull :: ReferentialAction
RefSetDefault :: ReferentialAction
RefRestrict :: ReferentialAction
RefNoAction :: ReferentialAction
data AlterTableAction
AddColumnDef :: ColumnDef -> AlterTableAction
AlterColumnSetDefault :: Name -> ScalarExpr -> AlterTableAction
AlterColumnDropDefault :: Name -> AlterTableAction
AlterColumnSetNotNull :: Name -> AlterTableAction
AlterColumnDropNotNull :: Name -> AlterTableAction
AlterColumnSetDataType :: Name -> TypeName -> AlterTableAction
DropColumn :: Name -> DropBehaviour -> AlterTableAction
AddTableConstraintDef :: Maybe [Name] -> TableConstraint -> AlterTableAction
DropTableConstraintDef :: [Name] -> DropBehaviour -> AlterTableAction
data CheckOption
DefaultCheckOption :: CheckOption
CascadedCheckOption :: CheckOption
LocalCheckOption :: CheckOption
data AlterDomainAction
ADSetDefault :: ScalarExpr -> AlterDomainAction
ADDropDefault :: AlterDomainAction
ADAddConstraint :: Maybe [Name] -> ScalarExpr -> AlterDomainAction
ADDropConstraint :: [Name] -> AlterDomainAction
data AdminOption
WithAdminOption :: AdminOption
WithoutAdminOption :: AdminOption
data GrantOption
WithGrantOption :: GrantOption
WithoutGrantOption :: GrantOption
data PrivilegeObject
PrivTable :: [Name] -> PrivilegeObject
PrivDomain :: [Name] -> PrivilegeObject
PrivType :: [Name] -> PrivilegeObject
PrivSequence :: [Name] -> PrivilegeObject
PrivFunction :: [Name] -> PrivilegeObject
data PrivilegeAction
PrivAll :: PrivilegeAction
PrivSelect :: [Name] -> PrivilegeAction
PrivDelete :: PrivilegeAction
PrivInsert :: [Name] -> PrivilegeAction
PrivUpdate :: [Name] -> PrivilegeAction
PrivReferences :: [Name] -> PrivilegeAction
PrivUsage :: PrivilegeAction
PrivTrigger :: PrivilegeAction
PrivExecute :: PrivilegeAction
data AdminOptionFor
AdminOptionFor :: AdminOptionFor
NoAdminOptionFor :: AdminOptionFor
data GrantOptionFor
GrantOptionFor :: GrantOptionFor
NoGrantOptionFor :: GrantOptionFor
-- | Comment. Useful when generating SQL code programmatically. The parser
-- doesn't produce these.
newtype Comment
BlockComment :: Text -> Comment
-- | Helper/'default' value for query exprs to make creating query expr
-- values a little easier. It is defined like this:
--
--
-- makeSelect :: MakeSelect
-- makeSelect
-- = MakeSelect
-- {msSetQuantifier = SQDefault
-- ,msSelectList = []
-- ,msFrom = []
-- ,msWhere = Nothing
-- ,msGroupBy = []
-- ,msHaving = Nothing
-- ,msOrderBy = []
-- ,msOffset = Nothing
-- ,msFetchFirst = Nothing}
--
-- Example, to create a select query expression with a select list 'sl':
-- toQueryExpr $ makeSelect {msSelectList = sl}
--
makeSelect :: MakeSelect
toQueryExpr :: MakeSelect -> QueryExpr
data MakeSelect
MakeSelect :: SetQuantifier -> [(ScalarExpr, Maybe Name)] -> [TableRef] -> Maybe ScalarExpr -> [GroupingExpr] -> Maybe ScalarExpr -> [SortSpec] -> Maybe ScalarExpr -> Maybe ScalarExpr -> MakeSelect
[msSetQuantifier] :: MakeSelect -> SetQuantifier
[msSelectList] :: MakeSelect -> [(ScalarExpr, Maybe Name)]
[msFrom] :: MakeSelect -> [TableRef]
[msWhere] :: MakeSelect -> Maybe ScalarExpr
[msGroupBy] :: MakeSelect -> [GroupingExpr]
[msHaving] :: MakeSelect -> Maybe ScalarExpr
[msOrderBy] :: MakeSelect -> [SortSpec]
[msOffset] :: MakeSelect -> Maybe ScalarExpr
[msFetchFirst] :: MakeSelect -> Maybe ScalarExpr
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Name
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Name
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Name
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Name
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.IntervalTypeField
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.IntervalTypeField
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.IntervalTypeField
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.IntervalTypeField
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Sign
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Sign
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Sign
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Sign
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.PrecMultiplier
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.PrecMultiplier
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.PrecMultiplier
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.PrecMultiplier
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.PrecUnits
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.PrecUnits
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.PrecUnits
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.PrecUnits
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.TypeName
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.TypeName
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.TypeName
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.TypeName
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SubQueryExprType
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SubQueryExprType
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SubQueryExprType
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SubQueryExprType
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.CompPredQuantifier
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.CompPredQuantifier
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.CompPredQuantifier
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.CompPredQuantifier
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.NullsOrder
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.NullsOrder
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.NullsOrder
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.NullsOrder
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.FrameRows
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.FrameRows
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.FrameRows
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.FrameRows
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.OdbcLiteralType
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.OdbcLiteralType
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.OdbcLiteralType
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.OdbcLiteralType
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SetQuantifier
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SetQuantifier
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SetQuantifier
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SetQuantifier
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Direction
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Direction
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Direction
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Direction
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SetOperatorName
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SetOperatorName
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SetOperatorName
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SetOperatorName
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Corresponding
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Corresponding
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Corresponding
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Corresponding
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Alias
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Alias
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Alias
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Alias
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.JoinType
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.JoinType
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.JoinType
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.JoinType
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.DropBehaviour
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.DropBehaviour
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.DropBehaviour
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.DropBehaviour
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.IdentityRestart
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.IdentityRestart
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.IdentityRestart
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.IdentityRestart
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ReferenceMatch
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ReferenceMatch
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ReferenceMatch
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ReferenceMatch
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ReferentialAction
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ReferentialAction
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ReferentialAction
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ReferentialAction
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.IdentityWhen
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.IdentityWhen
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.IdentityWhen
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.IdentityWhen
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SequenceGeneratorOption
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SequenceGeneratorOption
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SequenceGeneratorOption
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SequenceGeneratorOption
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.CheckOption
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.CheckOption
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.CheckOption
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.CheckOption
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.AdminOption
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.AdminOption
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.AdminOption
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.AdminOption
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.GrantOption
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.GrantOption
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.GrantOption
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.GrantOption
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.AdminOptionFor
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.AdminOptionFor
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.AdminOptionFor
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.AdminOptionFor
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.GrantOptionFor
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.GrantOptionFor
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.GrantOptionFor
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.GrantOptionFor
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.PrivilegeObject
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.PrivilegeObject
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.PrivilegeObject
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.PrivilegeObject
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.PrivilegeAction
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.PrivilegeAction
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.PrivilegeAction
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.PrivilegeAction
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Comment
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Comment
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Comment
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Comment
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.InPredValue
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.InPredValue
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.InPredValue
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.InPredValue
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.FramePos
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.FramePos
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.FramePos
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.FramePos
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Frame
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Frame
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Frame
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Frame
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SortSpec
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SortSpec
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SortSpec
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SortSpec
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.GroupingExpr
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.GroupingExpr
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.GroupingExpr
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.GroupingExpr
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.JoinCondition
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.JoinCondition
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.JoinCondition
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.JoinCondition
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.TableRef
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.TableRef
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.TableRef
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.TableRef
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.QueryExpr
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.QueryExpr
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.QueryExpr
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.QueryExpr
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ScalarExpr
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ScalarExpr
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ScalarExpr
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ScalarExpr
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.AlterDomainAction
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.AlterDomainAction
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.AlterDomainAction
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.AlterDomainAction
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.DefaultClause
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.DefaultClause
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.DefaultClause
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.DefaultClause
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.TableConstraint
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.TableConstraint
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.TableConstraint
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.TableConstraint
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ColConstraint
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ColConstraint
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ColConstraint
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ColConstraint
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ColConstraintDef
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ColConstraintDef
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ColConstraintDef
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ColConstraintDef
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.ColumnDef
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.ColumnDef
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.ColumnDef
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.ColumnDef
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.AlterTableAction
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.AlterTableAction
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.AlterTableAction
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.AlterTableAction
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.TableElement
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.TableElement
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.TableElement
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.TableElement
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.SetClause
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.SetClause
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.SetClause
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.SetClause
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.InsertSource
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.InsertSource
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.InsertSource
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.InsertSource
instance Data.Data.Data Language.SQL.SimpleSQL.Syntax.Statement
instance GHC.Read.Read Language.SQL.SimpleSQL.Syntax.Statement
instance GHC.Show.Show Language.SQL.SimpleSQL.Syntax.Statement
instance GHC.Classes.Eq Language.SQL.SimpleSQL.Syntax.Statement
-- | These is the pretty printing functions, which produce SQL source from
-- ASTs. The code attempts to format the output in a readable way.
module Language.SQL.SimpleSQL.Pretty
-- | Convert a query expr ast to Text.
prettyQueryExpr :: Dialect -> QueryExpr -> Text
-- | Convert a value expr ast to Text.
prettyScalarExpr :: Dialect -> ScalarExpr -> Text
-- | Convert a statement ast to Text.
prettyStatement :: Dialect -> Statement -> Text
-- | Convert a list of statements to Text. A semicolon is inserted after
-- each statement.
prettyStatements :: Dialect -> [Statement] -> Text
-- | This is the module with the parser functions.
module Language.SQL.SimpleSQL.Parse
-- | Parses a query expr, trailing semicolon optional.
parseQueryExpr :: Dialect -> Text -> Maybe (Int, Int) -> Text -> Either ParseError QueryExpr
-- | Parses a scalar expression.
parseScalarExpr :: Dialect -> Text -> Maybe (Int, Int) -> Text -> Either ParseError ScalarExpr
-- | Parses a statement, trailing semicolon optional.
parseStatement :: Dialect -> Text -> Maybe (Int, Int) -> Text -> Either ParseError Statement
-- | Parses a list of statements, with semi colons between them. The final
-- semicolon is optional.
parseStatements :: Dialect -> Text -> Maybe (Int, Int) -> Text -> Either ParseError [Statement]
data ParseError
LexError :: ParseError -> ParseError
ParseError :: ParseErrorBundle SQLStream Void -> ParseError
prettyError :: ParseError -> Text
-- | ansi sql 2011 dialect
ansi2011 :: Dialect