-- 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 -- -- 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 -- -- 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: -- -- 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: -- -- 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