-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | HDBC instance of relational-query and typed query interface for HDBC
--   
--   This package contains the HDBC instance of relational-query and the
--   typed query interface for HDBC. Generating Database table definitions
--   and functions for relational-query by reading table and index
--   definitions from Database system catalogs.
@package relational-query-HDBC
@version 0.6.4.2


module Database.HDBC.SqlValueExtra
instance Data.Convertible.Base.Convertible GHC.Int.Int8 Database.HDBC.SqlValue.SqlValue
instance Data.Convertible.Base.Convertible Database.HDBC.SqlValue.SqlValue GHC.Int.Int8
instance Data.Convertible.Base.Convertible GHC.Int.Int16 Database.HDBC.SqlValue.SqlValue
instance Data.Convertible.Base.Convertible Database.HDBC.SqlValue.SqlValue GHC.Int.Int16


-- | This module provides driver interface to load database system catalog
--   via HDBC.
module Database.HDBC.Schema.Driver

-- | Mapping between type name string of DBMS and type in Haskell. Type
--   name string depends on specification of DBMS system catalogs.
type TypeMap = [(String, TypeQ)]

-- | Log string type for compile time.
data Log

-- | Folding operation of <a>Log</a> type.
runLog :: (String -> t) -> (String -> t) -> Log -> t

-- | Channel to store compile-time warning messages.
data LogChan

-- | Build and return a new instance of <a>LogChan</a>.
newLogChan :: Bool -> IO LogChan

-- | Take all logs list from channel.
takeLogs :: LogChan -> IO [Log]

-- | Push a warning string into <a>LogChan</a>.
putWarning :: LogChan -> String -> IO ()

-- | Push an error string into <a>LogChan</a>.
putError :: LogChan -> String -> IO ()

-- | Put verbose compile-time message as warning when
--   <a>verboseAsWarning</a>.
putVerbose :: LogChan -> String -> IO ()

-- | Push an error string into <a>LogChan</a> and return failed context.
failWith :: LogChan -> String -> MaybeT IO a

-- | Hoist from <a>Maybe</a> context into <a>MaybeT</a>.
hoistMaybe :: Monad m => Maybe a -> MaybeT m a

-- | Run <a>MaybeT</a> with default value.
maybeIO :: b -> (a -> b) -> MaybeT IO a -> IO b

-- | Interface type to load database system catalog via HDBC.
data Driver conn
Driver :: TypeMap -> (TypeMap -> conn -> LogChan -> String -> String -> IO ([(String, TypeQ)], [Int])) -> (conn -> LogChan -> String -> String -> IO [String]) -> Driver conn

-- | Custom type mapping of this driver
[typeMap] :: Driver conn -> TypeMap

-- | Get column name and Haskell type pairs and not-null columns index.
[getFieldsWithMap] :: Driver conn -> TypeMap -> conn -> LogChan -> String -> String -> IO ([(String, TypeQ)], [Int])

-- | Get primary key column name.
[getPrimaryKey] :: Driver conn -> conn -> LogChan -> String -> String -> IO [String]

-- | Empty definition of <a>Driver</a>
emptyDriver :: IConnection conn => Driver conn

-- | Helper function to call <a>getFieldsWithMap</a> using <a>typeMap</a>
--   of <a>Driver</a>.
getFields :: IConnection conn => Driver conn -> conn -> LogChan -> String -> String -> IO ([(String, TypeQ)], [Int])


-- | This module provides DB-record templates depends on HDBC.
module Database.HDBC.Record.TH

-- | Template to declare HDBC instances of DB-record against single value
--   type.
derivePersistableInstanceFromConvertible :: Q Type -> Q [Dec]


-- | This module provides typed statement running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.Statement

-- | Typed prepared statement type.
data PreparedStatement p a

-- | Unsafely untype prepared statement.
untypePrepared :: PreparedStatement p a -> Statement

-- | Run prepare and unsafely make Typed prepared statement.
unsafePrepare :: IConnection conn => conn -> String -> IO (PreparedStatement p a)

-- | Close PreparedStatement. Useful for connection pooling cases.
finish :: PreparedStatement p a -> IO ()

-- | Bracketed prepare operation. Unsafely make Typed prepared statement.
withUnsafePrepare :: IConnection conn => conn -> String -> (PreparedStatement p a -> IO b) -> IO b

-- | Bracketed prepare operation. Generalized prepare inferred from
--   <a>UntypeableNoFetch</a> instance.
withPrepareNoFetch :: (UntypeableNoFetch s, IConnection conn) => conn -> s p -> (PreparedStatement p () -> IO a) -> IO a

-- | Typed prepared statement which has bound placeholder parameters.
data BoundStatement a
BoundStatement :: Statement -> [SqlValue] -> BoundStatement a

-- | Untyped prepared statement before executed.
[bound] :: BoundStatement a -> Statement

-- | Bound parameters.
[params] :: BoundStatement a -> [SqlValue]

-- | Typed operation to bind parameters.
bind' :: RecordToSql SqlValue p -> PreparedStatement p a -> p -> BoundStatement a

-- | Typed operation to bind parameters. Inferred <a>RecordToSql</a> is
--   used.
bind :: ToSql SqlValue p => PreparedStatement p a -> p -> BoundStatement a

-- | Same as <a>bind</a> except for argument is flipped.
bindTo :: ToSql SqlValue p => p -> PreparedStatement p a -> BoundStatement a

-- | Typed executed statement.
data ExecutedStatement a

-- | Untyped executed statement.
executed :: ExecutedStatement a -> Statement

-- | Result of HDBC execute.
result :: ExecutedStatement a -> Integer

-- | Typed execute operation.
executeBound :: BoundStatement a -> IO (ExecutedStatement a)

-- | Use <a>executeBound</a> instead of this. WARNING! This name will be
--   used for executePrepared function in future release.

-- | <i>Warning: Use <a>executeBound</a> instead of this. This name will be
--   used for executePrepared function in future release.</i>
execute :: BoundStatement a -> IO (ExecutedStatement a)

-- | Bind parameters, execute prepared statement and get executed
--   statement.
executePrepared :: ToSql SqlValue p => PreparedStatement p a -> p -> IO (ExecutedStatement a)

-- | Generalized prepare inferred from <a>UntypeableNoFetch</a> instance.
prepareNoFetch :: (UntypeableNoFetch s, IConnection conn) => conn -> s p -> IO (PreparedStatement p ())

-- | Typed execute operation. Only get result.
executeBoundNoFetch :: BoundStatement () -> IO Integer

-- | Use <a>executeBoundNoFetch</a> instead of this. WARNING! This name
--   will be used for runPreparedNoFetch function in future release.
executeNoFetch :: BoundStatement () -> IO Integer

-- | Bind parameters, execute prepared statement and get execution result.
runPreparedNoFetch :: ToSql SqlValue a => PreparedStatement a () -> a -> IO Integer

-- | Prepare and run sequence for polymorphic no-fetch statement.
runNoFetch :: (UntypeableNoFetch s, IConnection conn, ToSql SqlValue a) => conn -> s a -> a -> IO Integer

-- | Prepare and run it against each parameter list.
mapNoFetch :: (UntypeableNoFetch s, IConnection conn, ToSql SqlValue a) => conn -> s a -> [a] -> IO [Integer]


-- | This module provides typed <a>Update</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.Update

-- | Typed prepared update type.
type PreparedUpdate p = PreparedStatement p ()

-- | Typed prepare update operation.
prepare :: IConnection conn => conn -> Update p -> IO (PreparedUpdate p)

-- | Same as <a>prepare</a>.
prepareUpdate :: IConnection conn => conn -> Update p -> IO (PreparedUpdate p)

-- | Bracketed prepare operation.
withPrepareUpdate :: IConnection conn => conn -> Update p -> (PreparedUpdate p -> IO a) -> IO a

-- | Bind parameters, execute statement and get execution result.
runPreparedUpdate :: ToSql SqlValue p => PreparedUpdate p -> p -> IO Integer

-- | Prepare update statement, bind parameters, execute statement and get
--   execution result.
runUpdate :: (IConnection conn, ToSql SqlValue p) => conn -> Update p -> p -> IO Integer

-- | Prepare and update with each parameter list.
mapUpdate :: (IConnection conn, ToSql SqlValue a) => conn -> Update a -> [a] -> IO [Integer]


-- | This module provides typed <a>Query</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.Query

-- | Typed prepared query type.
type PreparedQuery p a = PreparedStatement p a

-- | Typed prepare query operation.
prepare :: IConnection conn => conn -> Query p a -> IO (PreparedQuery p a)

-- | Same as <a>prepare</a>.
prepareQuery :: IConnection conn => conn -> Query p a -> IO (PreparedQuery p a)

-- | Bracketed prepare operation.
withPrepareQuery :: IConnection conn => conn -> Query p a -> (PreparedQuery p a -> IO b) -> IO b

-- | Fetch a record.
fetch :: FromSql SqlValue a => ExecutedStatement a -> IO (Maybe a)

-- | Lazily Fetch all records.
fetchAll :: FromSql SqlValue a => ExecutedStatement a -> IO [a]

-- | Strict version of <a>fetchAll</a>.
fetchAll' :: FromSql SqlValue a => ExecutedStatement a -> IO [a]

-- | Fetch expecting result records is unique.
listToUnique :: [a] -> IO (Maybe a)

-- | Fetch all records but get only first record. Expecting result records
--   is unique.
fetchUnique :: FromSql SqlValue a => ExecutedStatement a -> IO (Maybe a)

-- | Fetch all records but get only first record. Expecting result records
--   is unique. Error when records count is more than one.
fetchUnique' :: FromSql SqlValue a => ExecutedStatement a -> IO (Maybe a)

-- | Execute statement and lazily fetch all records.
runStatement :: FromSql SqlValue a => BoundStatement a -> IO [a]

-- | Strict version of <a>runStatement</a>.
runStatement' :: FromSql SqlValue a => BoundStatement a -> IO [a]

-- | Bind parameters, execute statement and lazily fetch all records.
runPreparedQuery :: (ToSql SqlValue p, FromSql SqlValue a) => PreparedQuery p a -> p -> IO [a]

-- | Strict version of <a>runPreparedQuery</a>.
runPreparedQuery' :: (ToSql SqlValue p, FromSql SqlValue a) => PreparedQuery p a -> p -> IO [a]

-- | Prepare SQL, bind parameters, execute statement and lazily fetch all
--   records.
runQuery :: (IConnection conn, ToSql SqlValue p, FromSql SqlValue a) => conn -> Query p a -> p -> IO [a]

-- | Strict version of <a>runQuery</a>.
runQuery' :: (IConnection conn, ToSql SqlValue p, FromSql SqlValue a) => conn -> Query p a -> p -> IO [a]


-- | This module provides typed <a>KeyUpdate</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.KeyUpdate

-- | Typed prepared key-update type.
data PreparedKeyUpdate p a

-- | Typed prepare key-update operation.
prepare :: IConnection conn => conn -> KeyUpdate p a -> IO (PreparedKeyUpdate p a)

-- | Same as <a>prepare</a>.
prepareKeyUpdate :: IConnection conn => conn -> KeyUpdate p a -> IO (PreparedKeyUpdate p a)

-- | Bracketed prepare operation.
withPrepareKeyUpdate :: IConnection conn => conn -> KeyUpdate p a -> (PreparedKeyUpdate p a -> IO b) -> IO b

-- | Typed operation to bind parameters for <a>PreparedKeyUpdate</a> type.
bindKeyUpdate :: ToSql SqlValue a => PreparedKeyUpdate p a -> a -> BoundStatement ()

-- | Bind parameters, execute statement and get execution result.
runPreparedKeyUpdate :: ToSql SqlValue a => PreparedKeyUpdate p a -> a -> IO Integer

-- | Prepare insert statement, bind parameters, execute statement and get
--   execution result.
runKeyUpdate :: (IConnection conn, ToSql SqlValue a) => conn -> KeyUpdate p a -> a -> IO Integer


-- | This module provides HDBC instance definitions of DB-record.
module Database.HDBC.Record.Persistable
instance Database.Record.Persistable.PersistableWidth Database.HDBC.SqlValue.SqlValue
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Database.HDBC.SqlValue.SqlValue
instance Database.Record.Persistable.PersistableWidth GHC.Real.Rational
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Real.Rational
instance Database.Record.Persistable.PersistableWidth GHC.Word.Word32
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Word.Word32
instance Database.Record.Persistable.PersistableWidth GHC.Word.Word64
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Word.Word64
instance Database.Record.Persistable.PersistableWidth Data.ByteString.Internal.ByteString
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.ByteString.Internal.ByteString
instance Database.Record.Persistable.PersistableWidth Data.ByteString.Lazy.Internal.ByteString
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.ByteString.Lazy.Internal.ByteString
instance Database.Record.Persistable.PersistableWidth GHC.Types.Double
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Types.Double
instance Database.Record.Persistable.PersistableWidth GHC.Types.Int
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Types.Int
instance Database.Record.Persistable.PersistableWidth GHC.Integer.Type.Integer
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull GHC.Integer.Type.Integer
instance Database.Record.Persistable.PersistableWidth System.Time.CalendarTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull System.Time.CalendarTime
instance Database.Record.Persistable.PersistableWidth System.Time.ClockTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull System.Time.ClockTime
instance Database.Record.Persistable.PersistableWidth System.Time.TimeDiff
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull System.Time.TimeDiff
instance Database.Record.Persistable.PersistableWidth Data.Text.Internal.Text
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Text.Internal.Text
instance Database.Record.Persistable.PersistableWidth Data.Text.Internal.Lazy.Text
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Text.Internal.Lazy.Text
instance Database.Record.Persistable.PersistableWidth Data.Time.Calendar.Days.Day
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.Calendar.Days.Day
instance Database.Record.Persistable.PersistableWidth Data.Time.Clock.Scale.DiffTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.Clock.Scale.DiffTime
instance Database.Record.Persistable.PersistableWidth Data.Time.Clock.UTC.NominalDiffTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.Clock.UTC.NominalDiffTime
instance Database.Record.Persistable.PersistableWidth Data.Time.Clock.UTC.UTCTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.Clock.UTC.UTCTime
instance Database.Record.Persistable.PersistableWidth Data.Time.LocalTime.LocalTime.LocalTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.LocalTime.LocalTime.LocalTime
instance Database.Record.Persistable.PersistableWidth Data.Time.LocalTime.LocalTime.ZonedTime
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.LocalTime.LocalTime.ZonedTime
instance Database.Record.Persistable.PersistableWidth Data.Time.LocalTime.TimeOfDay.TimeOfDay
instance Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull Data.Time.LocalTime.TimeOfDay.TimeOfDay
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.HDBC.SqlValue.SqlValue
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.HDBC.SqlValue.SqlValue
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Base.String
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Base.String
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int16
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int16
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int32
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int32
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int64
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int64
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int8
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Int.Int8
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Real.Rational
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Real.Rational
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Word.Word32
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Word.Word32
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Word.Word64
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Word.Word64
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.ByteString.Internal.ByteString
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.ByteString.Internal.ByteString
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.ByteString.Lazy.Internal.ByteString
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.ByteString.Lazy.Internal.ByteString
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Types.Bool
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Types.Bool
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Types.Char
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Types.Char
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Types.Double
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Types.Double
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Types.Int
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Types.Int
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue GHC.Integer.Type.Integer
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue GHC.Integer.Type.Integer
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue System.Time.CalendarTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue System.Time.CalendarTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue System.Time.ClockTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue System.Time.ClockTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue System.Time.TimeDiff
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue System.Time.TimeDiff
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Text.Internal.Text
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Text.Internal.Text
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Text.Internal.Lazy.Text
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Text.Internal.Lazy.Text
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.Calendar.Days.Day
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.Calendar.Days.Day
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.Scale.DiffTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.Scale.DiffTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.UTC.NominalDiffTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.UTC.NominalDiffTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.UTC.UTCTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.Clock.UTC.UTCTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.LocalTime.LocalTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.LocalTime.LocalTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.LocalTime.ZonedTime
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.LocalTime.ZonedTime
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.TimeOfDay.TimeOfDay
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Data.Time.LocalTime.TimeOfDay.TimeOfDay
instance Database.Relational.Query.Scalar.ScalarDegree Database.HDBC.SqlValue.SqlValue
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Base.String
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Int.Int16
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Int.Int32
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Int.Int64
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Int.Int8
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Real.Rational
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Word.Word32
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Word.Word64
instance Database.Relational.Query.Scalar.ScalarDegree Data.ByteString.Internal.ByteString
instance Database.Relational.Query.Scalar.ScalarDegree Data.ByteString.Lazy.Internal.ByteString
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Types.Bool
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Types.Char
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Types.Double
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Types.Int
instance Database.Relational.Query.Scalar.ScalarDegree GHC.Integer.Type.Integer
instance Database.Relational.Query.Scalar.ScalarDegree System.Time.CalendarTime
instance Database.Relational.Query.Scalar.ScalarDegree System.Time.ClockTime
instance Database.Relational.Query.Scalar.ScalarDegree System.Time.TimeDiff
instance Database.Relational.Query.Scalar.ScalarDegree Data.Text.Internal.Text
instance Database.Relational.Query.Scalar.ScalarDegree Data.Text.Internal.Lazy.Text
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.Calendar.Days.Day
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.Clock.Scale.DiffTime
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.Clock.UTC.NominalDiffTime
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.Clock.UTC.UTCTime
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.LocalTime.LocalTime.LocalTime
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.LocalTime.LocalTime.ZonedTime
instance Database.Relational.Query.Scalar.ScalarDegree Data.Time.LocalTime.TimeOfDay.TimeOfDay
instance Database.Record.Persistable.PersistableType Database.HDBC.SqlValue.SqlValue


-- | This module provides driver implementation to load IBM-DB2 system
--   catalog via HDBC.
module Database.HDBC.Schema.IBMDB2

-- | Driver implementation
driverIBMDB2 :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.DB2Syscat.Columns.Columns
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.DB2Syscat.Columns.Columns


module Database.HDBC.Schema.MySQL

-- | Driver implementation
driverMySQL :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.MySQLInfo.Columns.Columns
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.MySQLInfo.Columns.Columns


module Database.HDBC.Schema.Oracle

-- | Driver for Oracle DB
driverOracle :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.OracleDataDictionary.TabColumns.DbaTabColumns
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.OracleDataDictionary.TabColumns.DbaTabColumns


-- | This module provides driver implementation to load PostgreSQL system
--   catalog via HDBC.
module Database.HDBC.Schema.PostgreSQL

-- | Driver implementation
driverPostgreSQL :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.PgCatalog.PgAttribute.PgAttribute
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.PgCatalog.PgAttribute.PgAttribute
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.PgCatalog.PgType.PgType
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.PgCatalog.PgType.PgType


module Database.HDBC.Schema.SQLServer

-- | Driver implementation
driverSQLServer :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLServerSyscat.Columns.Columns
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLServerSyscat.Columns.Columns
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLServerSyscat.Types.Types
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLServerSyscat.Types.Types


module Database.HDBC.Schema.SQLite3

-- | Driver implementation
driverSQLite3 :: IConnection conn => Driver conn
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.TableInfo.TableInfo
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.TableInfo.TableInfo
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.IndexList.IndexList
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.IndexList.IndexList
instance Database.Record.FromSql.FromSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.IndexInfo.IndexInfo
instance Database.Record.ToSql.ToSql Database.HDBC.SqlValue.SqlValue Database.Relational.Schema.SQLite3Syscat.IndexInfo.IndexInfo


-- | This module provides typed <a>InsertQuery</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.InsertQuery

-- | Typed prepared insert query type.
type PreparedInsertQuery p = PreparedStatement p ()

-- | Typed prepare insert-query operation.
prepare :: IConnection conn => conn -> InsertQuery p -> IO (PreparedInsertQuery p)

-- | Same as <a>prepare</a>.
prepareInsertQuery :: IConnection conn => conn -> InsertQuery p -> IO (PreparedInsertQuery p)

-- | Bracketed prepare operation.
withPrepareInsertQuery :: IConnection conn => conn -> InsertQuery p -> (PreparedInsertQuery p -> IO a) -> IO a

-- | Bind parameters, execute statement and get execution result.
runPreparedInsertQuery :: ToSql SqlValue p => PreparedInsertQuery p -> p -> IO Integer

-- | Prepare insert statement, bind parameters, execute statement and get
--   execution result.
runInsertQuery :: (IConnection conn, ToSql SqlValue p) => conn -> InsertQuery p -> p -> IO Integer


-- | This module provides typed <a>Insert</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.Insert

-- | Typed prepared insert type.
type PreparedInsert a = PreparedStatement a ()

-- | Typed prepare insert operation.
prepare :: IConnection conn => conn -> Insert a -> IO (PreparedInsert a)

-- | Same as <a>prepare</a>.
prepareInsert :: IConnection conn => conn -> Insert a -> IO (PreparedInsert a)

-- | Bind parameters, execute statement and get execution result.
runPreparedInsert :: ToSql SqlValue a => PreparedInsert a -> a -> IO Integer

-- | Prepare insert statement, bind parameters, execute statement and get
--   execution result.
runInsert :: (IConnection conn, ToSql SqlValue a) => conn -> Insert a -> a -> IO Integer

-- | Prepare and insert each record.
mapInsert :: (IConnection conn, ToSql SqlValue a) => conn -> Insert a -> [a] -> IO [Integer]

-- | Prepare and insert with chunk insert statement.
chunksInsert :: (IConnection conn, ToSql SqlValue a) => conn -> Insert a -> [a] -> IO [[Integer]]


-- | This module provides typed <a>Delete</a> running sequence which
--   intermediate structures are typed.
module Database.HDBC.Record.Delete

-- | Typed prepared delete type.
type PreparedDelete p = PreparedStatement p ()

-- | Typed prepare delete operation.
prepare :: IConnection conn => conn -> Delete p -> IO (PreparedDelete p)

-- | Same as <a>prepare</a>.
prepareDelete :: IConnection conn => conn -> Delete p -> IO (PreparedDelete p)

-- | Bracketed prepare operation.
withPrepareDelete :: IConnection conn => conn -> Delete p -> (PreparedDelete p -> IO a) -> IO a

-- | Bind parameters, execute statement and get execution result.
runPreparedDelete :: ToSql SqlValue p => PreparedDelete p -> p -> IO Integer

-- | Prepare delete statement, bind parameters, execute statement and get
--   execution result.
runDelete :: (IConnection conn, ToSql SqlValue p) => conn -> Delete p -> p -> IO Integer


-- | This module provides merged namespace of typed <tt>Query</tt>,
--   <tt>Insert</tt>, <tt>InsertQuery</tt>, <tt>Update</tt>,
--   <tt>KeyUpdate</tt> and <tt>Delete</tt> running sequences.
module Database.HDBC.Record


-- | This module contains templates to generate Haskell record types and
--   HDBC instances correspond to RDB table schema.
module Database.HDBC.Query.TH

-- | Generate all persistable templates against defined record like type
--   constructor.
makeRelationalRecord :: Name -> Q [Dec]

-- | Deprecated. use <a>makeRelationalRecord</a>.

-- | <i>Deprecated: Use makeRelationalRecord instead of this.</i>
makeRecordPersistableDefault :: Name -> Q [Dec]

-- | Generate all HDBC templates about table except for constraint keys.
defineTableDefault' :: Config -> String -> String -> [(String, TypeQ)] -> [Name] -> Q [Dec]

-- | Generate all HDBC templates about table.
defineTableDefault :: Config -> String -> String -> [(String, TypeQ)] -> [Name] -> [Int] -> Maybe Int -> Q [Dec]

-- | Generate all HDBC templates using system catalog informations with
--   specified config.
defineTableFromDB' :: IConnection conn => IO conn -> Config -> Driver conn -> String -> String -> [Name] -> Q [Dec]

-- | Generate all HDBC templates using system catalog informations.
defineTableFromDB :: IConnection conn => IO conn -> Driver conn -> String -> String -> [Name] -> Q [Dec]

-- | Verify composed <tt>Query</tt> and inline it in compile type.
inlineVerifiedQuery :: IConnection conn => IO conn -> Name -> Relation p r -> Config -> QuerySuffix -> String -> Q [Dec]
