Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Database.SQLite3.Direct
Contents
- Connection management
- Simple query execution
- Statement management
- Parameter and column information
- Binding values to a prepared statement
- Reading the result row
- control loading of extensions
- Result statistics
- Create custom SQL functions
- Create custom collations
- Interrupting a long-running query
- Incremental blob I/O
- Online Backup API
- Types
Description
This API is a slightly lower-level version of Database.SQLite3. Namely:
- It returns errors instead of throwing them.
- It only uses cheap conversions. None of these bindings convert from
String
orText
.
Synopsis
- open :: Utf8 -> IO (Either (Error, Utf8) Database)
- open2 :: Utf8 -> Int -> Maybe Utf8 -> IO (Either (Error, Utf8) Database)
- close :: Database -> IO (Either Error ())
- errcode :: Database -> IO Error
- extendedErrcode :: Database -> IO Error
- errmsg :: Database -> IO Utf8
- setTrace :: Database -> Maybe (Utf8 -> IO ()) -> IO ()
- getAutoCommit :: Database -> IO Bool
- setSharedCacheEnabled :: Bool -> IO (Either Error ())
- exec :: Database -> Utf8 -> IO (Either (Error, Utf8) ())
- execWithCallback :: Database -> Utf8 -> ExecCallback -> IO (Either (Error, Utf8) ())
- type ExecCallback = ColumnCount -> [Utf8] -> [Maybe Utf8] -> IO ()
- prepare :: Database -> Utf8 -> IO (Either Error (Maybe Statement))
- getStatementDatabase :: Statement -> IO Database
- step :: Statement -> IO (Either Error StepResult)
- stepNoCB :: Statement -> IO (Either Error StepResult)
- reset :: Statement -> IO (Either Error ())
- finalize :: Statement -> IO (Either Error ())
- clearBindings :: Statement -> IO ()
- statementSql :: Statement -> IO (Maybe Utf8)
- bindParameterCount :: Statement -> IO ParamIndex
- bindParameterName :: Statement -> ParamIndex -> IO (Maybe Utf8)
- bindParameterIndex :: Statement -> Utf8 -> IO (Maybe ParamIndex)
- columnCount :: Statement -> IO ColumnCount
- columnName :: Statement -> ColumnIndex -> IO (Maybe Utf8)
- bindInt64 :: Statement -> ParamIndex -> Int64 -> IO (Either Error ())
- bindDouble :: Statement -> ParamIndex -> Double -> IO (Either Error ())
- bindText :: Statement -> ParamIndex -> Utf8 -> IO (Either Error ())
- bindBlob :: Statement -> ParamIndex -> ByteString -> IO (Either Error ())
- bindZeroBlob :: Statement -> ParamIndex -> Int -> IO (Either Error ())
- bindNull :: Statement -> ParamIndex -> IO (Either Error ())
- columnType :: Statement -> ColumnIndex -> IO ColumnType
- columnInt64 :: Statement -> ColumnIndex -> IO Int64
- columnDouble :: Statement -> ColumnIndex -> IO Double
- columnText :: Statement -> ColumnIndex -> IO Utf8
- columnBlob :: Statement -> ColumnIndex -> IO ByteString
- setLoadExtensionEnabled :: Database -> Bool -> IO (Either Error ())
- lastInsertRowId :: Database -> IO Int64
- changes :: Database -> IO Int
- totalChanges :: Database -> IO Int
- createFunction :: Database -> Utf8 -> Maybe ArgCount -> Bool -> (FuncContext -> FuncArgs -> IO ()) -> IO (Either Error ())
- createAggregate :: Database -> Utf8 -> Maybe ArgCount -> a -> (FuncContext -> FuncArgs -> a -> IO a) -> (FuncContext -> a -> IO ()) -> IO (Either Error ())
- deleteFunction :: Database -> Utf8 -> Maybe ArgCount -> IO (Either Error ())
- funcArgCount :: FuncArgs -> ArgCount
- funcArgType :: FuncArgs -> ArgIndex -> IO ColumnType
- funcArgInt64 :: FuncArgs -> ArgIndex -> IO Int64
- funcArgDouble :: FuncArgs -> ArgIndex -> IO Double
- funcArgText :: FuncArgs -> ArgIndex -> IO Utf8
- funcArgBlob :: FuncArgs -> ArgIndex -> IO ByteString
- funcResultInt64 :: FuncContext -> Int64 -> IO ()
- funcResultDouble :: FuncContext -> Double -> IO ()
- funcResultText :: FuncContext -> Utf8 -> IO ()
- funcResultBlob :: FuncContext -> ByteString -> IO ()
- funcResultZeroBlob :: FuncContext -> Int -> IO ()
- funcResultNull :: FuncContext -> IO ()
- getFuncContextDatabase :: FuncContext -> IO Database
- createCollation :: Database -> Utf8 -> (Utf8 -> Utf8 -> Ordering) -> IO (Either Error ())
- deleteCollation :: Database -> Utf8 -> IO (Either Error ())
- interrupt :: Database -> IO ()
- blobOpen :: Database -> Utf8 -> Utf8 -> Utf8 -> Int64 -> Bool -> IO (Either Error Blob)
- blobClose :: Blob -> IO (Either Error ())
- blobReopen :: Blob -> Int64 -> IO (Either Error ())
- blobBytes :: Blob -> IO Int
- blobRead :: Blob -> Int -> Int -> IO (Either Error ByteString)
- blobReadBuf :: Blob -> Ptr a -> Int -> Int -> IO (Either Error ())
- blobWrite :: Blob -> ByteString -> Int -> IO (Either Error ())
- backupInit :: Database -> Utf8 -> Database -> Utf8 -> IO (Either Error Backup)
- backupFinish :: Backup -> IO (Either Error ())
- backupStep :: Backup -> Int -> IO (Either Error BackupStepResult)
- backupRemaining :: Backup -> IO Int
- backupPagecount :: Backup -> IO Int
- newtype Database = Database (Ptr CDatabase)
- newtype Statement = Statement (Ptr CStatement)
- data ColumnType
- newtype FuncContext = FuncContext (Ptr CContext)
- data FuncArgs = FuncArgs CArgCount (Ptr (Ptr CValue))
- data Blob = Blob Database (Ptr CBlob)
- data Backup = Backup Database (Ptr CBackup)
- data StepResult
- data BackupStepResult
- data Error
- = ErrorOK
- | ErrorError
- | ErrorInternal
- | ErrorPermission
- | ErrorAbort
- | ErrorBusy
- | ErrorLocked
- | ErrorNoMemory
- | ErrorReadOnly
- | ErrorInterrupt
- | ErrorIO
- | ErrorCorrupt
- | ErrorNotFound
- | ErrorFull
- | ErrorCan'tOpen
- | ErrorProtocol
- | ErrorEmpty
- | ErrorSchema
- | ErrorTooBig
- | ErrorConstraint
- | ErrorMismatch
- | ErrorMisuse
- | ErrorNoLargeFileSupport
- | ErrorAuthorization
- | ErrorFormat
- | ErrorRange
- | ErrorNotADatabase
- | ErrorNotice
- | ErrorWarning
- | ErrorRow
- | ErrorDone
- | ErrorErrorMissingCollatingSquence
- | ErrorErrorRetry
- | ErrorErrorSnapshot
- | ErrorIORead
- | ErrorIOShortRead
- | ErrorIOWrite
- | ErrorIOFsync
- | ErrorIODirectoryFsync
- | ErrorIOTruncate
- | ErrorIOFstat
- | ErrorIOUnlock
- | ErrorIOReadLock
- | ErrorIOBlocked
- | ErrorIODelete
- | ErrorIONoMemory
- | ErrorIOAccess
- | ErrorIOCheckReservedLock
- | ErrorIOLock
- | ErrorIOClose
- | ErrorIODirectoryClose
- | ErrorIOShmOpen
- | ErrorIOShmSize
- | ErrorIOShmLock
- | ErrorIOShmMap
- | ErrorIOSeek
- | ErrorIODeleteNoEntity
- | ErrorIOMmap
- | ErrorIOGetTempPath
- | ErrorIOConvertedPath
- | ErrorIOVNode
- | ErrorIOAuth
- | ErrorIOBeginAtomic
- | ErrorIOCommitAtomic
- | ErrorIORollbackAtomic
- | ErrorIOData
- | ErrorIOCorruptFilesystem
- | ErrorLockedSharedCache
- | ErrorLockedVirtualTable
- | ErrorBusyRecovery
- | ErrorBusySnapshot
- | ErrorBusyTimeout
- | ErrorCan'tOpenNotTempDirectory
- | ErrorCan'tOpenIsDirectory
- | ErrorCan'tOpenFullPath
- | ErrorCan'tOpenConvertedPath
- | ErrorCan'tOpenDirtyWriteAheadLog
- | ErrorCan'tOpenSymlink
- | ErrorCorruptVirtualTable
- | ErrorCorruptSequence
- | ErrorCorruptIndex
- | ErrorReadOnlyRecovery
- | ErrorReadOnlyCan'tLock
- | ErrorReadOnlyRollback
- | ErrorReadOnlyDatabaseMoved
- | ErrorReadOnlyCan'tInit
- | ErrorReadOnlyDirectory
- | ErrorAbortRollback
- | ErrorConstraintCheck
- | ErrorConstraintCommitHook
- | ErrorConstraintForeignKey
- | ErrorConstraintFunction
- | ErrorConstraintNotNull
- | ErrorConstraintPrimaryKey
- | ErrorConstraintTrigger
- | ErrorConstraintUnique
- | ErrorConstraintVirtualTable
- | ErrorConstraintRowId
- | ErrorConstraintPinned
- | ErrorConstraintDataType
- | ErrorNoticeRecoverWriteAheadLog
- | ErrorNoticeRecoverRollback
- | ErrorWarningAutoIndex
- | ErrorAuthUser
- | ErrorOkLoadPermanently
- newtype Utf8 = Utf8 ByteString
- newtype ParamIndex = ParamIndex Int
- newtype ColumnIndex = ColumnIndex Int
- type ColumnCount = ColumnIndex
- newtype ArgCount = ArgCount Int
- type ArgIndex = ArgCount
Connection management
setTrace :: Database -> Maybe (Utf8 -> IO ()) -> IO () #
https://www.sqlite.org/c3ref/profile.html
Enable/disable tracing of SQL execution. Tracing can be disabled
by setting Nothing
as the logger callback.
Warning: If the logger callback throws an exception, your whole program will crash. Enable only for debugging!
getAutoCommit :: Database -> IO Bool #
https://www.sqlite.org/c3ref/get_autocommit.html
Return True
if the connection is in autocommit mode, or False
if a
transaction started with BEGIN
is still active.
Be warned that some errors roll back the transaction automatically,
and that ROLLBACK
will throw an error if no transaction is active.
Use getAutoCommit
to avoid such an error:
autocommit <-getAutoCommit
connwhen
(not autocommit) $exec
conn "ROLLBACK"
setSharedCacheEnabled :: Bool -> IO (Either Error ()) #
https://www.sqlite.org/c3ref/enable_shared_cache.html
Enable or disable shared cache for all future connections.
Simple query execution
execWithCallback :: Database -> Utf8 -> ExecCallback -> IO (Either (Error, Utf8) ()) #
Like exec
, but invoke the callback for each result row.
If the callback throws an exception, it will be rethrown by
execWithCallback
.
type ExecCallback #
Arguments
= ColumnCount | Number of columns, which is the number of items in the following lists. This will be the same for every row. |
-> [Utf8] | List of column names. This will be the same for every row. |
-> [Maybe Utf8] | List of column values, as returned by |
-> IO () |
Statement management
prepare :: Database -> Utf8 -> IO (Either Error (Maybe Statement)) #
https://www.sqlite.org/c3ref/prepare.html
If the query contains no SQL statements, this returns
.Right
Nothing
step :: Statement -> IO (Either Error StepResult) #
stepNoCB :: Statement -> IO (Either Error StepResult) #
https://www.sqlite.org/c3ref/step.html
Faster step for statements that don't callback to Haskell functions (e.g. by using custom SQL functions).
reset :: Statement -> IO (Either Error ()) #
https://www.sqlite.org/c3ref/reset.html
Warning:
- If the most recent
step
call failed, this will return the corresponding error. - This does not reset the bindings on a prepared statement.
Use
clearBindings
to do that.
finalize :: Statement -> IO (Either Error ()) #
https://www.sqlite.org/c3ref/finalize.html
Warning: If the most recent step
call failed,
this will return the corresponding error.
clearBindings :: Statement -> IO () #
https://www.sqlite.org/c3ref/clear_bindings.html
Set all parameters in the prepared statement to null.
statementSql :: Statement -> IO (Maybe Utf8) #
https://www.sqlite.org/c3ref/sql.html
Return a copy of the original SQL text used to compile the statement.
Parameter and column information
bindParameterCount :: Statement -> IO ParamIndex #
https://www.sqlite.org/c3ref/bind_parameter_count.html
This returns the index of the largest (rightmost) parameter. Note that this
is not necessarily the number of parameters. If numbered parameters like
?5
are used, there may be gaps in the list.
See ParamIndex
for more information.
bindParameterName :: Statement -> ParamIndex -> IO (Maybe Utf8) #
bindParameterIndex :: Statement -> Utf8 -> IO (Maybe ParamIndex) #
columnName :: Statement -> ColumnIndex -> IO (Maybe Utf8) #
Binding values to a prepared statement
bindInt64 :: Statement -> ParamIndex -> Int64 -> IO (Either Error ()) #
bindDouble :: Statement -> ParamIndex -> Double -> IO (Either Error ()) #
bindBlob :: Statement -> ParamIndex -> ByteString -> IO (Either Error ()) #
bindZeroBlob :: Statement -> ParamIndex -> Int -> IO (Either Error ()) #
bindNull :: Statement -> ParamIndex -> IO (Either Error ()) #
Reading the result row
columnType :: Statement -> ColumnIndex -> IO ColumnType #
columnInt64 :: Statement -> ColumnIndex -> IO Int64 #
columnDouble :: Statement -> ColumnIndex -> IO Double #
columnText :: Statement -> ColumnIndex -> IO Utf8 #
columnBlob :: Statement -> ColumnIndex -> IO ByteString #
control loading of extensions
setLoadExtensionEnabled :: Database -> Bool -> IO (Either Error ()) #
https://www.sqlite.org/c3ref/enable_load_extension.html
Enable or disable extension loading.
Result statistics
changes :: Database -> IO Int #
https://www.sqlite.org/c3ref/changes.html
Return the number of rows that were changed, inserted, or deleted
by the most recent INSERT
, DELETE
, or UPDATE
statement.
totalChanges :: Database -> IO Int #
https://www.sqlite.org/c3ref/total_changes.html
Return the total number of row changes caused by INSERT
, DELETE
,
or UPDATE
statements since the Database
was opened.
Create custom SQL functions
Arguments
:: Database | |
-> Utf8 | Name of the function. |
-> Maybe ArgCount | Number of arguments. |
-> Bool | Is the function deterministic? |
-> (FuncContext -> FuncArgs -> IO ()) | Implementation of the function. |
-> IO (Either Error ()) |
https://sqlite.org/c3ref/create_function.html
Create a custom SQL function or redefine the behavior of an existing function.
Arguments
:: Database | |
-> Utf8 | Name of the function. |
-> Maybe ArgCount | Number of arguments. |
-> a | Initial aggregate state. |
-> (FuncContext -> FuncArgs -> a -> IO a) | Process one row and update the aggregate state. |
-> (FuncContext -> a -> IO ()) | Called after all rows have been processed. Can be used to construct the returned value from the aggregate state. |
-> IO (Either Error ()) |
Like createFunction
except that it creates an aggregate function.
deleteFunction :: Database -> Utf8 -> Maybe ArgCount -> IO (Either Error ()) #
Delete an SQL function (scalar or aggregate).
Extract function arguments
funcArgCount :: FuncArgs -> ArgCount #
funcArgType :: FuncArgs -> ArgIndex -> IO ColumnType #
funcArgInt64 :: FuncArgs -> ArgIndex -> IO Int64 #
funcArgDouble :: FuncArgs -> ArgIndex -> IO Double #
funcArgText :: FuncArgs -> ArgIndex -> IO Utf8 #
funcArgBlob :: FuncArgs -> ArgIndex -> IO ByteString #
Set the result of a function
funcResultInt64 :: FuncContext -> Int64 -> IO () #
funcResultDouble :: FuncContext -> Double -> IO () #
funcResultText :: FuncContext -> Utf8 -> IO () #
funcResultBlob :: FuncContext -> ByteString -> IO () #
funcResultZeroBlob :: FuncContext -> Int -> IO () #
funcResultNull :: FuncContext -> IO () #
getFuncContextDatabase :: FuncContext -> IO Database #
Create custom collations
deleteCollation :: Database -> Utf8 -> IO (Either Error ()) #
Delete a collation.
Interrupting a long-running query
interrupt :: Database -> IO () #
https://www.sqlite.org/c3ref/interrupt.html
Cause any pending operation on the Database
handle to stop at its earliest
opportunity. This simply sets a flag and returns immediately. It does not
wait for the pending operation to finish.
You'll need to compile with -threaded
for this to do any good.
Without -threaded
, FFI calls block the whole RTS, meaning interrupt
would never run at the same time as step
.
Incremental blob I/O
Arguments
:: Database | |
-> Utf8 | The symbolic name of the database (e.g. "main"). |
-> Utf8 | The table name. |
-> Utf8 | The column name. |
-> Int64 | The |
-> Bool | Open the blob for read-write. |
-> IO (Either Error Blob) |
https://www.sqlite.org/c3ref/blob_open.html
Open a blob for incremental I/O.
blobReadBuf :: Blob -> Ptr a -> Int -> Int -> IO (Either Error ()) #
Online Backup API
backupFinish :: Backup -> IO (Either Error ()) #
Arguments
:: Backup | |
-> Int | Number of pages to copy; if negative, all remaining source pages are copied. |
-> IO (Either Error BackupStepResult) |
backupRemaining :: Backup -> IO Int #
backupPagecount :: Backup -> IO Int #
Types
Constructors
Statement (Ptr CStatement) |
Instances
data ColumnType #
Constructors
IntegerColumn | |
FloatColumn | |
TextColumn | |
BlobColumn | |
NullColumn |
Instances
Show ColumnType # | |
Defined in Database.SQLite3.Bindings.Types Methods showsPrec :: Int -> ColumnType -> ShowS show :: ColumnType -> String showList :: [ColumnType] -> ShowS | |
Eq ColumnType # | |
Defined in Database.SQLite3.Bindings.Types | |
FFIType ColumnType CColumnType # | |
Defined in Database.SQLite3.Bindings.Types |
newtype FuncContext #
The context in which a custom SQL function is executed.
Constructors
FuncContext (Ptr CContext) |
Instances
Show FuncContext # | |
Defined in Database.SQLite3.Direct Methods showsPrec :: Int -> FuncContext -> ShowS show :: FuncContext -> String showList :: [FuncContext] -> ShowS | |
Eq FuncContext # | |
Defined in Database.SQLite3.Direct |
The arguments of a custom SQL function.
The type of blob handles used for incremental blob I/O
A handle for an online backup process.
Results and errors
data StepResult #
Instances
Show StepResult # | |
Defined in Database.SQLite3.Direct Methods showsPrec :: Int -> StepResult -> ShowS show :: StepResult -> String showList :: [StepResult] -> ShowS | |
Eq StepResult # | |
Defined in Database.SQLite3.Direct |
data BackupStepResult #
Constructors
BackupOK | There are still more pages to be copied. |
BackupDone | All pages were successfully copied. |
Instances
Show BackupStepResult # | |
Defined in Database.SQLite3.Direct Methods showsPrec :: Int -> BackupStepResult -> ShowS show :: BackupStepResult -> String showList :: [BackupStepResult] -> ShowS | |
Eq BackupStepResult # | |
Defined in Database.SQLite3.Direct Methods (==) :: BackupStepResult -> BackupStepResult -> Bool (/=) :: BackupStepResult -> BackupStepResult -> Bool |
Constructors
Instances
Generic Error # | |
Show Error # | |
Eq Error # | |
FFIType Error CError # | |
type Rep Error # | |
Defined in Database.SQLite3.Bindings.Types type Rep Error = D1 ('MetaData "Error" "Database.SQLite3.Bindings.Types" "direct-sqlite-2.3.28-LDvFYM58b207OrnadFaYjS" 'False) ((((((C1 ('MetaCons "ErrorOK" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorError" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorInternal" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorPermission" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorAbort" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusy" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorLocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnly" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorInterrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIO" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCorrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNotFound" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorFull" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorProtocol" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorEmpty" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorSchema" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorTooBig" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraint" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorMismatch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorMisuse" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoLargeFileSupport" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorAuthorization" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorFormat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorRange" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorNotADatabase" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNotice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorRow" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorDone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorErrorMissingCollatingSquence" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorErrorRetry" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorErrorSnapshot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORead" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOShortRead" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOWrite" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOFsync" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODirectoryFsync" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOTruncate" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOFstat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOUnlock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOReadLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOBlocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODelete" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIONoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOAccess" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOCheckReservedLock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOClose" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIODirectoryClose" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmOpen" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "ErrorIOShmSize" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOShmLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmMap" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOSeek" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIODeleteNoEntity" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOMmap" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIOGetTempPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOVNode" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOAuth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOBeginAtomic" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOCommitAtomic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORollbackAtomic" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOCorruptFilesystem" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorLockedSharedCache" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorLockedVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorBusyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusySnapshot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorBusyTimeout" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpenNotTempDirectory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenIsDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorCan'tOpenFullPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCan'tOpenDirtyWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenSymlink" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorCorruptVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCorruptSequence" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCorruptIndex" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorReadOnlyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyRollback" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorReadOnlyDatabaseMoved" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tInit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorAbortRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintCheck" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintCommitHook" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintForeignKey" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorConstraintFunction" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintNotNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintPrimaryKey" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorConstraintTrigger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintUnique" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintRowId" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraintPinned" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintDataType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNoticeRecoverWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoticeRecoverRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarningAutoIndex" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorAuthUser" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorOkLoadPermanently" 'PrefixI 'False) (U1 :: Type -> Type)))))))) |
Special types
A ByteString
containing UTF8-encoded text with no NUL characters.
Constructors
Utf8 ByteString |
newtype ParamIndex #
Index of a parameter in a parameterized query. Parameter indices start from 1.
When a query is prepare
d, SQLite allocates an
array indexed from 1 to the highest parameter index. For example:
>Right stmt <- prepare conn "SELECT ?1, ?5, ?3, ?" >bindParameterCount stmt ParamIndex 6
This will allocate an array indexed from 1 to 6 (?
takes the highest
preceding index plus one). The array is initialized with null values.
When you bind a parameter with bindSQLData
, it assigns a
new value to one of these indices.
See https://www.sqlite.org/lang_expr.html#varparam for the syntax of parameter placeholders, and how parameter indices are assigned.
Constructors
ParamIndex Int |
Instances
newtype ColumnIndex #
Index of a column in a result set. Column indices start from 0.
Constructors
ColumnIndex Int |
Instances
type ColumnCount = ColumnIndex #
Number of columns in a result set.
Number of arguments of a user defined SQL function.
Constructors
ArgCount Int |
Instances
Bounded ArgCount # | |
Defined in Database.SQLite3.Bindings.Types | |
Enum ArgCount # | |
Defined in Database.SQLite3.Bindings.Types | |
Num ArgCount # | |
Integral ArgCount # | |
Defined in Database.SQLite3.Bindings.Types | |
Real ArgCount # | |
Defined in Database.SQLite3.Bindings.Types Methods toRational :: ArgCount -> Rational | |
Show ArgCount # | This just shows the underlying integer, without the data constructor. |
Eq ArgCount # | |
Ord ArgCount # | |
Defined in Database.SQLite3.Bindings.Types | |
FFIType ArgCount CArgCount # | |